mac před 2 roky
rodič
revize
776902145c

+ 14 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/feign/RemoteKxsProductService.java

@@ -7,12 +7,15 @@ import com.kxs.product.api.model.KxsBrand;
 import com.kxs.product.api.model.KxsMachine;
 import com.kxs.product.api.model.KxsMachineCirculationLog;
 import com.kxs.product.api.model.KxsTicket;
+import com.kxs.product.api.vo.kxsapp.shop.ShopOrderGoodsUserVO;
 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;
 
+import java.util.List;
+
 /**
  * @author Lxq
  * @date 2021/6/22
@@ -106,4 +109,15 @@ public interface RemoteKxsProductService {
 	 */
 	@GetExchange("/product-job/recycleMachineSchedule")
 	void recycleMachineSchedule(@RequestParam("param") String param, @RequestHeader(SecurityConstants.FROM) String from);
+
+	/**
+	 * 查询指定时间区间的电签大机券订单
+	 *
+	 * @param from  调用标志
+	 * @param startTime 开始时间
+	 * @param endTime 结束时间
+	 */
+	@GetExchange("/shop/getDateBetweenOrders")
+	R<List<ShopOrderGoodsUserVO>> getDateBetweenOrders(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @RequestHeader(SecurityConstants.FROM) String from);
+
 }

+ 37 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderGoodsUserVO.java

@@ -0,0 +1,37 @@
+package com.kxs.product.api.vo.kxsapp.shop;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 查询指定时间区间的电签大机券订单
+ *
+ * @author 没秃顶的码农
+ * @date 2024-04-09
+ */
+@Data
+@Schema(description = "查询指定时间区间的电签大机券订单")
+public class ShopOrderGoodsUserVO {
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+    /**
+     * 用户ID
+     */
+    @Schema(description = "用户ID")
+    private Integer userId;
+
+    /**
+     * 订单金额
+     */
+    @Schema(description = "订单金额")
+    private BigDecimal totalPrice;
+}

+ 14 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/kxsapp/ShopController.java

@@ -1,5 +1,6 @@
 package com.kxs.product.biz.controller.kxsapp;
 
+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.product.api.model.KxsShopOrder;
@@ -91,6 +92,19 @@ public class ShopController {
         return R.ok(kxsShopOrderService.orderUnCount());
     }
 
+    /**
+     * 查询指定时间区间的电签大机券订单
+     *
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     * @return 订单详情
+     */
+    @GetMapping("/getDateBetweenOrders")
+    public R getDateBetweenOrders(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
+
+        return R.ok(kxsShopOrderService.getDateBetweenOrders(startTime, endTime));
+    }
+
     /**
      * 订单列表
      *

+ 10 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsShopOrderMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kxs.product.api.model.KxsShopOrder;
+import com.kxs.product.api.vo.kxsapp.shop.ShopOrderGoodsUserVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderListVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -28,5 +29,14 @@ public interface KxsShopOrderMapper extends BaseMapper<KxsShopOrder> {
      * @return {@link List}<{@link ShopOrderListVO}>
      */
     List<ShopOrderListVO> getByPage(@Param("start") long start, @Param("size") long size, @Param("query") KxsShopOrder param);
+
+    /**
+     * 内部调用 查询指定时间区间的电签大机券订单
+     *
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return {@link List}<{@link ShopOrderGoodsUserVO}>
+     */
+    List<ShopOrderGoodsUserVO> getDateBetweenOrders(@Param("startTime") String startTime, @Param("endTime") String endTime);
 }
 

+ 11 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsShopOrderService.java

@@ -8,8 +8,11 @@ import com.kxs.product.api.model.KxsShopOrder;
 import com.kxs.product.api.dto.kxsapp.shop.GoodsSubmitDTO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderCountVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderDetailVO;
+import com.kxs.product.api.vo.kxsapp.shop.ShopOrderGoodsUserVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderListVO;
 
+import java.util.List;
+
 /**
  * 商城订单表(KxsShopOrder)表服务接口
  *
@@ -74,5 +77,13 @@ public interface KxsShopOrderService extends IService<KxsShopOrder> {
      */
     ShopOrderCountVO orderUnCount();
 
+    /**
+     * 查询指定时间区间的电签大机券订单
+     *
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return {@link List}<{@link ShopOrderGoodsUserVO}>
+     */
+    List<ShopOrderGoodsUserVO> getDateBetweenOrders(String startTime, String endTime);
 }
 

+ 8 - 4
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopOrderServiceImpl.java

@@ -11,10 +11,7 @@ import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.product.api.model.KxsShopGoods;
 import com.kxs.product.api.model.KxsShopOrderInfo;
 import com.kxs.product.api.dto.kxsapp.shop.GoodsSubmitDTO;
-import com.kxs.product.api.vo.kxsapp.shop.ShopOrderCountVO;
-import com.kxs.product.api.vo.kxsapp.shop.ShopOrderInfoListVO;
-import com.kxs.product.api.vo.kxsapp.shop.ShopOrderDetailVO;
-import com.kxs.product.api.vo.kxsapp.shop.ShopOrderListVO;
+import com.kxs.product.api.vo.kxsapp.shop.*;
 import com.kxs.product.biz.constant.enums.KxsShopEnum;
 import com.kxs.product.biz.constant.enums.ProductErrorTypeEnum;
 import com.kxs.product.biz.mapper.KxsShopGoodsMapper;
@@ -187,6 +184,13 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
         return ShopOrderCountVO.builder().needPayCount(noPayCount).needSendCount(noSendCount).build();
     }
 
+    @Override
+    public List<ShopOrderGoodsUserVO> getDateBetweenOrders(String startTime, String endTime) {
+
+        return baseMapper.getDateBetweenOrders(startTime, endTime);
+
+    }
+
     /**
      * 余额支付
      *

+ 13 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsShopOrderMapper.xml

@@ -69,5 +69,18 @@
 
         </where>
     </select>
+    <select id="getDateBetweenOrders" resultType="com.kxs.product.api.vo.kxsapp.shop.ShopOrderGoodsUserVO">
+        SELECT a.id, a.total_price, a.user_id
+        FROM shop_order a
+        LEFT JOIN shop_order_info b ON a.id = b.order_id
+        <where>
+            and a.del_flag = 0
+            and b.goods_id in (10, 11)
+            and a.status in(1,2,3)
+            and a.return_status = 0
+            and a.create_time between #{startDate} and #{endDate}
+        </where>
+
+    </select>
 
 </mapper>

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

@@ -0,0 +1,24 @@
+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.service.annotation.PostExchange;
+
+/**
+ * 定时任务调用系统模块的服务
+ *
+ * @author 没秃顶的码农
+ * @date 2023/11/12
+ */
+public interface RemoteSysJobService {
+
+	/**
+	 * 个人及散下团队购买电签券/大POS券1组,1组计入60元,1组按实收金额5%计算,
+	 * 个人及散下团队购买电签券/大POS券计1组
+	 */
+	@PostExchange("/system-job/taskSubmitOrderAddCamp")
+	void taskSubmitOrderAddCamp(@RequestHeader(SecurityConstants.FROM) String from);
+
+}

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

@@ -110,6 +110,14 @@ public class KxsCampUser extends Model<KxsCampUser> implements Serializable {
 
 
 
+    /**
+     * 团队奖金池
+     */
+    @Schema(description = "团队奖金池")
+    private BigDecimal teamBonusPool;
+
+
+
 
 }
 

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

@@ -38,6 +38,14 @@
             <groupId>com.kxs</groupId>
             <artifactId>kxs-system-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.kxs</groupId>
+            <artifactId>kxs-product-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.kxs</groupId>
+            <artifactId>kxs-user-api</artifactId>
+        </dependency>
         <!--core 工具类-->
         <dependency>
             <groupId>com.kxs</groupId>

+ 32 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/constant/enums/CampStatusEnum.java

@@ -0,0 +1,32 @@
+package com.kxs.system.biz.constant.enums;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+
+/**
+ * 训练营状态枚举
+ *
+ * @author 没秃顶的码农
+ * @date 2024-01-02
+ */
+@Getter
+@RequiredArgsConstructor
+public enum CampStatusEnum {
+
+
+    STATUS_CLOSE(0, "未开始"),
+    STATUS_NORMAL(1, "进行中"),
+    STATUS_END(2, "已结束");
+
+
+    /**
+     * 类型
+     */
+    private final Integer type;
+
+    /**
+     * 描述
+     */
+    private final String description;
+}

+ 107 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/task/KxsSystemTask.java

@@ -0,0 +1,107 @@
+package com.kxs.system.biz.task;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.constant.enums.ErrorTypeEnum;
+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.security.annotation.Inner;
+import com.kxs.product.api.feign.RemoteKxsProductService;
+import com.kxs.product.api.vo.kxsapp.shop.ShopOrderGoodsUserVO;
+import com.kxs.system.api.model.KxsCamp;
+import com.kxs.system.api.model.KxsCampUser;
+import com.kxs.system.biz.constant.enums.CampStatusEnum;
+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.KxsUser;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+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 java.math.BigDecimal;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * KXS 系统模块异步任务
+ *
+ * @author 没秃顶的码农
+ * @date 2024-04-09
+ */
+@RequiredArgsConstructor
+@Slf4j
+@RestController
+@RequestMapping("system-job")
+public class KxsSystemTask {
+
+    private final KxsCampService kxsCampService;
+
+    private final KxsCampUserService kxsCampUserService;
+
+    private final RemoteKxsProductService remoteKxsProductService;
+
+    private final RemoteKxsUserService remoteKxsUserService;
+
+
+    /**
+     *
+     奖金池计算方式
+         1.个人及散下团队购买电签券/大POS券1组,1组计入60元,1组按实收金额5%计算;
+         2.分期大盟主,按具体情况实收金额5%计入;
+     团队开机统计方式
+         1.统计方式:个人及散下团队开通广电卡、来客吧、pos商户
+         2.广电卡统计:激活成功+1
+         3.pos商户统计:激活成功+1
+         4.来客吧商户统计: 商户任意通道待签约+1
+     团队下单统计方式
+        1.个人及散下团队购买电签券/大POS券计1组
+     * 一个小时执行一次
+     * 异步执行
+     */
+    @Inner
+    @GetMapping("/taskSubmitOrderAddCamp")
+    public void taskSubmitOrderAddCamp(@RequestParam("param") String para)  {
+        //查询正在进行中的活动
+        List<KxsCamp> list = kxsCampService.list(Wrappers.<KxsCamp>lambdaQuery().eq(KxsCamp::getStatus, CampStatusEnum.STATUS_NORMAL.getType()));
+        //查询活动参与的创客
+        for (KxsCamp kxsCamp : list) {
+            //初始化奖金池
+            BigDecimal totalBonusPool = BigDecimal.ZERO;
+            int openNum;
+            int orderNum;
+            List<KxsCampUser> campUsers = kxsCampUserService.list(Wrappers.<KxsCampUser>lambdaQuery().eq(KxsCampUser::getCampId, kxsCamp.getId()));
+            //转换为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) {
+                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 pidPath = user.getPidPath();
+
+            }
+
+
+
+        }
+
+    }
+}