Bläddra i källkod

我的创客详情编写完一半

Pota1ovO 2 år sedan
förälder
incheckning
118ae07c63
19 ändrade filer med 544 tillägg och 18 borttagningar
  1. 12 1
      kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/util/AssertUtil.java
  2. 5 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantListVO.java
  3. 4 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMerchantServiceImpl.java
  4. 1 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMerchantMapper.xml
  5. 35 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/StatUserGetUserStatByDayOrMonthDTO.java
  6. 14 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/GetUserTradeTotalVO.java
  7. 27 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/PercentVO.java
  8. 80 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetUserStatByDayOrMonthVO.java
  9. 30 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/TrendTimesVO.java
  10. 22 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/TrendVO.java
  11. 48 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/controller/KxsStatUserController.java
  12. 6 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserActTradeMapper.java
  13. 10 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserTradeMapper.java
  14. 4 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsUserTradeService.java
  15. 157 16
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserTradeServiceImpl.java
  16. 16 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserActTradeMapper.xml
  17. 67 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserTradeMapper.xml
  18. 5 0
      kxs-store/kxs-store-api/src/main/java/com/kxs/store/api/vo/kxsapp/storeRecycle/RecycleUserListVO.java
  19. 1 0
      kxs-store/kxs-store-biz/src/main/resources/mapper/KxsMachineRecycleMapper.xml

+ 12 - 1
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/util/AssertUtil.java

@@ -22,7 +22,7 @@ public class AssertUtil {
      private static final Pattern CHINA_PATTERN_PHONE = Pattern.compile("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$");
 
     private static final Pattern YYYY_MM = Pattern.compile("^\\d{4}-(0[1-9]|1[0-2])$");
-
+    private static final Pattern INTERVAL_VARIABLE_AMOUNT = Pattern.compile("^(-?\\d+(\\.\\d{1,2})?)-(-?\\d+(\\.\\d{1,2})?)$");
     public static final String CHINA_PATTERN_PHONE_STR =  "^((13[0-9])|(14[014-9])|(15[0-35-9])|(16[2567])|(17[0-8])|(18[0-9])|(19[0-35-9]))\\d{8}$";
 
      /**--------------------------------------------------------
@@ -47,6 +47,17 @@ public class AssertUtil {
             throw new GlobalCustomerException("时间格式错误yyyy-MM");
         }
     }
+    /**--------------------------------------------------------
+     区间格式校验  金额
+     --------------------------------------------------------**/
+    public static void IsIntervalVariableAmount(String month){
+
+        //格式校验
+        Matcher m = INTERVAL_VARIABLE_AMOUNT.matcher(month);
+        if(!m.matches()){
+            throw new GlobalCustomerException("金额区间格式错误:xxxxx-xxxxx");
+        }
+    }
 
 
 

+ 5 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantListVO.java

@@ -48,7 +48,11 @@ public class MerchantListVO implements Serializable {
      */
     @Schema(description = "当前机具费率")
     private BigDecimal machineRatio;
-
+    /**
+     * 费率调降标记 0未调 1已调
+     */
+    @Schema(description = "费率调降标记 0未调 1已调")
+    private Integer downFeeFlag;
 
 
 	

+ 4 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMerchantServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.constant.enums.MachineTypeEnum;
+import com.kxs.common.core.util.AssertUtil;
 import com.kxs.common.core.util.R;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.product.api.dto.kxsapp.merchant.MerchantListDTO;
@@ -57,6 +58,9 @@ public class KxsMerchantServiceImpl extends ServiceImpl<KxsMerchantMapper, KxsMe
         }else {
             param.setSort(null);
         }
+        if (param.getAmountSection() != null){
+            AssertUtil.IsIntervalVariableAmount(param.getAmountSection());
+        }
         return kxsMerchantMapper.merchantList(page,param);
     }
 

+ 1 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMerchantMapper.xml

@@ -30,6 +30,7 @@
         kme.create_time,
         kme.merchant_name,
         kma.machine_ratio,
+        kma.down_fee_flag,
         SUM(kskm.trade_amt) as thisMonthTrade
         FROM
         kxs_merchant kme

+ 35 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/StatUserGetUserStatByDayOrMonthDTO.java

@@ -0,0 +1,35 @@
+package com.kxs.stat.api.dto.statUser;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+
+/**
+ * 用户详情-获取用户统计数据-dto
+ *
+ * @author 系统
+ * @date 2024-05-15 11:18:44
+ */
+@Data
+public class StatUserGetUserStatByDayOrMonthDTO {
+
+    /**
+     * 用户id
+     */
+    @Schema(description = "用户id")
+    @NotNull(message = "用户id不能为空")
+    private Long userId;
+
+
+    /**
+     * 1获取近7日,2获取近半年
+     */
+    @Schema(description = "1获取近7日,2获取近半年")
+    @NotNull(message = "获取类型不能为空")
+    private Integer type;
+
+
+
+
+}

+ 14 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/GetUserTradeTotalVO.java

@@ -0,0 +1,14 @@
+package com.kxs.stat.api.vo.statUser;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 获取用户各品牌交易额
+ */
+@Data
+public class GetUserTradeTotalVO {
+    private Integer brandId;
+    private BigDecimal amount;
+}

+ 27 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/PercentVO.java

@@ -0,0 +1,27 @@
+package com.kxs.stat.api.vo.statUser;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *   用户详情-获取用户统计数据vo - 百分比数据vo
+ *   @author Pota1ovO
+ *   @date 2024-05-15 11:18:44
+ */
+@Data
+public class PercentVO {
+    /**
+     * 类型名
+     */
+    private String name;
+    /**
+     * 占比 %
+     */
+    private BigDecimal percent;
+    /**
+     * 交易额
+     */
+    private BigDecimal amount;
+
+}

+ 80 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetUserStatByDayOrMonthVO.java

@@ -0,0 +1,80 @@
+package com.kxs.stat.api.vo.statUser;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 用户详情-获取用户统计数据vo
+ *
+ * @author 系统
+ * @date 2024-05-15 11:18:44
+ */
+@Data
+@Schema(description = "用户详情-获取用户统计数据返回实体")
+public class StatUserGetUserStatByDayOrMonthVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 交易分类百分比
+     */
+    @Schema(description = "交易分类百分比")
+    private List<PercentVO> treadePercent;
+
+
+    /**
+     * 交易总额
+     */
+    @Schema(description = "交易总额")
+    private BigDecimal treadeTotal;
+
+
+    /**
+     * 交易趋势数据
+     */
+    @Schema(description = "交易趋势数据")
+    private List<TrendVO> treadeTrend;
+
+
+    /**
+     * 激活商户占比
+     */
+    @Schema(description = "激活商户占比")
+    private List<PercentVO> actMerchantPercent;
+
+
+    /**
+     * 激活商户总数
+     */
+    @Schema(description = "激活商户总数")
+    private Integer actMerchantTotal;
+
+
+    /**
+     * 激活商户趋势数据
+     */
+    @Schema(description = "激活商户趋势数据")
+    private List<TrendVO> actMerchantTrend;
+
+
+    /**
+     * 新增用户趋势
+     */
+    @Schema(description = "新增用户趋势")
+    private List<TrendVO> userAddTrend;
+
+
+
+
+
+	
+
+}

+ 30 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/TrendTimesVO.java

@@ -0,0 +1,30 @@
+package com.kxs.stat.api.vo.statUser;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *    用户详情-获取用户统计数据vo  趋势分类数据vo  趋势数据vo
+ *   @author Pota1ovO
+ *   @date 2024-05-15 11:18:44
+ */
+@Data
+public class TrendTimesVO {
+    /**
+     * 趋势统计时间  格式  yyyyMMdd   Or  yyyyMM
+     */
+    private String time;
+    /**
+     * 交易金额
+     */
+    private BigDecimal amount;
+    /**
+     * 增加数量
+     */
+    private Integer total;
+    /**
+     * 品牌id
+     */
+    private Integer brandId;
+}

+ 22 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/TrendVO.java

@@ -0,0 +1,22 @@
+package com.kxs.stat.api.vo.statUser;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 用户详情-获取用户统计数据vo  趋势分类数据vo
+ *   @author Pota1ovO
+ *   @date 2024-05-15 11:18:44
+ */
+@Data
+public class TrendVO {
+    /**
+     * 趋势类型名
+     */
+    private String name;
+    /**
+     * 趋势类型数据
+     */
+    private List<TrendTimesVO> times;
+}

+ 48 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/controller/KxsStatUserController.java

@@ -0,0 +1,48 @@
+package com.kxs.stat.biz.controller;
+
+import com.kxs.common.core.util.R;
+
+import com.kxs.stat.api.dto.statUser.StatUserGetUserStatByDayOrMonthDTO;
+import com.kxs.stat.biz.service.KxsUserTradeService;
+
+import jakarta.validation.Valid;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.web.bind.annotation.*;
+
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 我的创客(StatUser)控制层
+ *
+ * @author 系统
+ * @since 2024-05-15 11:18:44
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("statUser")
+public class KxsStatUserController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsUserTradeService kxsUserTradeService;
+
+
+
+    /**
+     * 用户详情-获取用户统计数据
+     *
+     * @param param 访问实体
+     * @return 用户详情-获取用户统计数据
+     */
+    @GetMapping("/getUserStatByDayOrMonth")
+    public R getUserStatByDayOrMonth(@ParameterObject @Valid StatUserGetUserStatByDayOrMonthDTO param) {
+        return kxsUserTradeService.getUserStatByDayOrMonth(param);
+    }
+
+
+
+
+
+}
+

+ 6 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserActTradeMapper.java

@@ -2,9 +2,13 @@ package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsUserActTrade;
+import com.kxs.stat.api.vo.statUser.TrendTimesVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.cursor.Cursor;
 
+import java.util.List;
+
 /**
  * 创客激活统计表(KxsUserActTrade)表数据库访问层
  *
@@ -21,5 +25,7 @@ public interface KxsUserActTradeMapper extends BaseMapper<KxsUserActTrade> {
      * @return {@link Cursor}<{@link KxsUserActTrade}>
      */
     Cursor<KxsUserActTrade> getUserTradeMonthList(String thisMoth);
+
+    List<TrendTimesVO> getUserActListByDay(@Param("times") List<String> times, @Param("userId") Long userId);
 }
 

+ 10 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserTradeMapper.java

@@ -3,11 +3,15 @@ package com.kxs.stat.biz.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsUserTrade;
 import com.kxs.stat.api.vo.ShdTradeAmtVO;
+import com.kxs.stat.api.vo.statUser.GetUserTradeTotalVO;
+import com.kxs.stat.api.vo.statUser.PercentVO;
+import com.kxs.stat.api.vo.statUser.TrendTimesVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.cursor.Cursor;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 个人交易统计总表(KxsUserTrade)表数据库访问层
@@ -49,5 +53,11 @@ public interface KxsUserTradeMapper extends BaseMapper<KxsUserTrade> {
     BigDecimal getStatAmount(String tableName);
 
     void removeTempTable(String tempTableName);
+
+    List<TrendTimesVO> getUserTradeListByDay(@Param("tableName") String tableName, @Param("times") List<String> times, @Param("userId") Long userId, @Param("brandId") Integer brandId);
+
+    List<PercentVO> getUserTradeTotal(Long userId);
+
+
 }
 

+ 4 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsUserTradeService.java

@@ -1,6 +1,8 @@
 package com.kxs.stat.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.stat.api.dto.statUser.StatUserGetUserStatByDayOrMonthDTO;
 import com.kxs.stat.api.model.KxsUserTrade;
 
 import java.math.BigDecimal;
@@ -22,5 +24,7 @@ public interface KxsUserTradeService extends IService<KxsUserTrade> {
      */
     BigDecimal getStatAmount(String month);
 
+    R getUserStatByDayOrMonth(StatUserGetUserStatByDayOrMonthDTO param);
+
 }
 

+ 157 - 16
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserTradeServiceImpl.java

@@ -8,11 +8,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.util.R;
+import com.kxs.stat.api.dto.statUser.StatUserGetUserStatByDayOrMonthDTO;
 import com.kxs.stat.api.model.KxsLkbTrade;
 import com.kxs.stat.api.model.KxsUserActTrade;
 import com.kxs.stat.api.model.KxsUserLogoutTrade;
 import com.kxs.stat.api.model.KxsUserTrade;
 import com.kxs.stat.api.vo.ShdTradeAmtVO;
+import com.kxs.stat.api.vo.statUser.*;
 import com.kxs.stat.biz.constant.enums.TotalTypeEnum;
 import com.kxs.stat.biz.mapper.KxsLkbTradeMapper;
 import com.kxs.stat.biz.mapper.KxsUserActTradeMapper;
@@ -30,10 +33,14 @@ import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.support.TransactionTemplate;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 个人交易统计总表(KxsUserTrade)表服务实现类
@@ -65,9 +72,9 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         //拼接表名
         String thisMoth;
         //如果定时任务传了参数就使用定时任务的参数
-        if(StrUtil.isNotBlank(para)){
+        if (StrUtil.isNotBlank(para)) {
             thisMoth = para;
-        }else{
+        } else {
             thisMoth = LocalDateTimeUtil.format(LocalDate.now(), DatePattern.SIMPLE_MONTH_PATTERN);
         }
 
@@ -87,12 +94,12 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
             Cursor<ShdTradeAmtVO> kxsUserTrades = baseMapper.getUserTradeList(tableName);
             for (ShdTradeAmtVO kxsUserTrade : kxsUserTrades) {
                 ShdTradeAmtVO shdTradeAmtVO = baseMapper.getTempShdTableData(tempTableName, kxsUserTrade.getUserId());
-                if(shdTradeAmtVO == null){
+                if (shdTradeAmtVO == null) {
                     shdTradeAmtVO = new ShdTradeAmtVO();
                     shdTradeAmtVO.setUserId(kxsUserTrade.getUserId());
                     shdTradeAmtVO.setPosAmt(kxsUserTrade.getPosAmt());
                     baseMapper.insertTempShdTableData(tempTableName, shdTradeAmtVO);
-                }else{
+                } else {
                     shdTradeAmtVO.setPosAmt(shdTradeAmtVO.getPosAmt());
                     baseMapper.updateTempShdTableData(tempTableName, shdTradeAmtVO);
                 }
@@ -102,19 +109,19 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
             Cursor<KxsLkbTrade> lkbTrades = kxsLkbTradeMapper.getUserTradeMonthList(thisMoth);
             for (KxsLkbTrade lkbTrade : lkbTrades) {
                 ShdTradeAmtVO shdTradeAmtVO = baseMapper.getTempShdTableData(tempTableName, lkbTrade.getUserId());
-                if(shdTradeAmtVO == null){
+                if (shdTradeAmtVO == null) {
                     shdTradeAmtVO = new ShdTradeAmtVO();
                     shdTradeAmtVO.setUserId(lkbTrade.getUserId());
                     shdTradeAmtVO.setLkbAmt(lkbTrade.getTradeAmt());
                     //活动交易 * 4加入
-                    if(lkbTrade.getActTradeAmt() != null){
+                    if (lkbTrade.getActTradeAmt() != null) {
                         shdTradeAmtVO.setLkbActAmt(lkbTrade.getActTradeAmt().multiply(BigDecimal.valueOf(4)));
                     }
                     baseMapper.insertTempShdTableData(tempTableName, shdTradeAmtVO);
-                }else{
+                } else {
                     shdTradeAmtVO.setLkbAmt(lkbTrade.getTradeAmt());
                     //活动交易 * 4加入
-                    if(lkbTrade.getActTradeAmt() != null){
+                    if (lkbTrade.getActTradeAmt() != null) {
                         shdTradeAmtVO.setLkbActAmt(lkbTrade.getActTradeAmt().multiply(BigDecimal.valueOf(4)));
                     }
                     baseMapper.updateTempShdTableData(tempTableName, shdTradeAmtVO);
@@ -130,17 +137,17 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
                         .eq(KxsUserLogoutTrade::getUserId, kxsUserActTrade.getUserId())
                         .eq(KxsUserLogoutTrade::getTotalType, TotalTypeEnum.TEAM.getType()).last("limit 1"));
                 //总激活数 减去注销的卡 = 实际激活总数
-                if(kxsUserLogoutTrade != null){
+                if (kxsUserLogoutTrade != null) {
                     actNum = actNum - kxsUserLogoutTrade.getLogoutNum();
                 }
                 ShdTradeAmtVO shdTradeAmtVO = baseMapper.getTempShdTableData(tempTableName, kxsUserActTrade.getUserId());
-                if(shdTradeAmtVO == null){
+                if (shdTradeAmtVO == null) {
                     shdTradeAmtVO = new ShdTradeAmtVO();
                     shdTradeAmtVO.setUserId(kxsUserActTrade.getUserId());
                     //广电卡 * 10000加入
                     shdTradeAmtVO.setGdAmt(NumberUtil.mul(actNum, CommonConstants.GD_CARDINAL_NUMBER));
                     baseMapper.insertTempShdTableData(tempTableName, shdTradeAmtVO);
-                }else{
+                } else {
                     //广电卡 * 10000加入
                     shdTradeAmtVO.setGdAmt(NumberUtil.mul(actNum, CommonConstants.GD_CARDINAL_NUMBER));
                     baseMapper.updateTempShdTableData(tempTableName, shdTradeAmtVO);
@@ -152,19 +159,19 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
             for (ShdTradeAmtVO kxsUserTrade : shdTradeAmtVOList) {
                 //pos交易额 + 来客吧非活动交易额
                 BigDecimal totalAmount = BigDecimal.ZERO;
-                if(kxsUserTrade.getPosAmt() != null){
+                if (kxsUserTrade.getPosAmt() != null) {
                     totalAmount = totalAmount.add(kxsUserTrade.getPosAmt());
                 }
-                if(kxsUserTrade.getLkbAmt() != null){
+                if (kxsUserTrade.getLkbAmt() != null) {
                     totalAmount = totalAmount.add(kxsUserTrade.getLkbAmt());
                 }
-                if(kxsUserTrade.getGdAmt() != null){
+                if (kxsUserTrade.getGdAmt() != null) {
                     totalAmount = totalAmount.add(kxsUserTrade.getGdAmt());
                 }
-                if(kxsUserTrade.getLkbActAmt() != null){
+                if (kxsUserTrade.getLkbActAmt() != null) {
                     totalAmount = totalAmount.add(kxsUserTrade.getLkbActAmt());
                 }
-                if(totalAmount.compareTo(CommonConstants.MAX_TOTAL_AMT) >= 0){
+                if (totalAmount.compareTo(CommonConstants.MAX_TOTAL_AMT) >= 0) {
                     IntegralStatDTO integralStatDTO = new IntegralStatDTO();
                     integralStatDTO.setTradeMonth(thisMoth);
                     integralStatDTO.setUserId(Long.valueOf(kxsUserTrade.getUserId()));
@@ -194,6 +201,140 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         String tableName = PREFIX_TABLE_NAME + month;
         return baseMapper.getStatAmount(tableName);
     }
+
+    @Override
+    public R getUserStatByDayOrMonth(StatUserGetUserStatByDayOrMonthDTO param) {
+        Long userId = param.getUserId();
+        Integer type = param.getType();
+        LocalDate now = LocalDate.now();
+        List<String> times = new ArrayList<>();
+        List<String> lastMonthTimes = null;
+        if (type == 1) {
+            //获取今日月份 用以校验是否跨越月份
+            int toDayMonth =  now.getMonthValue();
+            //近七日
+            for (int i = 0; i < 7; i++) {
+                // 计算每一天的日期
+                LocalDate currentDay = now.minusDays(i);
+                // 将LocalDate转换为字符串 yyyyMMdd  获取到所需查询日期
+                String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.PURE_DATE_PATTERN);
+                //获取当前日的月份值
+                int monthValue = now.getMonthValue();
+                //判断今日月份值与当前查询日月份是否一致
+                if (toDayMonth == monthValue){
+                    //一致加入正常查询序列
+                    times.add(currentDateString);
+                }else {
+                    //不一致构造加入二次查询序列
+                    lastMonthTimes = new ArrayList<>();
+                    lastMonthTimes.add(currentDateString);
+                }
+            }
+            //开始查询
+            //查询全部pos交易
+            String thisMoth = LocalDateTimeUtil.format(now, DatePattern.SIMPLE_MONTH_PATTERN);
+            String tableName = PREFIX_TABLE_NAME + thisMoth;
+            //获取到日期以及金额
+            List<TrendTimesVO> trendTimesVOS = baseMapper.getUserTradeListByDay(tableName,times,userId,null);
+            //判断是否需要二次查询
+            if (lastMonthTimes != null){
+                List<TrendTimesVO> trendTimesVOSByLastMonthTimes = baseMapper.getUserTradeListByDay(tableName, lastMonthTimes, userId,null);
+                trendTimesVOS.addAll(trendTimesVOSByLastMonthTimes);
+            }
+            Map<String,List<TrendTimesVO>> treadTrend = new HashMap<>();
+            treadTrend.put("all",trendTimesVOS);
+            //查询品牌数据
+            List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserTradeListByDay(tableName, lastMonthTimes, userId,1);
+            //循环将查询到的数据加入map
+            for (TrendTimesVO trendTimesVO : trendTimesVOListBrand) {
+                List<TrendTimesVO> trendTimesVOSBrand = treadTrend.get(trendTimesVO.getBrandId().toString());
+                if (trendTimesVOSBrand == null){
+                    //未查询到则构造map  key为品牌id
+                    trendTimesVOSBrand = new ArrayList<>();
+                    trendTimesVOSBrand.add(trendTimesVO);
+                    treadTrend.put(trendTimesVO.getBrandId().toString(),trendTimesVOSBrand);
+                }else {
+                    trendTimesVOSBrand.add(trendTimesVO);
+                }
+            }
+            ArrayList<TrendVO> trendVOS = new ArrayList<>();
+            for (Map.Entry<String, List<TrendTimesVO>> entry : treadTrend.entrySet()) {
+                TrendVO trendVO = new TrendVO();
+                trendVO.setName(entry.getKey());
+                trendVO.setTimes(entry.getValue());
+                trendVOS.add(trendVO);
+            }
+            //获取全部品牌总交易额
+            List<PercentVO> percentVOS = baseMapper.getUserTradeTotal(userId);
+            BigDecimal totalAmout = BigDecimal.ZERO;
+            //计算总金额
+            for (PercentVO percentVO : percentVOS) {
+                totalAmout = totalAmout.add(percentVO.getAmount());
+            }
+            //计算百分比
+            for (PercentVO percentVO : percentVOS) {
+                percentVO.setPercent(percentVO.getAmount().divide(totalAmout,6, RoundingMode.HALF_UP));
+            }
+            //获取激活商户
+            List<TrendTimesVO> trendTimesVOSAct = kxsUserActTradeMapper.getUserActListByDay(times,userId);
+            Integer totalCount = 0;
+            for (TrendTimesVO trendTimesVO : trendTimesVOSAct) {
+                totalCount += trendTimesVO.getTotal();
+            }
+//            for (){
+//
+//            }
+            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = new StatUserGetUserStatByDayOrMonthVO();
+            statUserGetUserStatByDayOrMonthVO.setTreadePercent(percentVOS);//交易百分比
+            statUserGetUserStatByDayOrMonthVO.setTreadeTotal(totalAmout);//交易总额
+//            statUserGetUserStatByDayOrMonthVO.setTreadeTrend(trendVOS);//交易趋势
+//            statUserGetUserStatByDayOrMonthVO.setActMerchantPercent();
+//            statUserGetUserStatByDayOrMonthVO.setActMerchantTotal(totalCount);
+//            statUserGetUserStatByDayOrMonthVO.setActMerchantTrend();
+//            statUserGetUserStatByDayOrMonthVO.setUserAddTrend();
+
+        } else if (type == 2) {
+            //近半年
+            for (int i = 0; i < 6; i++) {
+                // 计算每一天的日期
+                LocalDate currentDay = now.minusMonths(i);
+                // 将LocalDate转换为字符串
+                String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
+                times.add(currentDateString);
+            }
+        } else {
+            return R.failed("类型错误");
+        }
+
+        return null;
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 }
 

+ 16 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserActTradeMapper.xml

@@ -25,5 +25,21 @@
         </where>
         GROUP BY user_id
     </select>
+    <select id="getUserActListByDay" resultType="com.kxs.stat.api.vo.statUser.TrendTimesVO">
+        SELECT
+        SUM(act_num) AS total,
+        brand_id
+        FROM
+        kxs_user_act_trade
+        WHERE del_flag != 1
+        AND user_id = 1
+        AND total_type = 1
+        AND trade_date in
+        <foreach collection="times" item="time" open="(" separator="," close=")">
+            #{time}
+        </foreach>
+        GROUP BY
+        brand_id
+    </select>
 
 </mapper>

+ 67 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserTradeMapper.xml

@@ -72,6 +72,73 @@
     <select id="getStatAmount" resultType="java.math.BigDecimal">
         select sum(pro_debit_trade_amt + pro_direct_trade_amt) from `${tableName}` where user_id = 1 and del_flag != 1
     </select>
+    <select id="getUserTradeListByDay" resultType="com.kxs.stat.api.vo.statUser.TrendTimesVO">
+        SELECT
+        SUM(
+        COALESCE(kut.pro_b_direct_trade_amt,0)
+        + COALESCE(kut.pro_b_debit_trade_amt,0)
+        + COALESCE(kut.pro_a_debit_trade_amt,0)
+        + COALESCE(kut.pro_a_direct_trade_amt,0)
+        + COALESCE(kut.pro_debit_trade_amt,0)
+        + COALESCE(kut.pro_direct_trade_amt,0)
+        + COALESCE(kut.help_debit_trade_amt,0)
+        + COALESCE(kut.help_direct_trade_amt,0)
+        + COALESCE(klt.act_trade_amt,0)
+        + COALESCE(klt.trade_amt,0)
+        + COALESCE(kzt.trade_amt,0)
+        ) AS amount,
+        kut.trade_date
+        <if test="brandId != null">
+            ,kut.brand_id
+        </if>
+        FROM
+        `${tableName}` kut
+        LEFT JOIN kxs_lkb_trade klt ON kut.user_id = klt.user_id
+        AND kut.trade_date = klt.trade_date
+        LEFT JOIN kxs_zlb_trade kzt ON kut.user_id = kzt.user_id
+        AND kut.trade_date = kzt.trade_date
+        where kut.del_flag != 1
+        and kut.user_id = #{userId}
+        and total_type = 1
+        and kut.trade_date in
+        <foreach collection="times" item="time" open="(" separator="," close=")">
+            #{time}
+        </foreach>
+        GROUP BY kut.trade_date
+        <if test="brandId != null">
+            ,kut.brand_id
+        </if>
+    </select>
+    <select id="getUserTradeTotal" resultType="com.kxs.stat.api.vo.statUser.PercentVO">
+        select SUM(
+            COALESCE(kut.pro_b_direct_trade_amt,0)
+            + COALESCE(kut.pro_b_debit_trade_amt,0)
+            + COALESCE(kut.pro_a_debit_trade_amt,0)
+            + COALESCE(kut.pro_a_direct_trade_amt,0)
+            + COALESCE(kut.pro_debit_trade_amt,0)
+            + COALESCE(kut.pro_direct_trade_amt,0)
+            + COALESCE(kut.help_debit_trade_amt,0)
+            + COALESCE(kut.help_direct_trade_amt,0)
+            + COALESCE(klt.act_trade_amt,0)
+            + COALESCE(klt.trade_amt,0)
+            + COALESCE(kzt.trade_amt,0)
+            ) AS amount,
+            brand_id as name
+        from
+            `${tableName}` kut
+                LEFT JOIN kxs_lkb_trade klt ON kut.user_id = klt.user_id
+                AND kut.trade_date = klt.trade_date
+                LEFT JOIN kxs_zlb_trade kzt ON kut.user_id = kzt.user_id
+                AND kut.trade_date = kzt.trade_date
+        where kut.del_flag != 1
+        and kut.trade_date in
+        <foreach collection="times" item="time" open="(" separator="," close=")">
+            #{time}
+        </foreach>
+        and kut.user_id = #{userId}
+        and kut.total_type = 1
+        GROUP BY kut.brand_id
+    </select>
     <insert id="insertTempShdTableData">
         INSERT INTO `${tableName}`
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 5 - 0
kxs-store/kxs-store-api/src/main/java/com/kxs/store/api/vo/kxsapp/storeRecycle/RecycleUserListVO.java

@@ -37,6 +37,11 @@ public class RecycleUserListVO implements Serializable {
     private LocalDateTime createTime;
 
 
+    /**
+     * 修改时间
+     */
+    @Schema(description = "修改时间")
+    private LocalDateTime updateTime;
     /**
      * 申请单号
      */

+ 1 - 0
kxs-store/kxs-store-biz/src/main/resources/mapper/KxsMachineRecycleMapper.xml

@@ -78,6 +78,7 @@
         <result column="contacts" property="contacts"/>
         <result column="warehouse_phone" property="warehousePhone"/>
         <result column="warehouse_address" property="warehouseAddress"/>
+        <result column="update_time" property="updateTime"/>
         <collection property="snList" ofType="com.kxs.store.api.vo.kxsapp.storeRecycle.RecycleInfoVO">
             <result column="confirm_status" property="confirmStatus"/>
             <result column="pos_sn" property="posSn"/>