Quellcode durchsuchen

fix 分销渠道优惠码校验

zoujiajian vor 2 Jahren
Ursprung
Commit
757302d9d0

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

@@ -45,7 +45,7 @@ public class DistributeUserRankView {
 	private Integer rewardType;
 
 	@DbField("udsr.reward")
-	private Integer reward;
+	private String reward;
 
 	@DbIgnore
 	private Integer gapOrders;

+ 1 - 0
netflix-dao/src/main/resources/mapper/UserDistributeRankStatisticsRecordMapper.xml

@@ -45,6 +45,7 @@
         from user_distribute_rank_statistics_record udsr
                  left join user u on u.id = udsr.user_id
         where statistics_start_time = #{lastTime}
+        limit 10
     </select>
 
     <select id="selectAcOrderDataView" resultType="com.cyksj.model.views.ActivityOrderDataView">

+ 15 - 5
netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java

@@ -3,6 +3,7 @@ package com.cyksj.service.distribute.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
@@ -295,7 +296,7 @@ public class DistributeServiceImpl implements DistributeService {
 	 */
 	public void handlerDistributeOtherFunc(UserDistribute userDistribute, UserDistributeReq userDistributeReq) {
 		//处理优惠券关联
-		handlerDistributeCouponRelate(userDistribute.getId(), userDistributeReq.getCouponRelates());
+		handlerDistributeCouponRelate(userDistribute.getId(), userDistribute.getUserId(), userDistributeReq.getCouponRelates());
 
 		//渠道目标额配置
 		handlerDistributeTargetAlert(userDistribute.getId(), userDistributeReq.getTargets());
@@ -428,7 +429,7 @@ public class DistributeServiceImpl implements DistributeService {
 		});
 	}
 
-	private void handlerDistributeCouponRelate(Long distributeId, List<CouponDistributePopularize> couponRelates) {
+	private void handlerDistributeCouponRelate(Long distributeId, Long userId, List<CouponDistributePopularize> couponRelates) {
 		Map<Long, CouponDistributePopularize> map = new ConcurrentHashMap<>();
 		couponRelates.forEach(data -> {
 			data.setDistributeId(distributeId);
@@ -443,12 +444,21 @@ public class DistributeServiceImpl implements DistributeService {
 			if (StrUtil.isEmpty(exCode)) {
 				throw BusinessRuntimeException.getInstance("优惠码为空");
 			}
-			Integer count = couponDistributePopularizeMapper.selectCount(Wrappers.lambdaQuery(CouponDistributePopularize.class).ne(data.getId() != null, CouponDistributePopularize::getId, data.getId())
+			List<CouponDistributePopularize> popularizeList = couponDistributePopularizeMapper.selectList(Wrappers.lambdaQuery(CouponDistributePopularize.class)
 					.eq(CouponDistributePopularize::getDeleted, 1)
 					.eq(CouponDistributePopularize::getExCode, exCode));
-			if (count == 0) {
-				count = couponMapper.selectCount(Wrappers.lambdaQuery(Coupon.class).eq(Coupon::getExCode, exCode).eq(Coupon::getDeleted, true));
+			//个人渠道
+			for (CouponDistributePopularize couponDistributePopularize : popularizeList) {
+				Long disId = couponDistributePopularize.getDistributeId();
+				if (disId != null && !ObjectUtil.equal(disId, distributeId)) {
+					throw BusinessRuntimeException.getInstance("优惠码:{0}已存在", exCode);
+				}
+				Long uid = couponDistributePopularize.getUserId();
+				if (uid != null && !ObjectUtil.equal(uid, userId)) {
+					throw BusinessRuntimeException.getInstance("优惠码:{0}已存在", exCode);
+				}
 			}
+			Integer count = couponMapper.selectCount(Wrappers.lambdaQuery(Coupon.class).eq(Coupon::getExCode, exCode).eq(Coupon::getDeleted, true));
 			if (count > 0) {
 				throw BusinessRuntimeException.getInstance("优惠码:{0}已存在", exCode);
 			}