Explorar o código

fix 增强添加渠道推广者重复校验

zoujiajian %!s(int64=2) %!d(string=hai) anos
pai
achega
b25969480f

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

@@ -80,7 +80,7 @@
             </if>
             limit 1
         </where>
-        )u inner join user_distribute ud on ud.user_id = u.id and ud.deleted is true
+        )u inner join user_distribute ud on ud.user_id = u.id and ud.deleted is true limit 1
     </select>
 
     <select id="getDistributeGoodsRateByUidAndGid" resultType="java.lang.Integer">

+ 1 - 3
netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java

@@ -77,7 +77,7 @@ public class DistributeServiceImpl implements DistributeService {
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public void insertDistribute(UserDistributeReq userDistributeReq) {
-		if (!redisService.setNx(RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId()), userDistributeReq.getUserId(), 60l)) {
+		if (!redisService.setNx(RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId()), userDistributeReq.getUserId(), 2 * 60l)) {
 			throw BusinessRuntimeException.getInstance("请勿重复点击");
 		}
 		UserDistribute exists = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeReq.getUserId()).eq(UserDistribute::getDeleted, true).last("limit 1"));
@@ -149,8 +149,6 @@ public class DistributeServiceImpl implements DistributeService {
 		//渠道目标额配置
 		List<UserDistributeTargetAlert> targets = userDistributeReq.getTargets();
 		handlerDistributeTargetAlert(userDistribute.getId(), targets);
-
-		redisService.del(RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId()));
 	}
 
 	@Override

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

@@ -127,14 +127,21 @@ public class DistributeController {
 	@Log(module = "分销管理/增加推广者", businessType = BusinessType.POST, isSaveRequestData = true)
 	@Transactional(rollbackFor = Throwable.class)
 	public Result<String> saveDistributes(@RequestBody @NotNull UserDistributeReq userDistributeReq) {
-		distributeService.insertDistribute(userDistributeReq);
-		Long businessId = userDistributeReq.getBusinessId();
-		//保存商务人员提成比例
-		userBusinessRateService.saveBusinessRate(businessId);
-		//清除 之前有普通推广专属码
-		couponDistributePopularizeMapper.delete(Wrappers.lambdaQuery(CouponDistributePopularize.class)
-				.eq(CouponDistributePopularize::getUserId, userDistributeReq.getUserId())
-				.eq(CouponDistributePopularize::getIsGeneral, true));
+		try {
+			distributeService.insertDistribute(userDistributeReq);
+			Long businessId = userDistributeReq.getBusinessId();
+			//保存商务人员提成比例
+			userBusinessRateService.saveBusinessRate(businessId);
+			//清除 之前有普通推广专属码
+			couponDistributePopularizeMapper.delete(Wrappers.lambdaQuery(CouponDistributePopularize.class)
+					.eq(CouponDistributePopularize::getUserId, userDistributeReq.getUserId())
+					.eq(CouponDistributePopularize::getIsGeneral, true));
+		} finally {
+			String cacheKey = RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId());
+			if (redisService.hasKey(cacheKey)) {
+				redisService.del(cacheKey);
+			}
+		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult("添加成功");
 	}