zoujiajian 2 vuotta sitten
vanhempi
sitoutus
e7e07e0780

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeShared.java

@@ -31,4 +31,11 @@ public class UserDistributeShared extends BaseEntity{
 	 * cps后台自定义推广链接id
 	 */
 	private Long dsPopularizeId;
+
+	/**
+	 * 新渠道上下级规则:
+	 * 在原规则基础上加上用户需在在45天内下单成功之后才算真绑定,享受后续所有订单返利
+	 * 超过45天 未下单 不参与后续提成
+	 */
+	private Boolean isBind;
 }

+ 4 - 4
netflix-dao/src/main/java/com/cyksj/model/views/YhShopDistributeBusinessView.java

@@ -16,11 +16,11 @@ import java.math.BigDecimal;
  */
 @Getter
 @Setter
-@SearchBean(tables = "(select distinct business_id from yh_shop_user_distribute_business_rate) ur left join yh_shop_user_distribute_business_order_don_record ubr on ubr.business_id = ur.business_id and :time:" +
-		" left join cms_user cu on cu.id = ur.business_id",
-		groupBy = "ur.business_id,cu.nickname,date_format(ubr.order_created_time,'%Y-%m')")
+@SearchBean(tables = "yh_shop ys left join yh_shop_user_distribute_business_order_don_record ubr on ubr.business_id = ys.business_id and :time:" +
+		" left join cms_user cu on cu.id = ys.business_id",
+		groupBy = "ys.business_id,cu.nickname,date_format(ubr.order_created_time,'%Y-%m')")
 public class YhShopDistributeBusinessView {
-	@DbField("ur.business_id")
+	@DbField("ys.business_id")
 	private Long businessId;
 
 	@DbField("cu.nickname")

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

@@ -13,7 +13,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@SearchBean(tables = "goods_don g left yh_shop_user_business_default_rate_config uc on g.id = uc.goods_id"
+@SearchBean(tables = "goods_don g left join yh_shop_user_business_default_rate_config uc on g.id = uc.goods_id"
 		, where = "g.type = 1 and g.deleted is true and g.status is true")
 public class YhShopUserBusinessDefaultRateConfigView {
 	@DbField("uc.id")

+ 61 - 27
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -366,23 +366,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		if (relation != null && relation.getStatus() == GroupsRelation.Status.outside) {
 			orderDon.setIsOt(true);
 		}
-		if (isNoLogin == null || !isNoLogin) {
+		if (orderDon.getYhsId() == 0) {
 			//虚拟商品订单,是否是分销订单
-			if (goodsDon.getType() == 1 || goodsDon.getType() == 2) {
-				//若该订单使用了规定推广者的兑换码 增加上下级关系
-				if (StrUtil.isNotBlank(orderDon.getCouponExCode()) && orderDon.getUserId() != 0) {
-					addDistributeCouponCode(orderDon.getUserId(), orderDon.getCouponExCode());
-				}
-				UserDistributeShared userDistributeShared = userDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(UserDistributeShared.class).eq(UserDistributeShared::getUserId, user.getId()).last("limit 1"));
-				if (userDistributeShared != null) {
-					orderDon.setIsDistribute(true);
-					UserDistribute userDistribute = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeShared.getSharedId()));
-					if (userDistribute != null) {
-						orderDon.setIsFixedDistribute(true);
-						orderDon.setCpsPopularizeId(userDistributeShared.getDsPopularizeId());
-					}
-				}
-			}
+			setDistributeOrderMark(orderDon, goodsDon.getType(), user.getId());
 		}
 		if (relationId != 0) {
 			Long gtSkuId = groupsRelationMapper.getGroupTripsSkuIdByRelationId(relationId);
@@ -778,6 +764,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		OrderDon orderDon = new OrderDon();
 		orderDon.setOrderNo(donNo);
 		orderDon.setOpenId(payOpenId);
+		orderDon.setYhsId(yhsId);
 		orderDon.setMoney(sku.getPrice().multiply(BigDecimal.valueOf(payRequest.getNum())));
 		orderDon.setSkuId(renewSkuId);
 		orderDon.setRelationId(relation.getId());
@@ -794,17 +781,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		if (relation != null && relation.getStatus() == GroupsRelation.Status.outside) {
 			orderDon.setIsOt(true);
 		}
-		//虚拟商品订单,是否是分销订单
-		if (goodsDon.getType() == 1) {
-			UserDistributeShared userDistributeShared = userDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(UserDistributeShared.class).eq(UserDistributeShared::getUserId, user.getId()).last("limit 1"));
-			if (userDistributeShared != null) {
-				orderDon.setIsDistribute(true);
-				UserDistribute userDistribute = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeShared.getSharedId()));
-				if (userDistribute != null) {
-					orderDon.setIsFixedDistribute(true);
-					orderDon.setCpsPopularizeId(userDistributeShared.getDsPopularizeId());
-				}
-			}
+		if (orderDon.getYhsId() == 0) {
+			//虚拟商品订单,是否是分销订单
+			setDistributeOrderMark(orderDon, goodsDon.getType(), userId);
 		}
 		orderDon.setRealMoney(orderDon.getMoney());
 		//扣除使用优惠券、余额的订单金额
@@ -2176,6 +2155,61 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		}
 	}
 
+	public void setDistributeOrderMark(OrderDon orderDon, Integer goodsType, Long userId) {
+		if (userId == null || userId == 0) {
+			return;
+		}
+		//虚拟商品订单,是否是分销订单
+		if (goodsType == 1 || goodsType == 2) {
+			//若该订单使用了规定推广者的兑换码 增加上下级关系
+			if (StrUtil.isNotBlank(orderDon.getCouponExCode()) && orderDon.getUserId() != 0) {
+				addDistributeCouponCode(orderDon.getUserId(), orderDon.getCouponExCode());
+			}
+			UserDistributeShared userDistributeShared = userDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(UserDistributeShared.class).eq(UserDistributeShared::getUserId, userId).last("limit 1"));
+			if (userDistributeShared != null) {
+				orderDon.setIsDistribute(true);
+				UserDistribute userDistribute = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeShared.getSharedId()));
+				if (userDistribute != null) {
+					//直接去除
+					if (!userDistributeShared.getIsBind()) {
+						orderDon.setIsDistribute(false);
+					} else {
+						//45天内是否下单成功
+						Date createdTime = userDistributeShared.getCreatedTime();
+						DateTime forty_five = DateUtil.offsetDay(createdTime, 45);
+						//在45天内
+						Boolean is_fit = false;
+						boolean before = DateTime.now().isBefore(forty_five);
+						//超过45天还未下过单
+						//直接不参与后续的 提成
+						if (before) {
+							is_fit = true;
+						} else {
+							int count = this.count(Wrappers.lambdaQuery(OrderDon.class)
+									.eq(OrderDon::getUserId, userId)
+									.notIn(OrderDon::getStatus, Constant.noOrderAllStatus)
+									.le(OrderDon::getCreatedTime, forty_five));
+							if (count > 0) {
+								is_fit = true;
+							} else {
+								userDistributeShared.setIsBind(false);
+								userDistributeSharedMapper.updateById(userDistributeShared);
+							}
+						}
+						//未达标
+						if (is_fit) {
+							orderDon.setIsFixedDistribute(true);
+						} else {
+							orderDon.setIsDistribute(false);
+							orderDon.setIsFixedDistribute(false);
+						}
+					}
+					orderDon.setCpsPopularizeId(userDistributeShared.getDsPopularizeId());
+				}
+			}
+		}
+	}
+
 	public GoodsDonSku adjustGoodsDonSku(Long yhsId, Long skuId) {
 		GoodsDonSku sku;
 		if (yhsId != null) {

+ 34 - 37
netflix-service/src/main/java/com/cyksj/service/shop/impl/YhShopDistributeServiceImpl.java

@@ -46,45 +46,42 @@ public class YhShopDistributeServiceImpl implements YhShopDistributeService {
 		}
 		BigDecimal returnMoney;
 		Long businessId;
-		YhShopUserDistributeShared yhShopUserDistributeShared = yhShopUserDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(YhShopUserDistributeShared.class).eq(YhShopUserDistributeShared::getUserId, order.getUserId()).last("limit 1"));
-		if (yhShopUserDistributeShared != null) {
-			Long shopUserId = yhShopUserDistributeShared.getShopUserId();
-			YhShop yhShop = yhShopMapper.selectById(order.getYhsId());
-			if (yhShop == null) {
-				log.info("订单orderId:{}店铺yhs_id:{}对应的店铺不存在", order.getId(), order.getYhsId());
-				return;
-			}
-			YhShopDistributeWaitingSendPoints distributeWaitingSendPoints = new YhShopDistributeWaitingSendPoints();
-			distributeWaitingSendPoints.setOrderId(order.getId());
-			distributeWaitingSendPoints.setUserId(order.getUserId());
-
+		YhShop yhShop = yhShopMapper.selectById(order.getYhsId());
+		if (yhShop == null) {
+			log.info("订单orderId:{}店铺yhs_id:{}对应的店铺不存在", order.getId(), order.getYhsId());
+			return;
+		}
+		Long shopUserId = yhShop.getUserId();
+		YhShopDistributeWaitingSendPoints distributeWaitingSendPoints = new YhShopDistributeWaitingSendPoints();
+		distributeWaitingSendPoints.setOrderId(order.getId());
+		distributeWaitingSendPoints.setUserId(order.getUserId());
 
-			distributeWaitingSendPoints.setShopUserId(shopUserId);
-			//是否配置了对应平台比例
-			YhShopUserPlatDistributeRate yhShopUserPlatDistributeRate = yhShopUserPlatDistributeRateMapper.selectOne(Wrappers.lambdaQuery(YhShopUserPlatDistributeRate.class)
-					.eq(YhShopUserPlatDistributeRate::getUserId, shopUserId)
-					.eq(YhShopUserPlatDistributeRate::getGoodsId, order.getGoodsId()).last("limit 1"));
-			if (yhShopUserPlatDistributeRate == null) {
-				log.info("未配置店铺主userId:{}对应平台goodsId:{}的比例", shopUserId, order.getGoodsId());
-				return;
-			}
-			Integer rate = yhShopUserPlatDistributeRate.getRate();
-			if (rate <= 0) {
-				log.info("配置店铺主userId:{}对应平台goodsId:{}的比例为0", shopUserId, order.getGoodsId());
-				return;
-			}
-			returnMoney = orderMoney.multiply(BigDecimal.valueOf(rate)).divide(BigDecimal.valueOf(100));
-			distributeWaitingSendPoints.setMoney(returnMoney);
-			distributeWaitingSendPoints.setSendStatus(YhShopDistributeWaitingSendPoints.Status.waiting);
-			distributeWaitingSendPoints.setSendTime(DateUtil.offsetDay(order.getPayTime(), 3));
-			distributeWaitingSendPoints.setRate(rate);
-			yhShopDistributeWaitingSendPointsMapper.insert(distributeWaitingSendPoints);
+		distributeWaitingSendPoints.setShopUserId(shopUserId);
+		//是否配置了对应平台比例
+		YhShopUserPlatDistributeRate yhShopUserPlatDistributeRate = yhShopUserPlatDistributeRateMapper.selectOne(Wrappers.lambdaQuery(YhShopUserPlatDistributeRate.class)
+				.eq(YhShopUserPlatDistributeRate::getUserId, shopUserId)
+				.eq(YhShopUserPlatDistributeRate::getGoodsId, order.getGoodsId()).last("limit 1"));
+		if (yhShopUserPlatDistributeRate == null) {
+			log.info("未配置店铺主userId:{}对应平台goodsId:{}的比例", shopUserId, order.getGoodsId());
+			return;
+		}
+		Integer rate = yhShopUserPlatDistributeRate.getRate();
+		if (rate <= 0) {
+			log.info("配置店铺主userId:{}对应平台goodsId:{}的比例为0", shopUserId, order.getGoodsId());
+			return;
+		}
+		returnMoney = orderMoney.multiply(BigDecimal.valueOf(rate)).divide(BigDecimal.valueOf(100));
+		distributeWaitingSendPoints.setMoney(returnMoney);
+		distributeWaitingSendPoints.setSendStatus(YhShopDistributeWaitingSendPoints.Status.waiting);
+		distributeWaitingSendPoints.setSendTime(DateUtil.offsetDay(order.getPayTime(), 3));
+		distributeWaitingSendPoints.setRate(rate);
+		distributeWaitingSendPoints.setSkuId(order.getSkuId());
+		yhShopDistributeWaitingSendPointsMapper.insert(distributeWaitingSendPoints);
 
-			//对应商务
-			businessId = yhShop.getBusinessId();
-			if (businessId != null) {
-				userBusinessFrontService.taskYhShopDistributeRateBenefits(shopUserId, businessId, 1, order, rate);
-			}
+		//对应商务
+		businessId = yhShop.getBusinessId();
+		if (businessId != null) {
+			userBusinessFrontService.taskYhShopDistributeRateBenefits(shopUserId, businessId, 1, order, rate);
 		}
 	}