Kaynağa Gözat

会员规格对应类型车票所有规格都可抵扣会员

zoujiajian 1 yıl önce
ebeveyn
işleme
5f3660a036

+ 8 - 6
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -265,6 +265,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 				}
 			}
 			List<Long> vipSkuIds = vipGoodsSkuMapper.selectList(null).stream().map(VipGoodsSku::getSkuId).collect(Collectors.toList());
+			Set<Long> vipGoodsIds = goodsDonSkuMapper.selectList(Wrappers.lambdaQuery(GoodsDonSku.class)
+					.in(GoodsDonSku::getId, vipSkuIds)).stream().map(GoodsDonSku::getId).collect(Collectors.toSet());
 			Integer vipUserCount = vipUserMapper.selectCount(Wrappers.lambdaQuery(VipUser.class)
 					.in(VipUser::getUserId, userIds)
 					.gt(VipUser::getExpiryTime, now));
@@ -415,7 +417,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 						ticket.setReceivedGptGift(count.intValue() > 0);
 					}
 				}
-				markVipDeductTicket(userIds, ticket, vipSkuIds, vipUserCount > 0);
+				markVipDeductTicket(userIds, ticket, vipGoodsIds, vipUserCount > 0);
 			});
 		}
 		userLoginRecordService.saveUserLoginDayRecord(userId);
@@ -1968,14 +1970,14 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 	/**
 	 * 标记是否可抵扣会员车票
 	 */
-	private void markVipDeductTicket(List<Long> userIds, RenewalView ticket, List<Long> vipSkuIds, Boolean isVip) {
-		if (CollUtil.isNotEmpty(vipSkuIds) && !isVip) {
-			Long skuId = ticket.getSkuId();
-			if (vipSkuIds.contains(skuId)) {
+	private void markVipDeductTicket(List<Long> userIds, RenewalView ticket, Set<Long> vipGoodsIds, Boolean isVip) {
+		if (CollUtil.isNotEmpty(vipGoodsIds) && !isVip) {
+			Long goodsId = ticket.getGoodsId();
+			if (vipGoodsIds.contains(goodsId)) {
 				//是否时长最长
 				Number number = beanSearcher.searchCount(RenewalView.class, MapUtils.builder()
 						.field(RenewalView::getRelationId, ticket.getRelationId()).op(Operator.NotEqual)
-						.field(RenewalView::getSkuId, skuId)
+						.field(RenewalView::getGoodsId, goodsId)
 						.field(RenewalView::getUserId, userIds).op(Operator.InList)
 						.field(RenewalView::getExpiryTime, ticket.getExpiryTime()).op(Operator.GreaterThan)
 						.build());

+ 31 - 24
netflix-service/src/main/java/com/cyksj/service/vip/impl/VipFrontServiceImpl.java

@@ -55,6 +55,8 @@ public class VipFrontServiceImpl implements VipFrontService {
 
 	private final OrderDonMapper orderDonMapper;
 
+	private final GoodsDonSkuMapper goodsDonSkuMapper;
+
 	@Override
 	public void fillVipInfo(Long userId, VipUserPageResp vipUserPageResp) {
 		SysConfig sysConfig = sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, Constant.VIP_FEE_KEY).last("limit 1"));
@@ -120,47 +122,52 @@ public class VipFrontServiceImpl implements VipFrontService {
 		List<Long> deductRelationIds = new ArrayList<>();
 		BigDecimal deductMoney = BigDecimal.ZERO;
 		BigDecimal vipMoney = getVipMoney();
+		//会员规格
+		Set<Long> goodsIds = goodsDonSkuMapper.selectList(Wrappers.lambdaQuery(GoodsDonSku.class)
+				.in(GoodsDonSku::getId, vipSkuIds)).stream().map(GoodsDonSku::getGoodsId).collect(Collectors.toSet());
 		List<GroupsRelationView> relations = beanSearcher.searchAll(GroupsRelationView.class, MapUtils.builder()
-				.field(GroupsRelationView::getSkuId, vipSkuIds).op(Operator.InList)
+				.field(GroupsRelationView::getGoodsId, goodsIds).op(Operator.InList)
 				.field(GroupsRelationView::getUserId, userIdList).op(Operator.InList)
 				.field(GroupsRelationView::getIsVip, false)
 				.field(GroupsRelationView::getExpiryTime, DateTime.now()).op(Operator.GreaterThan)
 				.orderBy(GroupsRelationView::getExpiryTime).desc()
 				.build());
-		Set<Long> deductSkuIds = null;
+		Set<Long> deductGoodsIds = null;
 		List<GroupsRelationView> deductRelations = null;
 		for (GroupsRelationView relation : relations) {
-			if (deductSkuIds == null) {
-				deductSkuIds = new HashSet<>();
+			if (deductGoodsIds == null) {
+				deductGoodsIds = new HashSet<>();
 			}
 			if (deductRelations == null) {
 				deductRelations = new ArrayList<>();
 			}
-			Long vipSkuId = relation.getSkuId();
-			if (deductSkuIds.contains(vipSkuId)) {
+			Long goodsId = relation.getGoodsId();
+			if (deductGoodsIds.contains(goodsId)) {
 				continue;
 			}
-			deductSkuIds.add(vipSkuId);
-			Long goodsId = relation.getGoodsId();
+			Long skuId = relation.getSkuId();
+			deductGoodsIds.add(goodsId);
 			Long relationId = relation.getId();
 			Date relationExpiryTime = relation.getExpiryTime();
 			//GPT
-			if (goodsId == Constant.GPT_PLUS_GID) {
-				ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class).eq(ChatgptUser::getRelationId, relationId).last("limit 1"));
-				if (chatgptUser != null) {
-					//获取抵扣金额
-					deductMoney = deductMoney.add(getFinalDeductMoney(relationId, relation.getSkuId(), chatgptUser.getRenewSkuId(), chatgptUser.getRenewOrderId(), chatgptUser.getRenewExpiryTime(), relation.getStartTime(), relationExpiryTime, now, userIdList));
-				}
-			} else if (goodsId == Constant.CLAUDE_PRO_GID) {
-				ClaudeUser claudeUser = claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class).eq(ClaudeUser::getRelationId, relationId).last("limit 1"));
-				if (claudeUser != null) {
-					//获取抵扣金额
-					deductMoney = deductMoney.add(getFinalDeductMoney(relationId, relation.getSkuId(), claudeUser.getRenewSkuId(), claudeUser.getRenewOrderId(), claudeUser.getRenewExpiryTime(), relation.getStartTime(), relationExpiryTime, now, userIdList));
-				}
-			} else {
-				//该车票抵扣金额
-				deductMoney = deductMoney.add(getDeductMoneyFromTicket(vipSkuId, now, relation.getId(), relation.getStartTime(), relationExpiryTime));
-			}
+//			if (goodsId == Constant.GPT_PLUS_GID) {
+//				ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class).eq(ChatgptUser::getRelationId, relationId).last("limit 1"));
+//				if (chatgptUser != null) {
+//					//获取抵扣金额
+//					deductMoney = deductMoney.add(getFinalDeductMoney(relationId, relation.getSkuId(), chatgptUser.getRenewSkuId(), chatgptUser.getRenewOrderId(), chatgptUser.getRenewExpiryTime(), relation.getStartTime(), relationExpiryTime, now, userIdList));
+//				}
+//			} else if (goodsId == Constant.CLAUDE_PRO_GID) {
+//				ClaudeUser claudeUser = claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class).eq(ClaudeUser::getRelationId, relationId).last("limit 1"));
+//				if (claudeUser != null) {
+//					//获取抵扣金额
+//					deductMoney = deductMoney.add(getFinalDeductMoney(relationId, relation.getSkuId(), claudeUser.getRenewSkuId(), claudeUser.getRenewOrderId(), claudeUser.getRenewExpiryTime(), relation.getStartTime(), relationExpiryTime, now, userIdList));
+//				}
+//			} else {
+//				//该车票抵扣金额
+//				deductMoney = deductMoney.add(getDeductMoneyFromTicket(skuId, now, relation.getId(), relation.getStartTime(), relationExpiryTime));
+//			}
+			//该车票抵扣金额
+			deductMoney = deductMoney.add(getDeductMoneyFromTicket(skuId, now, relation.getId(), relation.getStartTime(), relationExpiryTime));
 			deductRelationIds.add(relationId);
 			//可抵扣车票
 			deductRelations.add(relation);