Kaynağa Gözat

训练营更新激活队列,大小盟主统计

mac 2 yıl önce
ebeveyn
işleme
e06a6ef80a

+ 125 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/amqp/rabbit/RabbitKxsActQueueMQ.java

@@ -0,0 +1,125 @@
+package com.kxs.stat.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.util.UUID;
+
+/**
+ * 客小爽pos 广电 来客吧激活推送队列
+ *
+ * @author 没秃顶的码农
+ * @date 2024-06-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class RabbitKxsActQueueMQ extends AbstractMQ {
+
+
+    /**
+     * 订单交易队列
+     */
+    public static final String QUEUE_NAME = "QUEUE_KXS_ACT_DIVISION";
+
+    /**
+     * 死队列名称
+     */
+    public static final String DEAD_QUEUE_NAME = null;
+
+    /**
+     * 内置msg 消息体定义
+     **/
+    private MsgEntity msgEntity;
+
+    /**
+     *  定义Msg消息载体
+     **/
+    @Data
+    public static class MsgEntity {
+
+        /**
+         * 用户ID
+         */
+        private Long  userId;
+        /**
+         * 品牌 ID
+         */
+        private Integer  brandId;
+        /**
+         * 激活时间
+         */
+        private String actTime;
+        /**
+         * 绑定时间
+         */
+        private String bindTime;
+        /**
+         * sn
+         */
+        private String sn;
+
+        /**
+         * 激活类型 1 pos激活 2广电激活 3来客吧签约激活 4来客吧缴费激活
+         */
+        private Integer actType;
+
+
+    }
+
+    @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 RabbitKxsActQueueMQ build(MsgEntity message){
+
+        return new RabbitKxsActQueueMQ(message);
+    }
+
+    /**
+     * 解析MQ消息, 一般用于接收MQ消息时
+     */
+    public static MsgEntity parse(String msg){
+        return JSON.parseObject(msg, MsgEntity.class);
+    }
+
+}

+ 65 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mq/RabbitKxsActQueueListener.java

@@ -0,0 +1,65 @@
+package com.kxs.stat.biz.mq;
+
+import com.alibaba.fastjson.JSON;
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.stat.api.amqp.rabbit.RabbitKxsActQueueMQ;
+import com.kxs.system.api.dto.kxsapp.camp.CampOpenNumStatDTO;
+import com.kxs.system.api.feign.RemoteSysService;
+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.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+/**
+ * 客小爽pos 广电 来客吧激活推送队列
+ *
+ * @author Pota1ovO
+ * @date 2024-05-07
+ */
+@Component
+@Slf4j
+@RequiredArgsConstructor
+public class RabbitKxsActQueueListener {
+
+    private final RemoteSysService remoteSysService;
+
+//    public static void main(String[] args) {
+//        System.out.println(TotalDateUtil.getMonthNumber(LocalDateTimeUtil.parseDate("2024-03-14T12:54:41", DatePattern.UTC_SIMPLE_PATTERN)));
+//        System.out.println(TotalDateUtil.getDateNumber(LocalDateTimeUtil.parseDate("2024-03-14T12:54:41", DatePattern.UTC_SIMPLE_PATTERN)));
+//    }
+
+    /**
+     * 监听 客小爽激活队列 队列的处理器
+     *
+     * @param message 消息
+     */
+    @RabbitListener(queues = RabbitKxsActQueueMQ.QUEUE_NAME, ackMode = "MANUAL")
+    @RabbitHandler
+    public void onActMessage(String msg, Message message, Channel channel) {
+        try {
+            RabbitKxsActQueueMQ.MsgEntity parse = RabbitKxsActQueueMQ.parse(msg);
+            log.info("客小爽激活队列消费端Payload: " + JSON.toJSONString(parse));
+//            Integer tradeMonth = TotalDateUtil.getMonthNumber(LocalDateTimeUtil.parseDate(parse.getActTime(), DatePattern.UTC_SIMPLE_PATTERN));
+
+            CampOpenNumStatDTO campOpenNumStatDTO = new CampOpenNumStatDTO();
+            BeanUtils.copyProperties(parse, campOpenNumStatDTO);
+            remoteSysService.campOpenNumStat(campOpenNumStatDTO, SecurityConstants.FROM_IN);
+
+        } catch (Exception e) {
+            log.error("客小爽激活队列消费失败:{}", JSON.toJSONString(msg), e);
+            try {
+                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+            } catch (IOException ex) {
+                log.error("客小爽激活队列手动确认失败" + ex.getMessage(), ex);
+            }
+        }
+    }
+
+
+}

+ 41 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/kxsapp/camp/CampOpenNumStatDTO.java

@@ -0,0 +1,41 @@
+package com.kxs.system.api.dto.kxsapp.camp;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 训练营开机数量统计
+ *
+ * @author 没秃顶的码农
+ * @date 2024-06-17
+ */
+@Data
+public class CampOpenNumStatDTO implements Serializable {
+
+    /**
+     * 用户ID
+     */
+    private Long  userId;
+    /**
+     * 品牌 ID
+     */
+    private Integer  brandId;
+    /**
+     * 激活时间
+     */
+    private String actTime;
+    /**
+     * 绑定时间
+     */
+    private String bindTime;
+    /**
+     * sn
+     */
+    private String sn;
+
+    /**
+     * 激活类型 1 pos激活 2广电激活 3来客吧签约激活 4来客吧缴费激活
+     */
+    private Integer actType;
+}

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

@@ -3,6 +3,7 @@ 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.kxsapp.camp.CampAddBcqtTeamDTO;
+import com.kxs.system.api.dto.kxsapp.camp.CampOpenNumStatDTO;
 import com.kxs.system.api.dto.kxsapp.camp.PrizePoolDTO;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestHeader;
@@ -53,4 +54,12 @@ public interface RemoteSysService {
 	 */
 	@PostExchange("/camp/setUserActiviteStatus")
 	void setUserActiviteStatus(@RequestHeader(SecurityConstants.FROM) String from);
+
+	/**
+	 * 训练营开机数量统计
+	 *
+	 * @param param 请求参数
+	 */
+	@PostExchange("/camp/campOpenNumStat")
+	void campOpenNumStat(CampOpenNumStatDTO param, String fromIn);
 }

+ 2 - 2
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/KxsCampUser.java

@@ -138,13 +138,13 @@ public class KxsCampUser extends Model<KxsCampUser> implements Serializable {
      * 广电开机数
      */
     @Schema(description = "广电开机数")
-    private BigDecimal teamGdNum;
+    private Integer teamGdNum;
 
     /**
      * 来客吧开机数
      */
     @Schema(description = "来客吧开机数")
-    private BigDecimal teamLkbNum;
+    private Integer teamLkbNum;
 
 
 

+ 7 - 5
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/kxsapp/CampController.java

@@ -89,11 +89,7 @@ public class CampController {
 
     /**
      *
-     1.统计方式:个人及散下团队开通广电卡、来客吧、pos商户
-     2.广电卡统计:激活成功+1
-     3.pos商户统计:激活成功+1
-     4.来客吧商户统计: 商户任意通道待签约+1
-     * 异步执行
+     *  大小盟主开通统计到训练营
      */
     @Inner
     @GetMapping("/poweronQuantityStatistics")
@@ -102,6 +98,12 @@ public class CampController {
         kxsCampService.poweronQuantityStatistics();
 
     }
+    @Inner
+    @PostMapping("/campOpenNumStat")
+    public void campOpenNumStat(@RequestBody CampOpenNumStatDTO param)  {
+
+        kxsCampService.campOpenNumStat(param);
+    }
 
     /**
      * 百城千团-获取列表

+ 1 - 2
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/mapper/KxsCampMapper.java

@@ -41,9 +41,8 @@ public interface KxsCampMapper extends BaseMapper<KxsCamp> {
      * 查询用户正在参加的训练营
      *
      * @param userIds PID
-     * @param now  现在
      * @return {@link KxsCampUser}
      */
-    KxsCampUser selectUsersCamp(@Param("userIds") String[] userIds, LocalDateTime now);
+    KxsCamp selectUsersCamp(@Param("userIds") String[] userIds);
 }
 

+ 8 - 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.CampOpenNumStatDTO;
 import com.kxs.system.api.dto.kxsapp.camp.PrizePoolDTO;
 import com.kxs.system.api.model.KxsCamp;
 import com.kxs.system.api.vo.admin.CampUserExcelVO;
@@ -89,5 +90,12 @@ public interface KxsCampService extends IService<KxsCamp> {
      * @return {@link R}
      */
     R changeStatus(KxsCamp param);
+
+    /**
+     * 训练营开机数量统计
+     *
+     * @param param 参数
+     */
+    void campOpenNumStat(CampOpenNumStatDTO param);
 }
 

+ 93 - 94
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/KxsCampServiceImpl.java

@@ -20,6 +20,7 @@ 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.system.api.dto.kxsapp.camp.CampOpenNumStatDTO;
 import com.kxs.system.api.dto.kxsapp.camp.PrizePoolDTO;
 import com.kxs.system.api.feign.RemoteOldService;
 import com.kxs.system.api.model.KxsCamp;
@@ -185,8 +186,6 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
     @Transactional(rollbackFor = Exception.class)
     public void prizePoolIsRefreshed(PrizePoolDTO param) {
 
-        //查询正在进行中的活动
-        LocalDateTime now = LocalDateTime.now();
         //兑换券下单
         if (param.getProductId() == 10 || param.getProductId() == 11) {
 
@@ -223,63 +222,94 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
             String[] pidPaths = user.getPidPath().split(StrPool.COMMA);
             //翻转上级从最近的开始查询
             Arrays.sort(pidPaths, Collections.reverseOrder());
-            KxsCampUser campUser = baseMapper.selectUsersCamp(pidPaths, now);
-            if (campUser != null) {
+            kxsCamp = baseMapper.selectUsersCamp(pidPaths);
+            if (kxsCamp != null) {
                 //给训练营加金额
-                KxsCamp camp = baseMapper.selectById(campUser.getCampId());
-                camp.setBonusPool(NumberUtil.add(camp.getBonusPool(), amount));
-                camp.setOrderNum(camp.getOrderNum() + number.intValue());
-                baseMapper.updateById(camp);
+                kxsCamp.setBonusPool(NumberUtil.add(kxsCamp.getBonusPool(), amount));
+                kxsCamp.setOrderNum(kxsCamp.getOrderNum() + number.intValue());
+                baseMapper.updateById(kxsCamp);
 
                 //给创客团队加金额
-                campUser.setTeamOrderPool(NumberUtil.add(campUser.getTeamOrderPool(), amount));
-                campUser.setTeamOrderNum(campUser.getTeamOrderNum() + number.intValue());
-                kxsCampUserService.updateById(campUser);
-                log.info("用户{}的上级{}参加训练营{},订单ID{},奖金池{},订单数{}", param.getUserId(), campUser.getUserId(), camp.getId(), param.getId(), camp.getBonusPool(), camp.getOrderNum());
+                KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
+                        .eq(KxsCampUser::getCampId, kxsCamp.getId())
+                        .eq(KxsCampUser::getUserId, param.getUserId()));
+                //给创客团队加金额
+                kxsCampUser.setTeamOrderPool(NumberUtil.add(kxsCampUser.getTeamOrderPool(), amount));
+                kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + number.intValue());
+                kxsCampUserService.updateById(kxsCampUser);
+                log.info("用户{}的上级{}参加训练营{},订单ID{},奖金池{},订单数{}", param.getUserId(), kxsCampUser.getUserId(), kxsCamp.getId(), param.getId(), kxsCamp.getBonusPool(), kxsCamp.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
+    @Async
+    @Transactional(rollbackFor = Exception.class)
+    public void campOpenNumStat(CampOpenNumStatDTO param) {
+
+        //绑定时间
+        LocalDateTime bindTime = LocalDateTimeUtil.parse(param.getBindTime(), DatePattern.UTC_SIMPLE_PATTERN);
+        //查询当前用户参加的训练营
+        KxsCamp kxsCamp = baseMapper.selectUserCamp(param.getUserId().intValue());
+        if (kxsCamp != null) {
+            //判断绑定时间
+            if (!LocalDateTimeUtil.isIn(bindTime, kxsCamp.getStartTime(), kxsCamp.getEndTime(), false, false)) {
+                return;
+            }
+            //给训练营加金额
+            kxsCamp.setOpenNum(kxsCamp.getOpenNum() + (param.getActType() == 4 ? 2 : 1));
+            baseMapper.updateById(kxsCamp);
+
+            //给创客团队加金额
+            KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
+                    .eq(KxsCampUser::getCampId, kxsCamp.getId())
+                    .eq(KxsCampUser::getUserId, param.getUserId()));
+
+            switch (param.getActType()){
+                case 1 -> kxsCampUser.setTeamPosNum(kxsCampUser.getTeamPosNum() + 1);
+                case 2 -> kxsCampUser.setTeamGdNum(kxsCampUser.getTeamGdNum() + 1);
+                case 3 -> kxsCampUser.setTeamLkbNum(kxsCampUser.getTeamLkbNum() + 1);
+                case 4 -> kxsCampUser.setTeamLkbNum(kxsCampUser.getTeamLkbNum() + 2);
+            }
+            kxsCampUser.setTeamOpenNum(kxsCampUser.getTeamPosNum() + kxsCampUser.getTeamGdNum() + kxsCampUser.getTeamLkbNum());
+            kxsCampUserService.updateById(kxsCampUser);
+            log.info("用户{}参加训练营{},开机数+1", param.getUserId(), kxsCamp.getId());
+            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());
+        kxsCamp = baseMapper.selectUsersCamp(pidPaths);
+        if (kxsCamp != null) {
+            //判断绑定时间
+            if (!LocalDateTimeUtil.isIn(bindTime, kxsCamp.getStartTime(), kxsCamp.getEndTime(), false, false)) {
+                return;
+            }
+            kxsCamp.setOpenNum(kxsCamp.getOpenNum() + (param.getActType() == 4 ? 2 : 1));
+            baseMapper.updateById(kxsCamp);
+
+            //给创客团队加金额
+            KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
+                    .eq(KxsCampUser::getCampId, kxsCamp.getId())
+                    .eq(KxsCampUser::getUserId, param.getUserId()));
+            //给创客团队加金额
+            switch (param.getActType()){
+                case 1 -> kxsCampUser.setTeamPosNum(kxsCampUser.getTeamPosNum() + 1);
+                case 2 -> kxsCampUser.setTeamGdNum(kxsCampUser.getTeamGdNum() + 1);
+                case 3 -> kxsCampUser.setTeamLkbNum(kxsCampUser.getTeamLkbNum() + 1);
+                case 4 -> kxsCampUser.setTeamLkbNum(kxsCampUser.getTeamLkbNum() + 2);
+            }
+            kxsCampUser.setTeamOpenNum(kxsCampUser.getTeamPosNum() + kxsCampUser.getTeamGdNum() + kxsCampUser.getTeamLkbNum());
+            kxsCampUserService.updateById(kxsCampUser);
+            log.info("用户{}的上级{}参加训练营{},开机数+1", param.getUserId(), kxsCampUser.getUserId(), kxsCamp.getId());
+        }
     }
 
     @Override
@@ -297,7 +327,7 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
         //查询正在进行中的活动
         LocalDateTime now = LocalDateTime.now();
         //定时任务执行中时,查询当前正在进行的活动,由于定时任务执行时间偏差,当前时间减1一分钟判断
-        List<KxsCamp> list = baseMapper.selectList(Wrappers.<KxsCamp>lambdaQuery().le(KxsCamp::getStartTime, now).ge(KxsCamp::getEndTime, now.minusMinutes(1)));
+        List<KxsCamp> list = baseMapper.selectList(Wrappers.<KxsCamp>lambdaQuery().eq(KxsCamp::getStatus, CampStatusEnum.STATUS_NORMAL.getType()));
         //查询活动参与的创客
         for (KxsCamp kxsCamp : list) {
 
@@ -330,7 +360,9 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
                     //刷新参与创客的团队累计
                     KxsCampUser kxsCampUser = campUsersMap.get(leader.getUserId());
                     kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
-                    log.info("参与者{}自己下单盟主,进入到{}奖金池", leader.getUserId(), kxsCamp.getTitle());
+                    kxsCampUserService.update(Wrappers.<KxsCampUser>lambdaUpdate().eq(KxsCampUser::getId, kxsCampUser.getId()).set(KxsCampUser::getTeamLeaderNum, kxsCampUser.getTeamLeaderNum()));
+                    this.update(Wrappers.<KxsCamp>lambdaUpdate().eq(KxsCamp::getId, kxsCamp.getId()).set(KxsCamp::getOrderNum, kxsCamp.getOrderNum() + 1));
+                    log.info("参与者{}自己下单盟主,进入到{}订单统计", leader.getUserId(), kxsCamp.getTitle());
                     continue;
                 }
                 //查询此盟主的上级
@@ -343,50 +375,15 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
                 //通过用户的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);
-                    }
+                    kxsCampUserService.update(Wrappers.<KxsCampUser>lambdaUpdate().eq(KxsCampUser::getId, kxsCampUser.getId()).set(KxsCampUser::getTeamLeaderNum, kxsCampUser.getTeamLeaderNum()));
+                    this.update(Wrappers.<KxsCamp>lambdaUpdate().eq(KxsCamp::getId, kxsCamp.getId()).set(KxsCamp::getOrderNum, kxsCamp.getOrderNum() + 1));
+                    log.info("创客{}的上级{}参与训练营,进入到{}订单统计", leader.getUserId(), userId, kxsCamp.getTitle());
                 }
             }
 
-
-            //刷新参与创客的统计
-            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());
-
         }
 
     }
@@ -403,7 +400,7 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
         if(Objects.equals(camp.getStatus(), CampStatusEnum.STATUS_END.getType())){
             return R.failed("已结束的训练营无法再次开启");
         }
-        if(Objects.equals(camp.getStatus(), CampStatusEnum.STATUS_NORMAL.getType())){
+        if(Objects.equals(camp.getStatus(), param.getStatus())){
             return R.failed("训练营已开启");
         }
 
@@ -422,6 +419,8 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
     }
 
 
+
+
 //    private <T> void statusChange(T campT, LocalDateTime now) {
 //        if (campT instanceof KxsCamp camp) {
 //            if (camp.getEndTime().isBefore(now)) {

+ 5 - 5
kxs-system/kxs-system-biz/src/main/resources/mapper/KxsCampMapper.xml

@@ -41,19 +41,19 @@
 
 
     <select id="selectUserCamp" resultType="com.kxs.system.api.model.KxsCamp">
-        SELECT a.id, a.status, a.camp_num, a.camp_type, a.pic_url, a.title, bonus_pool, open_num, order_num
+        SELECT a.id, a.status, a.camp_num, a.camp_type, a.pic_url, a.title, a.bonus_pool, a.open_num, a.order_num
         from kxs_camp a
         left join kxs_camp_user b on a.id = b.camp_id
         <where>
             and a.del_flag = 0
             and b.user_id =  #{userId}
-            and b.status =  1
+            and a.status =  1
         </where>
         limit 1
     </select>
     
-    <select id="selectUsersCamp" resultType="com.kxs.system.api.model.KxsCampUser">
-        SELECT b.id, b.camp_id, b.user_id, b.team_order_num, b.team_order_pool, b.team_leader_pool, b.team_open_num, b.team_leader_num
+    <select id="selectUsersCamp" resultType="com.kxs.system.api.model.KxsCamp">
+        SELECT a.id, a.status, a.camp_num, a.camp_type, a.pic_url, a.title, a.bonus_pool, a.open_num, a.order_num
         from kxs_camp a
         left join kxs_camp_user b on a.id = b.camp_id
         <where>
@@ -62,7 +62,7 @@
             <foreach collection="pids" item="userId" index="index" open="(" close=")" separator=",">
                 #{userId}
             </foreach>
-            and b.status =  1
+            and a.status =  1
         </where>
         ORDER BY FIELD(b.user_id, <foreach collection="userIds" item="userId" separator=","> #{userId} </foreach>)
         limit 1