Selaa lähdekoodia

add 分销循环配置

zoujiajian 3 vuotta sitten
vanhempi
sitoutus
178c34383a

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserDistributeCycleConfigMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserDistributeCycleConfig;
+
+/*
+ *项目名: netflix
+ *文件名: UserDistributeCycleConfigMapper
+ *创建者: JavaZou
+ *创建时间:2023/5/12 15:59
+ */
+public interface UserDistributeCycleConfigMapper extends BaseMapper<UserDistributeCycleConfig> {
+}

+ 24 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeCycleConfig.java

@@ -0,0 +1,24 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: UserDistributeCycleConfig
+ *创建者: JavaZou
+ *创建时间:2023/5/12 15:58
+ */
+@Getter
+@Setter
+public class UserDistributeCycleConfig extends BaseEntity{
+	/**
+	 * 平台
+	 */
+	private Long goodsId;
+
+	/**
+	 * 是否打开
+	 */
+	private Boolean isOpen;
+}

+ 30 - 0
netflix-dao/src/main/java/com/cyksj/model/views/DistributeGoodsCycleConfigView.java

@@ -0,0 +1,30 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: DistributeGoodsCycleConfigView
+ *创建者: JavaZou
+ *创建时间:2023/5/12 16:11
+ */
+@Getter
+@Setter
+@SearchBean(tables = "goods_don gd left join user_distribute_cycle_config uc on gd.id = uc.goods_id",
+		where = "gd.type = 1 and gd.deleted is true")
+public class DistributeGoodsCycleConfigView {
+	@DbField("uc.id")
+	private Long id;
+
+	@DbField("gd.id")
+	private Long goodsId;
+
+	@DbField("gd.title")
+	private String title;
+
+	@DbField("uc.is_open")
+	private Boolean isOpen;
+}

+ 22 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -203,6 +203,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserBindDetailMapper userBindDetailMapper;
 
+	private final UserDistributeCycleConfigMapper distributeCycleConfigMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -538,6 +540,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				updateCarParkAndSendMsg(goodsDon, sku, order);
 			}
 			if (order.getMoney().compareTo(BigDecimal.ZERO) > 0 && order.getIsDistribute()) {
+				//分销积分
 				TASK_POOL.execute(() -> distributeWaitingSendPointsRecord(order));
 			}
 			if (goodsDon.getType() == 1) {
@@ -881,6 +884,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				updateCarParkAndSendMsg(goodsDon, sku, orderDon);
 			}
 			if (orderDon.getMoney().compareTo(BigDecimal.ZERO) > 0 && orderDon.getIsDistribute()) {
+				//分销积分
 				TASK_POOL.execute(() -> distributeWaitingSendPointsRecord(orderDon));
 			}
 			if (goodsDon.getType() == 1) {
@@ -1664,6 +1668,24 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 							.eq(UserPlatDistributeRate::getDistributeId, userDistribute.getId())
 							.last("limit 1"));
 					if (userPlatDistributeRate != null) {
+						//是否打开默认分销首单循环
+						UserDistributeCycleConfig userDistributeCycleConfig = distributeCycleConfigMapper.selectOne(Wrappers.lambdaQuery(UserDistributeCycleConfig.class)
+								.eq(UserDistributeCycleConfig::getGoodsId, goodsDon.getId())
+								.eq(UserDistributeCycleConfig::getIsOpen, true)
+								.select(UserDistributeCycleConfig::getId).last("limit 1"));
+						if (userDistributeCycleConfig != null) {
+							//是否享受过该用户首单
+							DistributeWaitingSendPoints exists = distributeWaitingSendPointsMapper.selectOne(Wrappers.lambdaQuery(DistributeWaitingSendPoints.class)
+									.in(DistributeWaitingSendPoints::getSendStatus, List.of(DistributeWaitingSendPoints.Status.waiting, DistributeWaitingSendPoints.Status.success))
+									.eq(DistributeWaitingSendPoints::getSharedId, userDistribute.getUserId())
+									.eq(DistributeWaitingSendPoints::getUserId, order.getUserId())
+									.select(DistributeWaitingSendPoints::getId)
+									.last("limit 1"));
+							if (exists != null) {
+								log.info("分销用户id:{}已享受用户id:{}首单提成", userDistribute.getUserId(), order.getUserId());
+								return;
+							}
+						}
 						rate = userPlatDistributeRate.getRate();
 						if (goodsDon != null && goodsDon.getType() == 2) {
 							GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());

+ 31 - 7
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -14,10 +14,7 @@ import com.cyksj.common.util.StringUtil;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.BusinessType;
 import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.GoodsDonMapper;
-import com.cyksj.mapper.GoodsDonSkuMapper;
-import com.cyksj.mapper.OrderDonMapper;
-import com.cyksj.mapper.UserMapper;
+import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.mapper.manage.distribute.*;
 import com.cyksj.model.entity.*;
@@ -88,9 +85,7 @@ public class DistributeController {
 
 	private final BusinessDistributeDefaultRateConfigMapper businessDefaultRateConfigMapper;
 
-	private final UserDistributeSharedMapper userDistributeSharedMapper;
-
-	private final OrderDonMapper orderDonMapper;
+	private final UserDistributeCycleConfigMapper distributeCycleConfigMapper;
 
 	/**
 	 * 添加固定推广者
@@ -669,4 +664,33 @@ public class DistributeController {
 		UserDistributeViews userDistributeViews = userDistributeMapper.getApplyDetailByUserId(userId);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(userDistributeViews);
 	}
+
+	/**
+	 * 循环分销设置列表
+	 */
+	@GetMapping("/get/cycle/list")
+	public Result<List<DistributeGoodsCycleConfigView>> getDistributeGoodsCycleConfigView() {
+		List<DistributeGoodsCycleConfigView> list = beanSearcher.searchAll(DistributeGoodsCycleConfigView.class, MapUtils.builder().build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(list);
+	}
+
+	/**
+	 * 修改平台循环分销状态
+	 */
+	@PutMapping("/put/cycle/status")
+	public Result<String> putDistributeGoodsCycleConfigStatus(@RequestBody UserDistributeCycleConfig config) {
+		if (config.getId() == null && config.getGoodsId() == null) {
+			throw BusinessRuntimeException.getInstance("参数错误");
+		}
+		if (config.getId() != null) {
+			UserDistributeCycleConfig cycleConfig = distributeCycleConfigMapper.selectById(config.getId());
+			if (cycleConfig != null) {
+				cycleConfig.setIsOpen(!cycleConfig.getIsOpen());
+				distributeCycleConfigMapper.updateById(cycleConfig);
+			}
+		}else {
+			distributeCycleConfigMapper.insert(config);
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }