Просмотр исходного кода

fix 使用推广者优惠码下单记录分销上下级关系

zoujiajian 3 лет назад
Родитель
Сommit
e6f34e62df

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

@@ -80,6 +80,11 @@ public class OrderDon extends BaseEntity implements Serializable {
      */
     private Type type;
 
+    /**
+     * 推广者设置的优惠码
+     */
+    private String couponExCode;
+
     /**
      * 订单类型 1普通订单、2续费订单
      * 默认值为1

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

@@ -21,4 +21,9 @@ public class UserDistributeShared extends BaseEntity{
 	 * 分享人id
 	 */
 	private Long sharedId;
+
+	/**
+	 * 邀请方式备注
+	 */
+	private String remark;
 }

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

@@ -36,6 +36,7 @@ import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.channel.ShopConfigMapper;
+import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
 import com.cyksj.mapper.manage.coupon.CouponMapper;
 import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
 import com.cyksj.mapper.manage.coupon.CouponUserMapper;
@@ -175,6 +176,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final EquipmentDistributeService equipmentDistributeService;
 
+	private final CouponDistributePopularizeMapper couponDistributePopularizeMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -298,6 +301,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		orderDon.setType(OrderDon.Type.getType(payRequest.getType()));
 		orderDon.setIsWebPay(payRequest.getIsWebPay());
 		orderDon.setSource(payRequest.getSource());
+		orderDon.setCouponExCode(payRequest.getCouponExCode());
 		if (isNoLogin == null || !isNoLogin) {
 			//虚拟商品订单,是否是分销订单
 			if (goodsDon.getType() == 1) {
@@ -500,6 +504,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				if (goodsDon.getType() == 2) {
 					equipmentDistributeService.addDistributeBenefitsChance(order.getUserId(), order.getId());
 				}
+				//若该订单使用了规定推广者的兑换码 增加上下级关系
+				if (StrUtil.isNotBlank(order.getCouponExCode())) {
+					addDistributeCouponCode(order.getUserId(), order.getCouponExCode());
+				}
 			} catch (Exception e) {
 				log.error("wx增加抽奖机会错误,orderId:{},error:{}", order.getId(), e);
 			}
@@ -774,6 +782,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				if (goodsDon.getType() == 2) {
 					equipmentDistributeService.addDistributeBenefitsChance(orderDon.getUserId(), orderDon.getId());
 				}
+				//若该订单使用了规定推广者的兑换码 增加上下级关系
+				if (StrUtil.isNotBlank(orderDon.getCouponExCode())) {
+					addDistributeCouponCode(orderDon.getUserId(), orderDon.getCouponExCode());
+				}
 			} catch (Exception e) {
 				log.error("zfb增加抽奖机会错误,orderId:{},error:{}", orderDon.getId(), e);
 			}
@@ -1571,4 +1583,30 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			}
 		}
 	}
+
+	/**
+	 * 使用推广者的优惠码增加上下级
+	 */
+	private void addDistributeCouponCode(Long userId, String couponExCode) {
+		UserDistributeShared userDistributeShared = userDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(UserDistributeShared.class)
+				.eq(UserDistributeShared::getUserId, userId).last("limit 1"));
+		if (userDistributeShared == null) {
+			CouponDistributePopularize couponDistributePopularize = couponDistributePopularizeMapper.selectOne(Wrappers.lambdaQuery(CouponDistributePopularize.class).eq(CouponDistributePopularize::getExCode, couponExCode).last("limit 1"));
+			Optional.ofNullable(couponDistributePopularize).ifPresent(popularize -> {
+				try {
+					UserDistribute userDistribute = userDistributeMapper.selectById(popularize.getId());
+					if (userDistribute == null || !userDistribute.getDeleted()) {
+						return;
+					}
+					UserDistributeShared ud = new UserDistributeShared();
+					ud.setUserId(userId);
+					ud.setSharedId(userDistribute.getUserId());
+					ud.setRemark("优惠码");
+					userDistributeSharedMapper.insert(ud);
+				} catch (DuplicateKeyException e) {
+
+				}
+			});
+		}
+	}
 }