Browse Source

Merge branch 'sp_ep_distribute'

# Conflicts:
#	netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
#	netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsDistribtueDataController.java
zoujiajian 2 years ago
parent
commit
b00225fca2
16 changed files with 231 additions and 33 deletions
  1. 1 1
      netflix-dao/src/main/java/com/cyksj/mapper/OrderDonMapper.java
  2. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/equipment/UserDistributeEquipmentMapper.java
  3. 5 0
      netflix-dao/src/main/java/com/cyksj/model/entity/DistributeWaitingSendPoints.java
  4. 3 0
      netflix-dao/src/main/java/com/cyksj/model/entity/GoodsDon.java
  5. 35 0
      netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeEquipment.java
  6. 6 0
      netflix-dao/src/main/java/com/cyksj/model/entity/YhShopDistributeWaitingSendPoints.java
  7. 6 4
      netflix-dao/src/main/java/com/cyksj/model/request/UserDistributeReq.java
  8. 3 0
      netflix-dao/src/main/java/com/cyksj/model/views/DistributeOrdersDetailView.java
  9. 7 1
      netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRateDetailView.java
  10. 1 1
      netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeViews.java
  11. 6 0
      netflix-dao/src/main/resources/mapper/OrderDonMapper.xml
  12. 46 0
      netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java
  13. 4 2
      netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java
  14. 79 7
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  15. 2 2
      netflix-web/src/main/java/com/cyksj/web/controller/manage/channel/CmsChannelPopularizeController.java
  16. 14 15
      netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/OrderDonMapper.java

@@ -39,7 +39,7 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 
 	Integer selectCouponCodeUserNum(@Param("dsPopularizeId") Long dsPopularizeId, @Param("noOrderAllStatus") List<String> noOrderAllStatus);
 
-	ChannelPopularizeView countPopularizeOrderDetail(@Param("popularizeId") Long popularizeId, @Param("startTime") String startTime, @Param("endTime") String endTime);
+	ChannelPopularizeView countPopularizeOrderDetail(@Param("popularizeId") Long popularizeId, @Param("goodsId") Long goodsId, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
 	BigDecimal selectThisMonthAppleOneMoney(@Param("skuIds") Set<Long> skuIds, @Param("startDate") String startDate, @Param("endDate") String endDate);
 

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/equipment/UserDistributeEquipmentMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.distribute.equipment;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserDistributeEquipment;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: UserDistributeEquipmentMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/3/18 16:30
+ */
+public interface UserDistributeEquipmentMapper extends BaseMapper<UserDistributeEquipment> {
+}

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/DistributeWaitingSendPoints.java

@@ -62,6 +62,11 @@ public class DistributeWaitingSendPoints extends BaseEntity{
 	 */
 	private Integer rate;
 
+	/**
+	 * 是否特殊设备分销订单
+	 */
+	private Boolean isSpecialEp;
+
 	@Getter
 	public enum Status{
 		close("分销订单关闭,积分奖励不分发"),

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/GoodsDon.java

@@ -74,6 +74,9 @@ public class GoodsDon extends BaseEntity {
      */
     private String remark;
 
+    /**
+     * 1.虚拟,2.实物,3.潮玩,4.租赁
+     */
     private Integer type;
 
     /**

+ 35 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeEquipment.java

@@ -0,0 +1,35 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: UserDistributeEquipment
+ * 创建者: JavaZou
+ * 创建时间:2024/3/18 16:27
+ */
+@Getter
+@Setter
+public class UserDistributeEquipment extends BaseEntity{
+	private Long DistributeId;
+
+	private Long userId;
+
+	/**
+	 * 设备提成
+	 */
+	private BigDecimal ep;
+
+	/**
+	 * Apple TV 提成
+	 */
+	private BigDecimal apTv;
+
+	/**
+	 * 套餐提成
+	 */
+	private BigDecimal combo;
+}

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/YhShopDistributeWaitingSendPoints.java

@@ -49,6 +49,12 @@ public class YhShopDistributeWaitingSendPoints extends BaseEntity {
 
 	private Status sendStatus;
 
+	/**
+	 * 是否是特殊设备分销订单
+	 * false
+	 */
+	private Boolean isSpecialEp;
+
 	public enum Status{
 		close("店铺分销订单关闭,积分奖励不分发"),
 		success("积分发送成功"),

+ 6 - 4
netflix-dao/src/main/java/com/cyksj/model/request/UserDistributeReq.java

@@ -1,9 +1,6 @@
 package com.cyksj.model.request;
 
-import com.cyksj.model.entity.CouponDistributePopularize;
-import com.cyksj.model.entity.UserDistributeTargetAlert;
-import com.cyksj.model.entity.UserPlatDistributeRate;
-import com.cyksj.model.entity.UserPlatSkuDistributeRate;
+import com.cyksj.model.entity.*;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -56,4 +53,9 @@ public class UserDistributeReq {
 	 * 渠道目标额
 	 */
 	private List<UserDistributeTargetAlert> targets;
+
+	/**
+	 * 设备分销
+	 */
+	private UserDistributeEquipment epRate;
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/DistributeOrdersDetailView.java

@@ -32,6 +32,9 @@ public class DistributeOrdersDetailView {
 	@JsonIgnore
 	private Long sharedId;
 
+	@DbField("gd.id")
+	private Long goodsId;
+
 	@DbField("gd.title")
 	private String platform;
 

+ 7 - 1
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRateDetailView.java

@@ -1,6 +1,6 @@
 package com.cyksj.model.views;
 
-import com.cyksj.model.entity.CouponDistributePopularize;
+import com.cyksj.model.entity.UserDistributeEquipment;
 import com.cyksj.model.entity.UserDistributeTargetAlert;
 import lombok.Getter;
 import lombok.Setter;
@@ -29,4 +29,10 @@ public class UserDistributeRateDetailView {
 	 * 渠道目标额
 	 */
 	private List<UserDistributeTargetAlert> targets;
+
+
+	/**
+	 * 设备分销
+	 */
+	private UserDistributeEquipment epRate;
 }

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeViews.java

@@ -19,7 +19,7 @@ import java.util.Date;
 @Setter
 @SearchBean(tables = "user_distribute ud left join user_distribute_shared us on ud.user_id = us.shared_id" +
 		" left join order_don od on od.user_id = us.user_id and od.is_fixed_distribute = 1 and od.status not in ('noPayment', 'close') :time:",
-		where = "ud.deleted is true",
+		where = "ud.deleted is true :condition:",
 		groupBy = "ud.id,ud.user_id,ud.business_id,ud.remark,ud.created_time,ud.update_time,ud.business_bind_time,ud.type")
 public class UserDistributeViews {
 

+ 6 - 0
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -142,6 +142,9 @@
         <if test="endTime != null and endTime != ''">
             and created_time &lt; #{endTime}
         </if>
+        <if test="goodsId != null">
+            and goods_id = #{goodsId}
+        </if>
         and status not in ('close', 'noPayment')) s1
         ,
         (select count(*) as refundCount, ifnull(sum(money),0) as refundMoney
@@ -153,6 +156,9 @@
         <if test="endTime != null and endTime != ''">
             and created_time &lt; #{endTime}
         </if>
+        <if test="goodsId != null">
+            and goods_id = #{goodsId}
+        </if>
         and status = 'refund')
         s2
     </select>

+ 46 - 0
netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java

@@ -14,6 +14,7 @@ import com.cyksj.mapper.UserDistributeSharedRelateUnbindMapper;
 import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
 import com.cyksj.mapper.manage.coupon.CouponMapper;
 import com.cyksj.mapper.manage.distribute.*;
+import com.cyksj.mapper.manage.distribute.equipment.UserDistributeEquipmentMapper;
 import com.cyksj.mapper.market.task.TaskTypeMapper;
 import com.cyksj.mapper.shop.YhShopMapper;
 import com.cyksj.mapper.shop.YhShopUserPlatDistributeRateMapper;
@@ -74,6 +75,9 @@ public class DistributeServiceImpl implements DistributeService {
 	private final UserDistributeTargetAlertMapper targetAlertMapper;
 
 	private final UserDistributeSharedRelateUnbindMapper userDistributeSharedRelateUnbindMapper;
+
+	private final UserDistributeEquipmentMapper userDistributeEquipmentMapper;
+
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public void insertDistribute(UserDistributeReq userDistributeReq) {
@@ -149,6 +153,9 @@ public class DistributeServiceImpl implements DistributeService {
 		//渠道目标额配置
 		List<UserDistributeTargetAlert> targets = userDistributeReq.getTargets();
 		handlerDistributeTargetAlert(userDistribute.getId(), targets);
+
+		//设备分销
+		handlerSpecialEquipmentRate(userDistributeReq.getEpRate(), userDistribute);
 	}
 
 	@Override
@@ -281,6 +288,9 @@ public class DistributeServiceImpl implements DistributeService {
 
 		//渠道目标额配置
 		handlerDistributeTargetAlert(userDistribute.getId(), userDistributeReq.getTargets());
+
+		//设备分销
+		handlerSpecialEquipmentRate(userDistributeReq.getEpRate(), userDistribute);
 	}
 
 	@Override
@@ -489,4 +499,40 @@ public class DistributeServiceImpl implements DistributeService {
 			targetAlertMapper.deleteBatchIds(delDbTargetAlert);
 		}
 	}
+
+	/**
+	 * 设备分销
+	 */
+	private void handlerSpecialEquipmentRate(UserDistributeEquipment epRate, UserDistribute userDistribute) {
+		BigDecimal zero = BigDecimal.ZERO;
+		Long userId = userDistribute.getUserId();
+		Long distributeId = userDistribute.getId();
+		if (epRate != null) {
+			epRate.setUserId(userId);
+			epRate.setDistributeId(distributeId);
+			BigDecimal ep = epRate.getEp();
+			BigDecimal apTv = epRate.getApTv();
+			BigDecimal combo = epRate.getCombo();
+			if (ep == null || apTv == null || combo == null) {
+				throw BusinessRuntimeException.getInstance("请填写设备分销必填项..");
+			}
+			if (ep.compareTo(zero) <= 0 || apTv.compareTo(zero) <= 0 || combo.compareTo(zero) <= 0 || combo.compareTo(BigDecimal.valueOf(100)) >= 0) {
+				throw BusinessRuntimeException.getInstance("请输入正确的设备分销设置");
+			}
+			if (epRate.getId() == null) {
+				try {
+					userDistributeEquipmentMapper.insert(epRate);
+				} catch (DuplicateKeyException e) {
+				}
+			} else {
+				userDistributeEquipmentMapper.updateById(epRate);
+			}
+			return;
+		}
+		if (userDistributeEquipmentMapper.selectCount(Wrappers.lambdaQuery(UserDistributeEquipment.class)
+				.eq(UserDistributeEquipment::getDistributeId, distributeId)) > 0) {
+			userDistributeEquipmentMapper.delete(Wrappers.lambdaQuery(UserDistributeEquipment.class)
+					.eq(UserDistributeEquipment::getDistributeId, distributeId));
+		}
+	}
 }

+ 4 - 2
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -857,7 +857,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 DistributeWaitingSendPoints.Status sendStatus = distributeWaitingSendPoints.getSendStatus();
                 BigDecimal points = distributeWaitingSendPoints.getPoints();
                 if (sendStatus == DistributeWaitingSendPoints.Status.waiting) {
-                    if (refundMoney.compareTo(money) == 0) {
+                    //实物设备退款就清0
+                    if (refundMoney.compareTo(money) == 0 || orderDon.getGoodsId() == 15) {
                         //待发送状态 全额退款
                         distributeWaitingSendPoints.setSendStatus(DistributeWaitingSendPoints.Status.close);
                         distributeWaitingSendPoints.setRefundPoints(points);
@@ -885,7 +886,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 } else if (sendStatus == DistributeWaitingSendPoints.Status.success) {
                     //已发送的提成 部分退款 全额退款 需要扣除用户积分
                     //扣除固定推广者积分
-                    if (refundMoney.compareTo(money) == 0) {
+                    //实物设备退款就清0
+                    if (refundMoney.compareTo(money) == 0 || orderDon.getGoodsId() == 15) {
                         userBenefitsService.deductDistributePoints(orderDon.getId(), distributeWaitingSendPoints.getSharedId(), points);
                         distributeWaitingSendPoints.setRefundPoints(points);
                         distributeWaitingSendPoints.setPoints(BigDecimal.ZERO);

+ 79 - 7
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -47,6 +47,7 @@ import com.cyksj.mapper.manage.coupon.CouponMapper;
 import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
 import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.mapper.manage.distribute.*;
+import com.cyksj.mapper.manage.distribute.equipment.UserDistributeEquipmentMapper;
 import com.cyksj.mapper.market.task.TaskTypeMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
@@ -164,6 +165,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserDistributeMapper userDistributeMapper;
 
+	private final UserDistributeEquipmentMapper userDistributeEquipmentMapper;
+
 	private final UserPlatDistributeRateMapper userPlatDistributeRateMapper;
 
 	private final BusinessDistributeDefaultSkuRateConfigMapper businessDistributeDefaultSkuRateConfigMapper;
@@ -198,8 +201,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final GroupRelationFrontService groupRelationFrontService;
 
-	private final TransferAccountsRecordMapper transferAccountsRecordMapper;
-
 	private final GroupRelationClearService groupRelationClearService;
 
 	private final UserRenewChangeTicketRecordMapper userRenewChangeTicketRecordMapper;
@@ -1470,6 +1471,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		Long businessId = null;
 		//普通分销
 		GoodsDon goodsDon = goodsDonMapper.selectById(order.getGoodsId());
+		GoodsDonSku goodsDonSku = null;
 		if (goodsDon == null || !goodsDon.getIsDistribute()) {
 			log.info("分销订单orderId:{}对应平台goodsId:{}不存在或已不参与分成比例", order.getId(), order.getGoodsId());
 			return;
@@ -1497,7 +1499,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 					rate = goodsDon.getRate();
 					//实物分销比例
 					if (goodsDon.getType() == 2) {
-						GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
+						goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
 						if (goodsDonSku != null) {
 							//不包含套餐权益
 							if (!goodsDonSku.getIsBenefits()) {
@@ -1551,7 +1553,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 						rate = userPlatDistributeRate.getRate();
 						secondRate = userPlatDistributeRate.getSecondRate();
 						if (goodsDon.getType() == 2) {
-							GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
+							goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
 							if (goodsDonSku != null) {
 								//不包含套餐权益
 								if (!goodsDonSku.getIsBenefits()) {
@@ -1568,8 +1570,20 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 					points = returnPoints;
 				}
 				if (userDistribute != null) {
-					//处理渠道规则分销
-					points = handlerDistributeRule(order, distributeWaitingSendPoints, userDistribute.getId(), distributePointsExchangeMoney, points);
+					UserDistributeEquipment userDistributeEquipment = null;
+					if (goodsDon.getType() == 2) {
+						userDistributeEquipment = userDistributeEquipmentMapper.selectOne(Wrappers.lambdaQuery(UserDistributeEquipment.class)
+								.eq(UserDistributeEquipment::getUserId, userDistribute.getUserId()).last("limit 1"));
+					}
+					//是否特殊渠道设备分销用户
+					if (userDistributeEquipment != null) {
+						BigDecimal takeMoney = handlerEquipmentDistribute(order, goodsDonSku, userDistributeEquipment);
+						points = takeMoney.multiply(BigDecimal.valueOf(distributePointsExchangeMoney.getPoints())).divide(distributePointsExchangeMoney.getMoney(), 2, RoundingMode.HALF_DOWN);
+						distributeWaitingSendPoints.setIsSpecialEp(true);
+					} else {
+						//处理渠道规则分销
+						points = handlerDistributeRule(order, distributeWaitingSendPoints, userDistribute.getId(), distributePointsExchangeMoney, points);
+					}
 				}
 
 				distributeWaitingSendPoints.setPoints(points);
@@ -2612,6 +2626,14 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				orderDon.setIsDistribute(true);
 				UserDistribute userDistribute = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeShared.getSharedId()));
 				if (userDistribute != null) {
+					orderDon.setCpsPopularizeId(userDistributeShared.getDsPopularizeId());
+					//是否特殊渠道设备分销用户
+					Integer selectCount = userDistributeEquipmentMapper.selectCount(Wrappers.lambdaQuery(UserDistributeEquipment.class)
+							.eq(UserDistributeEquipment::getUserId, userDistribute.getUserId()));
+					if (selectCount > 0) {
+						orderDon.setIsFixedDistribute(true);
+						return;
+					}
 					//直接去除
 					if (!userDistributeShared.getIsBind()) {
 						UserDistributeSharedRelateUnbind userDistributeSharedRelateUnbind = userDistributeSharedRelateUnbindMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSharedRelateUnbind.class)
@@ -2660,7 +2682,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 							orderDon.setIsFixedDistribute(false);
 						}
 					}
-					orderDon.setCpsPopularizeId(userDistributeShared.getDsPopularizeId());
 				}
 			}
 		}
@@ -2832,4 +2853,55 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		}
 		return null;
 	}
+
+	/**
+	 * 特殊设备分销
+	 */
+	private BigDecimal handlerEquipmentDistribute(OrderDon orderDon, GoodsDonSku goodsDonSku, UserDistributeEquipment userDistributeEquipment) {
+		BigDecimal takeMoney = BigDecimal.ZERO;
+		try {
+			//设备提成 含路由器
+			if (goodsDonSku.getSpecJson().contains("路由")) {
+				takeMoney = takeMoney.add(userDistributeEquipment.getEp());
+			}
+			BigDecimal couponMoney = orderDon.getCouponMoney();
+			BigDecimal balance = orderDon.getBalance();
+			List<Integer> specIdsList = Jsons.parseList(goodsDonSku.getSpecIds(), Integer.class);
+			//包含Apple TV
+			if (goodsDonSku.getSpecJson().contains("TV")) {
+				takeMoney = takeMoney.add(userDistributeEquipment.getApTv());
+			}
+			//包含套餐
+			if (userDistributeEquipment.getCombo() != null && userDistributeEquipment.getCombo().compareTo(BigDecimal.ZERO) > 0 && goodsDonSku.getSpecJson().contains("套餐")) {
+				GoodsDonSpec goodsDonSpec = goodsDonSpecMapper.selectOne(Wrappers.lambdaQuery(GoodsDonSpec.class)
+						.eq(GoodsDonSpec::getGoodsId, orderDon.getGoodsId()).last("limit 1"));
+				List<ReqGoodsSkuSpec> specs = Jsons.parseList(goodsDonSpec.getSpecsJson(), ReqGoodsSkuSpec.class);
+				for (ReqGoodsSkuSpec e : specs) {
+					if (e.getKey().contains("套餐")) {
+						List<ReqGoodsSkuSpec.Node> values = e.getValues();
+						for (ReqGoodsSkuSpec.Node node : values) {
+							if (specIdsList.contains(node.getId())) {
+								BigDecimal price = node.getPrice();
+								takeMoney = takeMoney.add(price.multiply(userDistributeEquipment.getCombo()).divide(BigDecimal.valueOf(100)));
+								break;
+							}
+						}
+					}
+				}
+			}
+			//使用优惠分摊一半
+			if (couponMoney != null) {
+				takeMoney = takeMoney.subtract(couponMoney.divide(BigDecimal.valueOf(2), 0, RoundingMode.DOWN));
+			}
+			if (balance != null) {
+				takeMoney = takeMoney.subtract(balance.divide(BigDecimal.valueOf(2), 0, RoundingMode.DOWN));
+			}
+		} catch (Exception e) {
+		}
+		//防止超过订单金额
+		if (takeMoney.compareTo(orderDon.getMoney()) > 0) {
+			takeMoney = BigDecimal.ZERO;
+		}
+		return takeMoney;
+	}
 }

+ 2 - 2
netflix-web/src/main/java/com/cyksj/web/controller/manage/channel/CmsChannelPopularizeController.java

@@ -56,7 +56,7 @@ public class CmsChannelPopularizeController {
 
     @GetMapping
     @SaCheckPermission("promotion:view")
-    public Result<SearchResult<ChannelPopularizeView>> get(String startTime, String endTime) {
+    public Result<SearchResult<ChannelPopularizeView>> get(String startTime, String endTime, Long goodsId) {
         long adminId = StpUtil.getLoginIdAsLong();
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
         Boolean isRootRole = cmsUserService.isRootRole(adminId);
@@ -84,7 +84,7 @@ public class CmsChannelPopularizeController {
                     .eq(OrderDon::getIsWebPay, true)
                     .notIn(OrderDon::getStatus, Constant.noOrderStatus));
             data.setNumOfOrderWebPay(numOfOrderWebPay);
-            ChannelPopularizeView channelPopularizeView = orderDonMapper.countPopularizeOrderDetail(data.getId(), startTime, endTime);
+            ChannelPopularizeView channelPopularizeView = orderDonMapper.countPopularizeOrderDetail(data.getId(), goodsId, startTime, endTime);
             data.setOrderCount(channelPopularizeView.getOrderCount());
             data.setOrderMoney(channelPopularizeView.getOrderMoney());
             data.setRefundCount(channelPopularizeView.getRefundCount());

+ 14 - 15
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -21,6 +21,7 @@ import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
 import com.cyksj.mapper.manage.distribute.*;
+import com.cyksj.mapper.manage.distribute.equipment.UserDistributeEquipmentMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.request.BusinessDistributeDefaultRateDetailReq;
 import com.cyksj.model.request.DistributeApplyMoneyReq;
@@ -119,6 +120,8 @@ public class DistributeController {
 
 	private final UserDistributeSharedWhiteMapper userDistributeSharedWhiteMapper;
 
+	private final UserDistributeEquipmentMapper userDistributeEquipmentMapper;
+
 	/**
 	 * 添加固定推广者
 	 */
@@ -156,6 +159,8 @@ public class DistributeController {
 			throw BusinessRuntimeException.getInstance("id不存在");
 		}
 		userDistributeMapper.deleteById(id);
+		userDistributeEquipmentMapper.delete(Wrappers.lambdaQuery(UserDistributeEquipment.class)
+				.eq(UserDistributeEquipment::getDistributeId, id));
 		return GatewayResponse.SUCCESS.newBuilder().toResult("删除成功");
 	}
 
@@ -195,6 +200,8 @@ public class DistributeController {
 		List<UserDistributeTargetAlert> targets = targetAlertMapper.selectList(Wrappers.lambdaQuery(UserDistributeTargetAlert.class)
 				.eq(UserDistributeTargetAlert::getDistributeId, id));
 		rateDetailView.setTargets(targets);
+		rateDetailView.setEpRate(userDistributeEquipmentMapper.selectOne(Wrappers.lambdaQuery(UserDistributeEquipment.class)
+				.eq(UserDistributeEquipment::getDistributeId, id).last("limit 1")));
 		return GatewayResponse.SUCCESS.newBuilder().toResult(rateDetailView);
 	}
 
@@ -215,7 +222,7 @@ public class DistributeController {
 				.orElse(new BrokenLineObjView());
 
 		if (brokenLineObjView != null) {
-			List<DistributePlatOrderDonBrokenLineView> views = beanSearcher.searchAll(DistributePlatOrderDonBrokenLineView.class, MapUtils.builder()
+			List<DistributePlatOrderDonBrokenLineView> views = beanSearcher.searchAll(DistributePlatOrderDonBrokenLineView.class, MapUtils.flatBuilder(request.getParameterMap())
 					.field(DistributePlatOrderDonBrokenLineView::getDate, first, end).op(Operator.Between)
 					.put("sid", String.format("where shared_id = %s", sharedId))
 					.orderBy(DistributePlatOrderDonBrokenLineView::getDate).asc()
@@ -230,7 +237,7 @@ public class DistributeController {
 	 * 固定推广者列表
 	 */
 	@GetMapping
-	public Result<SearchResult<UserDistributeViews>> distributeList(String nickname, String showId, String startTime, String endTime) {
+	public Result<SearchResult<UserDistributeViews>> distributeList(String nickname, String showId, String startTime, String endTime, Boolean isSpecialEp) {
 		long adminId = StpUtil.getLoginIdAsLong();
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 		//是否是商务人员
@@ -256,23 +263,15 @@ public class DistributeController {
 			//按时间筛选 固定推广人分销情况 倒序
 			builder.orderBy(UserDistributeViews::getDistributeOrdersMoney).desc();
 		}
+		if (isSpecialEp != null) {
+			//是否是特殊设备分销渠道商
+			String condition = String.format(" and %s (select 1 from user_distribute_equipment up where up.distribute_id = ud.id limit 1)", isSpecialEp ? "exists" : "not exists");
+			builder.put("condition", condition);
+		}
 		Map<Long, String> businessNameMap = new ConcurrentHashMap<>();
 		SearchResult<UserDistributeViews> search = beanSearcher.search(UserDistributeViews.class,
 				builder.build());
 		search.getDataList().forEach(view -> {
-//			Optional.ofNullable(cmsUserMapper.selectById(view.getBusinessId())).ifPresent(business -> view.setBusinessName(business.getNickname()));
-//			Optional.ofNullable(userMapper.selectById(view.getUserId())).ifPresent(user -> {
-//				view.setNickname(user.getNickname());
-//				view.setPoints(user.getPoints());
-//			});
-//			BigDecimal num = view.getPoints().divide(BigDecimal.valueOf(pointsMoneyRate.getPoints()), RoundingMode.DOWN);
-//			view.setAvailableMoney(pointsMoneyRate.getMoney().multiply(num));
-//			List<DistributeMoneyApply> moneyApplies = distributeMoneyApplyMapper.selectList(Wrappers.lambdaQuery(DistributeMoneyApply.class).eq(DistributeMoneyApply::getVerifyStatus, DistributeMoneyApply.Status.success).eq(DistributeMoneyApply::getUserId, view.getUserId()).select(DistributeMoneyApply::getMoney));
-//			Optional<BigDecimal> money = moneyApplies.stream().map(apply -> apply.getMoney()).reduce(BigDecimal::add);
-//			view.setGotMoney(money.isPresent() ? money.get() : BigDecimal.ZERO);
-//			Integer orders = view.getOrders();
-//			BigDecimal hasPayCount = userDistributeMapper.countHasPayBySharedId(view.getUserId(), Constant.noOrderAllStatus, startTime, endTime);
-//			view.setDistributeConsumerRate(orders == 0 ? BigDecimal.ZERO : hasPayCount.divide(BigDecimal.valueOf(view.getDistributeUserNum()), 2, RoundingMode.HALF_DOWN));
 			if (view.getDistributeOrdersMoney().compareTo(BigDecimal.ZERO) > 0) {
 				Optional.ofNullable(userDistributeMapper.selectSoldMaxGoods(view.getUserId())).ifPresent(title -> view.setGoodsTitle(title));
 			}