Kaynağa Gözat

Merge branch 'develop' into test-transfer

* develop: (24 commits)
  机具同步添加删除功能
  股东大盘分红列表分页修复
  修复股东大盘分红分页问题
  修复股东大盘分红积分总数查询
  补充了百城千团一个接口bug
  补充后台接口训练营-百城千团列表-激活统计
  补充后台接口训练营-百城千团列表-激活统计
  百人千团   统计定时任务已完成,  后台接口已完成
  股东大盘分红计算规则修改为全量交易额
  定时任务清除dts同步数据日志
  同步来客吧商户激活和商城订单数据
  新增来客吧码牌激活商户数统计表,并同步消息队列,新增调整费率和押金接口
  同步用户数据表-用户重新实名认证同步修改
  百人千团   统计定时任务已完成,  后台接口已完成
  股东大盘分红计算规则修改为全量交易额
  百人千团app接口逻辑已编写完毕
  品牌列表接口添加字段品牌价格   计奖交易-首页交易总额已重构
  添加了首页交易总额接口(初版)  我的业绩接口(未完成)   激活商户统计接口(未完成)
  仓库订单列表添加规则  品牌及仓库传0为查询全部
  收支明细添加字段variationTypeName  金额类型名   商城订单详情vo添加id
  ...
mac 2 yıl önce
ebeveyn
işleme
61567b4a2c
100 değiştirilmiş dosya ile 4096 ekleme ve 79 silme
  1. 12 1
      kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/util/AssertUtil.java
  2. 5 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/brand/BrandListVO.java
  3. 5 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantListVO.java
  4. 0 8
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderDetailVO.java
  5. 2 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderInfoListVO.java
  6. 8 1
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mq/RabbitKxsOrderQueueListener.java
  7. 4 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMerchantServiceImpl.java
  8. 1 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMerchantMapper.xml
  9. 51 0
      kxs-quartz/src/main/java/com/kxs/daemon/quartz/task/CampBcqtBeanTask.java
  10. 21 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/GetActivityStatByIdAndTimeDTO.java
  11. 32 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/StatUserGetMyTradeDTO.java
  12. 35 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/StatUserGetUserStatByDayOrMonthDTO.java
  13. 6 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/feign/RemoteKxsStatService.java
  14. 29 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/GetActivityStatByIdAndTimeVO.java
  15. 41 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/TotalTradeAmtVO.java
  16. 14 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/GetUserTradeTotalVO.java
  17. 37 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/MerchantTradeDetailVO.java
  18. 30 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/PercentVO.java
  19. 74 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetHomeAmoutVO.java
  20. 136 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetMyTradeVO.java
  21. 80 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetUserStatByDayOrMonthVO.java
  22. 74 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserMerchantTradeDetailVO.java
  23. 11 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/Times.java
  24. 30 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/TrendTimesVO.java
  25. 22 0
      kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/TrendVO.java
  26. 33 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/controller/KxsCampBcqtController.java
  27. 102 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/controller/KxsStatUserController.java
  28. 12 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsLkbTradeMapper.java
  29. 5 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsMerchantTradeMapper.java
  30. 39 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserActTradeMapper.java
  31. 16 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserGdTradeMapper.java
  32. 11 1
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserNewTradeMapper.java
  33. 36 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserTradeMapper.java
  34. 4 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsZlbTradeMapper.java
  35. 2 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsMerchantTradeService.java
  36. 7 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsUserActTradeService.java
  37. 24 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsUserTradeService.java
  38. 14 1
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsMerchantTradeServiceImpl.java
  39. 28 0
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserActTradeServiceImpl.java
  40. 321 26
      kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserTradeServiceImpl.java
  41. 14 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsLkbTradeMapper.xml
  42. 21 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsMerchantTradeMapper.xml
  43. 99 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserActTradeMapper.xml
  44. 28 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserGdTradeMapper.xml
  45. 34 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserNewTradeMapper.xml
  46. 188 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserTradeMapper.xml
  47. 14 0
      kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsZlbTradeMapper.xml
  48. 5 1
      kxs-store/kxs-store-api/src/main/java/com/kxs/store/api/vo/kxsapp/store/StoreListVO.java
  49. 5 0
      kxs-store/kxs-store-api/src/main/java/com/kxs/store/api/vo/kxsapp/storeRecycle/RecycleUserListVO.java
  50. 2 2
      kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/controller/kxsapp/StoreAdvanceController.java
  51. 1 2
      kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/KxsWarehouseLimitService.java
  52. 1 1
      kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsWarehouseLimitServiceImpl.java
  53. 2 0
      kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsWarehouseMachineApplyServiceImpl.java
  54. 9 2
      kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsWarehouseServiceImpl.java
  55. 2 2
      kxs-store/kxs-store-biz/src/main/resources/mapper/KxsMachineApplyMapper.xml
  56. 1 0
      kxs-store/kxs-store-biz/src/main/resources/mapper/KxsMachineRecycleMapper.xml
  57. 1 1
      kxs-store/kxs-store-biz/src/main/resources/mapper/KxsWarehouseMapper.xml
  58. 26 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/admin/GetByBcqtPageDTO.java
  59. 36 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/CampAddBcqtTeamDTO.java
  60. 32 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/CampOpenActivityDTO.java
  61. 14 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/CampReturnTeamDTO.java
  62. 14 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/JoinTheTeamDTO.java
  63. 21 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteUserService.java
  64. 133 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsBcqtTeam.java
  65. 136 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsBcqtTeamDetail.java
  66. 106 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/admin/GetByBcqtPageVO.java
  67. 95 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampCampUserPageVO.java
  68. 110 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampGetBcqtDetailVO.java
  69. 63 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampGetBcqtListVO.java
  70. 80 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampGetMyBcqtListVO.java
  71. 64 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/TeamUserItem.java
  72. 4 0
      kxs-system/kxs-system-biz/pom.xml
  73. 40 1
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/admin/SysCampController.java
  74. 145 8
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/kxsapp/CampController.java
  75. 26 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/mapper/KxsBcqtTeamDetailMapper.java
  76. 27 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/mapper/KxsBcqtTeamMapper.java
  77. 15 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsBcqtTeamDetailService.java
  78. 112 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsBcqtTeamService.java
  79. 3 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsCampService.java
  80. 19 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsBcqtTeamDetailServiceImpl.java
  81. 498 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsBcqtTeamServiceImpl.java
  82. 3 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsCampServiceImpl.java
  83. 35 0
      kxs-system/kxs-system-biz/src/main/resources/mapper/KxsBcqtTeamDetailMapper.xml
  84. 32 0
      kxs-system/kxs-system-biz/src/main/resources/mapper/KxsBcqtTeamMapper.xml
  85. 4 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsMachineServiceImpl.java
  86. 6 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/task/taskJob.java
  87. 26 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/kxsapp/user/UserMyUserListDTO.java
  88. 115 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/user/UserMyUserDetailVO.java
  89. 71 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/user/UserMyUserListVO.java
  90. 59 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/user/UserMyUserStatisticsVO.java
  91. 5 1
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userAccount/UserAmountVariationListVO.java
  92. 51 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsUserController.java
  93. 2 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/ShareholderController.java
  94. 0 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/UserAccountController.java
  95. 1 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsShdScoreMapper.java
  96. 11 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserMapper.java
  97. 2 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsShdScoreService.java
  98. 1 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserAmountLogService.java
  99. 9 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java
  100. 3 12
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsShdScoreServiceImpl.java

+ 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 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/brand/BrandListVO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -84,8 +85,10 @@ public class BrandListVO implements Serializable {
      */
     @Schema(description = "全部机具数量")
     private Long totalMachineCount;
-
-
+    /**
+     * 品牌价格
+     */
+    private BigDecimal posPrice;
 
 
 

+ 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;
 
 
 	

+ 0 - 8
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderDetailVO.java

@@ -45,14 +45,6 @@ public class ShopOrderDetailVO implements Serializable {
     @Schema(description = "新增时间")
     private LocalDateTime createTime;
 
-
-
-
-
-
-
-
-
     /**
      * 订单号
      */

+ 2 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderInfoListVO.java

@@ -22,6 +22,8 @@ public class ShopOrderInfoListVO implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 
+    private Long id;
+
     /**
      * 商品数量
      */

+ 8 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mq/RabbitKxsOrderQueueListener.java

@@ -1,11 +1,14 @@
 package com.kxs.product.biz.mq;
 
 import com.alibaba.fastjson.JSON;
+import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.product.api.amqp.rabbit.RabbitKxsOrderQueueMQ;
 import com.kxs.product.api.amqp.rabbit.RabbitShopTimeoutQueueMQ;
 import com.kxs.product.api.model.KxsShopOrder;
 import com.kxs.product.biz.constant.enums.KxsShopEnum;
 import com.kxs.product.biz.service.KxsShopOrderService;
+import com.kxs.system.api.dto.kxsapp.camp.CampAddBcqtTeamDTO;
+import com.kxs.system.api.feign.RemoteUserService;
 import com.rabbitmq.client.Channel;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -27,6 +30,7 @@ import java.io.IOException;
 @Slf4j
 @RequiredArgsConstructor
 public class RabbitKxsOrderQueueListener {
+	private final RemoteUserService remoteUserService;
 
 	/**
 	 * 监听 老平台订单队列
@@ -41,7 +45,10 @@ public class RabbitKxsOrderQueueListener {
 			RabbitKxsOrderQueueMQ.MsgEntity parse = RabbitKxsOrderQueueMQ.parse(msg);
 			//处理百城千团订单,创建活动
 			if(parse.getProductId() == 100 && parse.getStatus() == 2){
-
+				CampAddBcqtTeamDTO campAddBcqtTeamDTO = new CampAddBcqtTeamDTO();
+				campAddBcqtTeamDTO.setCaptainId(Long.valueOf(parse.getUserId()));
+				campAddBcqtTeamDTO.setTeamName(parse.getRemark());
+				remoteUserService.addBcqtTeam(campAddBcqtTeamDTO, SecurityConstants.FROM_IN);
 			}
 
 			channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);

+ 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

+ 51 - 0
kxs-quartz/src/main/java/com/kxs/daemon/quartz/task/CampBcqtBeanTask.java

@@ -0,0 +1,51 @@
+package com.kxs.daemon.quartz.task;
+
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.daemon.quartz.constants.SkyQuartzEnum;
+import com.kxs.system.api.feign.RemoteUserService;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+
+/**
+ * 训练营-百城千团定时任务
+ */
+@Slf4j
+@Component("campBcqtBeanTask")
+@RequiredArgsConstructor
+public class CampBcqtBeanTask {
+    private final RemoteUserService remoteUserService;
+    /**
+     *  关闭活动结束的team和用户状态
+     */
+    @SneakyThrows
+    public String setUserActiviteStatus(String para) {
+        log.info("百城千团定时扫描关闭活动结束的team和用户状态:{},输入参数{}", LocalDateTime.now(), para);
+        try {
+            remoteUserService.setUserActiviteStatus(SecurityConstants.FROM_IN);
+            return SkyQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
+
+        }catch (Exception e){
+            log.error(e.getLocalizedMessage());
+        }
+        return SkyQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+
+    }
+
+    @SneakyThrows
+    public String setUserActivityTimeStat(String para) {
+        log.info("百城千团定时统计活动期间人员激活:{},输入参数{}", LocalDateTime.now(), para);
+        try {
+            remoteUserService.setUserActivityTimeStat(SecurityConstants.FROM_IN);
+            return SkyQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
+
+        }catch (Exception e){
+            log.error(e.getLocalizedMessage());
+        }
+        return SkyQuartzEnum.JOB_LOG_STATUS_FAIL.getType();
+
+    }
+}

+ 21 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/GetActivityStatByIdAndTimeDTO.java

@@ -0,0 +1,21 @@
+package com.kxs.stat.api.dto.statUser;
+
+import lombok.Data;
+import org.w3c.dom.stylesheets.LinkStyle;
+
+import java.util.List;
+
+/**
+ * 百城千团活动期间团队激活商户统计DTO
+ */
+@Data
+public class GetActivityStatByIdAndTimeDTO {
+    /**
+     * 用户Id
+     */
+    private Long userId;
+    /**
+     * 查询时间范围
+     */
+    private List<String> times;
+}

+ 32 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/StatUserGetMyTradeDTO.java

@@ -0,0 +1,32 @@
+package com.kxs.stat.api.dto.statUser;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 计奖交易-我的业绩-dto
+ *
+ * @author 系统
+ * @date 2024-05-20 15:48:13
+ */
+@Data
+public class StatUserGetMyTradeDTO {
+
+    /**
+     * 获取月份
+     */
+    @Schema(description = "获取月份")
+    private Object month;
+
+
+    /**
+     * 1:个人 2:计奖
+     */
+    @Schema(description = "1:个人 2:计奖")
+    private Object type;
+
+
+
+
+}

+ 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;
+
+
+
+
+}

+ 6 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/feign/RemoteKxsStatService.java

@@ -4,7 +4,10 @@ package com.kxs.stat.api.feign;
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.util.R;
 
+import com.kxs.stat.api.dto.statUser.GetActivityStatByIdAndTimeDTO;
 import com.kxs.stat.api.model.KxsUserTrade;
+import com.kxs.stat.api.vo.GetActivityStatByIdAndTimeVO;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.service.annotation.GetExchange;
@@ -40,4 +43,7 @@ public interface RemoteKxsStatService {
 
 	@GetExchange("/stat-job/autoStatTableCreationTasks")
     void autoStatTableCreationTasks(@RequestHeader(SecurityConstants.FROM) String from);
+
+	@GetExchange("/campStat/getActivityStatByIdAndTime")
+	List<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTime(@RequestBody List<GetActivityStatByIdAndTimeDTO> param,@RequestHeader(SecurityConstants.FROM) String from);
 }

+ 29 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/GetActivityStatByIdAndTimeVO.java

@@ -0,0 +1,29 @@
+package com.kxs.stat.api.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 百城千团活动期间团队激活商户统计接口返回数据
+ */
+@Data
+public class GetActivityStatByIdAndTimeVO {
+    /**
+     * 用户Id
+     */
+    private Long userId;
+    /**
+     * pos激活数
+     */
+    private Integer posActivityNumber;
+    /**
+     * 广电激活数
+     */
+    private Integer gdActivityNumber;
+    /**
+     * 来客吧激活数
+     */
+    private Integer lkbActivityNumber;
+
+}

+ 41 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/TotalTradeAmtVO.java

@@ -0,0 +1,41 @@
+package com.kxs.stat.api.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *  用户交易额汇总
+ *
+ * @author Pota1ovO
+ * @date 2024-05-21
+ */
+@Data
+public class TotalTradeAmtVO {
+
+    /**
+     * pos交易额
+     */
+    private BigDecimal posAmt;
+    /**
+     * 来客吧交易额
+     */
+    private BigDecimal lkbAmt;
+    /**
+     * 来客吧活动交易额
+     */
+    private BigDecimal lkbActAmt;
+    /**
+     * GD 激活量
+     */
+    private Integer gdCount;
+    /**
+     * 助力宝交易额
+     */
+    private BigDecimal zlbAmt;
+    /**
+     * 广电话费
+     */
+    private BigDecimal gdAmount;
+
+}

+ 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;
+}

+ 37 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/MerchantTradeDetailVO.java

@@ -0,0 +1,37 @@
+package com.kxs.stat.api.vo.statUser;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 我的商户-商户交易记录VO
+ */
+@Data
+public class MerchantTradeDetailVO {
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+    /**
+     * 交易日
+     */
+    private String tradeDate;
+    /**
+     * 交易月
+     */
+    private String tradeMonth;
+    /**
+     * 交易金额
+     */
+    private BigDecimal tradeAmt;
+    /**
+     * 月交易总金额
+     */
+    private BigDecimal tradeAmtMonth;
+    /**
+     * 商户id
+     */
+    private Long merchantId;
+}

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

@@ -0,0 +1,30 @@
+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;
+    /**
+     * 激活数
+     */
+    private Integer total;
+}

+ 74 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetHomeAmoutVO.java

@@ -0,0 +1,74 @@
+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.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 计奖交易-首页交易总额vo
+ *
+ * @author 系统
+ * @date 2024-05-20 15:48:13
+ */
+@Data
+@Schema(description = "计奖交易-首页交易总额返回实体")
+public class StatUserGetHomeAmoutVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 今日交易额
+     */
+    @Schema(description = "今日交易额")
+    private BigDecimal amountToDay = BigDecimal.ZERO;
+
+
+    /**
+     * 今日新增用户
+     */
+    @Schema(description = "今日新增用户")
+    private Integer userAddToDay = 0;
+
+
+    /**
+     * 今日新增商户
+     */
+    @Schema(description = "今日新增商户")
+    private Integer merchantAddToDay = 0;
+
+
+    /**
+     * 本月交易额
+     */
+    @Schema(description = "本月交易额")
+    private BigDecimal amountMonth = BigDecimal.ZERO;
+
+
+    /**
+     * 本月新增用户
+     */
+    @Schema(description = "本月新增用户")
+    private Integer userAddMonth = 0;
+
+
+    /**
+     * 本月新增商户
+     */
+    @Schema(description = "本月新增商户")
+    private Integer merchantAddMonth = 0;
+
+
+
+
+
+	
+
+}

+ 136 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetMyTradeVO.java

@@ -0,0 +1,136 @@
+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.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 计奖交易-我的业绩vo
+ *
+ * @author 系统
+ * @date 2024-05-20 15:48:13
+ */
+@Data
+@Schema(description = "计奖交易-我的业绩返回实体")
+public class StatUserGetMyTradeVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 总交易额
+     */
+    @Schema(description = "总交易额")
+    private Object totalAmount;
+
+
+    /**
+     * Pos借记卡交易额
+     */
+    @Schema(description = "Pos借记卡交易额")
+    private Object posDebitAmount;
+
+
+    /**
+     * Pos贷记卡交易额
+     */
+    @Schema(description = "Pos贷记卡交易额")
+    private Object posCreditAmount;
+
+
+    /**
+     * 云闪付交易额
+     */
+    @Schema(description = "云闪付交易额")
+    private Object cloudAmunt;
+
+
+    /**
+     * 助力宝交易额
+     */
+    @Schema(description = "助力宝交易额")
+    private Object zlbAmount;
+
+
+    /**
+     * 来客吧活动交易额
+     */
+    @Schema(description = "来客吧活动交易额")
+    private Object lkbActivityAmount;
+
+
+    /**
+     * 来客吧非活动交易额
+     */
+    @Schema(description = "来客吧非活动交易额")
+    private Object lkbAmount;
+
+
+    /**
+     * 广电话费
+     */
+    @Schema(description = "广电话费")
+    private Object gdTelephoneCharge;
+
+
+    /**
+     * 广电活动交易额
+     */
+    @Schema(description = "广电活动交易额")
+    private Object gdActivityAmount;
+
+
+    /**
+     * 总用户数量
+     */
+    @Schema(description = "总用户数量")
+    private Object totalUserCount;
+
+
+    /**
+     * 新增用户数量
+     */
+    @Schema(description = "新增用户数量")
+    private Object userAddCount;
+
+
+    /**
+     * 激活商户数量
+     */
+    @Schema(description = "激活商户数量")
+    private Object activateMerchantCount;
+
+
+    /**
+     * 激活码牌数量
+     */
+    @Schema(description = "激活码牌数量")
+    private Object activateSignCount;
+
+
+    /**
+     * 激活SIM卡
+     */
+    @Schema(description = "激活SIM卡")
+    private Object activateSIMCount;
+
+
+    /**
+     * 1:个人  2:计奖
+     */
+    @Schema(description = "1:个人  2:计奖")
+    private Object type;
+
+
+
+
+
+	
+
+}

+ 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 TrendVO userAddTrend;
+
+
+
+
+
+	
+
+}

+ 74 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserMerchantTradeDetailVO.java

@@ -0,0 +1,74 @@
+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.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 商户交易记录vo
+ *
+ * @author 系统
+ * @date 2024-05-20 15:48:13
+ */
+@Data
+@Schema(description = "商户交易记录返回实体")
+public class StatUserMerchantTradeDetailVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 新增时间
+     */
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 交易日
+     */
+    @Schema(description = "交易日")
+    private Integer tradeDate;
+
+
+    /**
+     * 交易月
+     */
+    @Schema(description = "交易月")
+    private Integer tradeMonth;
+
+
+    /**
+     * 交易额
+     */
+    @Schema(description = "交易额")
+    private BigDecimal tradeAmt;
+
+
+    /**
+     * 商户ID
+     */
+    @Schema(description = "商户ID")
+    private Integer merchantId;
+
+
+    /**
+     * 月交易额
+     */
+    @Schema(description = "月交易额")
+    private Object tradeAmtMonth;
+
+
+
+
+
+	
+
+}

+ 11 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/Times.java

@@ -0,0 +1,11 @@
+package com.kxs.stat.api.vo.statUser;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Times {
+    private String name;
+    private List<String> time;
+}

+ 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;
+}

+ 33 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/controller/KxsCampBcqtController.java

@@ -0,0 +1,33 @@
+package com.kxs.stat.biz.controller;
+
+import com.kxs.common.core.util.R;
+import com.kxs.common.security.annotation.Inner;
+import com.kxs.stat.api.dto.statUser.GetActivityStatByIdAndTimeDTO;
+import com.kxs.stat.api.vo.GetActivityStatByIdAndTimeVO;
+import com.kxs.stat.biz.service.KxsUserActTradeService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 训练营表控制层
+ *
+ * @author Pota1ovO
+ * @since 2024-05-23
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("campStat")
+public class KxsCampBcqtController {
+    private final KxsUserActTradeService kxsUserActTradeService;
+    /**
+     * 百城千团活动期间团队激活商户统计
+     */
+    @GetMapping("/getActivityStatByIdAndTime")
+    @Inner
+    public List<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTime(@RequestBody List<GetActivityStatByIdAndTimeDTO> param) {
+        return kxsUserActTradeService.getActivityStatByIdAndTime(param);
+    }
+
+}

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

@@ -0,0 +1,102 @@
+package com.kxs.stat.biz.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.stat.api.dto.statUser.StatUserGetMyTradeDTO;
+
+import com.kxs.stat.api.dto.statUser.StatUserGetUserStatByDayOrMonthDTO;
+import com.kxs.stat.api.vo.statUser.Times;
+import com.kxs.stat.biz.service.KxsMerchantTradeService;
+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;
+
+    private final KxsMerchantTradeService kxsMerchantTradeService;
+
+    /**
+     * 用户详情-获取用户统计数据
+     *
+     * @param param 访问实体
+     * @return 用户详情-获取用户统计数据
+     */
+    @GetMapping("/getUserStatByDayOrMonth")
+    public R getUserStatByDayOrMonth(@ParameterObject @Valid StatUserGetUserStatByDayOrMonthDTO param) {
+        return kxsUserTradeService.getUserStatByDayOrMonth(param);
+    }
+
+
+
+    /**
+     * 商户交易记录
+     *
+     * @param id 商户id
+     * @return 商户交易记录
+     */
+    @GetMapping("/merchantTradeDetail")
+    public R merchantTradeDetail(@RequestParam("id") Long id) {
+        return kxsMerchantTradeService.merchantTradeDetail(id);
+    }
+
+
+    /**
+     * 计奖交易-首页交易总额
+     *
+     * @return 计奖交易-首页交易总额
+     */
+    @GetMapping("/getHomeAmout")
+    public R getHomeAmout() {
+        Long userId = SecurityUtils.getUser().getId();
+        return kxsUserTradeService.getHomeAmout(userId);
+    }
+
+
+    /**
+     * 计奖交易-我的业绩
+     *
+     * @param param 查询实体
+     * @return 计奖交易-我的业绩
+     */
+    @GetMapping("/getMyTrade")
+    public R getMyTrade(@ParameterObject StatUserGetMyTradeDTO param) {
+        return kxsUserTradeService.getMyTrade(param);
+    }
+
+
+    /**
+     * 计奖交易-激活商户统计
+     *
+     * @param page 分页对象
+     * @param totalType 统计类型 0 个人  1 团队
+     * @return 计奖交易-激活商户统计
+     */
+    @GetMapping("/getActivateMerchantList")
+    public R getActivateMerchantList(@ParameterObject Page<Times> page, @RequestParam("totalType")Integer totalType) {
+        return R.ok();
+    }
+
+
+
+}
+

+ 12 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsLkbTradeMapper.java

@@ -2,9 +2,13 @@ package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsLkbTrade;
+import com.kxs.stat.api.vo.ShdTradeAmtVO;
+import com.kxs.stat.api.vo.TotalTradeAmtVO;
 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;
 
 /**
@@ -23,5 +27,13 @@ public interface KxsLkbTradeMapper extends BaseMapper<KxsLkbTrade> {
      */
     Cursor<KxsLkbTrade> getUserTradeMonthList(String month);
 
+    /**
+     * 获取来客吧交易额  根据月或日
+     * @param userId
+     * @param date 时间 月或日
+     * @param type 1 日  2 月
+     * @return
+     */
+    TotalTradeAmtVO getLkbTrade(@Param("userId")Long userId, @Param("date")String date,@Param("type")Integer type);
 }
 

+ 5 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsMerchantTradeMapper.java

@@ -1,8 +1,11 @@
 package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.common.core.util.R;
 import com.kxs.stat.api.model.KxsMerchantTrade;
+import com.kxs.stat.api.vo.statUser.MerchantTradeDetailVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 商户交易统计总表(KxsMerchantTrade)表数据库访问层
@@ -14,5 +17,7 @@ import org.apache.ibatis.annotations.Mapper;
 public interface KxsMerchantTradeMapper extends BaseMapper<KxsMerchantTrade> {
 
     void automaticTableCreationTasks(String tableName);
+
+    MerchantTradeDetailVO merchantTradeDetail(@Param("id") Long id, @Param("month") String month);
 }
 

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

@@ -2,9 +2,14 @@ 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.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.util.List;
+
 /**
  * 创客激活统计表(KxsUserActTrade)表数据库访问层
  *
@@ -21,5 +26,39 @@ public interface KxsUserActTradeMapper extends BaseMapper<KxsUserActTrade> {
      * @return {@link Cursor}<{@link KxsUserActTrade}>
      */
     Cursor<KxsUserActTrade> getUserTradeMonthList(String thisMoth);
+
+    /**
+     * 获取传入日期团队激活商户,根据品牌分组
+     * @param times 传入日期
+     * @param userId 用户id
+     * @return
+     */
+    List<PercentVO> getUserTradeTotal(@Param("times") List<String> times, @Param("userId") Long userId,@Param("type") Integer type);
+
+    /**
+     * 查询用户激活量   全部或根据品牌分组   获取半年或近七天
+     * @param times 查询日期集合
+     * @param userId 用户id
+     * @param brandId 是否根据品牌分组  否传null
+     * @param type 根据月份或者根据日查询  1日  2月
+     * @return
+     */
+    List<TrendTimesVO> getUserActListByDayOrMonth(@Param("times") List<String> times, @Param("userId") Long userId, @Param("brandId") Integer brandId, @Param("type") Integer type);
+
+    /**
+     * 查询指定日期个人激活数量,
+     * @param userId 用户Id
+     * @param times 指定日
+     * @param type 1 查询pos激活  2查询广电激活
+     * @return
+     */
+    Integer getActivityStatByGdOrPos(@Param("userId")Long userId,  @Param("times") List<String> times, @Param("type") int type);
+    /**
+     * 查询来客吧指定日期个人激活数量,
+     * @param userId 用户Id
+     * @param times 指定日
+     * @return
+     */
+    Integer getActivityStatByLkb(Long userId, List<String> times);
 }
 

+ 16 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserGdTradeMapper.java

@@ -2,7 +2,9 @@ package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsUserGdTrade;
+import com.kxs.stat.api.vo.TotalTradeAmtVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 广电话费统计表(KxsUserGdTrade)表数据库访问层
@@ -12,6 +14,20 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface KxsUserGdTradeMapper extends BaseMapper<KxsUserGdTrade> {
+    /**
+     * 获取广电卡激活量
+     * @param userId 用户id
+     * @param date 日
+     * @return
+     */
+    TotalTradeAmtVO getGdActCount(@Param("userId")Long userId, @Param("date")String date, @Param("type")Integer type);
 
+    /**
+     * 获取广电卡话费
+     * @param userId
+     * @param date
+     * @return
+     */
+    TotalTradeAmtVO getGdTrade(@Param("userId")Long userId, @Param("date")String date, @Param("type")Integer type);
 }
 

+ 11 - 1
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserNewTradeMapper.java

@@ -2,8 +2,11 @@ package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsUserNewTrade;
+import com.kxs.stat.api.vo.statUser.TrendTimesVO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 创客新增统计表(KxsUserNewTrade)表数据库访问层
  *
@@ -12,6 +15,13 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface KxsUserNewTradeMapper extends BaseMapper<KxsUserNewTrade> {
-
+    /**
+     * 获取指定日期新增的用户
+     * @param userId
+     * @param times 指定日期集合
+     * @param type 1获取近7日,2获取近半年
+     * @return
+     */
+    List<TrendTimesVO> getUserAddTrend(Long userId, List<String> times, Integer type);
 }
 

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

@@ -3,11 +3,16 @@ 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.TotalTradeAmtVO;
+import com.kxs.stat.api.vo.statUser.PercentVO;
+import com.kxs.stat.api.vo.statUser.StatUserGetHomeAmoutVO;
+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 +54,36 @@ public interface KxsUserTradeMapper extends BaseMapper<KxsUserTrade> {
     BigDecimal getStatAmount(String tableName);
 
     void removeTempTable(String tempTableName);
+
+    /**
+     * 查询用户全部交易额根据日期分组以及或根据品牌分组
+     * @param tableName 表名
+     * @param times 查询日期  日  type = 2时可不传
+     * @param userId 用户id
+     * @param brandId 是否根据品牌分组  否:null  是:随意传值
+     * @Param type 根据类型查询日期  1 日  2月
+     * @return
+     */
+    List<TrendTimesVO> getUserTradeListByDayOrMonth(@Param("tableName") String tableName, @Param("times") List<String> times, @Param("userId") Long userId, @Param("brandId") Integer brandId, @Param("type") Integer type);
+
+    /**
+     * 获取传入日期的交易额根据品牌分组
+     * @param userId
+     * @return
+     */
+    List<PercentVO> getUserTradeTotal(@Param("tableName")String tableName,@Param("userId") Long userId,@Param("times") List<String> times,@Param("type") Integer type);
+
+
+    StatUserGetHomeAmoutVO getHomeAmout(@Param("userId")Long userId, @Param("tableName")String tableName,@Param("date")String date,@Param("month")String month);
+
+    /**
+     * 获取月或日pos交易额
+     * @param userId
+     * @param tableName
+     * @param date 时间
+     * @param type 1日  2月
+     * @return
+     */
+    TotalTradeAmtVO getPosTrade(@Param("userId")Long userId, @Param("tableName")String tableName, @Param("date")String date,@Param("type")Integer type);
 }
 

+ 4 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsZlbTradeMapper.java

@@ -2,7 +2,9 @@ package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsZlbTrade;
+import com.kxs.stat.api.vo.TotalTradeAmtVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 助力宝交易额统计(KxsZlbTrade)表数据库访问层
@@ -13,5 +15,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsZlbTradeMapper extends BaseMapper<KxsZlbTrade> {
 
+    TotalTradeAmtVO getZlbTrade(@Param("userId")Long userId, @Param("date")String date, @Param("type")Integer type);
+
 }
 

+ 2 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsMerchantTradeService.java

@@ -1,6 +1,7 @@
 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.model.KxsMerchantTrade;
 
 /**
@@ -11,5 +12,6 @@ import com.kxs.stat.api.model.KxsMerchantTrade;
  */
 public interface KxsMerchantTradeService extends IService<KxsMerchantTrade> {
 
+    R merchantTradeDetail(Long id);
 }
 

+ 7 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsUserActTradeService.java

@@ -1,7 +1,12 @@
 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.GetActivityStatByIdAndTimeDTO;
 import com.kxs.stat.api.model.KxsUserActTrade;
+import com.kxs.stat.api.vo.GetActivityStatByIdAndTimeVO;
+
+import java.util.List;
 
 /**
  * 创客激活统计表(KxsUserActTrade)表服务接口
@@ -11,5 +16,7 @@ import com.kxs.stat.api.model.KxsUserActTrade;
  */
 public interface KxsUserActTradeService extends IService<KxsUserActTrade> {
 
+
+    List<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTime(List<GetActivityStatByIdAndTimeDTO> param);
 }
 

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

@@ -1,6 +1,9 @@
 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.StatUserGetMyTradeDTO;
+import com.kxs.stat.api.dto.statUser.StatUserGetUserStatByDayOrMonthDTO;
 import com.kxs.stat.api.model.KxsUserTrade;
 
 import java.math.BigDecimal;
@@ -21,6 +24,27 @@ public interface KxsUserTradeService extends IService<KxsUserTrade> {
      * 获取交易统计数据
      */
     BigDecimal getStatAmount(String month);
+    /**
+     * 用户详情-获取用户统计数据
+     *
+     * @param param 访问实体
+     * @return 用户详情-获取用户统计数据
+     */
+    R getUserStatByDayOrMonth(StatUserGetUserStatByDayOrMonthDTO param);
+
+    /**
+     * 计奖交易-首页交易总额
+     *
+     * @return 计奖交易-首页交易总额
+     */
+    R getHomeAmout(Long userId);
+    /**
+     * 计奖交易-我的业绩
+     *
+     * @param param 查询实体
+     * @return 计奖交易-我的业绩
+     */
+    R getMyTrade(StatUserGetMyTradeDTO param);
 
 }
 

+ 14 - 1
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsMerchantTradeServiceImpl.java

@@ -1,11 +1,18 @@
 package com.kxs.stat.biz.service.impl;
 
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.util.R;
+import com.kxs.stat.api.vo.statUser.MerchantTradeDetailVO;
 import com.kxs.stat.biz.mapper.KxsMerchantTradeMapper;
 import com.kxs.stat.api.model.KxsMerchantTrade;
 import com.kxs.stat.biz.service.KxsMerchantTradeService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+
 /**
  * 商户交易统计总表(KxsMerchantTrade)表服务实现类
  *
@@ -13,7 +20,13 @@ import org.springframework.stereotype.Service;
  * @since 2024-05-07 17:25:06
  */
 @Service("kxsMerchantTradeService")
+@RequiredArgsConstructor
 public class KxsMerchantTradeServiceImpl extends ServiceImpl<KxsMerchantTradeMapper, KxsMerchantTrade> implements KxsMerchantTradeService {
-
+    private final KxsMerchantTradeMapper kxsMerchantTradeMapper;
+    @Override
+    public R merchantTradeDetail(Long id) {
+        String month = LocalDateTimeUtil.format(LocalDate.now(), DatePattern.SIMPLE_MONTH_PATTERN);
+        return R.ok(kxsMerchantTradeMapper.merchantTradeDetail(id, month));
+    }
 }
 

+ 28 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserActTradeServiceImpl.java

@@ -1,11 +1,17 @@
 package com.kxs.stat.biz.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.util.R;
+import com.kxs.stat.api.dto.statUser.GetActivityStatByIdAndTimeDTO;
+import com.kxs.stat.api.vo.GetActivityStatByIdAndTimeVO;
 import com.kxs.stat.biz.mapper.KxsUserActTradeMapper;
 import com.kxs.stat.api.model.KxsUserActTrade;
 import com.kxs.stat.biz.service.KxsUserActTradeService;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 创客激活统计表(KxsUserActTrade)表服务实现类
  *
@@ -15,5 +21,27 @@ import org.springframework.stereotype.Service;
 @Service("kxsUserActTradeService")
 public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMapper, KxsUserActTrade> implements KxsUserActTradeService {
 
+
+    @Override
+    public List<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTime(List<GetActivityStatByIdAndTimeDTO> param) {
+        ArrayList<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTimeVOS = new ArrayList<>();
+        for (GetActivityStatByIdAndTimeDTO getActivityStatByIdAndTimeDTO : param) {
+            Long userId = getActivityStatByIdAndTimeDTO.getUserId();
+            List<String> times = getActivityStatByIdAndTimeDTO.getTimes();
+            //查询pos激活
+            Integer posNumber = baseMapper.getActivityStatByGdOrPos(userId,times,1);
+            //查询广电激活
+            Integer gdNumber = baseMapper.getActivityStatByGdOrPos(userId,times,2);
+            //查询来客吧激活
+            Integer lkbNumber = baseMapper.getActivityStatByLkb(userId,times);
+            GetActivityStatByIdAndTimeVO getActivityStatByIdAndTimeVO = new GetActivityStatByIdAndTimeVO();
+            getActivityStatByIdAndTimeVO.setUserId(userId);
+            getActivityStatByIdAndTimeVO.setPosActivityNumber(posNumber);
+            getActivityStatByIdAndTimeVO.setGdActivityNumber(gdNumber);
+            getActivityStatByIdAndTimeVO.setLkbActivityNumber(lkbNumber);
+            getActivityStatByIdAndTimeVOS.add(getActivityStatByIdAndTimeVO);
+        }
+        return getActivityStatByIdAndTimeVOS;
+    }
 }
 

+ 321 - 26
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserTradeServiceImpl.java

@@ -8,16 +8,18 @@ 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.StatUserGetMyTradeDTO;
+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.TotalTradeAmtVO;
+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;
-import com.kxs.stat.biz.mapper.KxsUserLogoutTradeMapper;
-import com.kxs.stat.biz.mapper.KxsUserTradeMapper;
+import com.kxs.stat.biz.mapper.*;
 import com.kxs.stat.biz.service.KxsUserTradeService;
 import com.kxs.user.api.dto.kxsapp.IntegralStatDTO;
 import com.kxs.user.api.feign.RemoteKxsUserService;
@@ -30,10 +32,10 @@ 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.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 /**
  * 个人交易统计总表(KxsUserTrade)表服务实现类
@@ -55,9 +57,12 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
 
     private final KxsUserLogoutTradeMapper kxsUserLogoutTradeMapper;
 
+    private final KxsUserNewTradeMapper kxsUserNewTradeMapper;
+
+    private final KxsZlbTradeMapper kxsZlbTradeMapper;
     private final static String PREFIX_TABLE_NAME = "kxs_user_trade_";
     private final static String PREFIX_TABLE_NAME_TEMP = "kxs_user_trade_temp_";
-
+    private final KxsUserGdTradeMapper kxsUserGdTradeMapper;
 
     @Override
     @Async
@@ -65,16 +70,16 @@ 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);
         }
 
         String version = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_FORMATTER);
         //计算增量的pos交易
-        String tableName = PREFIX_TABLE_NAME + "after_" + thisMoth;
-//        String tableName = PREFIX_TABLE_NAME + thisMoth;
+//        String tableName = PREFIX_TABLE_NAME + "after_" + thisMoth;
+        String tableName = PREFIX_TABLE_NAME + thisMoth;
         String tempTableName = PREFIX_TABLE_NAME_TEMP + thisMoth;
 
         int batchSize = 20;
@@ -87,13 +92,13 @@ 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{
-                    shdTradeAmtVO.setPosAmt(kxsUserTrade.getPosAmt());
+                } else {
+                    shdTradeAmtVO.setPosAmt(shdTradeAmtVO.getPosAmt());
                     baseMapper.updateTempShdTableData(tempTableName, shdTradeAmtVO);
                 }
 
@@ -102,19 +107,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 +135,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 +157,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()));
@@ -195,5 +200,295 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         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);
+                }
+            }
+            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes,type);
+            return R.ok(statUserGetUserStatByDayOrMonthVO);
+        } 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);
+            }
+            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes,type);
+            return R.ok(statUserGetUserStatByDayOrMonthVO);
+        } else {
+            return R.failed("类型错误");
+        }
+    }
+
+    @Override
+    public R getHomeAmout(Long userId) {
+        LocalDate now = LocalDate.now();
+        String month = LocalDateTimeUtil.format(now, DatePattern.SIMPLE_MONTH_PATTERN);
+        String today = LocalDateTimeUtil.format(now, DatePattern.PURE_DATE_PATTERN);
+        //拼接表名
+        String tableName = PREFIX_TABLE_NAME + month;
+//        StatUserGetHomeAmoutVO statUserGetHomeAmoutVO1 = baseMapper.getHomeAmout(userId,tableName,date,month);
+        //今日交易额
+        StatUserGetHomeAmoutVO statUserGetHomeAmoutVO = new StatUserGetHomeAmoutVO();
+
+        //获取团队日总交易额
+        BigDecimal amountToDay = statUserGetHomeAmoutVO.getAmountToDay();
+        amountToDay = getAmountToDayOrMonth(userId, today, tableName, amountToDay, 1);
+        statUserGetHomeAmoutVO.setAmountToDay(amountToDay);
+
+        //获取团队月总交易额
+        BigDecimal amountMonth = statUserGetHomeAmoutVO.getAmountMonth();
+        amountMonth = getAmountToDayOrMonth(userId, month, tableName, amountMonth, 2);
+        statUserGetHomeAmoutVO.setAmountMonth(amountMonth);
+
+        //获取今日新增用户
+        Integer userAddToDay = statUserGetHomeAmoutVO.getUserAddToDay();
+        List<String> todayList = Arrays.asList(today);
+        List<TrendTimesVO> userAddTrendToday = kxsUserNewTradeMapper.getUserAddTrend(userId, todayList, 1);
+        for (TrendTimesVO trendTimesVO : userAddTrendToday) {
+            userAddToDay += trendTimesVO.getTotal();
+        }
+        statUserGetHomeAmoutVO.setUserAddToDay(userAddToDay);
+
+        //获取本月新增用户
+        Integer userAddMonth = statUserGetHomeAmoutVO.getUserAddMonth();
+        List<String> monthList = Arrays.asList(month);
+        List<TrendTimesVO> userAddTrendMonth = kxsUserNewTradeMapper.getUserAddTrend(userId, monthList, 2);
+        for (TrendTimesVO trendTimesVO : userAddTrendMonth) {
+            userAddMonth += trendTimesVO.getTotal();
+        }
+        statUserGetHomeAmoutVO.setUserAddMonth(userAddMonth);
+
+        //获取今日新增商户
+        Integer merchantAddToDay = statUserGetHomeAmoutVO.getMerchantAddToDay();
+        List<TrendTimesVO> userActListByDay = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 1);
+        for (TrendTimesVO trendTimesVO : userActListByDay) {
+            merchantAddToDay += trendTimesVO.getTotal();
+        }
+        statUserGetHomeAmoutVO.setMerchantAddToDay(merchantAddToDay);
+
+        //获取本月新增商户
+        Integer merchantAddMonth = statUserGetHomeAmoutVO.getMerchantAddMonth();
+        List<TrendTimesVO> userActListByMonth = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 2);
+        for (TrendTimesVO trendTimesVO : userActListByMonth) {
+            merchantAddMonth += trendTimesVO.getTotal();
+        }
+        statUserGetHomeAmoutVO.setMerchantAddMonth(merchantAddMonth);
+        return R.ok(statUserGetHomeAmoutVO);
+    }
+
+    @Override
+    public R getMyTrade(StatUserGetMyTradeDTO param) {
+        return null;
+    }
+
+    private BigDecimal getAmountToDayOrMonth(Long userId, String date, String tableName, BigDecimal amount, int type) {
+        //pos交易
+        TotalTradeAmtVO totalTradeAmtVO = baseMapper.getPosTrade(userId, tableName, date, type);
+        if (totalTradeAmtVO!= null){
+            amount = amount.add(totalTradeAmtVO.getPosAmt());
+        }
+        //来客吧交易额
+        totalTradeAmtVO = kxsLkbTradeMapper.getLkbTrade(userId, date, type);
+        if (totalTradeAmtVO!= null) {
+            amount = amount.add(totalTradeAmtVO.getLkbAmt());
+            amount = amount.add(totalTradeAmtVO.getLkbActAmt());
+        }
+        //助力宝交易额
+        totalTradeAmtVO = kxsZlbTradeMapper.getZlbTrade(userId, date, type);
+        if (totalTradeAmtVO != null) {
+            amount = amount.add(totalTradeAmtVO.getZlbAmt());
+        }
+        //广电交易额
+        totalTradeAmtVO = kxsUserGdTradeMapper.getGdActCount(userId, date, type);
+        if (totalTradeAmtVO != null){
+            Integer gdCount = totalTradeAmtVO.getGdCount();
+            //广电激活量 * 10000
+            amount = amount.add(new BigDecimal(gdCount * 10000));
+        }
+        //广电话费
+        totalTradeAmtVO = kxsUserGdTradeMapper.getGdTrade(userId, date, type);
+        if (totalTradeAmtVO != null){
+            amount = amount.add(totalTradeAmtVO.getGdAmount());
+        }
+        return amount;
+    }
+
+
+    private StatUserGetUserStatByDayOrMonthVO getStatUserGetUserStatByDayOrMonthVO(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, Integer type) {
+        StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = new StatUserGetUserStatByDayOrMonthVO();
+        /* ------ 交易趋势图 ------ */
+        setTreadeTrend(userId, now, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type);
+        /* ------ 交易百分比及总额 ------ */
+        setTreadeTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type);
+        /* ------ 激活百分比及总额 ------ */
+        setActTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type);
+        /* ------ 激活趋势图 ------ */
+        setActTrend(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type);
+        /* ------ 新增用户趋势图 ------ */
+        setUserAddTrend(userId, times, type, statUserGetUserStatByDayOrMonthVO);
+        return statUserGetUserStatByDayOrMonthVO;
+    }
+
+    private void setUserAddTrend(Long userId, List<String> times, Integer type, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO) {
+        TrendVO trendVO = new TrendVO();
+        List<TrendTimesVO> trendTimesVOS = kxsUserNewTradeMapper.getUserAddTrend(userId, times, type);
+        trendVO.setName("all");
+        trendVO.setTimes(trendTimesVOS);
+        statUserGetUserStatByDayOrMonthVO.setUserAddTrend(trendVO);
+    }
+
+    private void setActTrend(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type) {
+        //查询用户全部激活根据日期分组
+        List<TrendTimesVO> trendTimesActVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,null,type);
+        //判断是否二次查询
+        if (lastMonthTimes != null){
+            List<TrendTimesVO> trendTimesActVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,null,type);
+            trendTimesActVOS.addAll(trendTimesActVOSLast);
+        }
+        //查询用户全部激活量根据 日期以及品牌 分组
+        List<TrendTimesVO> trendTimesActBrandVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,1,type);
+        //判断是否二次查询
+        if (lastMonthTimes != null){
+            List<TrendTimesVO> trendTimesActBrandVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,1,type);
+            trendTimesActBrandVOS.addAll(trendTimesActBrandVOSLast);
+        }
+        //构造数据
+        ArrayList<TrendVO> trendVOSBrand = getTrendVOS(trendTimesActVOS, trendTimesActBrandVOS);
+        statUserGetUserStatByDayOrMonthVO.setActMerchantTrend(trendVOSBrand);//激活趋势图
+    }
+
+    private void setActTotalAndPercent(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer type) {
+        //获取传入日期激活商户数根据品牌分组
+        List<PercentVO> percentVOSAct = kxsUserActTradeMapper.getUserTradeTotal(times, userId,type);
+        //判断是否二次查询
+        if (lastMonthTimes != null){
+            List<PercentVO> percentVOSActLast = kxsUserActTradeMapper.getUserTradeTotal(lastMonthTimes, userId,type);
+            percentVOSAct.addAll(percentVOSActLast);
+        }
+        //总激活数
+        Integer actTotalCount = 0;
+        for (PercentVO percentVO : percentVOSAct) {
+            actTotalCount += percentVO.getTotal();
+        }
+        //计算百分比
+        for (PercentVO percentVO : percentVOSAct) {
+            percentVO.setPercent(BigDecimal.valueOf(percentVO.getTotal()).divide(BigDecimal.valueOf(actTotalCount),6, RoundingMode.HALF_UP));
+        }
+        statUserGetUserStatByDayOrMonthVO.setActMerchantPercent(percentVOSAct);//激活百分比
+        statUserGetUserStatByDayOrMonthVO.setActMerchantTotal(actTotalCount);//激活总数
+    }
+
+    private void setTreadeTotalAndPercent(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type) {
+        String thisMoth = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.SIMPLE_MONTH_PATTERN);
+        String tableName = PREFIX_TABLE_NAME + thisMoth;
+        //获取全部品牌总交易额
+        List<PercentVO> percentVOS = baseMapper.getUserTradeTotal(tableName,userId, times,type);
+        //判断是否二次查询
+        if (lastMonthTimes != null){
+            List<PercentVO> percentVOSLast = baseMapper.getUserTradeTotal(tableName,userId, lastMonthTimes,type);
+            percentVOS.addAll(percentVOSLast);
+        }
+        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));
+        }
+        statUserGetUserStatByDayOrMonthVO.setTreadePercent(percentVOS);//交易百分比
+        statUserGetUserStatByDayOrMonthVO.setTreadeTotal(totalAmout);//交易总额
+    }
+
+    private void setTreadeTrend(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type) {
+        String thisMoth = LocalDateTimeUtil.format(now, DatePattern.SIMPLE_MONTH_PATTERN);
+        String tableName = PREFIX_TABLE_NAME + thisMoth;
+        List<TrendTimesVO> trendTimesVOS = new ArrayList<>();
+        if (type == 1){
+            //查询用户全部交易额根据日期分组
+            trendTimesVOS = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,null,type);
+            //判断是否需要二次查询
+            if (lastMonthTimes != null){
+                List<TrendTimesVO> trendTimesVOSByLastMonthTimes = baseMapper.getUserTradeListByDayOrMonth(tableName, lastMonthTimes, userId,null,type);
+                trendTimesVOS.addAll(trendTimesVOSByLastMonthTimes);
+            }
+        }else {
+            for (String month : times) {
+                //拼接表名
+                String newTableName = PREFIX_TABLE_NAME + month;
+                try{
+                    List<TrendTimesVO> userTradeListByDayOrMonth = baseMapper.getUserTradeListByDayOrMonth(newTableName, times, userId, null, type);
+                    trendTimesVOS.addAll(userTradeListByDayOrMonth);
+                }catch (Exception e){
+                    log.info(e.getMessage());
+                }
+            }
+        }
+        //查询用户全部交易额根据 日期以及品牌 分组
+        List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,1,type);
+        //判断是否需要二次查询
+        if (lastMonthTimes != null){
+            List<TrendTimesVO> trendTimesVOListBrandLast = baseMapper.getUserTradeListByDayOrMonth(tableName, lastMonthTimes, userId,1,type);
+            trendTimesVOListBrand.addAll(trendTimesVOListBrandLast);
+        }
+        //构造数据
+        ArrayList<TrendVO> trendVOS = getTrendVOS(trendTimesVOS, trendTimesVOListBrand);
+        statUserGetUserStatByDayOrMonthVO.setTreadeTrend(trendVOS);//交易趋势
+    }
+
+    private static ArrayList<TrendVO> getTrendVOS(List<TrendTimesVO> trendTimesVOS, List<TrendTimesVO> trendTimesVOListBrand) {
+        //将全部交易额以及品牌交易额构造进入map  key为品牌id  或  all
+        Map<String,List<TrendTimesVO>> treadTrend = new HashMap<>();
+        treadTrend.put("all", trendTimesVOS);
+        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);
+            }
+        }
+        //将map转换为返回实体类
+        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);
+        }
+        return trendVOS;
+    }
+
+
 }
 

+ 14 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsLkbTradeMapper.xml

@@ -26,5 +26,19 @@
         </where>
         GROUP BY user_id
     </select>
+    <select id="getLkbTrade" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        SELECT SUM(trade_amt) as trade_amt, SUM(act_trade_amt)
+        FROM kxs_lkb_trade
+        <where>
+            and total_type = 1
+            <if test="type == 1">
+                and trade_date = #{date}
+            </if>
+            <if test="type == 2">
+                and trade_month = #{date}
+            </if>
+            and user_id = #{userId}
+        </where>
+    </select>
 
 </mapper>

+ 21 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsMerchantTradeMapper.xml

@@ -18,5 +18,26 @@
     <update id="automaticTableCreationTasks">
         CREATE TABLE IF NOT EXISTS `${tableName}` LIKE kxs_merchant_trade;
     </update>
+    <select id="merchantTradeDetail" resultType="com.kxs.stat.api.vo.statUser.MerchantTradeDetailVO">
+        select
+            create_time,
+            trade_date,
+            trade_month,
+            merchant_id,
+            trade_amt,
+            sum(trade_amt)
+        from
+            kxs_merchant_trade
+        where
+            del_flag != 1
+            and merchant_id = #{id}
+            and trade_month = #{month}
+        GROUP BY
+            create_time,
+            trade_date,
+            trade_month,
+            merchant_id,
+            trade_amt
+    </select>
 
 </mapper>

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

@@ -25,5 +25,104 @@
         </where>
         GROUP BY user_id
     </select>
+    <select id="getUserTradeTotal" resultType="com.kxs.stat.api.vo.statUser.PercentVO">
+        SELECT
+        SUM(act_num) AS total,
+        brand_id
+        FROM
+        kxs_user_act_trade
+        WHERE del_flag != 1
+        AND user_id = #{userId}
+        AND total_type = 1
+        <if test="type == 1">
+            and trade_date in
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+        </if>
+        <if test="type == 2">
+            and trade_month in
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+        </if>
+        GROUP BY
+        brand_id
+    </select>
+    <select id="getUserActListByDayOrMonth" resultType="com.kxs.stat.api.vo.statUser.TrendTimesVO">
+        SELECT
+        SUM(act_num) AS total
+        <if test="type == 1">
+            ,trade_date as time
+        </if>
+        <if test="type == 2">
+            ,trade_month as time
+        </if>
+        <if test="brandId != null">
+            ,brand_id
+        </if>
+        FROM
+        kxs_user_act_trade
+        WHERE del_flag != 1
+        AND user_id = #{userId}
+        AND total_type = 1
+        <if test="type == 1">
+            AND trade_date IN
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+        </if>
+        <if test="type == 2">
+            AND trade_month IN
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+        </if>
+        GROUP BY
+        <if test="type == 1">
+            trade_date
+        </if>
+        <if test="type == 2">
+            trade_month
+        </if>
+        <if test="brandId != null">
+            ,brand_id
+        </if>
+    </select>
+    <select id="getActivityStatByGdOrPos" resultType="java.lang.Integer">
+        select
+            sum(act_num)
+        from
+            kxs_user_act_trade
+        where
+            del_flag != 1
+            and total_type = 0
+            and user_id = #{userId}
+            and trade_date in
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+            <if test="type == 1">
+                and brand_id != 14
+            </if>
+            <if test="type == 2">
+                and brand_id = 14
+            </if>
+    </select>
+    <select id="getActivityStatByLkb" resultType="java.lang.Integer">
+        select
+        sum(act_num)
+        from
+        kxs_lkb_act_trade
+        where
+        del_flag != 1
+        and total_type = 0
+        and user_id = #{userId}
+        and trade_date in
+        <foreach collection="times" item="time" open="(" separator="," close=")">
+            #{time}
+        </foreach>
+    </select>
+
 
 </mapper>

+ 28 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserGdTradeMapper.xml

@@ -17,5 +17,33 @@
         <result column="total_type" property="totalType" />
 
     </resultMap>
+    <select id="getGdActCount" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        SELECT SUM(act_num) as gdCount
+        FROM kxs_user_act_trade
+        <where>
+            and brand_id = 14
+            and total_type = 1
+            and user_id = #{userId}
+            <if test="type == 1">
+                and trade_date = #{date}
+            </if>
+            <if test="type == 2">
+                and trade_month = #{date}
+            </if>
+        </where>
+    </select>
+    <select id="getGdTrade" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        select  SUM(trade_amt) as gdAmount from kxs_user_gd_trade
+        <where>
+            and total_type = 1
+            and user_id = #{userId}
+            <if test="type == 1">
+                and trade_date = #{date}
+            </if>
+            <if test="type == 2">
+                and trade_month = #{date}
+            </if>
+        </where>
+    </select>
 
 </mapper>

+ 34 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserNewTradeMapper.xml

@@ -15,5 +15,39 @@
         <result column="new_count" property="newCount" />
 
     </resultMap>
+    <select id="getUserAddTrend" resultType="com.kxs.stat.api.vo.statUser.TrendTimesVO">
+        select
+            sum(new_count) as total
+        <if test="type == 1">
+            ,trade_date
+        </if>
+        <if test="type == 2">
+            ,trade_month
+        </if>
+        from kxs_user_new_trade
+        where
+            del_flag != 1
+        and user_id = #{userId}
+        <if test="type == 1">
+            and trade_date in
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+        </if>
+        <if test="type == 2">
+            and trade_month in
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+        </if>
+        and total_type = 1
+        GROUP BY
+        <if test="type == 1">
+            trade_date
+        </if>
+        <if test="type == 2">
+            trade_month
+        </if>
+    </select>
 
 </mapper>

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

@@ -72,6 +72,194 @@
     <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="getUserTradeListByDayOrMonth" 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
+        <if test="type == 1">
+            ,kut.trade_date as time
+        </if>
+        <if test="type == 2">
+            ,kut.trade_month as time
+        </if>
+        <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 kut.total_type = 1
+        <if test="type == 1">
+            and kut.trade_date in
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+        </if>
+        GROUP BY
+        <if test="type == 1">
+            kut.trade_date
+        </if>
+        <if test="type == 2">
+            kut.trade_month
+        </if>
+        <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,
+            kut.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
+        <if test="type == 1">
+            and kut.trade_date in
+            <foreach collection="times" item="time" open="(" separator="," close=")">
+                #{time}
+            </foreach>
+        </if>
+        and kut.user_id = #{userId}
+        and kut.total_type = 1
+        GROUP BY kut.brand_id
+    </select>
+
+    <select id="getHomeAmout" resultType="com.kxs.stat.api.vo.statUser.StatUserGetHomeAmoutVO">
+        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 amountToDay,
+            SUM(kuat.act_num) as merchantAddToDay,
+            SUM(tunt.new_count) as userAddToDay,
+            (
+                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 amountMonth
+                from
+                    `${tableName}` kut
+                        LEFT JOIN kxs_lkb_trade klt ON kut.user_id = klt.user_id
+                        AND kut.trade_date = klt.trade_date
+                        AND klt.total_type = 1
+                        LEFT JOIN kxs_zlb_trade kzt ON kut.user_id = kzt.user_id
+                        AND kut.trade_date = kzt.trade_date
+                        AND kzt.total_type = 1
+                where kut.del_flag != 1
+                and kut.user_id = #{userId}
+                and kut.total_type = 1
+        group by
+            kut.trade_month
+            ) as amountMonth,
+            (
+        SELECT
+            SUM(new_count)
+        FROM
+            kxs_user_new_trade
+        WHERE
+            del_flag != 1
+          AND total_type = 1
+          AND user_id = #{userId}
+          AND trade_month = #{month}
+            ) AS userAddMonth,
+            (
+        SELECT
+            SUM(kuat.act_num)
+        FROM
+            kxs_user_act_trade
+        WHERE
+            del_flag != 1
+          AND total_type = 1
+          AND user_id = #{userId}
+          AND trade_month = #{month}
+            ) AS merchantAddMonth
+        from
+            `${tableName}` kut
+            LEFT JOIN kxs_lkb_trade klt ON kut.user_id = klt.user_id
+            AND kut.trade_date = klt.trade_date
+            AND klt.total_type = 0
+            LEFT JOIN kxs_zlb_trade kzt ON kut.user_id = kzt.user_id
+            AND kut.trade_date = kzt.trade_date
+            AND kzt.total_type = 0
+            LEFT JOIN kxs_user_act_trade kuat ON kuat.user_id = kut.user_id
+            AND kut.trade_date = kuat.trade_date
+            AND kuat.total_type = 0
+            LEFT JOIN kxs_user_new_trade tunt ON kut.user_id = tunt.user_id
+            AND kut.trade_date = tunt.trade_date
+            AND tunt.total_type = 0
+        where kut.del_flag != 1
+          and kut.user_id = #{userId}
+          and kut.trade_date = #{date}
+          and kut.total_type = 0
+    </select>
+    <select id="getPosTrade" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        select
+        sum(pro_b_direct_trade_amt + pro_b_debit_trade_amt + pro_a_debit_trade_amt + pro_a_direct_trade_amt +
+        pro_debit_trade_amt + pro_direct_trade_amt + help_debit_trade_amt + help_direct_trade_amt) as posAmt
+        from ${tableName}
+        <where>
+            and total_type = 1
+            and user_id = #{userId}
+        <if test="type == 1">
+            and trade_date = #{date}
+        </if>
+        <if test="type == 2">
+            and trade_month = #{date}
+         </if>
+        </where>
+    </select>
+
+
     <insert id="insertTempShdTableData">
         INSERT INTO `${tableName}`
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 14 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsZlbTradeMapper.xml

@@ -15,5 +15,19 @@
         <result column="total_type" property="totalType" />
 
     </resultMap>
+    <select id="getZlbTrade" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        select sum(trade_amt) as zlbAmt from  kxs_zlb_trade
+        <where>
+            and user_id = #{userId}
+            <if test="type == 1">
+                and trade_date = #{date}
+            </if>
+            <if test="type == 2">
+                and trade_month = #{date}
+            </if>
+            and del_flag != 1
+            and total_type = 1
+        </where>
+    </select>
 
 </mapper>

+ 5 - 1
kxs-store/kxs-store-api/src/main/java/com/kxs/store/api/vo/kxsapp/store/StoreListVO.java

@@ -65,7 +65,11 @@ public class StoreListVO implements Serializable {
 
 
 
-
+    /**
+     * 未发货机具数量
+     */
+    @Schema(description = "未发货机具数量")
+    private Integer unfilledTotal;
 
 	
 

+ 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;
     /**
      * 申请单号
      */

+ 2 - 2
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/controller/kxsapp/StoreAdvanceController.java

@@ -85,9 +85,9 @@ public class StoreAdvanceController {
      * @return 小分仓-查询用户
      */
     @GetMapping("/getUserDetail")
-    public R getUserDetail(@RequestParam("userCode") String userCode, @RequestParam("amount") BigDecimal amount) {
+    public R getUserDetail(@RequestParam("userCode") String userCode) {
 
-        return R.ok(kxsWarehouseLimitService.getUserDetail(userCode, amount));
+        return R.ok(kxsWarehouseLimitService.getUserDetail(userCode));
     }
 
 

+ 1 - 2
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/KxsWarehouseLimitService.java

@@ -20,10 +20,9 @@ public interface KxsWarehouseLimitService extends IService<KxsWarehouseLimit> {
      * 预发货小分仓 获取用户详细信息
      *
      * @param userCode 用户代码
-     * @param amount   量
      * @return {@link AdvanceUserDetailVO}
      */
-    AdvanceUserDetailVO getUserDetail(String userCode, BigDecimal amount);
+    AdvanceUserDetailVO getUserDetail(String userCode);
 
     /**
      * 用户预发机额度详情

+ 1 - 1
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsWarehouseLimitServiceImpl.java

@@ -55,7 +55,7 @@ public class KxsWarehouseLimitServiceImpl extends ServiceImpl<KxsWarehouseLimitM
     private final KxsWarehouseCreditAmountMapper kxsWarehouseCreditAmountMapper;
 
     @Override
-    public AdvanceUserDetailVO getUserDetail(String userCode, BigDecimal amount) {
+    public AdvanceUserDetailVO getUserDetail(String userCode) {
 
 
         AdvanceUserDetailVO advanceUserDetailVO = new AdvanceUserDetailVO();

+ 2 - 0
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsWarehouseMachineApplyServiceImpl.java

@@ -155,3 +155,5 @@ public class KxsWarehouseMachineApplyServiceImpl extends ServiceImpl<KxsWarehous
     }
 }
 
+
+

+ 9 - 2
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsWarehouseServiceImpl.java

@@ -51,8 +51,15 @@ public class KxsWarehouseServiceImpl extends ServiceImpl<KxsWarehouseMapper, Kxs
     @Override
     public List<StoreListVO> userStoreList() {
         Long userId = SecurityUtils.getUser().getId();
-
-        return baseMapper.userStoreList(userId);
+        List<StoreListVO> storeListVOS = baseMapper.userStoreList(userId);
+        for (StoreListVO storeListVO : storeListVOS) {
+            //待发货
+            Long unSendCount = kxsMachineApplyMapper.selectCount(Wrappers.<KxsMachineApply>lambdaQuery()
+                    .eq(KxsMachineApply::getStatus, MachineOrderStatusEnum.UNDER_REVIEW.getType())
+                    .eq(KxsMachineApply::getWarehouseId, storeListVO.getId()));
+            storeListVO.setUnfilledTotal(unSendCount.intValue());
+        }
+        return storeListVOS;
     }
 
     @Override

+ 2 - 2
kxs-store/kxs-store-biz/src/main/resources/mapper/KxsMachineApplyMapper.xml

@@ -31,10 +31,10 @@
     <select id="getByPage" resultType="com.kxs.store.api.vo.kxsapp.storeOrder.StoreOrderListVO">
         select a.id, a.create_time, a.order_sn, a.get_mode, a.apply_num, a.contacts, a.phone, a.address, a.apply_type, a.status, a.username, a.user_code from kxs_machine_apply a
         <where>
-            <if test="query.brandId != null">
+            <if test="query.brandId != null and query.brandId != 0">
                 and a.brand_id = #{query.brandId}
             </if>
-            <if test="query.warehouseId != null">
+            <if test="query.warehouseId != null and query.brandId != 0">
                 and a.warehouse_id = #{query.warehouseId}
             </if>
             <if test="query.status != null">

+ 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"/>

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

@@ -34,7 +34,7 @@
 
     </resultMap>
     <select id="searchList" resultType="com.kxs.store.api.vo.kxsapp.store.StoreSearchListVO">
-        select a.id, a.user_id, a.contacts, a.warehouse_phone, a.warehouse_address, a.warehouse_no, a.status, a.province, a.city, a.area, a.warehouse_type, a.warehouse_name,
+        select a.id, a.user_id, a.contacts, a.warehouse_phone, a.warehouse_address, a.warehouse_no, a.status, a.province, a.city, a.area, a.warehouse_type, a.warehouse_name,a.brand_id,
         stock.stock_num
         from kxs_warehouse a
         left join kxs_warehouse_stock stock on a.id = stock.warehouse_id

+ 26 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/admin/GetByBcqtPageDTO.java

@@ -0,0 +1,26 @@
+package com.kxs.system.api.dto.admin;
+
+import lombok.Data;
+
+/**
+ * 百城千团列表查询dto
+ */
+@Data
+public class GetByBcqtPageDTO {
+    /**
+     * 活动状态
+     */
+    private Integer status;
+    /**
+     * 达标状态
+     */
+    private Integer reachStatus;
+    /**
+     * 团队名
+     */
+    private String teamName;
+    /**
+     * 参与用户id
+     */
+    private String userCode;
+}

+ 36 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/CampAddBcqtTeamDTO.java

@@ -0,0 +1,36 @@
+package com.kxs.system.api.dto.kxsapp.camp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+
+/**
+ * 百城千团-创建团队-dto
+ *
+ * @author 系统
+ * @date 2024-05-22 14:29:06
+ */
+@Data
+public class CampAddBcqtTeamDTO {
+
+    /**
+     * 团队名称
+     */
+    @Schema(description = "团队名称")
+    @NotEmpty(message = "团队名不能为空")
+    private String teamName;
+
+
+    /**
+     * 队长id
+     */
+    @Schema(description = "队长id")
+    @NotNull(message = "用户id不能为空")
+    private Long captainId;
+
+
+
+
+}

+ 32 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/CampOpenActivityDTO.java

@@ -0,0 +1,32 @@
+package com.kxs.system.api.dto.kxsapp.camp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 百城千团-开启活动-dto
+ *
+ * @author 系统
+ * @date 2024-05-22 14:29:06
+ */
+@Data
+public class CampOpenActivityDTO {
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 活动时长(单位:自然日)
+     */
+    @Schema(description = "活动时长(单位:自然日)")
+    private Integer activityDate;
+
+
+
+
+}

+ 14 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/CampReturnTeamDTO.java

@@ -0,0 +1,14 @@
+package com.kxs.system.api.dto.kxsapp.camp;
+
+import lombok.Data;
+
+/**
+ * 百城千团-退出团队
+ */
+@Data
+public class CampReturnTeamDTO {
+    /**
+     * 团队id
+     */
+    private Long id;
+}

+ 14 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/JoinTheTeamDTO.java

@@ -0,0 +1,14 @@
+package com.kxs.system.api.dto.kxsapp.camp;
+
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * 百城千团 - 加入团队dto
+ */
+@Data
+public class JoinTheTeamDTO {
+    @NotNull(message = "加入团队id不能为空")
+    private long id;
+}

+ 21 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteUserService.java

@@ -4,9 +4,13 @@ package com.kxs.system.api.feign;
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.util.R;
 import com.kxs.system.api.dto.admin.UserInfo;
+import com.kxs.system.api.dto.kxsapp.camp.CampAddBcqtTeamDTO;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.service.annotation.GetExchange;
+import org.springframework.web.service.annotation.PostExchange;
 
 /**
  * @author Lxq
@@ -23,4 +27,21 @@ public interface RemoteUserService {
 	@GetExchange("/user/info/query")
 	R<UserInfo> info(@RequestParam("username") String username, @RequestHeader(SecurityConstants.FROM) String from);
 
+	/**
+	 * 创建百城千团
+	 */
+	@PostExchange("/camp/addBcqtTeam")
+	R addBcqtTeam(@RequestBody CampAddBcqtTeamDTO param, @RequestHeader(SecurityConstants.FROM) String from);
+
+	/**
+	 * 定时统计活动期间人员激活  定时任务
+	 */
+	@PostExchange("/setUserActivityTimeStat")
+	void setUserActivityTimeStat(@RequestHeader(SecurityConstants.FROM) String from);
+
+	/**
+	 * 定时任务,关闭活动结束的team和用户状态
+	 */
+	@PostExchange("/setUserActiviteStatus")
+	void setUserActiviteStatus(@RequestHeader(SecurityConstants.FROM) String from);
 }

+ 133 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsBcqtTeam.java

@@ -0,0 +1,133 @@
+package com.kxs.system.api.model;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 百城千团团队表(KxsBcqtTeam)表实体类
+ *
+ * @author 系统
+ * @since 2024-05-22 14:29:03
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class KxsBcqtTeam extends Model<KxsBcqtTeam> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    
+    
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 删除标记,0未删除,1已删除
+     */
+    @Schema(description = "删除标记,0未删除,1已删除")
+    private String delFlag;
+
+
+    /**
+     * 版本
+     */
+    @Schema(description = "版本")
+    private Integer version;
+
+
+    /**
+     * 团队名称
+     */
+    @Schema(description = "团队名称")
+    private String teamName;
+
+
+    /**
+     * 活动开始时间
+     */
+    @Schema(description = "活动开始时间")
+    private LocalDateTime startTime;
+
+
+    /**
+     * 活动结束时间
+     */
+    @Schema(description = "活动结束时间")
+    private LocalDateTime endTime;
+
+
+    /**
+     * 活动状态 0报名中 1已开始 2已结束
+     */
+    @Schema(description = "活动状态 0报名中 1已开始 2已结束")
+    private Integer status;
+
+
+    /**
+     * 达标状态 0未达标 1已达标
+     */
+    @Schema(description = "达标状态 0未达标 1已达标")
+    private Integer reachStatus;
+
+
+    /**
+     * 队长id
+     */
+    @Schema(description = "队长id")
+    private Long captainId;
+
+
+    /**
+     * 团队人数
+     */
+    @Schema(description = "团队人数")
+    private Integer teamNumber;
+
+
+    /**
+     * 活动时长(单位:自然日)
+     */
+    @Schema(description = "活动时长(单位:自然日)")
+    private Integer activityDate;
+
+    /**
+     * 队长名
+     */
+    @Schema(description = "队长名")
+    private String username;
+
+
+}
+

+ 136 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsBcqtTeamDetail.java

@@ -0,0 +1,136 @@
+package com.kxs.system.api.model;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 百城千团团队明细表(KxsBcqtTeamDetail)表实体类
+ *
+ * @author 系统
+ * @since 2024-05-22 14:29:04
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class KxsBcqtTeamDetail extends Model<KxsBcqtTeamDetail> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    
+    
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 删除标记,0未删除,1已删除
+     */
+    @Schema(description = "删除标记,0未删除,1已删除")
+    private String delFlag;
+
+
+    /**
+     * 版本
+     */
+    @Schema(description = "版本")
+    private Integer version;
+
+
+    /**
+     * 用户id
+     */
+    @Schema(description = "用户id")
+    private Long userId;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 用户编号
+     */
+    @Schema(description = "用户编号")
+    private String userCode;
+
+
+    /**
+     * pos激活数
+     */
+    @Schema(description = "pos激活数")
+    private Integer posActivateNumber;
+
+
+    /**
+     * 来客吧激活数
+     */
+    @Schema(description = "来客吧激活数")
+    private Integer lkbActivateNumber;
+
+
+    /**
+     * 广电卡激活数
+     */
+    @Schema(description = "广电卡激活数")
+    private Integer gdActivateNumber;
+
+
+    /**
+     * 队长标识0非队长1队长
+     */
+    @Schema(description = "队长标识0非队长1队长")
+    private Integer captainStatus;
+
+
+    /**
+     * 结束标识0参与中 1已结束参与
+     */
+    @Schema(description = "结束标识0参与中 1已结束参与")
+    private Integer endFlag;
+
+
+    /**
+     * 团队id
+     */
+    @Schema(description = "团队id")
+    private Long teamId;
+
+
+
+
+}
+

+ 106 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/admin/GetByBcqtPageVO.java

@@ -0,0 +1,106 @@
+package com.kxs.system.api.vo.admin;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 百城千团列表查询vo
+ */
+@Data
+public class GetByBcqtPageVO {
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+
+    /**
+     * 团队名称
+     */
+    @Schema(description = "团队名称")
+    private String teamName;
+
+
+    /**
+     * 活动开始时间
+     */
+    @Schema(description = "活动开始时间")
+    private LocalDateTime startTime;
+
+
+    /**
+     * 活动结束时间
+     */
+    @Schema(description = "活动结束时间")
+    private LocalDateTime endTime;
+
+
+    /**
+     * 活动状态 0报名中 1已开始 2已结束
+     */
+    @Schema(description = "活动状态 0报名中 1已开始 2已结束")
+    private Integer status;
+
+
+    /**
+     * 达标状态 0未达标 1已达标
+     */
+    @Schema(description = "达标状态 0未达标 1已达标")
+    private Integer reachStatus;
+
+
+    /**
+     * 队长id
+     */
+    @Schema(description = "队长id")
+    private Long captainId;
+
+
+    /**
+     * 团队人数
+     */
+    @Schema(description = "团队人数")
+    private Integer teamNumber;
+
+
+    /**
+     * 活动时长(单位:自然日)
+     */
+    @Schema(description = "活动时长(单位:自然日)")
+    private Integer activityDate;
+
+    /**
+     * 队长名
+     */
+    @Schema(description = "队长名")
+    private String username;
+    /**
+     * 队长编号
+     */
+    @Schema(description = "队长编号")
+    private String userCode;
+    /**
+     * 激活总量
+     */
+    @Schema(description = "激活总量")
+    private Integer activityTotal;
+
+}

+ 95 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampCampUserPageVO.java

@@ -0,0 +1,95 @@
+package com.kxs.system.api.vo.kxsapp.camp;
+
+
+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.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 参与创客列表vo
+ *
+ * @author 系统
+ * @date 2024-05-22 14:29:05
+ */
+@Data
+@Schema(description = "参与创客列表返回实体")
+public class CampCampUserPageVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 用户ID
+     */
+    @Schema(description = "用户ID")
+    private Integer userId;
+
+
+    /**
+     * 用户姓名
+     */
+    @Schema(description = "用户姓名")
+    private String username;
+
+
+    /**
+     * 创客编号
+     */
+    @Schema(description = "创客编号")
+    private String userCode;
+
+
+    /**
+     * 团队开机总数
+     */
+    @Schema(description = "团队开机总数")
+    private Integer teamOpenNum;
+
+
+    /**
+     * 团队下单数量
+     */
+    @Schema(description = "团队下单数量")
+    private Integer teamOrderNum;
+
+
+    /**
+     * 创客订单奖金池
+     */
+    @Schema(description = "创客订单奖金池")
+    private BigDecimal teamOrderPool;
+
+
+    /**
+     * 创客盟主下单奖金池
+     */
+    @Schema(description = "创客盟主下单奖金池")
+    private BigDecimal teamLeaderPool;
+
+
+    /**
+     * 团队下单大小盟主
+     */
+    @Schema(description = "团队下单大小盟主")
+    private Integer teamLeaderNum;
+
+
+
+
+
+	
+
+}

+ 110 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampGetBcqtDetailVO.java

@@ -0,0 +1,110 @@
+package com.kxs.system.api.vo.kxsapp.camp;
+
+
+
+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.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 百城千团-业绩查看vo
+ *
+ * @author 系统
+ * @date 2024-05-22 14:29:06
+ */
+@Data
+@Schema(description = "百城千团-业绩查看返回实体")
+public class CampGetBcqtDetailVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 团队名称
+     */
+    @Schema(description = "团队名称")
+    private String teamName;
+
+
+    /**
+     * 活动开始时间
+     */
+    @Schema(description = "活动开始时间")
+    private LocalDateTime startTime;
+
+
+    /**
+     * 活动结束时间
+     */
+    @Schema(description = "活动结束时间")
+    private LocalDateTime endTime;
+
+
+    /**
+     * 活动状态 0报名中 1已开始 2已结束
+     */
+    @Schema(description = "活动状态 0报名中 1已开始 2已结束")
+    private Integer status;
+
+
+    /**
+     * 队长id
+     */
+    @Schema(description = "队长id")
+    private Long captainId;
+
+
+    /**
+     * 团队人数
+     */
+    @Schema(description = "团队人数")
+    private Integer teamNumber;
+
+
+    /**
+     * 活动时长(单位:自然日)
+     */
+    @Schema(description = "活动时长(单位:自然日)")
+    private Integer activityDate;
+
+
+    /**
+     * 奖金池
+     */
+    @Schema(description = "奖金池")
+    private BigDecimal totalAmount;
+
+
+    /**
+     * 激活总量
+     */
+    @Schema(description = "激活总量")
+    private Integer activiteTotal;
+
+
+    /**
+     * 百城千团团队明细表
+     */
+    @Schema(description = "百城千团团队明细表")
+    private List<TeamUserItem> TeamUser;
+
+
+
+
+
+	
+
+}

+ 63 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampGetBcqtListVO.java

@@ -0,0 +1,63 @@
+package com.kxs.system.api.vo.kxsapp.camp;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 百城千团-获取列表vo
+ *
+ * @author 系统
+ * @date 2024-05-22 14:29:06
+ */
+@Data
+@Schema(description = "百城千团-获取列表返回实体")
+public class CampGetBcqtListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 团队名称
+     */
+    @Schema(description = "团队名称")
+    private String teamName;
+
+
+    /**
+     * 团队人数
+     */
+    @Schema(description = "团队人数")
+    private Integer teamNumber;
+
+
+    /**
+     * 发起人
+     */
+    @Schema(description = "发起人")
+    private String username;
+    /**
+     * 关系
+     */
+    @Schema(description = "关系")
+    private Integer relation = 0;
+
+
+
+
+	
+
+}

+ 80 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampGetMyBcqtListVO.java

@@ -0,0 +1,80 @@
+package com.kxs.system.api.vo.kxsapp.camp;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 百城千团-获取我的参团记录vo
+ *
+ * @author 系统
+ * @date 2024-05-22 14:29:06
+ */
+@Data
+@Schema(description = "百城千团-获取我的参团记录返回实体")
+public class CampGetMyBcqtListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 团队名称
+     */
+    @Schema(description = "团队名称")
+    private String teamName;
+
+
+    /**
+     * 活动开始时间
+     */
+    @Schema(description = "活动开始时间")
+    private LocalDateTime startTime;
+
+
+    /**
+     * 活动结束时间
+     */
+    @Schema(description = "活动结束时间")
+    private LocalDateTime endTime;
+
+
+    /**
+     * 活动状态 0报名中 1已开始 2已结束
+     */
+    @Schema(description = "活动状态 0报名中 1已开始 2已结束")
+    private Integer status;
+
+
+    /**
+     * 队长id
+     */
+    @Schema(description = "队长id")
+    private Long captainId;
+
+
+    /**
+     * 发起人姓名
+     */
+    @Schema(description = "发起人姓名")
+    private String username;
+
+
+
+
+
+	
+
+}

+ 64 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/TeamUserItem.java

@@ -0,0 +1,64 @@
+package com.kxs.system.api.vo.kxsapp.camp;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+@Data
+public class TeamUserItem {
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+
+    /**
+     * 用户id
+     */
+    @Schema(description = "用户id")
+    private Long userId;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 用户编号
+     */
+    @Schema(description = "用户编号")
+    private String userCode;
+
+
+    /**
+     * pos激活数
+     */
+    @Schema(description = "pos激活数")
+    private Integer posActivateNumber;
+
+
+    /**
+     * 团队id
+     */
+    @Schema(description = "团队id")
+    private Long teamId;
+
+
+
+
+
+
+
+}

+ 4 - 0
kxs-system/kxs-system-biz/pom.xml

@@ -93,6 +93,10 @@
             <groupId>com.kxs</groupId>
             <artifactId>kxs-common-oss</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.kxs</groupId>
+            <artifactId>kxs-stat-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 40 - 1
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/admin/SysCampController.java

@@ -7,10 +7,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kxs.common.core.util.R;
 import com.kxs.common.log.annotation.SysLog;
+import com.kxs.system.api.dto.admin.GetByBcqtPageDTO;
+import com.kxs.system.api.model.KxsBcqtTeam;
 import com.kxs.system.api.model.KxsCamp;
 import com.kxs.system.api.model.KxsCampBonusLog;
 import com.kxs.system.api.model.KxsCampUser;
 import com.kxs.system.api.vo.admin.CampUserExcelVO;
+import com.kxs.system.biz.service.KxsBcqtTeamService;
 import com.kxs.system.biz.service.KxsCampBonusLogService;
 import com.kxs.system.biz.service.KxsCampService;
 import com.kxs.system.biz.service.KxsCampUserService;
@@ -42,7 +45,7 @@ public class SysCampController {
     private final KxsCampService kxsCampService;
     private final KxsCampUserService kxsCampUserService;
     private final KxsCampBonusLogService kxsCampBonusLogService;
-
+    private final KxsBcqtTeamService kxsBcqtTeamService;
 
 
     /**
@@ -165,8 +168,44 @@ public class SysCampController {
     }
 
 
+    /**
+     * 训练营-百城千团列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 训练营-百城千团列表
+     */
+    @GetMapping("/bcqtPage")
+//    @PreAuthorize("@pms.hasPermission('sys_camp_bcqt_page')")
+    public R bcqtPage(Page<KxsBcqtTeam> page, @ParameterObject GetByBcqtPageDTO param) {
+
+        return kxsBcqtTeamService.getByBcqtPage(page, param);
+    }
+
+    /**
+     * 修改团名
+     * @param kxsBcqtTeam  实体
+     * @return
+     */
+    @PostMapping("/updateBcqt")
+//    @PreAuthorize("@pms.hasPermission('sys_camp_bcqt_update')")
+    public R updateBcqt(@RequestBody KxsBcqtTeam kxsBcqtTeam) {
+        kxsBcqtTeamService.updateBcqt(kxsBcqtTeam);
+        return R.ok();
+    }
 
+    /**
+     * 训练营-百城千团列表-激活统计
+     *
+     * @param id 查询团队id
+     * @return 训练营-百城千团列表
+     */
+    @GetMapping("/bcqtGetDetail")
+//    @PreAuthorize("@pms.hasPermission('sys_camp_bcqt_detail')")
+    public R bcqtGetDetail(@RequestParam("id") Long id) {
 
+        return kxsBcqtTeamService.bcqtGetDetail(id);
+    }
 
 }
 

+ 145 - 8
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/kxsapp/CampController.java

@@ -3,18 +3,25 @@ package com.kxs.system.biz.controller.kxsapp;
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kxs.common.core.util.R;
+import com.kxs.common.security.annotation.Inner;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.system.api.dto.kxsapp.camp.CampAddBcqtTeamDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampOpenActivityDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampReturnTeamDTO;
+import com.kxs.system.api.dto.kxsapp.camp.JoinTheTeamDTO;
+import com.kxs.system.api.model.KxsBcqtTeam;
+import com.kxs.system.api.model.KxsBcqtTeamDetail;
 import com.kxs.system.api.model.KxsCamp;
-import com.kxs.system.api.vo.kxsapp.camp.CampGetByIdVO;
-import com.kxs.system.api.vo.kxsapp.camp.CampPageVO;
-import com.kxs.system.api.vo.kxsapp.camp.CampUserPageVO;
+import com.kxs.system.api.vo.kxsapp.camp.*;
+import com.kxs.system.biz.service.KxsBcqtTeamService;
 import com.kxs.system.biz.service.KxsCampService;
 import com.kxs.system.biz.service.KxsCampUserService;
+import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import org.springdoc.core.annotations.ParameterObject;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 训练营(Camp)控制层
@@ -32,7 +39,7 @@ public class CampController {
      */
     private final KxsCampService kxsCampService;
     private final KxsCampUserService kxsCampUserService;
-
+    private final KxsBcqtTeamService kxsBcqtTeamService;
 
 
     /**
@@ -75,6 +82,136 @@ public class CampController {
 
 
 
+    /**
+     * 百城千团-获取列表
+     *
+     * @param page 分页对象
+     * @param keyword 查询关键字
+     * @return 百城千团-获取列表
+     */
+    @GetMapping("/getBcqtList")
+    public R getBcqtList(@ParameterObject Page<KxsBcqtTeam> page, @ParameterObject  String keyword) {
+        return kxsBcqtTeamService.getBcqtList(page,keyword);
+    }
+
+
+    /**
+     * 百城千团-获取我的参团记录
+     *
+     * @param page 分页对象
+     * @return 百城千团-获取我的参团记录
+     */
+    @GetMapping("/getMyBcqtList")
+    public R getMyBcqtList(@ParameterObject Page<KxsBcqtTeam> page) {
+
+        return kxsBcqtTeamService.getMyBcqtList(page);
+    }
+
+
+    /**
+     * 百城千团-创建团队
+     *
+     * @param param 实体对象
+     * @return 百城千团-创建团队
+     */
+    @PostMapping("/addBcqtTeam")
+    @Inner
+    public R addBcqtTeam(@Valid @RequestBody CampAddBcqtTeamDTO param) {
+
+        return  kxsBcqtTeamService.addBcqtTeam(param);
+    }
+    /**
+     * 百城千团-创建团队校验
+     *
+     * @param param 实体对象
+     * @return 百城千团-创建团队
+     */
+    @PostMapping("/verifyAddTeam")
+    public R verifyAddTeam(@Valid @RequestBody CampAddBcqtTeamDTO param) {
+        Long id = SecurityUtils.getUser().getId();
+        param.setCaptainId(id);
+        return R.ok(kxsBcqtTeamService.verifyAddTeam(param));
+    }
+
+    /**
+     * 百城千团-退出团队
+     *
+     * @param param 实体对象
+     * @return 百城千团-退出团队
+     */
+    @PostMapping("/returnTeam")
+    public R returnTeam(@RequestBody CampReturnTeamDTO param) {
+
+        return kxsBcqtTeamService.returnTeam(param);
+    }
+
+
+    /**
+     * 百城千团-开启活动
+     *
+     * @param param 实体对象
+     * @return 百城千团-开启活动
+     */
+    @PostMapping("/openActivity")
+    public R openActivity(@RequestBody CampOpenActivityDTO param) {
+        return kxsBcqtTeamService.openActivity(param);
+    }
+
+
+    /**
+     * 百城千团-业绩查看
+     *
+     * @param id 主键ID
+     * @return 百城千团-业绩查看
+     */
+    @GetMapping("/getBcqtDetail")
+    public R getBcqtDetail(@RequestParam("id") Integer id) {
+
+        return kxsBcqtTeamService.getBcqtDetail(id);
+    }
+
+
+    /**
+     * 定时统计活动期间人员激活  定时任务
+     *
+     */
+    @PostMapping("/setUserActivityTimeStat")
+    @Inner
+    public void setUserActivityTimeStat() {
+        kxsBcqtTeamService.setUserActivityTimeStat();
+    }
+
+    /**
+     * 定时任务,关闭活动结束的team和用户状态
+     */
+    @PostMapping("/setUserActiviteStatus")
+    @Inner
+    public void setUserActiviteStatus() {
+        kxsBcqtTeamService.setUserActiviteStatus();
+    }
+
+
+
+    /**
+     * 百城千团-加入团队
+     *
+     * @return 百城千团-加入团队
+     */
+    @PostMapping("/joinTheTeam")
+    public R joinTheTeam(@Valid @RequestBody JoinTheTeamDTO joinTheTeamDTO) {
+
+        return kxsBcqtTeamService.joinTheTeam(joinTheTeamDTO.getId());
+    }
+
+
+
+
+
+
+
+
+
+
 
 
 }

+ 26 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/mapper/KxsBcqtTeamDetailMapper.java

@@ -0,0 +1,26 @@
+package com.kxs.system.biz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.system.api.model.KxsBcqtTeam;
+import com.kxs.system.api.model.KxsBcqtTeamDetail;
+import com.kxs.system.api.vo.kxsapp.camp.CampGetMyBcqtListVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 百城千团团队明细表(KxsBcqtTeamDetail)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-05-22 14:29:03
+ */
+@Mapper
+public interface KxsBcqtTeamDetailMapper extends BaseMapper<KxsBcqtTeamDetail> {
+    /**
+     * 获取我的参团记录
+     * @param page
+     * @param userId
+     * @return
+     */
+    Page<CampGetMyBcqtListVO> getMyBcqtList(Page<KxsBcqtTeam> page, Long userId);
+}
+

+ 27 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/mapper/KxsBcqtTeamMapper.java

@@ -0,0 +1,27 @@
+package com.kxs.system.biz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.system.api.model.KxsBcqtTeam;
+import com.kxs.system.api.vo.kxsapp.camp.CampGetBcqtListVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 百城千团团队表(KxsBcqtTeam)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-05-22 14:29:03
+ */
+@Mapper
+public interface KxsBcqtTeamMapper extends BaseMapper<KxsBcqtTeam> {
+    /**
+     * 获取未开始的team列表
+     * @param page
+     * @param keyword 查询关键字
+     * @return
+     */
+    Page<CampGetBcqtListVO> getBcqtList(Page<KxsBcqtTeam> page, @Param("keyword") String keyword);
+
+}
+

+ 15 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsBcqtTeamDetailService.java

@@ -0,0 +1,15 @@
+package com.kxs.system.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.system.api.model.KxsBcqtTeamDetail;
+
+/**
+ * 百城千团团队明细表(KxsBcqtTeamDetail)表服务接口
+ *
+ * @author 系统
+ * @since 2024-05-22 14:29:04
+ */
+public interface KxsBcqtTeamDetailService extends IService<KxsBcqtTeamDetail> {
+
+}
+

+ 112 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsBcqtTeamService.java

@@ -0,0 +1,112 @@
+package com.kxs.system.biz.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.system.api.dto.admin.GetByBcqtPageDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampAddBcqtTeamDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampOpenActivityDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampReturnTeamDTO;
+import com.kxs.system.api.model.KxsBcqtTeam;
+import com.kxs.system.api.model.KxsBcqtTeamDetail;
+
+import java.util.List;
+
+/**
+ * 百城千团团队表(KxsBcqtTeam)表服务接口
+ *
+ * @author 系统
+ * @since 2024-05-22 14:29:03
+ */
+public interface KxsBcqtTeamService extends IService<KxsBcqtTeam> {
+
+    /**
+     * 百城千团-获取列表
+     *
+     * @param page 分页对象
+     * @param keyword 查询关键字
+     * @return 百城千团-获取列表
+     */
+    R getBcqtList(Page<KxsBcqtTeam> page, String keyword);
+    /**
+     * 百城千团-获取我的参团记录
+     *
+     * @param page 分页对象
+     * @return 百城千团-获取我的参团记录
+     */
+    R getMyBcqtList(Page<KxsBcqtTeam> page);
+    /**
+     * 百城千团-创建团队
+     *
+     * @param param 实体对象
+     * @return 百城千团-创建团队
+     */
+    R addBcqtTeam(CampAddBcqtTeamDTO param);
+    /**
+     * 百城千团-创建团队校验
+     *
+     * @param param 实体对象
+     * @return 百城千团-创建团队
+     */
+    boolean verifyAddTeam(CampAddBcqtTeamDTO param);
+    /**
+     * 百城千团-退出团队
+     *
+     * @param param 实体对象
+     * @return 百城千团-退出团队
+     */
+    R returnTeam(CampReturnTeamDTO param);
+    /**
+     * 百城千团-开启活动
+     *
+     * @param param 实体对象
+     * @return 百城千团-开启活动
+     */
+    R openActivity(CampOpenActivityDTO param);
+    /**
+     * 百城千团-业绩查看
+     *
+     * @param id 主键ID
+     * @return 百城千团-业绩查看
+     */
+    R getBcqtDetail(Integer id);
+    /**
+     * 定时统计活动期间人员激活  定时任务
+     *
+     */
+    void setUserActivityTimeStat();
+
+    /**
+     * 关闭结束活动team
+     */
+    void setUserActiviteStatus();
+    /**
+     * 训练营-百城千团列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 训练营-百城千团列表
+     */
+    R getByBcqtPage(Page<KxsBcqtTeam> page, GetByBcqtPageDTO param);
+    /**
+     * 修改团名
+     * @param kxsBcqtTeam  实体
+     * @return
+     */
+    void updateBcqt(KxsBcqtTeam kxsBcqtTeam);
+    /**
+     * 训练营-百城千团列表-激活统计
+     *
+     * @param id 查询团队id
+     * @return 训练营-百城千团列表
+     */
+    R bcqtGetDetail(Long id);
+
+    /**
+     * 百城千团 - 加入团队
+     * @param id
+     * @return
+     */
+    R joinTheTeam(long id);
+}
+

+ 3 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsCampService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.common.core.util.R;
+import com.kxs.system.api.dto.kxsapp.camp.CampReturnTeamDTO;
 import com.kxs.system.api.model.KxsCamp;
 import com.kxs.system.api.vo.admin.CampUserExcelVO;
 import com.kxs.system.api.vo.kxsapp.camp.CampGetByIdVO;
@@ -75,5 +76,7 @@ public interface KxsCampService extends IService<KxsCamp> {
      * @return {@link IPage}<{@link KxsCamp}>
      */
     IPage<KxsCamp> getBySysPage(Page<KxsCamp> page, KxsCamp param);
+
+
 }
 

+ 19 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsBcqtTeamDetailServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.system.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.system.biz.mapper.KxsBcqtTeamDetailMapper;
+import com.kxs.system.api.model.KxsBcqtTeamDetail;
+import com.kxs.system.biz.service.KxsBcqtTeamDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 百城千团团队明细表(KxsBcqtTeamDetail)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-05-22 14:29:04
+ */
+@Service("kxsBcqtTeamDetailService")
+public class KxsBcqtTeamDetailServiceImpl extends ServiceImpl<KxsBcqtTeamDetailMapper, KxsBcqtTeamDetail> implements KxsBcqtTeamDetailService {
+
+}
+

+ 498 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsBcqtTeamServiceImpl.java

@@ -0,0 +1,498 @@
+package com.kxs.system.biz.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+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.exception.GlobalCustomerException;
+import com.kxs.common.core.util.R;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.stat.api.dto.statUser.GetActivityStatByIdAndTimeDTO;
+import com.kxs.stat.api.feign.RemoteKxsStatService;
+import com.kxs.stat.api.vo.GetActivityStatByIdAndTimeVO;
+import com.kxs.system.api.dto.admin.GetByBcqtPageDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampAddBcqtTeamDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampOpenActivityDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampReturnTeamDTO;
+import com.kxs.system.api.model.KxsBcqtTeamDetail;
+import com.kxs.system.api.vo.admin.GetByBcqtPageVO;
+import com.kxs.system.api.vo.kxsapp.camp.CampGetBcqtDetailVO;
+import com.kxs.system.api.vo.kxsapp.camp.CampGetBcqtListVO;
+import com.kxs.system.api.vo.kxsapp.camp.CampGetMyBcqtListVO;
+import com.kxs.system.api.vo.kxsapp.camp.TeamUserItem;
+import com.kxs.system.biz.mapper.KxsBcqtTeamDetailMapper;
+import com.kxs.system.biz.mapper.KxsBcqtTeamMapper;
+import com.kxs.system.api.model.KxsBcqtTeam;
+import com.kxs.system.biz.service.KxsBcqtTeamService;
+import com.kxs.user.api.feign.RemoteKxsUserService;
+import com.kxs.user.api.model.KxsUser;
+import lombok.RequiredArgsConstructor;
+import org.checkerframework.checker.units.qual.K;
+import org.jacoco.agent.rt.internal_43f5073.core.internal.flow.IFrame;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.sql.Array;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 百城千团团队表(KxsBcqtTeam)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-05-22 14:29:03
+ */
+@Service("kxsBcqtTeamService")
+@RequiredArgsConstructor
+public class KxsBcqtTeamServiceImpl extends ServiceImpl<KxsBcqtTeamMapper, KxsBcqtTeam> implements KxsBcqtTeamService {
+    private final KxsBcqtTeamDetailMapper kxsBcqtTeamDetailMapper;
+    private final RemoteKxsUserService remoteKxsUserService;
+    private final RemoteKxsStatService remoteKxsStatService;
+    private final KxsBcqtTeamMapper kxsBcqtTeamMapper;
+
+    @Override
+    public R getBcqtList(Page<KxsBcqtTeam> page, String keyword) {
+        Page<CampGetBcqtListVO> kxsBcqtTeamPage = baseMapper.getBcqtList(page, keyword);
+        Long userId = SecurityUtils.getUser().getId();
+        KxsBcqtTeamDetail kxsBcqtTeamDetail = kxsBcqtTeamDetailMapper.selectOne(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getUserId, userId).eq(KxsBcqtTeamDetail::getEndFlag, 0));
+        if (kxsBcqtTeamDetail == null) {
+            return R.ok(kxsBcqtTeamPage);
+        }
+        //当用户存在正在参加的活动  需要判断列表关系
+        for (CampGetBcqtListVO record : kxsBcqtTeamPage.getRecords()) {
+            if (Objects.equals(kxsBcqtTeamDetail.getTeamId(), Long.valueOf(record.getId()))) {
+                record.setRelation(1);
+            }
+        }
+        return R.ok(kxsBcqtTeamPage);
+    }
+
+    @Override
+    public R getMyBcqtList(Page<KxsBcqtTeam> page) {
+        Long userId = SecurityUtils.getUser().getId();
+        return R.ok(kxsBcqtTeamDetailMapper.getMyBcqtList(page, userId));
+    }
+
+    @Override
+    public R addBcqtTeam(CampAddBcqtTeamDTO param) {
+        String teamName = param.getTeamName();
+        Long captainId = param.getCaptainId();
+        if (!verifyAddTeam(param)) {
+            return R.failed("校验未通过,非法参数");
+        }
+        R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(Math.toIntExact(captainId), SecurityConstants.FROM_IN);
+        KxsUser kxsUser = kxsUserR.getData();
+        //团队数据
+        KxsBcqtTeam kxsBcqtTeam = new KxsBcqtTeam();
+        kxsBcqtTeam.setCreateTime(LocalDateTime.now());
+        kxsBcqtTeam.setDelFlag("0");
+        kxsBcqtTeam.setTeamName(teamName);
+        kxsBcqtTeam.setStatus(0);
+        kxsBcqtTeam.setReachStatus(0);
+        kxsBcqtTeam.setCaptainId(captainId);
+        kxsBcqtTeam.setTeamNumber(1);
+        kxsBcqtTeam.setUsername(kxsUser.getUsername());
+        save(kxsBcqtTeam);
+        //团队人员数据
+        KxsBcqtTeamDetail kxsBcqtTeamDetail = new KxsBcqtTeamDetail();
+        kxsBcqtTeamDetail.setCreateTime(LocalDateTime.now());
+        kxsBcqtTeamDetail.setDelFlag("0");
+        kxsBcqtTeamDetail.setUserId(captainId);
+        kxsBcqtTeamDetail.setUsername(kxsUser.getUsername());
+        kxsBcqtTeamDetail.setUserCode(kxsUser.getUserCode());
+        kxsBcqtTeamDetail.setPosActivateNumber(0);
+        kxsBcqtTeamDetail.setLkbActivateNumber(0);
+        kxsBcqtTeamDetail.setGdActivateNumber(0);
+        kxsBcqtTeamDetail.setCaptainStatus(1);
+        kxsBcqtTeamDetail.setEndFlag(0);
+        //需要拿到存储的团队id,该方法无法添加事务
+        kxsBcqtTeamDetail.setTeamId(Long.valueOf(kxsBcqtTeam.getId()));
+        kxsBcqtTeamDetailMapper.insert(kxsBcqtTeamDetail);
+        return R.ok();
+
+
+    }
+
+    @Override
+    public boolean verifyAddTeam(CampAddBcqtTeamDTO param) {
+        String teamName = param.getTeamName();
+        Long captainId = param.getCaptainId();
+
+        //不存在同名团队
+        KxsBcqtTeam kxsBcqtTeam = baseMapper.selectOne(Wrappers.<KxsBcqtTeam>query().lambda().eq(KxsBcqtTeam::getTeamName, teamName));
+        if (kxsBcqtTeam != null) {
+            return false;
+        }
+        //不存在未结束的团队
+        KxsBcqtTeamDetail kxsBcqtTeamDetail = kxsBcqtTeamDetailMapper.selectOne(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getUserId, captainId).eq(KxsBcqtTeamDetail::getEndFlag, 0));
+        if (kxsBcqtTeamDetail != null) {
+            return false;
+        }
+        //用户存在
+        R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(Math.toIntExact(captainId), SecurityConstants.FROM_IN);
+        if (kxsUserR.getData() == null){
+            return false;
+        }
+        //用户状态正常且已实名
+        return kxsUserR.getData().getStatus().equals(1) || kxsUserR.getData().getRealStatus().equals(1);
+    }
+
+    @Override
+    @Transactional
+    public R returnTeam(CampReturnTeamDTO param) {
+        Long id = param.getId();
+        Long userId = SecurityUtils.getUser().getId();
+        KxsBcqtTeam kxsBcqtTeam = getById(id);
+        if (kxsBcqtTeam == null){
+            return R.failed("该活动不存在");
+        }
+        if (kxsBcqtTeam.getCaptainId().equals(userId)){
+            return R.failed("团长无法退出");
+        }
+        if (!kxsBcqtTeam.getStatus().equals(0)){
+            return R.failed("非报名期间无法退出");
+        }
+        //退出
+        //修改团队人数
+        kxsBcqtTeam.setTeamNumber(kxsBcqtTeam.getTeamNumber()-1);
+        updateById(kxsBcqtTeam);
+        //删除明细
+        kxsBcqtTeamDetailMapper.delete(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getTeamId, kxsBcqtTeam.getId()).eq(KxsBcqtTeamDetail::getUserId, userId));
+        return R.ok();
+    }
+
+
+
+
+    @Override
+    public R openActivity(CampOpenActivityDTO param) {
+        Long userId = SecurityUtils.getUser().getId();
+        Integer id = param.getId();
+     Integer activityDate = param.getActivityDate();
+        KxsBcqtTeam kxsBcqtTeam = getById(id);
+        if (kxsBcqtTeam == null){
+            return R.failed("活动不存在");
+        }
+        if (!kxsBcqtTeam.getStatus().equals(0)){
+            return R.failed("活动已开始");
+        }
+        if (!kxsBcqtTeam.getTeamNumber().equals(10)){
+            return R.failed("人员不足无法开启活动");
+        }
+        if (!userId.equals(kxsBcqtTeam.getCaptainId())){
+            return R.failed("您无法开启该活动,请联系团长开启活动");
+        }
+        LocalDateTime dateTime = LocalDateTime.now();
+        LocalDate currentDate = dateTime.toLocalDate();
+        // 计算次日凌晨0点
+        LocalDateTime startTime = currentDate.plusDays(1).atStartOfDay();
+        // 计算次日后+活动时长凌晨0点
+        LocalDateTime endTime = currentDate.plusDays(activityDate + 1).atStartOfDay();
+        kxsBcqtTeam.setUpdateTime(dateTime);
+        kxsBcqtTeam.setStartTime(startTime);//开始时间
+        kxsBcqtTeam.setEndTime(endTime);//结束时间
+        kxsBcqtTeam.setStatus(1);//活动开启
+        kxsBcqtTeam.setActivityDate(activityDate);//活动时长
+        updateById(kxsBcqtTeam);
+        return R.ok();
+    }
+
+    @Override
+    public R getBcqtDetail(Integer id) {
+        CampGetBcqtDetailVO campGetBcqtDetailVO = new CampGetBcqtDetailVO();
+        KxsBcqtTeam kxsBcqtTeam = getById(id);
+        if (kxsBcqtTeam ==null){
+            return R.failed("该活动不存在");
+        }
+        Long userId = SecurityUtils.getUser().getId();
+        KxsBcqtTeamDetail bcqtTeamDetail = kxsBcqtTeamDetailMapper.selectOne(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getTeamId, id).eq(KxsBcqtTeamDetail::getUserId, userId));
+        if (bcqtTeamDetail == null){
+            return R.failed("非法参数,无法查看未加入的团队");
+        }
+        //复制活动信息
+        BeanUtil.copyProperties(kxsBcqtTeam,campGetBcqtDetailVO);
+        //总激活
+        int activityTotal = 0;
+        //查询并复制人员信息
+        List<KxsBcqtTeamDetail> kxsBcqtTeamDetails = kxsBcqtTeamDetailMapper.selectList(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getTeamId, id));
+        ArrayList<TeamUserItem> teamUserItems = new ArrayList<>();
+        for (KxsBcqtTeamDetail kxsBcqtTeamDetail : kxsBcqtTeamDetails) {
+            TeamUserItem teamUserItem = new TeamUserItem();
+            //个人激活数
+            int personageActivity = 0;
+            BeanUtil.copyProperties(kxsBcqtTeamDetail,teamUserItem);
+            if (kxsBcqtTeamDetail.getGdActivateNumber() != null){
+                activityTotal += kxsBcqtTeamDetail.getGdActivateNumber();
+                personageActivity += kxsBcqtTeamDetail.getGdActivateNumber();
+            }
+            if (kxsBcqtTeamDetail.getLkbActivateNumber() != null){
+                activityTotal += kxsBcqtTeamDetail.getLkbActivateNumber();
+                personageActivity += kxsBcqtTeamDetail.getLkbActivateNumber();
+
+            }
+            if (kxsBcqtTeamDetail.getPosActivateNumber() != null){
+                activityTotal += kxsBcqtTeamDetail.getPosActivateNumber();
+                personageActivity += kxsBcqtTeamDetail.getPosActivateNumber();
+            }
+            //个人总激活数返回字段归于posActivateNumber
+            teamUserItem.setPosActivateNumber(personageActivity);
+            teamUserItems.add(teamUserItem);
+        }
+        //计算奖池
+        BigDecimal totalAmount = BigDecimal.ZERO;
+        if (activityTotal > 100 && 200 > activityTotal){
+            totalAmount = new BigDecimal(1000);
+        } else if (200 < activityTotal) {
+            totalAmount = new BigDecimal(2200);
+        }
+        //赋值
+        campGetBcqtDetailVO.setTotalAmount(totalAmount);
+        campGetBcqtDetailVO.setActiviteTotal(activityTotal);
+        campGetBcqtDetailVO.setTeamUser(teamUserItems);
+        return R.ok(campGetBcqtDetailVO);
+    }
+
+    @Override
+    @Transactional
+    public void setUserActivityTimeStat() {
+        //获取全部活动中团队
+        List<KxsBcqtTeam> list = list(Wrappers.<KxsBcqtTeam>query().lambda().eq(KxsBcqtTeam::getStatus, 1));
+        //构造查询数据
+        for (KxsBcqtTeam kxsBcqtTeam : list) {
+            ArrayList<GetActivityStatByIdAndTimeDTO> getActivityStatByIdAndTimeDTOS = new ArrayList<>();
+            //构造该团队的查询日期
+            LocalDateTime startTime = kxsBcqtTeam.getStartTime();//开始时间
+            Integer activityDate = kxsBcqtTeam.getActivityDate();//活动时长
+            //获取从开始时间开始未来活动时长的每天字符串
+            List<String> futureDates = new ArrayList<>();
+            for (int i = 0; i <= activityDate; i++) {
+                LocalDate currentDate = startTime.toLocalDate().plusDays(i);
+                String currentDateString = LocalDateTimeUtil.format(currentDate, DatePattern.PURE_DATE_PATTERN);
+                futureDates.add(currentDateString);
+            }
+            //查询所有团队成员
+            List<KxsBcqtTeamDetail> kxsBcqtTeamDetailS = kxsBcqtTeamDetailMapper.selectList(Wrappers.<KxsBcqtTeamDetail>query().lambda()
+                    .eq(KxsBcqtTeamDetail::getTeamId,kxsBcqtTeam.getId()));
+            //构造dto
+            for (KxsBcqtTeamDetail kxsBcqtTeamDetail : kxsBcqtTeamDetailS) {
+                GetActivityStatByIdAndTimeDTO getActivityStatByIdAndTimeDTO = new GetActivityStatByIdAndTimeDTO();
+                getActivityStatByIdAndTimeDTO.setUserId(kxsBcqtTeamDetail.getUserId());
+                getActivityStatByIdAndTimeDTO.setTimes(futureDates);
+                getActivityStatByIdAndTimeDTOS.add(getActivityStatByIdAndTimeDTO);
+            }
+            //查询得到统计数据
+            List<GetActivityStatByIdAndTimeVO> activityStatByIdAndTime = remoteKxsStatService.getActivityStatByIdAndTime(getActivityStatByIdAndTimeDTOS, SecurityConstants.FROM_IN);
+            int reachNumber = 0;
+            //修改查询到的数据的当前激活数
+            for (GetActivityStatByIdAndTimeVO getActivityStatByIdAndTimeVO : activityStatByIdAndTime) {
+                Long userId = getActivityStatByIdAndTimeVO.getUserId();
+                Integer posActivityNumber = getActivityStatByIdAndTimeVO.getPosActivityNumber();
+                if (posActivityNumber != null){
+                    reachNumber += posActivityNumber;
+                }
+                Integer gdActivityNumber = getActivityStatByIdAndTimeVO.getGdActivityNumber();
+                if (gdActivityNumber != null){
+                    reachNumber += gdActivityNumber;
+                }
+                Integer lkbActivityNumber = getActivityStatByIdAndTimeVO.getLkbActivityNumber();
+                if (lkbActivityNumber != null){
+                    reachNumber += lkbActivityNumber;
+                }
+                //查询当前在活动的该用户
+                KxsBcqtTeamDetail kxsBcqtTeamDetail = kxsBcqtTeamDetailMapper.selectOne(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getUserId, userId).eq(KxsBcqtTeamDetail::getEndFlag, 0));
+                kxsBcqtTeamDetail.setUpdateTime(LocalDateTime.now());
+                kxsBcqtTeamDetail.setPosActivateNumber(posActivityNumber);
+                kxsBcqtTeamDetail.setLkbActivateNumber(lkbActivityNumber);
+                kxsBcqtTeamDetail.setGdActivateNumber(gdActivityNumber);
+                //修改激活数
+                kxsBcqtTeamDetailMapper.updateById(kxsBcqtTeamDetail);
+            }
+            //判断当前团队是否达标
+            if (reachNumber >= 100 && kxsBcqtTeam.getReachStatus() != 1){
+                kxsBcqtTeam.setReachStatus(1);
+                updateById(kxsBcqtTeam);
+            }
+
+        }
+    }
+
+    @Override
+    @Transactional
+    public void setUserActiviteStatus() {
+        //获取全部活动中团队
+        List<KxsBcqtTeam> list = list(Wrappers.<KxsBcqtTeam>query().lambda().eq(KxsBcqtTeam::getStatus, 1));
+        LocalDateTime now = LocalDateTime.now();
+        for (KxsBcqtTeam kxsBcqtTeam : list) {
+            LocalDateTime endTime = kxsBcqtTeam.getEndTime();
+            //当前时间在结束时间之后
+            if (now.isAfter(endTime)){
+                //设置活动状态为已结束
+                kxsBcqtTeam.setStatus(2);
+                updateById(kxsBcqtTeam);
+                //修改团队人员明细
+                List<KxsBcqtTeamDetail> kxsBcqtTeamDetailS = kxsBcqtTeamDetailMapper.selectList(Wrappers.<KxsBcqtTeamDetail>query().lambda()
+                        .eq(KxsBcqtTeamDetail::getTeamId,kxsBcqtTeam.getId()));
+                for (KxsBcqtTeamDetail kxsBcqtTeamDetail : kxsBcqtTeamDetailS) {
+                    //结束参与状态
+                    kxsBcqtTeamDetail.setEndFlag(1);
+                    kxsBcqtTeamDetailMapper.updateById(kxsBcqtTeamDetail);
+                }
+            }
+        }
+    }
+
+    @Override
+    public R getByBcqtPage(Page<KxsBcqtTeam> page, GetByBcqtPageDTO param) {
+        ArrayList<Long> teamIds = new ArrayList<>();
+        if (param.getUserCode() != null && !param.getUserCode().equals("")){
+            List<KxsBcqtTeamDetail> kxsBcqtTeamDetails = kxsBcqtTeamDetailMapper.selectList(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getUserCode, param.getUserCode()));
+            if (kxsBcqtTeamDetails.size() == 0){
+                return R.ok();
+            }
+            for (KxsBcqtTeamDetail kxsBcqtTeamDetail : kxsBcqtTeamDetails) {
+                teamIds.add(kxsBcqtTeamDetail.getTeamId());
+            }
+        }
+
+        Page<KxsBcqtTeam> page1 = page(page, Wrappers.<KxsBcqtTeam>query().lambda()
+                .eq(param.getStatus() != null, KxsBcqtTeam::getStatus, param.getStatus())
+                .eq(param.getReachStatus() != null, KxsBcqtTeam::getReachStatus, param.getReachStatus())
+                .like(param.getTeamName() != null && !param.getTeamName().equals(""),KxsBcqtTeam::getTeamName,param.getTeamName())
+                .in(teamIds.size() != 0, KxsBcqtTeam::getId, teamIds));
+        ArrayList<GetByBcqtPageVO> getByBcqtPageVOS = new ArrayList<>();
+        for (KxsBcqtTeam record : page1.getRecords()) {
+            GetByBcqtPageVO getByBcqtPageVO = new GetByBcqtPageVO();
+            BeanUtil.copyProperties(record,getByBcqtPageVO);
+            List<KxsBcqtTeamDetail> kxsBcqtTeamDetails = kxsBcqtTeamDetailMapper.selectList(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getTeamId, record.getId()));
+            int activityTotal = 0;
+            for (KxsBcqtTeamDetail kxsBcqtTeamDetail : kxsBcqtTeamDetails) {
+                if (kxsBcqtTeamDetail.getGdActivateNumber() != null){
+                    activityTotal += kxsBcqtTeamDetail.getGdActivateNumber();
+                    activityTotal += kxsBcqtTeamDetail.getGdActivateNumber();
+                }
+                if (kxsBcqtTeamDetail.getLkbActivateNumber() != null){
+                    activityTotal += kxsBcqtTeamDetail.getLkbActivateNumber();
+                    activityTotal += kxsBcqtTeamDetail.getLkbActivateNumber();
+
+                }
+                if (kxsBcqtTeamDetail.getPosActivateNumber() != null){
+                    activityTotal += kxsBcqtTeamDetail.getPosActivateNumber();
+                    activityTotal += kxsBcqtTeamDetail.getPosActivateNumber();
+                }
+                if (kxsBcqtTeamDetail.getCaptainStatus() == 1){
+                    //队长编号
+                    getByBcqtPageVO.setUserCode(kxsBcqtTeamDetail.getUserCode());
+                }
+            }
+            //总激活
+            getByBcqtPageVO.setActivityTotal(activityTotal);
+            getByBcqtPageVOS.add(getByBcqtPageVO);
+        }
+
+        return R.ok(getByBcqtPageVOS);
+    }
+
+    @Override
+    public void updateBcqt(KxsBcqtTeam kxsBcqtTeam) {
+        KxsBcqtTeam kxsBcqtTeam1 = kxsBcqtTeamMapper.selectById(kxsBcqtTeam.getId());
+        if (kxsBcqtTeam1 == null){
+            throw new GlobalCustomerException("团队不存在");
+        }
+        kxsBcqtTeam1.setTeamName(kxsBcqtTeam.getTeamName());
+        kxsBcqtTeamMapper.updateById(kxsBcqtTeam1);
+    }
+
+    @Override
+    public R bcqtGetDetail(Long id) {
+        KxsBcqtTeam kxsBcqtTeam = kxsBcqtTeamMapper.selectById(id);
+        if (kxsBcqtTeam == null){
+            return R.failed("团队不存在");
+        }
+        List<KxsBcqtTeamDetail> kxsBcqtTeamDetails = kxsBcqtTeamDetailMapper.selectList(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getTeamId, kxsBcqtTeam.getId()));
+        return R.ok(kxsBcqtTeamDetails);
+    }
+
+    @Override
+    @Transactional
+    public R joinTheTeam(long id) {
+        Long userId = SecurityUtils.getUser().getId();
+        KxsBcqtTeamDetail bcqtTeamDetail = kxsBcqtTeamDetailMapper.selectOne(Wrappers.<KxsBcqtTeamDetail>query().lambda().eq(KxsBcqtTeamDetail::getUserId, userId).eq(KxsBcqtTeamDetail::getEndFlag, 0));
+        if (bcqtTeamDetail != null){
+            return R.failed("每个用户同一时间只能加入一个团队");
+        }
+        KxsBcqtTeam kxsBcqtTeam = kxsBcqtTeamMapper.selectById(id);
+        if (kxsBcqtTeam == null){
+            return R.failed("非法参数,团队不存在");
+        }
+        if (kxsBcqtTeam.getStatus() != 0){
+            return R.failed("只能加入未开始的团队");
+        }
+        R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(Math.toIntExact(userId),SecurityConstants.FROM_IN);
+        KxsUser kxsUser = kxsUserR.getData();
+        if (kxsUser == null){
+            return R.failed("系统错误,请重新登录");
+        }
+        Long captainId = kxsBcqtTeam.getCaptainId();
+        String pidPath = kxsUser.getPidPath();
+        String pid = "," + captainId + ",";
+        if (!pidPath.contains(pid)){
+            return R.failed("您无法加入您体系外的团队");
+        }
+        Integer teamNumber = kxsBcqtTeam.getTeamNumber();
+        if (teamNumber >= 10){
+            return R.failed("该团队人数已满");
+        }
+        //加入
+        kxsBcqtTeam.setTeamNumber(teamNumber + 1);
+        kxsBcqtTeamMapper.updateById(kxsBcqtTeam);
+        KxsBcqtTeamDetail kxsBcqtTeamDetail = new KxsBcqtTeamDetail();
+        kxsBcqtTeamDetail.setCreateTime(LocalDateTime.now());
+        kxsBcqtTeamDetail.setDelFlag("0");
+        kxsBcqtTeamDetail.setUserId(Long.valueOf(kxsUser.getId()));
+        kxsBcqtTeamDetail.setUsername(kxsUser.getUsername());
+        kxsBcqtTeamDetail.setUserCode(kxsUser.getUserCode());
+        kxsBcqtTeamDetail.setPosActivateNumber(0);
+        kxsBcqtTeamDetail.setLkbActivateNumber(0);
+        kxsBcqtTeamDetail.setGdActivateNumber(0);
+        kxsBcqtTeamDetail.setCaptainStatus(0);
+        kxsBcqtTeamDetail.setEndFlag(0);
+        kxsBcqtTeamDetail.setTeamId(id);
+        kxsBcqtTeamDetailMapper.insert(kxsBcqtTeamDetail);
+
+        return R.ok();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+

+ 3 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsCampServiceImpl.java

@@ -17,6 +17,7 @@ import com.kxs.common.core.util.R;
 import com.kxs.common.core.util.RetOps;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.product.api.feign.RemoteKxsProductService;
+import com.kxs.system.api.dto.kxsapp.camp.CampReturnTeamDTO;
 import com.kxs.system.api.feign.RemoteOldService;
 import com.kxs.system.api.model.KxsCampUser;
 import com.kxs.system.api.vo.admin.CampUserExcelVO;
@@ -257,6 +258,8 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
         return pageData;
     }
 
+
+
 //    @Override
 //    public void prizePoolIsRefreshed(RabbitOrderQueueMQ.MsgEntity parse) {
 //        //查询正在进行中的活动

+ 35 - 0
kxs-system/kxs-system-biz/src/main/resources/mapper/KxsBcqtTeamDetailMapper.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kxs.system.biz.mapper.KxsBcqtTeamDetailMapper">
+
+    <resultMap type="com.kxs.system.api.model.KxsBcqtTeamDetail" id="KxsBcqtTeamDetailMap">
+        <result column="id" property="id" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="del_flag" property="delFlag" />
+        <result column="version" property="version" />
+        <result column="user_id" property="userId" />
+        <result column="username" property="username" />
+        <result column="user_code" property="userCode" />
+        <result column="pos_activate_number" property="posActivateNumber" />
+        <result column="lkb_activate_number" property="lkbActivateNumber" />
+        <result column="gd_activate_number" property="gdActivateNumber" />
+        <result column="captain_status" property="captainStatus" />
+        <result column="end_flag" property="endFlag" />
+        <result column="team_id" property="teamId" />
+
+    </resultMap>
+    <select id="getMyBcqtList" resultType="com.kxs.system.api.vo.kxsapp.camp.CampGetMyBcqtListVO">
+        select
+        kbt.id,kbt.team_name,kbt.start_time,kbt.end_time,kbt.status,kbt.captain_id,kbt.username
+        from
+            kxs_bcqt_team_detail kbtd
+                left join kxs_bcqt_team kbt on kbtd.team_id = kbt.id
+        <where>
+            and kbtd.del_flag != 1
+            and kbt.del_flag != 1
+            and kbtd.user_id = #{userId}
+        </where>
+    </select>
+
+</mapper>

+ 32 - 0
kxs-system/kxs-system-biz/src/main/resources/mapper/KxsBcqtTeamMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kxs.system.biz.mapper.KxsBcqtTeamMapper">
+
+    <resultMap type="com.kxs.system.api.model.KxsBcqtTeam" id="KxsBcqtTeamMap">
+        <result column="id" property="id" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="del_flag" property="delFlag" />
+        <result column="version" property="version" />
+        <result column="team_name" property="teamName" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="status" property="status" />
+        <result column="reach_status" property="reachStatus" />
+        <result column="captain_id" property="captainId" />
+        <result column="team_number" property="teamNumber" />
+        <result column="activity_date" property="activityDate" />
+
+    </resultMap>
+    <select id="getBcqtList" resultType="com.kxs.system.api.vo.kxsapp.camp.CampGetBcqtListVO">
+        select * from kxs_bcqt_team
+        <where>
+            and del_flag != 1
+            and `status` = 0
+            <if test="keyword != null and keyword != ''">
+                and (team_name like concat('%', #{keyword}, '%') or username like concat('%', #{keyword}, '%'))
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 4 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/product/impl/KxsMachineServiceImpl.java

@@ -51,6 +51,10 @@ public class KxsMachineServiceImpl extends ServiceImpl<KxsMachineMapper, KxsMach
 
         //操作类型
         OperationType operation = dmlData.getOperation();
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(id);
+            return;
+        }
         UpdateWrapper<KxsMachine> wrapper = new UpdateWrapper<>();
         LambdaUpdateWrapper<KxsMachine> lambda = wrapper.lambda().eq(KxsMachine::getId, id);
 

+ 6 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/task/taskJob.java

@@ -103,6 +103,12 @@ public class taskJob {
                     //删除本条记录
                     kxsDtsErrorLogService.removeById(kxsDtsErrorLog.getId());
                 }
+                //机具表
+                if ("PosMachinesTwo".equals(kxsDtsErrorLog.getTableName())) {
+                    kxsMachineService.changeData(JSON.parseObject(kxsDtsErrorLog.getContent(), DMLData.class));
+                    //删除本条记录
+                    kxsDtsErrorLogService.removeById(kxsDtsErrorLog.getId());
+                }
 
 
 

+ 26 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/kxsapp/user/UserMyUserListDTO.java

@@ -0,0 +1,26 @@
+package com.kxs.user.api.dto.kxsapp.user;
+
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+/**
+ * 我的用户  用户列表搜索dto
+ */
+@Data
+public class UserMyUserListDTO {
+    /**
+     * 搜索等级
+     */
+    private String userLevel;
+    /**
+     * 搜索关键字
+     */
+    private String keyword;
+    /**
+     * 排序条件
+     */
+    @NotEmpty(message = "排序值不能为空")
+    private String sort;
+    private String tableName;
+    private Long userId;
+}

+ 115 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/user/UserMyUserDetailVO.java

@@ -0,0 +1,115 @@
+package com.kxs.user.api.vo.kxsapp.user;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 用户详情vo
+ *
+ * @author 系统
+ * @date 2024-05-16 15:25:54
+ */
+@Data
+@Schema(description = "用户详情返回实体")
+public class UserMyUserDetailVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 隐藏推荐关系0默认 1隐藏
+     */
+    @Schema(description = "隐藏推荐关系0默认 1隐藏")
+    private Integer hiddenLevel;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 手机号
+     */
+    @Schema(description = "手机号")
+    private String phone;
+
+
+    /**
+     * 邀请码
+     */
+    @Schema(description = "邀请码")
+    private String userCode;
+
+
+    /**
+     * 头像
+     */
+    @Schema(description = "头像")
+    private String avatar;
+
+
+    /**
+     * 用户等级
+     */
+    @Schema(description = "用户等级")
+    private Integer userLevel;
+
+
+    /**
+     * 实名状态 0未实名 1已实名
+     */
+    @Schema(description = "实名状态 0未实名 1已实名")
+    private Integer realStatus;
+
+
+    /**
+     * 状态 0注销 1正常 2锁定不可登陆和提现
+     */
+    @Schema(description = "状态 0注销 1正常 2锁定不可登陆和提现")
+    private Integer status;
+
+
+    /**
+     * 是否商户型创客 0否 1是
+     */
+    @Schema(description = "是否商户型创客 0否 1是")
+    private Integer isMerchantMaker;
+
+
+    /**
+     * 成为商户型创客时间
+     */
+    @Schema(description = "成为商户型创客时间")
+    private LocalDateTime toMerchantMakerTime;
+
+
+    /**
+     * 实名时间
+     */
+    @Schema(description = "实名时间")
+    private Object realTime;
+
+
+
+
+
+	
+
+}

+ 71 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/user/UserMyUserListVO.java

@@ -0,0 +1,71 @@
+package com.kxs.user.api.vo.kxsapp.user;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 创客列表vo
+ *
+ * @author 系统
+ * @date 2024-05-16 15:25:54
+ */
+@Data
+@Schema(description = "创客列表返回实体")
+public class UserMyUserListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+    /**
+     * 头像
+     */
+    @Schema(description = "头像")
+    private String avatar;
+
+    /**
+     * 用户本月交易额
+     */
+    @Schema(description = "用户本月交易额")
+    private Object thisMonthTrade;
+
+
+    /**
+     * 实名时间
+     */
+    @Schema(description = "实名时间")
+    private Object realTime;
+
+
+
+
+
+	
+
+}

+ 59 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/user/UserMyUserStatisticsVO.java

@@ -0,0 +1,59 @@
+package com.kxs.user.api.vo.kxsapp.user;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 用户统计vo
+ *
+ * @author 系统
+ * @date 2024-05-16 15:25:54
+ */
+@Data
+@Schema(description = "用户统计返回实体")
+public class UserMyUserStatisticsVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 用户总数
+     */
+    @Schema(description = "用户总数")
+    private Object userCountTotal;
+
+
+    /**
+     * 本月新增
+     */
+    @Schema(description = "本月新增")
+    private Object thisMonthAddTotal;
+
+
+    /**
+     * 实名总数
+     */
+    @Schema(description = "实名总数")
+    private Object realTotal;
+
+
+    /**
+     * 未实名总数
+     */
+    @Schema(description = "未实名总数")
+    private Object notRealTotal;
+
+
+
+
+
+	
+
+}

+ 5 - 1
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userAccount/UserAmountVariationListVO.java

@@ -49,7 +49,11 @@ public class UserAmountVariationListVO implements Serializable {
      */
     @Schema(description = "金额类型")
     private Integer variationType;
-
+    /**
+     * 金额类型名
+     */
+    @Schema(description = "金额类型名")
+    private String variationTypeName;
 
     /**
      * 原因

+ 51 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsUserController.java

@@ -7,12 +7,15 @@ import com.kxs.common.security.annotation.Inner;
 import com.kxs.user.api.dto.kxsapp.user.*;
 import com.kxs.user.api.model.KxsUser;
 import com.kxs.user.api.model.KxsUserReal;
+import com.kxs.user.api.vo.kxsapp.user.UserMyUserListVO;
 import com.kxs.user.biz.constant.enums.UserErrorTypeEnum;
 import com.kxs.user.biz.service.KxsUserBankService;
 import com.kxs.user.biz.service.KxsUserRealService;
 import com.kxs.user.biz.service.KxsUserService;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -278,5 +281,53 @@ public class KxsUserController {
         return R.ok(kxsUserService.removeUser());
     }
 
+
+    /**
+     * 创客列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 创客列表
+     */
+    @GetMapping("/myUserList")
+    public R myUserList(@ParameterObject Page<KxsUser> page, @Valid @ParameterObject UserMyUserListDTO param) {
+        return R.ok(kxsUserService.myUserList(page,param));
+    }
+
+
+    /**
+     * 用户统计
+     *
+     * @return 用户统计
+     */
+    @GetMapping("/myUserStatistics")
+    public R myUserStatistics() {
+        return R.ok(kxsUserService.myUserStatistics());
+    }
+
+
+    /**
+     * 用户详情
+     *
+     * @param id 主键ID
+     * @return 用户详情
+     */
+    @GetMapping("/myUserDetail")
+    public R myUserDetail(@RequestParam("id") Integer id) {
+
+        return kxsUserService.myUserDetail(id);
+    }
+
+    /**
+     * 校验推荐码
+     *
+     * @param userCode 用户编码
+     */
+    @GetMapping("/verifyUserCode")
+    public R verifyUserCode(@RequestParam("userCode") String userCode) {
+
+        return R.ok(kxsUserService.verifyUserCode(userCode));
+    }
+
 }
 

+ 2 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/ShareholderController.java

@@ -6,6 +6,7 @@ import com.kxs.common.security.annotation.Inner;
 import com.kxs.user.api.dto.kxsapp.IntegralStatDTO;
 import com.kxs.user.api.model.KxsShdScore;
 import com.kxs.user.api.model.KxsUserRealLevel;
+import com.kxs.user.api.vo.kxsapp.subGetShareholderUserList.UserScoreListVO;
 import com.kxs.user.biz.service.KxsShdScoreService;
 import com.kxs.user.biz.service.KxsShdTradeAmtService;
 import com.kxs.user.biz.service.KxsUserRealLevelService;
@@ -63,7 +64,7 @@ public class ShareholderController {
      * @return 股东大盘分红-获取达标股东信息
      */
     @GetMapping("/getShareholderUserList")
-    public R getShareholderUserList(@ParameterObject Page<KxsShdScore> page, @RequestParam("month") String month, @RequestParam("type") Integer type) {
+    public R getShareholderUserList(@ParameterObject Page<UserScoreListVO> page, @RequestParam("month") String month, @RequestParam("type") Integer type) {
         return R.ok(kxsShdScoreService.getShareholderUserList(page, month, type));
     }
 

+ 0 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/UserAccountController.java

@@ -169,7 +169,6 @@ public class UserAccountController {
 
     /**
      * 余额变动
-     *
      * 内部调用
      *
      * @return 收支明细-筛选变动类型

+ 1 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsShdScoreMapper.java

@@ -22,6 +22,6 @@ public interface KxsShdScoreMapper extends BaseMapper<KxsShdScore> {
 
     ShareholderGetMyStandardsAllVO getMyStandardsAll(@Param("month") String month);
 
-    Page<UserScoreListVO> getShareholderHighScoreUserList(Page<KxsShdScore> page, @Param("month") String month, @Param("type") Integer type);
+    Page<UserScoreListVO> getShareholderHighScoreUserList(Page<UserScoreListVO> page, @Param("month") String month, @Param("type") Integer type);
 }
 

+ 11 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserMapper.java

@@ -1,10 +1,13 @@
 package com.kxs.user.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.dto.kxsapp.user.UserMyUserListDTO;
 import com.kxs.user.api.model.KxsUser;
 import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
+import com.kxs.user.api.vo.kxsapp.user.UserMyUserListVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 /**
  * 用户表(KxsSecurityUser)表数据库访问层
@@ -37,5 +40,13 @@ public interface KxsUserMapper extends BaseMapper<KxsUser> {
      * @return
      */
     KxsUser getParenUser(Long userId);
+    /**
+     * 创客列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 创客列表
+     */
+    Page<UserMyUserListVO> myUserList(Page<KxsUser> page, @Param("param") UserMyUserListDTO param);
 }
 

+ 2 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsShdScoreService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.user.api.dto.kxsapp.IntegralStatDTO;
 import com.kxs.user.api.model.KxsShdScore;
+import com.kxs.user.api.vo.kxsapp.subGetShareholderUserList.UserScoreListVO;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -18,7 +19,7 @@ public interface KxsShdScoreService extends IService<KxsShdScore> {
 
     Object getMyStandards(String month);
 
-    Object getShareholderUserList(Page<KxsShdScore> page, String month, Integer type);
+    Object getShareholderUserList(Page<UserScoreListVO> page, String month, Integer type);
 
     /**
      * 积分统计

+ 1 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserAmountLogService.java

@@ -30,6 +30,7 @@ public interface KxsUserAmountLogService extends IService<KxsUserAmountLog> {
      *
      * @param tradeMonth 月份
      * @return {@link AmountInExpendTotalVO}
+
      */
     AmountInExpendTotalVO amountInExpendTotal(String tradeMonth);
 

+ 9 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java

@@ -11,6 +11,7 @@ import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.UserCodeInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.UserInfoVO;
 import com.kxs.user.api.vo.kxsapp.userLevel.LevelDetailVO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 /**
  * 用户表(KxsSecurityUser)表服务接口
@@ -23,7 +24,7 @@ public interface KxsUserService extends IService<KxsUser> {
     /**
      * 注册
      *
-     * @param registerDTO 注册dto
+     * @param registerDTO  注册dto
      * @return {@link R}
      */
     R register(RegisterDTO registerDTO);
@@ -211,5 +212,12 @@ public interface KxsUserService extends IService<KxsUser> {
      */
     R forgetPayPwd(ForgetPayPwdDTO param);
 
+    Object myUserList(Page<KxsUser> page, UserMyUserListDTO param);
+
+    Object myUserStatistics();
+
+    R myUserDetail(Integer id);
+
+    Object verifyUserCode(String userCode);
 }
 

+ 3 - 12
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsShdScoreServiceImpl.java

@@ -64,19 +64,10 @@ public class KxsShdScoreServiceImpl extends ServiceImpl<KxsShdScoreMapper, KxsSh
     }
 
     @Override
-    public Object getShareholderUserList(Page<KxsShdScore> page, String month, Integer type) {
+    public Object getShareholderUserList(Page<UserScoreListVO> page, String month, Integer type) {
         month = month.split("-")[0] + month.split("-")[1];
-        Page<UserScoreListVO> shareholderHighScoreUserList = kxsShdScoreMapper.getShareholderHighScoreUserList(page, month, type);
-        for (UserScoreListVO record : shareholderHighScoreUserList.getRecords()) {
-            //获取用户头像
-            KxsUser kxsUser = kxsUserMapper.selectById(record.getUserId());
-            if (kxsUser != null) {
-                record.setAvatar(kxsUser.getAvatar());
-                record.setUsername(kxsUser.getUsername());
-                record.setUserCode(kxsUser.getUserCode());
-            }
-        }
-        return shareholderHighScoreUserList;
+
+        return kxsShdScoreMapper.getShareholderHighScoreUserList(page, month, type);
     }
 
     @Override

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor