Bladeren bron

Merge branch 'func_11_14'

# Conflicts:
#	netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
zoujiajian 2 jaren geleden
bovenliggende
commit
155372a6ba
27 gewijzigde bestanden met toevoegingen van 554 en 89 verwijderingen
  1. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/BusinessDistributeDefaultSkuRateConfigMapper.java
  2. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/UserPlatSkuDistributeRateMapper.java
  3. 31 0
      netflix-dao/src/main/java/com/cyksj/model/entity/BusinessDistributeDefaultSkuRateConfig.java
  4. 10 0
      netflix-dao/src/main/java/com/cyksj/model/entity/CouponRecommend.java
  5. 5 0
      netflix-dao/src/main/java/com/cyksj/model/entity/GoodsDon.java
  6. 33 0
      netflix-dao/src/main/java/com/cyksj/model/entity/UserPlatSkuDistributeRate.java
  7. 2 0
      netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSpuInsert.java
  8. 3 0
      netflix-dao/src/main/java/com/cyksj/model/manage/views/GoodsDonViewer.java
  9. 22 0
      netflix-dao/src/main/java/com/cyksj/model/request/BusinessDistributeDefaultRateDetailReq.java
  10. 6 0
      netflix-dao/src/main/java/com/cyksj/model/request/UserDistributeReq.java
  11. 23 0
      netflix-dao/src/main/java/com/cyksj/model/views/BusinessDistributeRateDetailView.java
  12. 6 0
      netflix-dao/src/main/java/com/cyksj/model/views/BusinessDistributeRateView.java
  13. 45 0
      netflix-dao/src/main/java/com/cyksj/model/views/BusinessDistributeSkuRateView.java
  14. 6 0
      netflix-dao/src/main/java/com/cyksj/model/views/CouponRecommendView.java
  15. 20 0
      netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRateDetailView.java
  16. 10 8
      netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeView.java
  17. 44 0
      netflix-dao/src/main/java/com/cyksj/model/views/UserSkuDistributeView.java
  18. 2 0
      netflix-dao/src/main/resources/mapper/CouponRecommendMapper.xml
  19. 1 0
      netflix-service/src/main/java/com/cyksj/redis/RedisService.java
  20. 77 6
      netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java
  21. 3 2
      netflix-service/src/main/java/com/cyksj/service/mange/coupon/CouponCommonService.java
  22. 2 3
      netflix-service/src/main/java/com/cyksj/service/mange/coupon/impl/CouponCommonServiceImpl.java
  23. 56 7
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  24. 25 7
      netflix-web/src/main/java/com/cyksj/web/controller/manage/coupon/CouponController.java
  25. 86 50
      netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java
  26. 6 3
      netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/shop/CmsYhShopGoodsController.java
  27. 4 3
      netflix-web/src/main/java/com/cyksj/web/controller/user/DistributePopularizeController.java

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

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.distribute;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.BusinessDistributeDefaultSkuRateConfig;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: BusinessDistributeDefaultSkuRateConfigMapper
+ * 创建者: JavaZou
+ * 创建时间:2023/11/15 16:17
+ */
+public interface BusinessDistributeDefaultSkuRateConfigMapper extends BaseMapper<BusinessDistributeDefaultSkuRateConfig> {
+}

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

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.distribute;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserPlatSkuDistributeRate;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserPlatSkuDistributeRateMapper
+ * 创建者: JavaZou
+ * 创建时间:2023/11/14 13:40
+ */
+public interface UserPlatSkuDistributeRateMapper extends BaseMapper<UserPlatSkuDistributeRate> {
+}

+ 31 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/BusinessDistributeDefaultSkuRateConfig.java

@@ -0,0 +1,31 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: BusinessDistributeDefaultSkuRateConfig
+ * 创建者: JavaZou
+ * 创建时间:2023/11/15 16:16
+ */
+@Getter
+@Setter
+public class BusinessDistributeDefaultSkuRateConfig extends BaseEntity {
+	/**
+	 * 平台id
+	 */
+	private Long goodsId;
+
+	private Long skuId;
+
+	/**
+	 * 分销比例
+	 */
+	private Integer rate;
+
+	/**
+	 * 套餐分销比例
+	 */
+	private Integer secondRate;
+}

+ 10 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CouponRecommend.java

@@ -1,9 +1,13 @@
 package com.cyksj.model.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /*
  *项目名: netflix
  *文件名: CouponRecommend
@@ -20,6 +24,12 @@ public class CouponRecommend extends BaseEntity {
 	 */
 	private Boolean status;
 
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date upTime;
+
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date downTime;
+
 	@TableLogic(value = "1", delval = "0")
 	private Boolean deleted;
 }

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

@@ -193,6 +193,11 @@ public class GoodsDon extends BaseEntity {
      */
     private Boolean isDistribute;
 
+    /**
+     * 是否开启规格分销 默认未开启
+     */
+    private Boolean isSkuDistribute;
+
     @AllArgsConstructor
     @Getter
     public enum SpecialType {

+ 33 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserPlatSkuDistributeRate.java

@@ -0,0 +1,33 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserPlatSkuDistributeRate
+ * 创建者: JavaZou
+ * 创建时间:2023/11/14 13:39
+ */
+@Getter
+@Setter
+public class UserPlatSkuDistributeRate extends BaseEntity{
+	private Long goodsId;
+
+	private Long skuId;
+
+	/**
+	 * 固定用户分销id
+	 */
+	private Long distributeId;
+
+	/**
+	 * 分销比例
+	 */
+	private Integer rate = 0;
+
+	/**
+	 * 第二分销比例 不包含套餐
+	 */
+	private Integer secondRate;
+}

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSpuInsert.java

@@ -129,4 +129,6 @@ public class ReqGoodsSpuInsert {
     private List<Long> recommendGoodsList;
 
     private Boolean isDistribute;
+
+    private Boolean isSkuDistribute;
 }

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

@@ -170,6 +170,9 @@ public class GoodsDonViewer {
     @DbField("g.is_distribute")
     private Boolean isDistribute;
 
+    @DbField("g.is_sku_distribute")
+    private Boolean isSkuDistribute;
+
     @DbIgnore
     private List<Long> recommendGoodsList;
 }

+ 22 - 0
netflix-dao/src/main/java/com/cyksj/model/request/BusinessDistributeDefaultRateDetailReq.java

@@ -0,0 +1,22 @@
+package com.cyksj.model.request;
+
+import com.cyksj.model.entity.BusinessDistributeDefaultRateConfig;
+import com.cyksj.model.entity.BusinessDistributeDefaultSkuRateConfig;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: BusinessDistributeDefaultRateDetailReq
+ * 创建者: JavaZou
+ * 创建时间:2023/11/15 16:15
+ */
+@Getter
+@Setter
+public class BusinessDistributeDefaultRateDetailReq {
+	private List<BusinessDistributeDefaultRateConfig> rates;
+
+	private List<BusinessDistributeDefaultSkuRateConfig> skuRates;
+}

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

@@ -1,6 +1,7 @@
 package com.cyksj.model.request;
 
 import com.cyksj.model.entity.UserPlatDistributeRate;
+import com.cyksj.model.entity.UserPlatSkuDistributeRate;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -33,4 +34,9 @@ public class UserDistributeReq {
 	 * 平台分销比例
 	 */
 	private List<UserPlatDistributeRate> rates;
+
+	/**
+	 * 平台规格分销比例
+	 */
+	private List<UserPlatSkuDistributeRate> skuRates;
 }

+ 23 - 0
netflix-dao/src/main/java/com/cyksj/model/views/BusinessDistributeRateDetailView.java

@@ -0,0 +1,23 @@
+package com.cyksj.model.views;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: BusinessDistributeRateDetailView
+ * 创建者: JavaZou
+ * 创建时间:2023/11/14 15:05
+ */
+@Getter
+@Setter
+public class BusinessDistributeRateDetailView {
+
+	private List<BusinessDistributeRateView> rates;
+
+
+	private List<BusinessDistributeSkuRateView> skuRates;
+
+}

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/views/BusinessDistributeRateView.java

@@ -29,6 +29,12 @@ public class BusinessDistributeRateView {
 	@DbField("g.type")
 	private Integer type;
 
+	/**
+	 * 默认选择一个分类
+	 */
+	@DbField("select gc.name from goods_don_category_relate gcr inner join goods_don_category gc on gc.id = gcr.category where gcr.goods_id = g.id order by gc.id limit 1")
+	private String categoryName;
+
 	@DbField("bc.rate")
 	private Integer rate = 0;
 

+ 45 - 0
netflix-dao/src/main/java/com/cyksj/model/views/BusinessDistributeSkuRateView.java

@@ -0,0 +1,45 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: BusinessDistributeSkuRateView
+ * 创建者: JavaZou
+ * 创建时间:2023/11/14 15:06
+ */
+@Getter
+@Setter
+@SearchBean(tables = "goods_don g left join goods_don_sku sku on sku.goods_id = g.id" +
+		" left join business_distribute_default_sku_rate_config bdc on bdc.sku_id = sku.id",
+		where = "g.deleted is true and g.status is true and g.is_distribute is true and g.is_sku_distribute is true and sku.status is true",
+		orderBy = "g.id")
+public class BusinessDistributeSkuRateView {
+
+	@DbField("bdc.id")
+	private Long id;
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("g.type")
+	private Integer type;
+
+	@DbField("sku.id")
+	private Long skuId;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("bdc.rate")
+	private Integer rate;
+
+	@DbField("bdc.second_rate")
+	private Integer secondRate;
+}

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CouponRecommendView.java

@@ -142,6 +142,12 @@ public class CouponRecommendView {
 	@DbField("cr.status")
 	private Boolean status;
 
+	@DbField("cr.up_time")
+	private Date upTime;
+
+	@DbField("cr.down_time")
+	private Date downTime;
+
 	/**
 	 * 推荐时间
 	 */

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRateDetailView.java

@@ -0,0 +1,20 @@
+package com.cyksj.model.views;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeRateDetailView
+ * 创建者: JavaZou
+ * 创建时间:2023/11/14 13:58
+ */
+@Getter
+@Setter
+public class UserDistributeRateDetailView {
+	private List<UserDistributeView> rates;
+
+	private List<UserSkuDistributeView> skuRates;
+}

+ 10 - 8
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeView.java

@@ -2,7 +2,6 @@ package com.cyksj.model.views;
 
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.SearchBean;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -14,28 +13,31 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@SearchBean(tables = "user_plat_distribute_rate up left join goods_don gd on gd.id = up.goods_id",
+@SearchBean(tables = "goods_don gd left join user_plat_distribute_rate up on gd.id = up.goods_id :dis_id:" +
+		" left join business_distribute_default_rate_config bdc on bdc.goods_id = gd.id",
 		where = "gd.deleted is true and gd.status is true and gd.is_distribute is true")
 public class UserDistributeView {
 	@DbField("up.id")
 	private Long id;
 
-	@DbField("up.distribute_id")
-	@JsonIgnore
-	private Long distribute_id;
-
 	@DbField("gd.id")
 	private Long goodsId;
 
 	@DbField("gd.title")
 	private String title;
 
-	@DbField("up.rate")
+	@DbField("ifnull(up.rate,bdc.rate)")
 	private Integer rate;
 
 	@DbField("gd.type")
 	private Integer type;
 
-	@DbField("up.second_rate")
+	/**
+	 * 默认选择一个分类
+	 */
+	@DbField("select gc.name from goods_don_category_relate gcr inner join goods_don_category gc on gc.id = gcr.category where gcr.goods_id = gd.id order by gc.id limit 1")
+	private String categoryName;
+
+	@DbField("ifnull(up.second_rate,bdc.second_rate)")
 	private Integer secondRate;
 }

+ 44 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserSkuDistributeView.java

@@ -0,0 +1,44 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserSkuDistributeView
+ * 创建者: JavaZou
+ * 创建时间:2023/11/14 13:59
+ */
+@Getter
+@Setter
+@SearchBean(tables = "goods_don gd left join goods_don_sku sku on sku.goods_id = gd.id" +
+		" left join user_plat_sku_distribute_rate up on sku.id = up.sku_id :dis_id:" +
+		" left join business_distribute_default_sku_rate_config bdc on bdc.sku_id = sku.id",
+		where = "gd.deleted is true and gd.status is true and gd.is_distribute is true and gd.is_sku_distribute is true and sku.status is true")
+public class UserSkuDistributeView {
+	@DbField("up.id")
+	private Long id;
+
+	@DbField("gd.id")
+	private Long goodsId;
+
+	@DbField("gd.title")
+	private String title;
+
+	@DbField("sku.id")
+	private Long skuId;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("ifnull(up.rate,bdc.rate)")
+	private Integer rate;
+
+	@DbField("gd.type")
+	private Integer type;
+
+	@DbField("ifnull(up.second_rate,bdc.second_rate)")
+	private Integer secondRate;
+}

+ 2 - 0
netflix-dao/src/main/resources/mapper/CouponRecommendMapper.xml

@@ -35,6 +35,7 @@
         from coupon_recommend cr left join coupon c on c.id = cr.coupon_id
         left join coupon_user cu on cu.coupon_id = c.id and cu.user_id = #{userId}
         where cr.deleted is true and c.deleted is true and cr.status = 1
+        and (cr.up_time is null or cr.up_time &lt;= now()) and (cr.down_time is null or cr.down_time > now())
         <if test="couponId != null">
             and c.id = #{couponId}
         </if>
@@ -51,6 +52,7 @@
         from coupon_recommend cr left join coupon c on c.id = cr.coupon_id
         left join coupon_user cu on cu.coupon_id = c.id and cu.user_id = #{userId}
         where cr.deleted is true and c.deleted is true and cr.status is true and cu.coupon_id is null
+        and (cr.up_time is null or cr.up_time &lt;= now()) and (cr.down_time is null or cr.down_time > now())
         <if test='!isNewUser'>
             and c.scope !='newUser'
         </if>)s where flag is true

+ 1 - 0
netflix-service/src/main/java/com/cyksj/redis/RedisService.java

@@ -659,6 +659,7 @@ public class RedisService {
         CORP_FOLLOW_ACTIVE_CODE_KEY("corp_follow_active_code_key:%s:%s", "活动客服活码key", 60 * 61),
         CORP_FOLLOW_ACTIVE_CODE_CLEAN_KEY("corp_follow_active_code_key:%s", "活动客服活码清除key", -1),
         REAL_GOODS_BENEFITS_KEY("real_goods_benefits_key:%s", "实物权益key", 60 * 5l),
+        USER_DISTRIBUTE_ADD_KEY("user_distribute_add_key:%s", "分销用户新增key", 30l),
         ;
 
         private String name;

+ 77 - 6
netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java

@@ -1,5 +1,6 @@
 package com.cyksj.service.distribute.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
@@ -8,10 +9,7 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.mapper.GoodsDonMapper;
 import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
 import com.cyksj.mapper.manage.coupon.CouponMapper;
-import com.cyksj.mapper.manage.distribute.UserBusinessDefaultRateConfigMapper;
-import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
-import com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper;
-import com.cyksj.mapper.manage.distribute.UserPlatDistributeRateMapper;
+import com.cyksj.mapper.manage.distribute.*;
 import com.cyksj.mapper.market.task.TaskTypeMapper;
 import com.cyksj.mapper.shop.YhShopMapper;
 import com.cyksj.mapper.shop.YhShopUserPlatDistributeRateMapper;
@@ -26,7 +24,10 @@ import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+import java.util.Map;
 import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
 
 /*
  *项目名: netflix
@@ -62,10 +63,12 @@ public class DistributeServiceImpl implements DistributeService {
 
 	private final YhShopMapper yhShopMapper;
 
+	private final UserPlatSkuDistributeRateMapper userPlatSkuDistributeRateMapper;
+
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public void insertDistribute(UserDistributeReq userDistributeReq) {
-		if (!redisService.setNx(String.valueOf(userDistributeReq.getUserId()), userDistributeReq.getUserId(), 30l)) {
+		if (!redisService.setNx(RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId()), userDistributeReq.getUserId(), 60l)) {
 			throw BusinessRuntimeException.getInstance("请勿重复点击");
 		}
 		UserDistribute exists = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeReq.getUserId()).eq(UserDistribute::getDeleted, true).last("limit 1"));
@@ -82,6 +85,12 @@ public class DistributeServiceImpl implements DistributeService {
 		}
 		userDistributeMapper.insert(userDistribute);
 		for (UserPlatDistributeRate rate : userDistributeReq.getRates()) {
+			if (rate.getRate() == null) {
+				rate.setRate(0);
+			}
+			if (rate.getSecondRate() == null) {
+				rate.setSecondRate(0);
+			}
 			if (rate.getRate() < 0 || rate.getRate() > 100) {
 				throw new BusinessRuntimeException("比例错误");
 			}
@@ -96,7 +105,35 @@ public class DistributeServiceImpl implements DistributeService {
 			rate.setDistributeId(userDistribute.getId());
 			userPlatDistributeRateMapper.insert(rate);
 		}
-		redisService.del(String.valueOf(userDistributeReq.getUserId()));
+		List<UserPlatSkuDistributeRate> skuRates = userDistributeReq.getSkuRates();
+		if (CollUtil.isNotEmpty(skuRates)) {
+			Map<Long, GoodsDon> map = new ConcurrentHashMap<>();
+			for (UserPlatSkuDistributeRate skuRate : skuRates) {
+				if (skuRate.getRate() == null) {
+					skuRate.setRate(0);
+				}
+				if (skuRate.getSecondRate() == null) {
+					skuRate.setSecondRate(0);
+				}
+				if (skuRate.getRate() < 0 || skuRate.getRate() > 100) {
+					throw new BusinessRuntimeException("比例错误");
+				}
+				GoodsDon goodsDon = map.get(skuRate.getGoodsId());
+				if (goodsDon == null) {
+					goodsDon = goodsDonMapper.selectById(skuRate.getGoodsId());
+					map.putIfAbsent(skuRate.getSkuId(), goodsDon);
+				}
+				try {
+					skuRate.setDistributeId(userDistribute.getId());
+					if (businessId != null && goodsDon.getType() == 1) {
+						checkDistributorAndBusinessRate(skuRate.getRate(), skuRate.getGoodsId(), goodsDon.getTitle());
+					}
+					userPlatSkuDistributeRateMapper.insert(skuRate);
+				} catch (DuplicateKeyException e) {
+				}
+			}
+		}
+		redisService.del(RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId()));
 	}
 
 	@Override
@@ -189,6 +226,40 @@ public class DistributeServiceImpl implements DistributeService {
 				}
 			}
 		}
+
+		//特殊平台 按规格分销比例
+		List<UserPlatSkuDistributeRate> skuRates = userDistributeReq.getSkuRates();
+		if (CollUtil.isNotEmpty(skuRates)) {
+			Map<Long, GoodsDon> map = new ConcurrentHashMap<>();
+			for (UserPlatSkuDistributeRate skuRate : skuRates) {
+				if (skuRate.getRate() == null) {
+					skuRate.setRate(0);
+				}
+				if (skuRate.getSecondRate() == null) {
+					skuRate.setSecondRate(0);
+				}
+				if (skuRate.getRate() < 0 || skuRate.getRate() > 100) {
+					throw new BusinessRuntimeException("比例错误");
+				}
+				GoodsDon goodsDon = map.get(skuRate.getGoodsId());
+				if (goodsDon == null) {
+					goodsDon = goodsDonMapper.selectById(skuRate.getGoodsId());
+					map.putIfAbsent(skuRate.getSkuId(), goodsDon);
+				}
+				if (businessId != null && goodsDon.getType() == 1) {
+					checkDistributorAndBusinessRate(skuRate.getRate(), goodsDon.getId(), goodsDon.getTitle());
+				}
+				if (skuRate.getId() != null) {
+					userPlatSkuDistributeRateMapper.updateById(skuRate);
+					continue;
+				}
+				try {
+					skuRate.setDistributeId(userDistribute.getId());
+					userPlatSkuDistributeRateMapper.insert(skuRate);
+				} catch (DuplicateKeyException e) {
+				}
+			}
+		}
 	}
 
 	@Override

+ 3 - 2
netflix-service/src/main/java/com/cyksj/service/mange/coupon/CouponCommonService.java

@@ -2,6 +2,7 @@ package com.cyksj.service.mange.coupon;
 
 import com.cyksj.model.entity.Coupon;
 import com.cyksj.model.entity.CouponDistributePopularize;
+import com.cyksj.model.entity.CouponRecommend;
 import com.cyksj.model.entity.CouponUser;
 import com.cyksj.model.request.CouponActiveReq;
 import com.cyksj.model.request.CouponDistributeReq;
@@ -37,9 +38,9 @@ public interface CouponCommonService {
 	/**
 	 * 设置为推荐优惠券
 	 *
-	 * @param couponId
+	 * @param couponRecommend
 	 */
-	void setHotCoupon(Long couponId);
+	void setHotCoupon(CouponRecommend couponRecommend);
 
 	/**
 	 * 关联推广者

+ 2 - 3
netflix-service/src/main/java/com/cyksj/service/mange/coupon/impl/CouponCommonServiceImpl.java

@@ -90,7 +90,8 @@ public class CouponCommonServiceImpl implements CouponCommonService {
 	}
 
 	@Override
-	public void setHotCoupon(Long couponId) {
+	public void setHotCoupon(CouponRecommend couponRecommend) {
+		Long couponId = couponRecommend.getCouponId();
 		Coupon coupon = couponMapper.selectById(couponId);
 		if (coupon == null || !coupon.getDeleted()) {
 			throw BusinessRuntimeException.getInstance("该优惠券不存在");
@@ -101,8 +102,6 @@ public class CouponCommonServiceImpl implements CouponCommonService {
 		if (!coupon.getHotStatus()) {
 			coupon.setHotStatus(!coupon.getHotStatus());
 		}
-		CouponRecommend couponRecommend = new CouponRecommend();
-		couponRecommend.setCouponId(coupon.getId());
 		couponRecommendMapper.insert(couponRecommend);
 		couponMapper.updateById(coupon);
 	}

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

@@ -165,6 +165,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserPlatDistributeRateMapper userPlatDistributeRateMapper;
 
+	private final BusinessDistributeDefaultSkuRateConfigMapper businessDistributeDefaultSkuRateConfigMapper;
+
+	private final BusinessDistributeDefaultRateConfigMapper businessDistributeDefaultRateConfigMapper;
+
 	private final CouponMapper couponMapper;
 
 	private final CouponFontService couponFontService;
@@ -247,6 +251,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final CouponCommonService couponCommonService;
 
+	private final UserPlatSkuDistributeRateMapper userPlatSkuDistributeRateMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -1365,6 +1371,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	 * 分销待发积分记录
 	 */
 	public void distributeWaitingSendPointsRecord(OrderDon order) {
+		log.info("订单id:{}产生分销积分开始--->", order.getId());
 		DistributeWaitingSendPoints distributeWaitingSendPoints = new DistributeWaitingSendPoints();
 		distributeWaitingSendPoints.setOrderId(order.getId());
 		distributeWaitingSendPoints.setUserId(order.getUserId());
@@ -1412,19 +1419,54 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 					returnMoney = orderMoney.multiply(BigDecimal.valueOf(rate)).divide(BigDecimal.valueOf(100));
 				} else {
 					businessId = userDistribute.getBusinessId();
-					//固定推广分销
-					UserPlatDistributeRate userPlatDistributeRate = userPlatDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatDistributeRate.class)
-							.eq(UserPlatDistributeRate::getGoodsId, order.getGoodsId())
-							.eq(UserPlatDistributeRate::getDistributeId, userDistribute.getId())
-							.last("limit 1"));
+					UserPlatDistributeRate userPlatDistributeRate = null;
+					Integer secondRate = 0;
+					//该商品是否开启了 规格分销
+					if (goodsDon.getIsSkuDistribute()) {
+						//规格分销 比例
+						UserPlatSkuDistributeRate userPlatSkuDistributeRate = userPlatSkuDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class)
+								.eq(UserPlatSkuDistributeRate::getDistributeId, userDistribute.getId())
+								.eq(UserPlatSkuDistributeRate::getSkuId, order.getSkuId()).last("limit 1"));
+						if (userPlatSkuDistributeRate != null) {
+							userPlatDistributeRate = getUserPlatDistributeRate(userPlatSkuDistributeRate.getRate(), userPlatSkuDistributeRate.getSecondRate());
+						}
+					}
+					if (userPlatDistributeRate == null) {
+						//默认规格分销比例
+						if (goodsDon.getIsSkuDistribute()) {
+							BusinessDistributeDefaultSkuRateConfig businessDistributeDefaultSkuRateConfig = businessDistributeDefaultSkuRateConfigMapper.selectOne(Wrappers.lambdaQuery(BusinessDistributeDefaultSkuRateConfig.class)
+									.eq(BusinessDistributeDefaultSkuRateConfig::getSkuId, order.getSkuId())
+									.last("limit 1"));
+							if (businessDistributeDefaultSkuRateConfig != null) {
+								userPlatDistributeRate = getUserPlatDistributeRate(businessDistributeDefaultSkuRateConfig.getRate(), businessDistributeDefaultSkuRateConfig.getSecondRate());
+							}
+						}
+					}
+					if (userPlatDistributeRate == null) {
+						//固定推广分销 平台比例
+						userPlatDistributeRate = userPlatDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatDistributeRate.class)
+								.eq(UserPlatDistributeRate::getGoodsId, order.getGoodsId())
+								.eq(UserPlatDistributeRate::getDistributeId, userDistribute.getId())
+								.last("limit 1"));
+					}
+					//未配置平台分销比例 寻找默认比例
+					if (userPlatDistributeRate == null) {
+						BusinessDistributeDefaultRateConfig defaultRateConfig = businessDistributeDefaultRateConfigMapper.selectOne(Wrappers.lambdaQuery(BusinessDistributeDefaultRateConfig.class)
+								.eq(BusinessDistributeDefaultRateConfig::getGoodsId, order.getGoodsId())
+								.last("limit 1"));
+						if (defaultRateConfig != null) {
+							userPlatDistributeRate = getUserPlatDistributeRate(defaultRateConfig.getRate(), defaultRateConfig.getSecondRate());
+						}
+					}
 					if (userPlatDistributeRate != null) {
 						rate = userPlatDistributeRate.getRate();
-						if (goodsDon != null && goodsDon.getType() == 2) {
+						secondRate = userPlatDistributeRate.getSecondRate();
+						if (goodsDon.getType() == 2) {
 							GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
 							if (goodsDonSku != null) {
 								//不包含套餐权益
 								if (!goodsDonSku.getIsBenefits()) {
-									rate = userPlatDistributeRate.getSecondRate();
+									rate = secondRate;
 								}
 							}
 							distributeWaitingSendPoints.setIsDelivery(false);
@@ -2542,4 +2584,11 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		}
 		return user;
 	}
+
+	public UserPlatDistributeRate getUserPlatDistributeRate(Integer rate, Integer secondRate) {
+		UserPlatDistributeRate userPlatDistributeRate = new UserPlatDistributeRate();
+		userPlatDistributeRate.setRate(rate);
+		userPlatDistributeRate.setSecondRate(secondRate);
+		return userPlatDistributeRate;
+	}
 }

+ 25 - 7
netflix-web/src/main/java/com/cyksj/web/controller/manage/coupon/CouponController.java

@@ -1,5 +1,6 @@
 package com.cyksj.web.controller.manage.coupon;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -128,8 +129,9 @@ public class CouponController {
 	 */
 	@PutMapping("/set/hot/{couponId}")
 	@Log(module = "优惠券/推荐优惠券", businessType = BusinessType.POST)
-	public Result<String> setHotCoupon(@PathVariable @Min(value = 1) Long couponId) {
-		couponCommonService.setHotCoupon(couponId);
+	public Result<String> setHotCoupon(@PathVariable @Min(value = 1) Long couponId, @RequestBody CouponRecommend recommend) {
+		recommend.setCouponId(couponId);
+		couponCommonService.setHotCoupon(recommend);
 		return GatewayResponse.SUCCESS.newBuilder().toResult("推荐优惠券成功");
 	}
 
@@ -276,6 +278,14 @@ public class CouponController {
 
 			List<GoodsDonSkuView> skuViewList = couponSkuMapper.selectGoodsSkuViewList(data.getCouponId());
 			data.setSkuViewList(skuViewList);
+			//重置优惠券推荐状态
+			if (data.getStatus() && data.getDownTime() != null && DateTime.now().isAfter(data.getDownTime())) {
+				data.setStatus(false);
+				couponRecommendMapper.update(null, Wrappers.lambdaUpdate(CouponRecommend.class)
+						.set(CouponRecommend::getStatus, false)
+						.eq(CouponRecommend::getId, data.getId())
+						.eq(CouponRecommend::getStatus, true));
+			}
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
@@ -284,13 +294,21 @@ public class CouponController {
 	 * 推荐优惠券设置/取消推荐
 	 */
 	@PutMapping("/recommend/putStatus/{recommendId}")
-	public Result<String> putRecommendStatusById(@PathVariable Long recommendId) {
-		CouponRecommend couponRecommend = couponRecommendMapper.selectById(recommendId);
-		if (couponRecommend == null || !couponRecommend.getDeleted()) {
+	public Result<String> putRecommendStatusById(@PathVariable Long recommendId, @RequestBody CouponRecommend couponRecommend) {
+		CouponRecommend dbRecommend = couponRecommendMapper.selectById(recommendId);
+		if (dbRecommend == null || !dbRecommend.getDeleted()) {
 			throw BusinessRuntimeException.getInstance("该推荐优惠券不存在");
 		}
-		couponRecommend.setStatus(!couponRecommend.getStatus());
-		couponRecommendMapper.updateById(couponRecommend);
+		if (couponRecommend.getUpTime() == null) {
+			dbRecommend.setUpTime(null);
+		}
+		if (couponRecommend.getDownTime() == null) {
+			dbRecommend.setDownTime(null);
+		}
+		dbRecommend.setStatus(!dbRecommend.getStatus());
+		dbRecommend.setUpTime(couponRecommend.getUpTime());
+		dbRecommend.setDownTime(couponRecommend.getDownTime());
+		couponRecommendMapper.updateById(dbRecommend);
 		return GatewayResponse.SUCCESS.newBuilder().toResult("操作成功");
 	}
 

+ 86 - 50
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -24,6 +24,7 @@ import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
 import com.cyksj.mapper.manage.distribute.*;
 import com.cyksj.model.entity.*;
+import com.cyksj.model.request.BusinessDistributeDefaultRateDetailReq;
 import com.cyksj.model.request.DistributeApplyMoneyReq;
 import com.cyksj.model.request.UserDistributeReq;
 import com.cyksj.model.views.*;
@@ -38,7 +39,6 @@ import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.param.Operator;
 import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
-import com.google.common.collect.Lists;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.dao.DuplicateKeyException;
@@ -96,6 +96,8 @@ public class DistributeController {
 
 	private final BusinessDistributeDefaultRateConfigMapper businessDefaultRateConfigMapper;
 
+	private final BusinessDistributeDefaultSkuRateConfigMapper businessDistributeDefaultSkuRateConfigMapper;
+
 	private final UserBenefitsService userBenefitsService;
 
 	private final CouponDistributePopularizeMapper couponDistributePopularizeMapper;
@@ -158,11 +160,19 @@ public class DistributeController {
 	 * 固定推广者详情
 	 */
 	@GetMapping("/get/detail/{id}")
-	public Result<List<UserDistributeView>> getDetailById(@PathVariable Long id) {
-		return GatewayResponse.SUCCESS.newBuilder().toResult(beanSearcher.searchAll(UserDistributeView.class, MapUtils.builder()
-				.field(UserDistributeView::getDistribute_id, id).op(Operator.Equal)
+	public Result<UserDistributeRateDetailView> getDetailById(@PathVariable Long id) {
+		UserDistributeRateDetailView rateDetailView = new UserDistributeRateDetailView();
+		List<UserDistributeView> rates = beanSearcher.searchAll(UserDistributeView.class, MapUtils.builder()
+				.put("dis_id", String.format(" and up.distribute_id = %s", id))
 				.orderBy(UserDistributeView::getGoodsId).asc()
-				.build()));
+				.build());
+		rateDetailView.setRates(rates);
+		List<UserSkuDistributeView> skuRates = beanSearcher.searchAll(UserSkuDistributeView.class, MapUtils.builder()
+				.put("dis_id", String.format(" and up.distribute_id = %s", id))
+				.orderBy(UserSkuDistributeView::getGoodsId).asc()
+				.build());
+		rateDetailView.setSkuRates(skuRates);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(rateDetailView);
 	}
 
 	/**
@@ -303,6 +313,12 @@ public class DistributeController {
 	@Log(module = "分销管理/修改平台分销比例", businessType = BusinessType.PUT, isSaveRequestData = true)
 	public Result<String> editGoodsDistributeRate(@RequestBody UserDistributeReq userDistributeReq) {
 		for (UserPlatDistributeRate rate : userDistributeReq.getRates()) {
+			if (rate.getRate() == null) {
+				rate.setRate(0);
+			}
+			if (rate.getSecondRate() == null) {
+				rate.setSecondRate(0);
+			}
 			if (rate.getRate() < 0 || rate.getRate() > 100) {
 				throw new BusinessRuntimeException("比例错误");
 			}
@@ -626,11 +642,17 @@ public class DistributeController {
 	 * 商务人员推广平台分销比例默认配置列表
 	 */
 	@GetMapping("/get/business/distribute/rate")
-	public Result<List<BusinessDistributeRateView>> getBusinessDistributeRateConfigList() {
-		List<BusinessDistributeRateView> businessDistributeRateViews = beanSearcher.searchAll(BusinessDistributeRateView.class,
+	public Result<BusinessDistributeRateDetailView> getBusinessDistributeRateConfigList() {
+		BusinessDistributeRateDetailView rateDetailView = new BusinessDistributeRateDetailView();
+		List<BusinessDistributeRateView> rates = beanSearcher.searchAll(BusinessDistributeRateView.class,
+				MapUtils.flatBuilder(request.getParameterMap())
+						.build());
+		rateDetailView.setRates(rates);
+		List<BusinessDistributeSkuRateView> skuRates = beanSearcher.searchAll(BusinessDistributeSkuRateView.class,
 				MapUtils.flatBuilder(request.getParameterMap())
 						.build());
-		return GatewayResponse.SUCCESS.newBuilder().toResult(businessDistributeRateViews);
+		rateDetailView.setSkuRates(skuRates);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(rateDetailView);
 	}
 
 	/**
@@ -638,49 +660,63 @@ public class DistributeController {
 	 */
 	@PutMapping("/put/business/distribute/rate")
 	@Transactional(rollbackFor = Throwable.class)
-	public Result<String> updateBusinessDistributeRate(@RequestBody List<BusinessDistributeDefaultRateConfig> configs) {
-		configs.forEach(config -> {
-			Long id = config.getId();
-			Long goodsId = config.getGoodsId();
-			Integer rate = config.getRate();
-			if (goodsId == null) {
-				throw BusinessRuntimeException.getInstance("平台id为空");
-			}
-			if (rate == null) {
-				throw BusinessRuntimeException.getInstance("分销比列为空");
-			}
-			if (id == null) {
-				try {
-					businessDefaultRateConfigMapper.insert(config);
-				} catch (DuplicateKeyException e) {
+	public Result<String> updateBusinessDistributeRate(@RequestBody BusinessDistributeDefaultRateDetailReq req) {
+		List<BusinessDistributeDefaultRateConfig> rates = req.getRates();
+		List<BusinessDistributeDefaultSkuRateConfig> skuRates = req.getSkuRates();
+		List<Long> alertGoodsId = new ArrayList<>();
+		if (CollUtil.isNotEmpty(rates)) {
+			rates.forEach(config -> {
+				Long id = config.getId();
+				Long goodsId = config.getGoodsId();
+				if (config.getRate() == null) {
+					config.setRate(0);
 				}
-				return;
-			}
-			//新品编辑成功 给渠道自动添加对应值
-			List<Long> distributeIds = userDistributeBusinessRateMapper.selectNoThisGoodsDistribute(config.getGoodsId());
-			if (!distributeIds.isEmpty()) {
-				List<UserPlatDistributeRate> save = new ArrayList<>(distributeIds.size());
-				distributeIds.forEach(distributeId -> {
-					Integer secondRate = config.getSecondRate();
-					if (secondRate == null) secondRate = 0;
-					UserPlatDistributeRate userPlatDistributeRate = new UserPlatDistributeRate();
-					userPlatDistributeRate.setDistributeId(distributeId);
-					userPlatDistributeRate.setRate(rate);
-					userPlatDistributeRate.setGoodsId(config.getGoodsId());
-					userPlatDistributeRate.setSecondRate(secondRate);
-					save.add(userPlatDistributeRate);
-				});
-				Lists.partition(save, 100).forEach(part -> {
-					List<Long> goodsIds = part.stream().map(UserPlatDistributeRate::getGoodsId).collect(Collectors.toList());
-					//删除存在告警的平台
-					distributeGoodsSkuAlertMapper.delete(Wrappers.lambdaQuery(DistributeGoodsSkuAlert.class)
-							.in(DistributeGoodsSkuAlert::getGoodsId, goodsIds));
-
-					userDistributeBusinessRateMapper.batchInsertDistributePlatRate(part);
-				});
-			}
-			businessDefaultRateConfigMapper.updateById(config);
-		});
+				Integer rate = config.getRate();
+				if (goodsId == null) {
+					throw BusinessRuntimeException.getInstance("平台id为空");
+				}
+				if (rate < 0 && rate > 100) {
+					throw BusinessRuntimeException.getInstance("请输入正确的比例");
+				}
+				if (id == null) {
+					try {
+						businessDefaultRateConfigMapper.insert(config);
+						alertGoodsId.add(config.getGoodsId());
+					} catch (DuplicateKeyException e) {
+					}
+				} else {
+					businessDefaultRateConfigMapper.updateById(config);
+				}
+			});
+		}
+
+		//sku规格比例设置
+		if (CollUtil.isNotEmpty(skuRates)) {
+			skuRates.forEach(config -> {
+				if (config.getRate() == null) {
+					config.setRate(0);
+				}
+				Integer rate = config.getRate();
+				if (rate < 0 && rate > 100) {
+					throw BusinessRuntimeException.getInstance("请输入正确的比例");
+				}
+				if (config.getId() == null) {
+					try {
+						businessDistributeDefaultSkuRateConfigMapper.insert(config);
+						alertGoodsId.add(config.getGoodsId());
+					} catch (DuplicateKeyException e) {
+					}
+				} else {
+					businessDistributeDefaultSkuRateConfigMapper.updateById(config);
+				}
+			});
+		}
+
+		if (CollUtil.isNotEmpty(alertGoodsId)) {
+			//删除存在告警的平台
+			distributeGoodsSkuAlertMapper.delete(Wrappers.lambdaQuery(DistributeGoodsSkuAlert.class)
+					.in(DistributeGoodsSkuAlert::getGoodsId, alertGoodsId));
+		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 

+ 6 - 3
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/shop/CmsYhShopGoodsController.java

@@ -92,8 +92,11 @@ public class CmsYhShopGoodsController {
     @Transactional(rollbackFor = Throwable.class)
     public Result<Void> updShopGoodsRate(@RequestBody GoodsDonShopRateReq req) {
         req.getList().forEach(e -> {
+            if (e.getRate() == null) {
+                e.setRate(0);
+            }
             Integer rate = e.getRate();
-            if (rate == null || (rate < 0 && rate > 100)) {
+            if (rate < 0 && rate > 100) {
                 throw BusinessRuntimeException.getInstance("请输入正确的比例");
             }
             YhShopGoodsRate one = yhShopGoodsRateService.getOne(Wrappers.lambdaQuery(YhShopGoodsRate.class)
@@ -116,8 +119,8 @@ public class CmsYhShopGoodsController {
      */
     @PutMapping("/oneKey/set/goods/rate")
     public Result<Void> setShopGoodsGeneralRate(@RequestBody GoodsDonShopRateReq req) {
-        Integer rate = req.getRate();
-        if (rate == null || (rate < 0 && rate > 100)) {
+        Integer rate = Optional.ofNullable(req.getRate()).orElse(0);
+        if (rate < 0 && rate > 100) {
             throw BusinessRuntimeException.getInstance("请输入正确的比例");
         }
         List<Long> goodsIds = req.getGoodsIds();

+ 4 - 3
netflix-web/src/main/java/com/cyksj/web/controller/user/DistributePopularizeController.java

@@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -106,7 +107,7 @@ public class DistributePopularizeController {
 			if (goodsDonSku != null) {
 				data.setSpecVal(goodsDonSku.getSpecVal());
 			}
-			data.setWaitGetMoney(data.getPoints().divide(points).multiply(money).divide(oneHundred));
+			data.setWaitGetMoney(data.getPoints().divide(points).multiply(money).divide(oneHundred, 2, RoundingMode.DOWN));
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
@@ -146,7 +147,7 @@ public class DistributePopularizeController {
 		if (userDistribute != null) {
 			//是否是固定推广者
 			UserDistributeView userDistributeView = beanSearcher.searchFirst(UserDistributeView.class, MapUtils.builder()
-					.field(UserDistributeView::getDistribute_id, userDistribute.getId()).op(Operator.Equal)
+					.put("dis_id", String.format(" and up.distribute_id = %s", userDistribute.getId()))
 					.orderBy(UserDistributeView::getRate).desc()
 					.build());
 			//最高平台比例
@@ -188,7 +189,7 @@ public class DistributePopularizeController {
 				distributePopularizeView.setGotMoney(user.getPoints().divide(points).multiply(money).divide(oneHundred));
 			}
 			if (user.getPoints().compareTo(BigDecimal.ZERO) >= 0) {
-				distributePopularizeView.setWaitingMoney(waitingPoints.divide(points).multiply(money).divide(oneHundred));
+				distributePopularizeView.setWaitingMoney(waitingPoints.divide(points).multiply(money).divide(oneHundred, 2, RoundingMode.DOWN));
 			}
 		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult(distributePopularizeView);