ソースを参照

fix 通用code优惠券处于推荐可发送

zoujiajian 1 年間 前
コミット
c52eb0c6fc

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponRecommendMapper.java

@@ -24,4 +24,9 @@ public interface CouponRecommendMapper extends BaseMapper<CouponRecommend> {
 	List<CouponAvailableRecommendView> getRecommendCouponList(@Param("userId") Long userId, @Param("isNewUser") Boolean isNewUser);
 
 	Page<CouponRecommendView> getRecommendCouponViewList(@Param("userId") Long userId, @Param("isNewUser") Boolean isNewUser, @Param("page") IPage<CouponRecommendView> page, @Param("couponId") Long couponId);
+
+	/**
+	 * 该优惠券是否处于推荐中
+	 */
+	int checkPresentRecommendByCouponId(Long couponId);
 }

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

@@ -57,4 +57,16 @@
             and c.scope !='newUser'
         </if>)s where flag is true
     </select>
+
+    <select id="checkPresentRecommendByCouponId" resultType="java.lang.Integer">
+        select cr.coupon_id
+        from coupon_recommend cr
+                 inner join coupon c on c.id = cr.coupon_id
+        where cr.coupon_id = #{couponId}
+          and 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())
+    </select>
 </mapper>

+ 7 - 1
netflix-service/src/main/java/com/cyksj/service/claude/impl/ClaudeCodeServiceImpl.java

@@ -119,7 +119,7 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
 				return;
 			}
 			//清缓存
-			if (orderType == 2) {
+			if (orderType != null && orderType == 2) {
 				invalidateUserCache(relationUserId);
 			}
 		} catch (Exception e) {
@@ -306,6 +306,12 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
 				GoodsDonSku sku = skuMapper.selectById(orderDon.getSkuId());
 				generateOrUpdateClaudeCodeUserInfo(orderDon.getId(), orderDon.getRelationId(), orderDon.getUserId(), sku, orderDon.getOrderType());
 				claudeCodeUser = claudeCodeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeCodeUser.class).in(ClaudeCodeUser::getUserId, userIdList).last("limit 1"));
+			} else {
+				//试用车票
+				Long skuId = groupsRelationView.getSkuId();
+				GoodsDonSku sku = skuMapper.selectById(skuId);
+				generateOrUpdateClaudeCodeUserInfo(null, groupsRelationView.getId(), groupsRelationView.getUserId(), sku, null);
+				claudeCodeUser = claudeCodeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeCodeUser.class).in(ClaudeCodeUser::getUserId, userIdList).last("limit 1"));
 			}
 		} else {
 			claudeCodeUser.setExpiryTime(groupsRelationView.getExpiryTime());

+ 9 - 2
netflix-service/src/main/java/com/cyksj/service/user/impl/UserServiceImpl.java

@@ -22,6 +22,7 @@ import com.cyksj.mapper.channel.ChannelPopularizeMapper;
 import com.cyksj.mapper.claudecode.ClaudeCodeUserPopularizeTrialTicketRecordMapper;
 import com.cyksj.mapper.corp.*;
 import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
+import com.cyksj.mapper.manage.coupon.CouponRecommendMapper;
 import com.cyksj.mapper.manage.cps.UserDistributePopularizeMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper;
@@ -150,6 +151,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
 	private final ClaudeCodeUserPopularizeTrialTicketRecordMapper claudeCodeUserPopularizeTrialTicketRecordMapper;
 
+	private final CouponRecommendMapper couponRecommendMapper;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
 	@Override
@@ -611,8 +614,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 						}
 					}
 				} else {
-					//发送无优惠码的 优惠券
-					couponCommonService.sendCouponToUser(user.getId(), Constant.DISTRIBUTE_CLAUDE_CODE_NO_CODE_COUPON_ID, 0l, 0l, dsPopularizeId, CouponUser.Channel.manual);
+					//该优惠券是否处于推荐中
+					int isTj = couponRecommendMapper.checkPresentRecommendByCouponId(Constant.DISTRIBUTE_CLAUDE_CODE_NO_CODE_COUPON_ID);
+					if (isTj != 0) {
+						//发送无优惠码的 优惠券
+						couponCommonService.sendCouponToUser(user.getId(), Constant.DISTRIBUTE_CLAUDE_CODE_NO_CODE_COUPON_ID, 0l, 0l, dsPopularizeId, CouponUser.Channel.manual);
+					}
 				}
 			}
 		}

+ 22 - 10
netflix-web/src/main/java/com/cyksj/web/controller/claude/ClaudeCodeController.java

@@ -14,6 +14,7 @@ import com.cyksj.mapper.GroupsMapper;
 import com.cyksj.mapper.GroupsRelationMapper;
 import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
 import com.cyksj.mapper.manage.coupon.CouponMapper;
+import com.cyksj.mapper.manage.coupon.CouponRecommendMapper;
 import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
 import com.cyksj.model.entity.*;
@@ -89,6 +90,8 @@ public class ClaudeCodeController {
 
 	private final CouponSkuMapper couponSkuMapper;
 
+	private final CouponRecommendMapper couponRecommendMapper;
+
 	/**
 	 * 用户创建API KEY
 	 */
@@ -255,17 +258,26 @@ public class ClaudeCodeController {
 					//已配置使用渠道优惠码 未配置使用推荐优惠券
 					Coupon coupon = couponMapper.selectById(selectCount > 0 ? Constant.DISTRIBUTE_CLAUDE_CODE_COUPON_ID : Constant.DISTRIBUTE_CLAUDE_CODE_NO_CODE_COUPON_ID);
 					if (coupon != null) {
-						List<Long> couponSkuIds = couponSkuMapper.selectList(Wrappers.lambdaQuery(CouponSku.class).eq(CouponSku::getCouponId, coupon.getId()).eq(CouponSku::getDeleted, Boolean.TRUE)).stream().map(CouponSku::getSkuId).collect(Collectors.toList());
-						goodsDonSkuViews.forEach(sku -> {
-							if (couponSkuIds.contains(sku.getSkuId())) {
-								if (coupon.getType() == Coupon.Type.discount) {
-									sku.setDiscount(coupon.getDiscount());
-									sku.setDiscountPrice(sku.getMoney().multiply(coupon.getDiscount()));
-								} else {
-									sku.setReduceMoney(coupon.getReduceMoney());
-								}
+						Boolean isContinue = true;
+						if (coupon.getId() == Constant.DISTRIBUTE_CLAUDE_CODE_NO_CODE_COUPON_ID) {
+							int isTj = couponRecommendMapper.checkPresentRecommendByCouponId(Constant.DISTRIBUTE_CLAUDE_CODE_NO_CODE_COUPON_ID);
+							if (isTj == 0) {
+								isContinue = false;
 							}
-						});
+						}
+						if (isContinue) {
+							List<Long> couponSkuIds = couponSkuMapper.selectList(Wrappers.lambdaQuery(CouponSku.class).eq(CouponSku::getCouponId, coupon.getId()).eq(CouponSku::getDeleted, Boolean.TRUE)).stream().map(CouponSku::getSkuId).collect(Collectors.toList());
+							goodsDonSkuViews.forEach(sku -> {
+								if (couponSkuIds.contains(sku.getSkuId())) {
+									if (coupon.getType() == Coupon.Type.discount) {
+										sku.setDiscount(coupon.getDiscount());
+										sku.setDiscountPrice(sku.getMoney().multiply(coupon.getDiscount()));
+									} else {
+										sku.setReduceMoney(coupon.getReduceMoney());
+									}
+								}
+							});
+						}
 					}
 				}
 			}