فهرست منبع

训练营更新

lixueqiang 2 سال پیش
والد
کامیت
ecbfbafe88
17فایلهای تغییر یافته به همراه313 افزوده شده و 483 حذف شده
  1. 9 6
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mq/RabbitKxsOrderQueueListener.java
  2. 5 7
      kxs-quartz/src/main/java/com/kxs/daemon/quartz/task/SystemBeanTask.java
  3. 0 119
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/amqp/rabbit/RabbitOrderQueueMQ.java
  4. 51 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/PrizePoolDTO.java
  5. 0 26
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteSysJobService.java
  6. 36 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteSysService.java
  7. 2 4
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/config/KxsSystemFeignClientConfiguration.java
  8. 2 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/KxsSysApplication.java
  9. 0 87
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/amqp/rabbit/RabbitOrderQueueListener.java
  10. 15 10
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/kxsapp/CampController.java
  11. 7 4
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsCampService.java
  12. 169 196
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsCampServiceImpl.java
  13. 3 12
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/task/KxsSystemTask.java
  14. 1 12
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java
  15. 7 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsUserController.java
  16. 3 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java
  17. 3 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java

+ 9 - 6
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mq/RabbitKxsOrderQueueListener.java

@@ -1,13 +1,10 @@
 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.dto.kxsapp.camp.PrizePoolDTO;
+import com.kxs.system.api.feign.RemoteSysService;
 import com.kxs.system.api.feign.RemoteUserService;
 import com.rabbitmq.client.Channel;
 import lombok.RequiredArgsConstructor;
@@ -31,6 +28,7 @@ import java.io.IOException;
 @RequiredArgsConstructor
 public class RabbitKxsOrderQueueListener {
 	private final RemoteUserService remoteUserService;
+	private final RemoteSysService remoteSysService;
 
 	/**
 	 * 监听 老平台订单队列
@@ -50,7 +48,12 @@ public class RabbitKxsOrderQueueListener {
 				campAddBcqtTeamDTO.setTeamName(parse.getRemark());
 				remoteUserService.addBcqtTeam(campAddBcqtTeamDTO, SecurityConstants.FROM_IN);
 			}
-
+			//训练营订单处理
+			if(parse.getStatus() == 2 && (parse.getProductId() == 10 || parse.getProductId() == 11) ){
+				PrizePoolDTO prizePoolDTO = new PrizePoolDTO();
+				BeanUtils.copyProperties(parse,  prizePoolDTO);
+				remoteSysService.prizePoolIsRefreshed(prizePoolDTO, SecurityConstants.FROM_IN);
+			}
 			channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
         } catch (Exception e) {
 			log.error("客小爽订单消息消费失败:{}", msg, e);

+ 5 - 7
kxs-quartz/src/main/java/com/kxs/daemon/quartz/task/SystemBeanTask.java

@@ -2,9 +2,7 @@ package com.kxs.daemon.quartz.task;
 
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.daemon.quartz.constants.SkyQuartzEnum;
-import com.kxs.product.api.feign.RemoteKxsProductService;
-import com.kxs.system.api.feign.RemoteOldService;
-import com.kxs.system.api.feign.RemoteSysJobService;
+import com.kxs.system.api.feign.RemoteSysService;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -23,17 +21,17 @@ import java.time.LocalDateTime;
 @RequiredArgsConstructor
 public class SystemBeanTask {
 
-    private final RemoteSysJobService remoteSysJobService;
+    private final RemoteSysService remoteSysJobService;
 
 
     /**
      *  统计训练营奖金池
      */
     @SneakyThrows
-    public String campPrizePoolSchedule(String para) {
-        log.info("统计训练营奖金池:{},输入参数{}", LocalDateTime.now(), para);
+    public String campPrizePoolSchedule() {
+        log.info("统计训练营奖金池:{}", LocalDateTime.now());
         try {
-            remoteSysJobService.prizePoolIsRefreshed(para, SecurityConstants.FROM_IN);
+            remoteSysJobService.poweronQuantityStatistics(SecurityConstants.FROM_IN);
             return SkyQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType();
 
         }catch (Exception e){

+ 0 - 119
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/amqp/rabbit/RabbitOrderQueueMQ.java

@@ -1,119 +0,0 @@
-package com.kxs.system.api.amqp.rabbit;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.kxs.common.mq.enums.MQSendTypeEnum;
-import com.kxs.common.mq.model.AbstractMQ;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import org.springframework.amqp.core.Message;
-import org.springframework.amqp.core.MessageBuilder;
-import org.springframework.amqp.core.MessageDeliveryMode;
-import org.springframework.amqp.core.MessageProperties;
-
-import java.math.BigDecimal;
-import java.util.UUID;
-
-/**
- * mq 订单普通队列 配置
- *
- * @author 没秃顶的码农
- * @date 2024-04-25
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@NoArgsConstructor
-@AllArgsConstructor
-public class RabbitOrderQueueMQ extends AbstractMQ {
-
-
-    /**
-     * 订单交易队列
-     */
-    public static final String QUEUE_NAME = "QUEUE_ORDER_DIVISION";
-
-    /**
-     * 死信队列名称
-     */
-    public static final String DEAD_QUEUE_NAME = "DEAD_QUEUE_ORDER_DIVISION";
-
-    /**
-     * 内置msg 消息体定义
-     **/
-    private MsgEntity msgEntity;
-
-    /**
-     *  定义Msg消息载体
-     **/
-    @Data
-    public static class MsgEntity {
-
-        /**
-         * 支付订单号
-         **/
-        private String orderId;
-
-        /**
-         * 用户 ID
-         */
-        private Integer userId;
-
-        /**
-         * 商品ID
-         */
-        private Integer goodsId;
-
-        /**
-         * 订单金额
-         */
-        private BigDecimal totalPrice;
-
-    }
-
-    @Override
-    public String getQueueName() {
-
-        return QUEUE_NAME;
-    }
-
-    @Override
-    public String getDeadQueueName() {
-
-        return DEAD_QUEUE_NAME;
-    }
-
-    @Override
-    public MQSendTypeEnum getMqType() {
-
-        return MQSendTypeEnum.QUEUE;
-    }
-
-    @Override
-    public Message toMessage() {
-        String message = JSONObject.toJSONString(msgEntity);
-        // 构建消息体
-        return MessageBuilder.withBody(message.getBytes())
-                .setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN)
-                .setDeliveryMode(MessageDeliveryMode.PERSISTENT)
-                .setMessageId(UUID.randomUUID().toString())
-                .build();
-    }
-
-    /**
-     * 构造发送消息
-     */
-    public static RabbitOrderQueueMQ build(MsgEntity message){
-
-        return new RabbitOrderQueueMQ(message);
-    }
-
-    /**
-     * 解析MQ消息, 一般用于接收MQ消息时
-     */
-    public static MsgEntity parse(String msg){
-        return JSON.parseObject(msg, MsgEntity.class);
-    }
-
-}

+ 51 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/PrizePoolDTO.java

@@ -0,0 +1,51 @@
+package com.kxs.system.api.dto.kxsapp.camp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+
+/**
+ * 训练营奖金池统计
+ *
+ * @author 系统
+ * @date 2024-05-22 14:29:06
+ */
+@Data
+public class PrizePoolDTO {
+
+    /**
+     * 订单ID
+     */
+    private String id;
+    /**
+     * 订单状态(0待付款,1已付款,2已完成,3已发货,4已退款)
+     */
+    private Integer status;
+    /**
+     * 买入计数
+     */
+    private Integer buyCount;
+    /**
+     * 支付状态
+     */
+    private Integer payStatus;
+    /**
+     * 产品 ID
+     */
+    private Integer productId;
+    /**
+     * 支付总金额
+     */
+    private BigDecimal totalPrice;
+    /**
+     * 订单号
+     */
+    private String orderNo;
+    /**
+     * 用户 ID
+     */
+    private Integer userId;
+}

+ 0 - 26
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteSysJobService.java

@@ -1,26 +0,0 @@
-package com.kxs.system.api.feign;
-
-import com.kxs.common.core.constant.SecurityConstants;
-import com.kxs.system.api.model.SysLog;
-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 没秃顶的码农
- * @date 2023/11/12
- */
-public interface RemoteSysJobService {
-
-	/**
-	 * 个人及散下团队购买电签券/大POS券1组,1组计入60元,1组按实收金额5%计算,
-	 * 个人及散下团队购买电签券/大POS券计1组
-	 */
-	@GetExchange("/system-job/prizePoolIsRefreshed")
-	void prizePoolIsRefreshed(@RequestParam("param") String param, @RequestHeader(SecurityConstants.FROM) String from);
-
-}

+ 36 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteSysService.java

@@ -0,0 +1,36 @@
+package com.kxs.system.api.feign;
+
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.system.api.dto.kxsapp.camp.PrizePoolDTO;
+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;
+
+/**
+ * 定时任务调用系统模块的服务
+ *
+ * @author 没秃顶的码农
+ * @date 2023/11/12
+ */
+public interface RemoteSysService {
+
+
+	/**
+	 * 开机数量统计
+	 *
+	 * @param from 从
+	 */
+	@GetExchange("/system-job/poweronQuantityStatistics")
+	void poweronQuantityStatistics(@RequestHeader(SecurityConstants.FROM) String from);
+
+	/**
+	 * 下单后训练营奖金池刷新
+	 *
+	 * @param param 参数
+	 * @param from  从
+	 */
+	@GetExchange("/camp/prizePoolIsRefreshed")
+	void prizePoolIsRefreshed(@RequestBody PrizePoolDTO param, @RequestHeader(SecurityConstants.FROM) String from);
+
+}

+ 2 - 4
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/config/KxsSystemFeignClientConfiguration.java

@@ -18,8 +18,6 @@ import org.springframework.web.reactive.function.client.WebClient;
 import org.springframework.web.reactive.function.client.support.WebClientAdapter;
 import org.springframework.web.service.invoker.HttpServiceProxyFactory;
 
-import java.time.Duration;
-
 /**
  * <p>
  * 当前服务的webClient配置
@@ -143,9 +141,9 @@ public class KxsSystemFeignClientConfiguration {
 	 * @return 参数
 	 */
 	@Bean
-	RemoteSysJobService remoteSysJobService(@Qualifier("kxsSystemFeignClient") WebClient client) {
+	RemoteSysService remoteSysJobService(@Qualifier("kxsSystemFeignClient") WebClient client) {
 		HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
-		return factory.createClient(RemoteSysJobService.class);
+		return factory.createClient(RemoteSysService.class);
 	}
 
 }

+ 2 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/KxsSysApplication.java

@@ -5,6 +5,7 @@ import com.kxs.common.security.annotation.EnableLoginResourceServer;
 import com.kxs.common.swagger.annotation.EnableKxsDoc;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
 
 /**
  * @author 没秃顶的码农
@@ -16,6 +17,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 @EnableLoginResourceServer
 @EnableAuthResourceServer
 @EnableKxsDoc(value = "admin")
+@EnableAsync
 public class KxsSysApplication {
 
 	public static void main(String[] args) {

+ 0 - 87
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/amqp/rabbit/RabbitOrderQueueListener.java

@@ -1,87 +0,0 @@
-package com.kxs.system.biz.amqp.rabbit;
-
-import com.kxs.common.mq.config.RabbitConfiguration;
-import com.kxs.product.api.amqp.rabbit.RabbitGdActQueueMQ;
-import com.kxs.system.api.amqp.rabbit.RabbitOrderQueueMQ;
-import com.kxs.system.biz.service.KxsCampService;
-import com.rabbitmq.client.Channel;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.core.Message;
-import org.springframework.amqp.rabbit.annotation.RabbitHandler;
-import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.stereotype.Component;
-
-import java.io.IOException;
-
-/**
- * rabbit 队列侦听器
- *
- * @author 没秃顶的码农
- * @date 2024-04-25
- */
-@Component
-@Slf4j
-@RequiredArgsConstructor
-public class RabbitOrderQueueListener {
-
-	private final KxsCampService kxsCampService;
-
-	/**
-	 * 监听 hello 队列的处理器
-	 *
-	 * @param message 消息
-	 */
-	@RabbitListener(queues = RabbitOrderQueueMQ.QUEUE_NAME, ackMode = "MANUAL")
-	@RabbitHandler
-	public void onMessage(String msg, Message message, Channel channel){
-		log.info("消费端Payload: " + RabbitOrderQueueMQ.parse(msg));
-        try {
-			RabbitOrderQueueMQ.MsgEntity parse = RabbitOrderQueueMQ.parse(msg);
-			//统计到奖金池
-			kxsCampService.prizePoolIsRefreshed(parse);
-			channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
-        } catch (Exception e) {
-			log.error(e.getMessage(), e);
-			try {
-				channel.basicReject(message.getMessageProperties().getDeliveryTag(), false);
-			} catch (IOException ex) {
-				log.error("进入死信队列失败" + ex.getMessage(), ex);
-			}
-        }
-    }
-
-	/**
-	 * 监听死信 队列的处理器
-	 *
-	 * @param message 消息
-	 */
-	@RabbitListener(queues = RabbitOrderQueueMQ.DEAD_QUEUE_NAME)
-	@RabbitHandler
-	public void onDeadMessage(String msg, Message message, Channel channel){
-		log.info("死信队列Payload: " + RabbitOrderQueueMQ.parse(msg));
-        try {
-			RabbitOrderQueueMQ.MsgEntity parse = RabbitOrderQueueMQ.parse(msg);
-        } catch (Exception e) {
-			log.error(e.getMessage(), e);
-
-        }
-    }
-
-//	/**
-//	 * 监听死信 队列的处理器
-//	 *
-//	 * @param message 消息
-//	 */
-//	@RabbitListener(queues = RabbitGdActQueueMQ.QUEUE_NAME)
-//	@RabbitHandler
-//	public void onGdMessage(String msg, Message message, Channel channel){
-//		log.info("广电报备队列Payload: " + RabbitGdActQueueMQ.parse(msg));
-//        try {
-//			RabbitGdActQueueMQ.MsgEntity parse = RabbitGdActQueueMQ.parse(msg);
-//        } catch (Exception e) {
-//			log.error(e.getMessage(), e);
-//
-//        }
-//    }
-}

+ 15 - 10
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/kxsapp/CampController.java

@@ -1,18 +1,13 @@
 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.dto.kxsapp.camp.*;
 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.*;
+import com.kxs.system.api.vo.kxsapp.camp.CampPageVO;
+import com.kxs.system.api.vo.kxsapp.camp.CampUserPageVO;
 import com.kxs.system.biz.service.KxsBcqtTeamService;
 import com.kxs.system.biz.service.KxsCampService;
 import com.kxs.system.biz.service.KxsCampUserService;
@@ -21,8 +16,6 @@ import lombok.RequiredArgsConstructor;
 import org.springdoc.core.annotations.ParameterObject;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * 训练营(Camp)控制层
  *
@@ -80,7 +73,19 @@ public class CampController {
         return R.ok(kxsCampUserService.getByPage(page, campId));
     }
 
+    /**
+     * 训练营奖金池刷新
+     *
+     * @param param 参数
+     * @return {@link R}
+     */
+    @Inner
+    @PostMapping("/prizePoolIsRefreshed")
+    public R prizePoolIsRefreshed(@ParameterObject PrizePoolDTO param){
 
+        kxsCampService.prizePoolIsRefreshed(param);
+        return R.ok();
+    }
 
     /**
      * 百城千团-获取列表

+ 7 - 4
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/KxsCampService.java

@@ -4,12 +4,11 @@ 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.dto.kxsapp.camp.PrizePoolDTO;
 import com.kxs.system.api.model.KxsCamp;
 import com.kxs.system.api.vo.admin.CampUserExcelVO;
 import com.kxs.system.api.vo.kxsapp.camp.CampGetByIdVO;
 import com.kxs.system.api.vo.kxsapp.camp.CampPageVO;
-import com.kxs.system.api.amqp.rabbit.RabbitOrderQueueMQ;
 import org.springframework.validation.BindingResult;
 
 import java.util.List;
@@ -64,9 +63,9 @@ public interface KxsCampService extends IService<KxsCamp> {
     R getByData(Integer id);
 
     /**
-     * 奖池已刷新
+     * 兑换券下单 奖池已刷新
      */
-    void prizePoolIsRefreshed(RabbitOrderQueueMQ.MsgEntity parse);
+    void prizePoolIsRefreshed(PrizePoolDTO param);
 
     /**
      * 后台分页 页面
@@ -78,5 +77,9 @@ public interface KxsCampService extends IService<KxsCamp> {
     IPage<KxsCamp> getBySysPage(Page<KxsCamp> page, KxsCamp param);
 
 
+    /**
+     * 开机数量统计
+     */
+    void poweronQuantityStatistics();
 }
 

+ 169 - 196
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsCampServiceImpl.java

@@ -2,28 +2,33 @@ package com.kxs.system.biz.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.text.StrPool;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 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.constant.enums.ErrorTypeEnum;
+import com.kxs.common.core.constant.enums.LeaderTypeEnum;
 import com.kxs.common.core.exception.GlobalCustomerException;
 import com.kxs.common.core.util.R;
 import com.kxs.common.core.util.RetOps;
+import com.kxs.common.core.util.SysUtils;
 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.stat.api.feign.RemoteKxsStatService;
+import com.kxs.system.api.dto.kxsapp.camp.PrizePoolDTO;
 import com.kxs.system.api.feign.RemoteOldService;
 import com.kxs.system.api.model.KxsCampUser;
 import com.kxs.system.api.vo.admin.CampUserExcelVO;
 import com.kxs.system.api.vo.kxsapp.camp.CampGetByIdVO;
 import com.kxs.system.api.vo.kxsapp.camp.CampPageVO;
-import com.kxs.system.api.amqp.rabbit.RabbitOrderQueueMQ;
 import com.kxs.system.biz.constant.enums.CampStatusEnum;
 import com.kxs.system.biz.constant.enums.SysErrorTypeEnum;
 import com.kxs.system.biz.mapper.KxsCampMapper;
@@ -31,11 +36,12 @@ import com.kxs.system.api.model.KxsCamp;
 import com.kxs.system.biz.service.KxsCampService;
 import com.kxs.system.biz.service.KxsCampUserService;
 import com.kxs.user.api.feign.RemoteKxsUserService;
+import com.kxs.user.api.model.KxsLeader;
 import com.kxs.user.api.model.KxsUser;
 import com.pig4cloud.plugin.excel.vo.ErrorMessage;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.BindingResult;
 
@@ -51,13 +57,13 @@ import java.util.*;
  */
 @Service("kxsCampService")
 @RequiredArgsConstructor
-@EnableAsync
 @Slf4j
 public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> implements KxsCampService {
 
     private final RemoteKxsUserService remoteKxsUserService;
 
     private final RemoteKxsProductService remoteKxsProductService;
+    private final RemoteKxsStatService remoteKxsStatService;
 
     private final RemoteOldService remoteOldService;
 
@@ -175,9 +181,7 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
         LocalDateTime now = LocalDateTime.now();
         Long userId = SecurityUtils.getUser().getId();
         IPage<CampPageVO> pageData = baseMapper.getByPage(page, userId);
-        pageData.getRecords().forEach(item -> {
-            statusChange(item, now);
-        });
+        pageData.getRecords().forEach(item -> statusChange(item, now));
         return pageData;
     }
 
@@ -194,39 +198,45 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
     }
 
     @Override
-    public void prizePoolIsRefreshed(RabbitOrderQueueMQ.MsgEntity parse) {
+    @Async
+    public void prizePoolIsRefreshed(PrizePoolDTO param) {
+
         //查询正在进行中的活动
         LocalDateTime now = LocalDateTime.now();
         //兑换券下单
-        if(parse.getGoodsId() == 11 || parse.getGoodsId() == 12) {
+        if(param.getProductId() == 10 || param.getProductId() == 11) {
 
+            log.info("开始处理兑换券下单订单号:{}统计到训练营奖金池", param.getOrderNo());
+
+            //下单组数
+            BigDecimal number = NumberUtil.div(param.getTotalPrice(), 600);
             //订单奖金
-            BigDecimal amount = NumberUtil.mul(NumberUtil.div(parse.getTotalPrice(), 600), 90);
+            BigDecimal amount = NumberUtil.mul(number, 60);
             //查询此用户是否参加进行中的训练营
-            KxsCamp kxsCamp = baseMapper.selectUserCamp(parse.getUserId(), now);
+            KxsCamp kxsCamp = baseMapper.selectUserCamp(param.getUserId(), now);
             if (kxsCamp != null) {
                 //给训练营加金额
                 kxsCamp.setBonusPool(NumberUtil.add(kxsCamp.getBonusPool(), amount));
-                kxsCamp.setOrderNum(kxsCamp.getOrderNum() + 1);
+                kxsCamp.setOrderNum(kxsCamp.getOrderNum() +  number.intValue());
                 baseMapper.updateById(kxsCamp);
 
                 //给创客团队加金额
                 KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
                         .eq(KxsCampUser::getCampId, kxsCamp.getId())
-                        .eq(KxsCampUser::getUserId, parse.getUserId()));
+                        .eq(KxsCampUser::getUserId, param.getUserId()));
                 kxsCampUser.setTeamOrderPool(NumberUtil.add(kxsCampUser.getTeamOrderPool(), amount));
-                kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + 1);
+                kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + number.intValue());
                 kxsCampUserService.updateById(kxsCampUser);
-                log.info("用户{}参加训练营{},订单ID{}, 奖金池{},订单数{}", parse.getUserId(), kxsCamp.getId(), parse.getOrderId(), kxsCamp.getBonusPool(), kxsCamp.getOrderNum());
+                log.info("用户{}参加训练营{},订单ID{}, 奖金池{},订单数{}", param.getUserId(), kxsCamp.getId(), param.getId(), kxsCamp.getBonusPool(), kxsCamp.getOrderNum());
                 return;
             }
             //查找此用户上级倒序后参加了训练营,把奖金加入到自己和训练营里
-            R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(parse.getUserId(), SecurityConstants.FROM_IN);
+            R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(param.getUserId(), SecurityConstants.FROM_IN);
             KxsUser user = RetOps.of(kxsUserR)
                     .getData()
                     .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
             //下单用户的上级路径
-            String[] pidPaths = user.getPidPath().split(StrUtil.COMMA);
+            String[] pidPaths = user.getPidPath().split(StrPool.COMMA);
             //翻转上级从最近的开始查询
             Arrays.sort(pidPaths, Collections.reverseOrder());
             KxsCampUser campUser = baseMapper.selectUsersCamp(pidPaths, now);
@@ -234,17 +244,58 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
                 //给训练营加金额
                 KxsCamp camp = baseMapper.selectById(campUser.getCampId());
                 camp.setBonusPool(NumberUtil.add(camp.getBonusPool(), amount));
-                camp.setOrderNum(camp.getOrderNum() + 1);
+                camp.setOrderNum(camp.getOrderNum() + number.intValue());
                 baseMapper.updateById(camp);
 
                 //给创客团队加金额
                 campUser.setTeamOrderPool(NumberUtil.add(campUser.getTeamOrderPool(), amount));
-                campUser.setTeamOrderNum(campUser.getTeamOrderNum() + 1);
+                campUser.setTeamOrderNum(campUser.getTeamOrderNum() +  number.intValue());
                 kxsCampUserService.updateById(campUser);
-                log.info("用户{}的上级{}参加训练营{},订单ID{}, 奖金池{},订单数{}", parse.getUserId(), campUser.getUserId(), camp.getId(), parse.getOrderId(), camp.getBonusPool(), camp.getOrderNum());
+                log.info("用户{}的上级{}参加训练营{},订单ID{},奖金池{},订单数{}", param.getUserId(), campUser.getUserId(), camp.getId(), param.getId(), camp.getBonusPool(), camp.getOrderNum());
             }
         }
 
+//        if(param.getProductId() == 12 || param.getProductId() == 13){
+//            log.info("开始处理大小盟主下单订单号:{}统计到训练营奖金池", param.getOrderNo());
+//
+//            //查询此用户是否参加进行中的训练营
+//            KxsCamp kxsCamp = baseMapper.selectUserCamp(param.getUserId(), now);
+//            if (kxsCamp != null) {
+//                //给训练营加下单数
+//                kxsCamp.setOrderNum(kxsCamp.getOrderNum() +  1);
+//                baseMapper.updateById(kxsCamp);
+//
+//                //给创客团队加下单数
+//                KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
+//                        .eq(KxsCampUser::getCampId, kxsCamp.getId())
+//                        .eq(KxsCampUser::getUserId, param.getUserId()));
+//                kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + 1);
+//                kxsCampUserService.updateById(kxsCampUser);
+//                log.info("用户{}参加训练营{},订单ID{}, 订单数{}", param.getUserId(), kxsCamp.getId(), param.getId(), kxsCamp.getOrderNum());
+//                return;
+//            }
+//            //查找此用户上级倒序后参加了训练营,把奖金加入到自己和训练营里
+//            R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(param.getUserId(), SecurityConstants.FROM_IN);
+//            KxsUser user = RetOps.of(kxsUserR)
+//                    .getData()
+//                    .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+//            //下单用户的上级路径
+//            String[] pidPaths = user.getPidPath().split(StrPool.COMMA);
+//            //翻转上级从最近的开始查询
+//            Arrays.sort(pidPaths, Collections.reverseOrder());
+//            KxsCampUser campUser = baseMapper.selectUsersCamp(pidPaths, now);
+//            if (campUser != null) {
+//                //给训练营加下单数
+//                KxsCamp camp = baseMapper.selectById(campUser.getCampId());
+//                camp.setOrderNum(camp.getOrderNum() + 1);
+//                baseMapper.updateById(camp);
+//
+//                //给创客团队加下单数
+//                campUser.setTeamOrderNum(campUser.getTeamOrderNum() +  1);
+//                kxsCampUserService.updateById(campUser);
+//                log.info("用户{}的上级{}参加训练营{},订单ID{}, 奖金池{},订单数{}", param.getUserId(), campUser.getUserId(), camp.getId(), param.getId(), camp.getBonusPool(), camp.getOrderNum());
+//            }
+//        }
     }
 
     @Override
@@ -260,182 +311,104 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
 
 
 
-//    @Override
-//    public void prizePoolIsRefreshed(RabbitOrderQueueMQ.MsgEntity parse) {
-//        //查询正在进行中的活动
-//        LocalDateTime now = LocalDateTime.now();
-//        //定时任务执行中时,查询当前正在进行的活动,由于定时任务执行时间偏差,当前时间减1一分钟判断
-//        List<KxsCamp> list = baseMapper.selectList(Wrappers.<KxsCamp>lambdaQuery().le(KxsCamp::getStartTime, now).ge(KxsCamp::getEndTime, now.minusMinutes(1)));
-//        //查询活动参与的创客
-//        for (KxsCamp kxsCamp : list) {
-//            //初始化奖金池
-//            BigDecimal totalBonusPool = BigDecimal.ZERO;
-//            //开机数
-//            int openNum = 0;
-//            //下单数
-//            int orderNum = 0;
-//
-//            List<KxsCampUser> campUsers = kxsCampUserService.list(Wrappers.<KxsCampUser>lambdaQuery().eq(KxsCampUser::getCampId, kxsCamp.getId()));
-//            //清除参与创客的所有统计数据然后封装在map里方便统计
-//            Map<Integer, KxsCampUser> campUsersMap = new HashMap<>();
-//            for (KxsCampUser campUser : campUsers) {
-//                KxsCampUser kxsCampUser = new KxsCampUser();
-//                BeanUtil.copyProperties(campUser, kxsCampUser);
-//                kxsCampUser.setTeamOrderPool(BigDecimal.ZERO);
-//                kxsCampUser.setTeamLeaderPool(BigDecimal.ZERO);
-//                kxsCampUser.setTeamOrderNum(0);
-//                kxsCampUser.setTeamLeaderNum(0);
-//                kxsCampUser.setTeamOpenNum(0);
-//                campUsersMap.put(campUser.getUserId(), kxsCampUser);
-//            }
-//
-//            //转换为userID集合
-//            List<Integer> userIds = campUsers.stream().map(KxsCampUser::getUserId).toList();
-//
-//
-//            /*
-//             * 查询当前活动的时间区间所有电签大机的订单
-//             */
-//            R<List<ShopOrderGoodsUserVO>> ordersR = remoteKxsProductService.getDateBetweenOrders(LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.NORM_DATETIME_PATTERN)
-//                    , LocalDateTimeUtil.format(kxsCamp.getEndTime(), DatePattern.NORM_DATETIME_PATTERN), SecurityConstants.FROM_IN);
-//            List<ShopOrderGoodsUserVO> orders = RetOps.of(ordersR)
-//                    .getData()
-//                    .orElse(Collections.emptyList());
-//            //循环区间订单查询用户的上级是否包含参与创客的ID
-//            for (ShopOrderGoodsUserVO order : orders) {
-//                //如果是参与者自己下的单
-//                if (userIds.contains(order.getUserId())) {
-//                    int currentNum = NumberUtil.div(order.getTotalPrice(), 600).intValue();
-//                    //刷新参与创客的团队累计
-//                    KxsCampUser kxsCampUser = campUsersMap.get(order.getUserId());
-//                    BigDecimal amount = NumberUtil.mul(NumberUtil.div(order.getTotalPrice(), 600), 90);
-//                    totalBonusPool = NumberUtil.add(totalBonusPool, amount);
-//                    //兑换券下单
-//                    kxsCampUser.setTeamOrderPool(NumberUtil.add(kxsCampUser.getTeamOrderPool(), amount));
-//                    kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + currentNum);
-////                    if(order.getId() == 27 || order.getId() == 28){
-////                        //大小盟主下单, 奖金池+60,订单数+1
-////                        kxsCampUser.setTeamLeaderPool(NumberUtil.add(kxsCampUser.getTeamLeaderPool(), 60));
-////                        kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
-////                        currentNum = 1;
-////                    }
-//                    orderNum += currentNum;
-//                    continue;
-//                }
-//
-//                R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(order.getUserId(), SecurityConstants.FROM_IN);
-//                KxsUser user = RetOps.of(kxsUserR)
-//                        .getData()
-//                        .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
-//                //下单用户的上级路径
-//                String[] pidPaths = user.getPidPath().split(",");
-//                //通过用户的pidPath倒序查找最近所属的上级
-//                Integer userId = SysUtils.checkUserIsChildren(pidPaths, userIds);
-//                if(userId != null){
-//                    int currentNum = NumberUtil.div(order.getTotalPrice(), 600).intValue();
-//                    //刷新参与创客的团队累计
-//                    KxsCampUser kxsCampUser = campUsersMap.get(userId);
-//                    BigDecimal amount = NumberUtil.mul(NumberUtil.div(order.getTotalPrice(), 600), 90);
-//                    totalBonusPool = NumberUtil.add(totalBonusPool, amount);
-//
-//                    kxsCampUser.setTeamOrderPool(NumberUtil.add(kxsCampUser.getTeamOrderPool(), amount));
-//                    kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + currentNum);
-////                    if(order.getId() == 27 || order.getId() == 28){
-////                        //大小盟主下单, 奖金池+60,订单数+1
-////                        kxsCampUser.setTeamLeaderPool(NumberUtil.add(kxsCampUser.getTeamLeaderPool(), 60));
-////                        kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
-////                        currentNum = 1;
-////                    }
-//                    orderNum += currentNum;
-//                }
-//            }
-//
-//            /*
-//             * 查询活动区间开通的大盟主添加到奖金池
-//             */
-//            R<List<KxsLeader>> leadersR = remoteKxsUserService.getDateBetweenLeaders(LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.NORM_DATETIME_PATTERN)
-//                    , LocalDateTimeUtil.format(kxsCamp.getEndTime(), DatePattern.NORM_DATETIME_PATTERN), SecurityConstants.FROM_IN);
-//            List<KxsLeader> leaders = RetOps.of(leadersR)
-//                    .getData()
-//                    .orElse(Collections.emptyList());
-//            for (KxsLeader leader : leaders) {
-//                //如果是参与者自己下的单
-//                if (userIds.contains(leader.getUserId())) {
-//                    BigDecimal amount;
-//                    if(leader.getLeaderType().equals(LeaderTypeEnum.SMALL_LEADER.getType())){
-//                        amount = new BigDecimal("2000");
-//                    }else{
-//                        amount = new BigDecimal("8000");
-//                    }
-//                    totalBonusPool = NumberUtil.add(totalBonusPool, amount);
-//
-//                    //刷新参与创客的团队累计
-//                    KxsCampUser kxsCampUser = campUsersMap.get(leader.getUserId());
-//                    kxsCampUser.setTeamLeaderPool(NumberUtil.add(kxsCampUser.getTeamLeaderPool(), amount));
-//                    kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
-//                    orderNum += 1;
-//                    log.info("参与者{}自己下单盟主,进入到{}奖金池", leader.getUserId(), kxsCamp.getTitle());
-//                    continue;
-//                }
-//                //查询此盟主的上级
-//                R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(leader.getUserId(), SecurityConstants.FROM_IN);
-//                KxsUser user = RetOps.of(kxsUserR)
-//                        .getData()
-//                        .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
-//                //下单用户的上级路径
-//                String[] pidPaths = user.getPidPath().split(",");
-//                //通过用户的pidPath倒序查找最近所属的上级
-//                Integer userId = SysUtils.checkUserIsChildren(pidPaths, userIds);
-//                if(userId != null){
-//                    BigDecimal amount;
-//                    if(leader.getLeaderType().equals(LeaderTypeEnum.SMALL_LEADER.getType())){
-//                        amount = new BigDecimal("2000");
-//                    }else{
-//                        amount = new BigDecimal("8000");
-//                    }
-//                    totalBonusPool = NumberUtil.add(totalBonusPool, amount);
-//
-//                    //刷新参与创客的团队累计
-//                    KxsCampUser kxsCampUser = campUsersMap.get(userId);
-//                    kxsCampUser.setTeamLeaderPool(NumberUtil.add(kxsCampUser.getTeamLeaderPool(), amount));
-//                    kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
-//                    orderNum += 1;
-//                    log.info("创客:{}的团队购买盟主:{},进入到:{}奖金池", userId, leader.getUserId(), kxsCamp.getTitle());
-//                }
-//            }
-//
-//            /*
-//             * 查询活动区间开机数
-//             */
-//            for (Integer userId : campUsersMap.keySet()) {
-//                KxsCampUser kxsCampUser = campUsersMap.get(userId);
-//                HashMap<String, Object> data = new HashMap<>();
-//                data.put("UserId", userId);
-//                data.put("StartTime", LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.PURE_DATE_PATTERN));
-//                data.put("EndTime", LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.PURE_DATE_PATTERN));
-//                R resR = remoteOldService.teamOpenTotalData(JSON.toJSONString(data));
-//                if(resR.getStatus() == 1){
-//                    if(resR.getData() != null){
-//                        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(resR.getData()));
-//                        int total = jsonObject.getInteger("TeamPosMerchantCount")
-//                                + jsonObject.getInteger("TeamSimMerchantCount")
-//                                + jsonObject.getInteger("TeamMpMerchantCount");
-//                        openNum += total;
-//                        kxsCampUser.setTeamOpenNum(kxsCampUser.getTeamOpenNum() + total);
-//                    }
-//                }
-//            }
-//
-//            kxsCamp.setBonusPool(totalBonusPool);
-//            kxsCamp.setOrderNum(orderNum);
-//            kxsCamp.setOpenNum(openNum);
-//            baseMapper.updateById(kxsCamp);
-//            //刷新参与创客的统计
-//            kxsCampUserService.updateBatchById(new ArrayList<>(campUsersMap.values()));
-//            log.info("训练营{}统计结束", kxsCamp.getCampNum());
-//        }
-//
-//    }
+    @Override
+    public void poweronQuantityStatistics() {
+        //查询正在进行中的活动
+        LocalDateTime now = LocalDateTime.now();
+        //定时任务执行中时,查询当前正在进行的活动,由于定时任务执行时间偏差,当前时间减1一分钟判断
+        List<KxsCamp> list = baseMapper.selectList(Wrappers.<KxsCamp>lambdaQuery().le(KxsCamp::getStartTime, now).ge(KxsCamp::getEndTime, now.minusMinutes(1)));
+        //查询活动参与的创客
+        for (KxsCamp kxsCamp : list) {
+
+            List<KxsCampUser> campUsers = kxsCampUserService.list(Wrappers.<KxsCampUser>lambdaQuery().eq(KxsCampUser::getCampId, kxsCamp.getId()));
+            //清除参与创客的所有统计数据然后封装在map里方便统计
+            Map<Integer, KxsCampUser> campUsersMap = new HashMap<>();
+            for (KxsCampUser campUser : campUsers) {
+                KxsCampUser kxsCampUser = new KxsCampUser();
+                BeanUtil.copyProperties(campUser, kxsCampUser);
+                kxsCampUser.setTeamLeaderNum(0);
+                kxsCampUser.setTeamOpenNum(0);
+                campUsersMap.put(campUser.getUserId(), kxsCampUser);
+            }
+
+            //转换为userID集合
+            List<Integer> userIds = campUsers.stream().map(KxsCampUser::getUserId).toList();
+
+            /*
+             * 查询活动区间开通的大盟主添加到奖金池
+             */
+            R<List<KxsLeader>> leadersR = remoteKxsUserService.getDateBetweenLeaders(LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.NORM_DATETIME_PATTERN)
+                    , LocalDateTimeUtil.format(kxsCamp.getEndTime(), DatePattern.NORM_DATETIME_PATTERN), SecurityConstants.FROM_IN);
+            List<KxsLeader> leaders = RetOps.of(leadersR)
+                    .getData()
+                    .orElse(Collections.emptyList());
+            for (KxsLeader leader : leaders) {
+                //如果是参与者自己下的单
+                if (userIds.contains(leader.getUserId())) {
+
+                    //刷新参与创客的团队累计
+                    KxsCampUser kxsCampUser = campUsersMap.get(leader.getUserId());
+                    kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
+                    log.info("参与者{}自己下单盟主,进入到{}奖金池", leader.getUserId(), kxsCamp.getTitle());
+                    continue;
+                }
+                //查询此盟主的上级
+                R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(leader.getUserId(), SecurityConstants.FROM_IN);
+                KxsUser user = RetOps.of(kxsUserR)
+                        .getData()
+                        .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+                //下单用户的上级路径
+                String[] pidPaths = user.getPidPath().split(",");
+                //通过用户的pidPath倒序查找最近所属的上级
+                Integer userId = SysUtils.checkUserIsChildren(pidPaths, userIds);
+                if(userId != null){
+
+                    //刷新参与创客的团队累计
+                    KxsCampUser kxsCampUser = campUsersMap.get(userId);
+                    kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
+                    log.info("创客:{}的团队购买盟主:{},进入到:{}奖金池", userId, leader.getUserId(), kxsCamp.getTitle());
+                }
+            }
+
+            /*
+             * 查询活动区间开机数
+             */
+            for (Integer userId : campUsersMap.keySet()) {
+                KxsCampUser kxsCampUser = campUsersMap.get(userId);
+
+                HashMap<String, Object> data = new HashMap<>();
+                data.put("UserId", userId);
+                data.put("StartTime", LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.PURE_DATE_PATTERN));
+                data.put("EndTime", LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.PURE_DATE_PATTERN));
+                R resR = remoteOldService.teamOpenTotalData(JSON.toJSONString(data));
+                if(resR.getStatus() == 1){
+                    if(resR.getData() != null){
+                        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(resR.getData()));
+                        int total = jsonObject.getInteger("TeamPosMerchantCount")
+                                + jsonObject.getInteger("TeamSimMerchantCount")
+                                + jsonObject.getInteger("TeamMpMerchantCount");
+                        kxsCampUser.setTeamOpenNum(kxsCampUser.getTeamOpenNum() + total);
+                    }
+                }
+            }
+
+
+            //刷新参与创客的统计
+            int openNum = 0;
+            int orderNum = 0;
+            for (KxsCampUser value : campUsersMap.values()) {
+                openNum = openNum + value.getTeamOpenNum();
+                orderNum = orderNum + value.getTeamOrderNum() + value.getTeamLeaderNum();
+                kxsCampUserService.updateById(value);
+            }
+            kxsCamp.setOrderNum(orderNum);
+            kxsCamp.setOpenNum(openNum);
+            baseMapper.updateById(kxsCamp);
+            log.info("训练营{}统计结束", kxsCamp.getCampNum());
+
+        }
+
+    }
 
 
     /**

+ 3 - 12
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/task/KxsSystemTask.java

@@ -27,27 +27,18 @@ public class KxsSystemTask {
 
     /**
      *
-     奖金池计算方式
-         1.个人及散下团队购买电签券/大POS券1组,1组计入60元,1组按实收金额5%计算;
-         2.分期大盟主,按具体情况实收金额5%计入;
-     团队开机统计方式
          1.统计方式:个人及散下团队开通广电卡、来客吧、pos商户
          2.广电卡统计:激活成功+1
          3.pos商户统计:激活成功+1
          4.来客吧商户统计: 商户任意通道待签约+1
-     团队下单统计方式
-        1.个人及散下团队购买电签券/大POS券计1组
-     * 一个小时执行一次
      * 异步执行
      */
     @Inner
-    @GetMapping("/prizePoolIsRefreshed")
-    public void prizePoolIsRefreshed(@RequestParam("param") String para)  {
+    @GetMapping("/poweronQuantityStatistics")
+    public void prizePoolIsRefreshed()  {
 
-//        kxsCampService.prizePoolIsRefreshed();
+        kxsCampService.poweronQuantityStatistics();
 
     }
 
-
-
 }

+ 1 - 12
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java

@@ -159,7 +159,7 @@ public interface RemoteKxsUserService {
 	void userTotalDebtSub(@RequestHeader(SecurityConstants.FROM) String from);
 
 	/**
-	 * 查询指定时间区间的电签大机券订单
+	 * 查询指定时间区间的大小盟主
 	 *
 	 * @param from  调用标志
 	 * @param startTime 开始时间
@@ -180,7 +180,6 @@ public interface RemoteKxsUserService {
 	/**
 	 * 积分汇算
 	 *
-	 * @return {@link R}
 	 */
 	@PostExchange("/shareholder/integralStat")
 	void integralStat(@RequestBody List<IntegralStatDTO> integralStatDTOS,@RequestHeader(SecurityConstants.FROM) String from);
@@ -188,18 +187,8 @@ public interface RemoteKxsUserService {
 	/**
 	 * 奖池同步交易额
 	 *
-	 * @return {@link R}
 	 */
 	@GetExchange("/shareholder/prizePoolSynchronization")
 	void prizePoolSynchronization(@RequestParam(value = "para", required = false) String para, @RequestHeader(SecurityConstants.FROM) String from);
 
-	/**
-	 * 修改用户真实职级表
-	 *
-	 * @param from       调用标志
-	 * @return {@link R}<{@link Boolean}>
-	 */
-	@PostExchange("/shareholder/updateUserRealLevel")
-	void updateUserRealLevel(@RequestBody KxsUserRealLevel kxsUserRealLevel, @RequestHeader(SecurityConstants.FROM) String from);
-
 }

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

@@ -1,6 +1,8 @@
 package com.kxs.user.biz.controller.kxsapp;
 
 
+import cn.hutool.core.text.StrPool;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.kxs.common.core.util.R;
 import com.kxs.common.security.annotation.Inner;
@@ -19,6 +21,9 @@ import org.springdoc.core.annotations.ParameterObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 用户表(KxsSecurityUser)表控制层
  *
@@ -34,6 +39,8 @@ public class KxsUserController {
     private final KxsUserBankService kxsUserBankService;
     private final KxsUserRealService kxsUserRealService;
 
+
+
     /**
      * 获取指定用户全部信息
      * 内部调用

+ 3 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java

@@ -15,6 +15,8 @@ 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;
 
+import java.util.List;
+
 /**
  * 用户表(KxsSecurityUser)表服务接口
  *
@@ -274,5 +276,6 @@ public interface KxsUserService extends IService<KxsUser> {
      * @return {@link R}
      */
     R mchRegister(MchRegisterDTO registerDTO);
+
 }
 

+ 3 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java

@@ -3,6 +3,7 @@ package com.kxs.user.biz.service.impl;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.text.StrPool;
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.RandomUtil;
@@ -65,9 +66,11 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Objects;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * 用户表(KxsSecurityUser)表服务实现类