zoujiajian 1 year ago
parent
commit
dc9b0bfa76

+ 2 - 1
netflix-dao/src/main/java/com/cyksj/mapper/UserBenefitsOrderRecordMapper.java

@@ -6,6 +6,7 @@ import com.cyksj.model.entity.UserBenefits;
 import com.cyksj.model.entity.UserBenefitsOrderRecord;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -15,7 +16,7 @@ import java.util.List;
  * 创建时间:2024/9/24 15:49
  */
 public interface UserBenefitsOrderRecordMapper extends BaseMapper<UserBenefitsOrderRecord> {
-	Integer selectUseComboRecordByUid(@Param("userIds") List<Long> userIdList, @Param("type") UserBenefits.Type type, @Param("goodsId") Long goodsId, @Param("skuId") Long skuId, @Param("orderStatus") List<String> orderStatus, @Param("lastYear") DateTime lastYear);
+	Integer selectUseComboRecordByUid(@Param("userIds") List<Long> userIdList, @Param("type") UserBenefits.Type type, @Param("goodsId") Long goodsId, @Param("skuId") Long skuId, @Param("orderStatus") List<String> orderStatus, @Param("lastYear") DateTime lastYear, @Param("startTime") Date startTime);
 
 	Integer selectNoPaymentRecord(@Param("userIds") List<Long> userIdList, @Param("benefitsId") Long benefitsId);
 }

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

@@ -12,7 +12,11 @@
         and user_id in
         <foreach collection="userIds" item="item" open="(" separator="," close=")">
             #{item}
-        </foreach>) bu inner join order_don o on o.id = bu.order_id
+        </foreach>
+        <if test="startTime != null">
+            and created_time > #{startTime}
+        </if>
+        ) bu inner join order_don o on o.id = bu.order_id
         where o.status not in
         <foreach collection="orderStatus" item="status" open="(" separator="," close=")">
             #{status}

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

@@ -4009,7 +4009,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				orderDon.setIsOt(true);
 			}
 			//目前续费减免下单次数
-			Integer renewCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, userBenefits.getType(), userBenefits.getGoodsId(), userBenefits.getSkuId(), Constant.noOrderAllStatus, null);
+			Integer renewCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, userBenefits.getType(), userBenefits.getGoodsId(), userBenefits.getSkuId(), Constant.noOrderAllStatus, null, relation.getStartTime());
 			String renewConfig = userBenefits.getRenewConfig();
 			List<UserBenefits.RenewConfig> renewConfigs = Jsons.parseList(renewConfig, UserBenefits.RenewConfig.class);
 			Integer start = userBenefits.getStartRenew();
@@ -4103,7 +4103,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			if (fhCount > 0) {
 				//近一年是否已经使用过该权益
 				DateTime lastYear = DateUtil.offsetMonth(DateTime.now(), -12);
-				Integer comboCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, userBenefits.getType(), userBenefits.getGoodsId(), null, Constant.noOrderStatus, lastYear);
+				Integer comboCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, userBenefits.getType(), userBenefits.getGoodsId(), null, Constant.noOrderStatus, lastYear, null);
 				if (comboCount > 0) {
 					throw BusinessRuntimeException.getInstance("你今年已享受该套餐优惠");
 				}

+ 8 - 2
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -977,14 +977,20 @@ public class GroupRelationController {
      * 独立规格续费减免
      */
     @GetMapping("/get/renew/reduce")
-    public Result<UserBenefitsFrontView> getRenewReduce(Long skuId) {
+    public Result<UserBenefitsFrontView> getRenewReduce(Long skuId, Long relationId) {
         long userId = StpUserUtil.getLoginIdAsLong();
         List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
         UserBenefitsFrontView data = beanSearcher.searchFirst(UserBenefitsFrontView.class, MapUtils.builder().field(UserBenefitsFrontView::getSkuId, skuId).field(UserBenefitsFrontView::getType, UserBenefits.Type.RENEW.name()).build());
         if (data == null) {
             return GatewayResponse.SUCCESS.newBuilder().toResult();
         }
-        Integer renewCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, data.getType(), data.getGoodsId(), data.getSkuId(), Constant.noOrderAllStatus, null);
+        GroupsRelation relation = relationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
+                .eq(GroupsRelation::getId, relationId)
+                .in(GroupsRelation::getUserId, userIdList));
+        if (relation == null) {
+            throw BusinessRuntimeException.getInstance("车票不存在");
+        }
+        Integer renewCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, data.getType(), data.getGoodsId(), data.getSkuId(), Constant.noOrderAllStatus, null, relation.getStartTime());
         data.setRenewCount(renewCount);
         return GatewayResponse.SUCCESS.newBuilder().toResult(data);
     }

+ 11 - 8
netflix-web/src/main/java/com/cyksj/web/controller/user/UserBenefitsFrontController.java

@@ -67,14 +67,14 @@ public class UserBenefitsFrontController {
 
 	private final UserActivityMapper userActivityMapper;
 
-	private final UserBenefitsMapper userBenefitsMapper;
+	private final GroupsRelationMapper relationMapper;
 
 
 	/**
 	 * 权益分类
 	 */
 	@GetMapping("/get/classification")
-	public Result<Map<UserBenefits.Type, List<UserBenefitsFrontView>>> getUserBenefitsClassification() {
+	public Result<Map<UserBenefits.Type, List<UserBenefitsFrontView>>> getUserBenefitsClassification(Long relationId) {
 		String key = RedisService.key.USER_BENEFITS_KEY.getName() + ":cfc";
 		long userId = StpUserUtil.getLoginIdAsLong();
 		Object o = redisService.get(key);
@@ -88,7 +88,7 @@ public class UserBenefitsFrontController {
 			classifications = (Map<UserBenefits.Type, List<UserBenefitsFrontView>>) o;
 		}
 		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
-		classifications.values().forEach(list -> setDataInfo(list, null, userIdList, true));
+		classifications.values().forEach(list -> setDataInfo(list, null, userIdList, true, relationId));
 		return GatewayResponse.SUCCESS.newBuilder().toResult(classifications);
 	}
 
@@ -96,7 +96,7 @@ public class UserBenefitsFrontController {
 	 * 用户权益
 	 */
 	@GetMapping("/get")
-	public Result<List<UserBenefitsFrontView>> getUserBenefits(UserBenefits.Type type) {
+	public Result<List<UserBenefitsFrontView>> getUserBenefits(UserBenefits.Type type, Long relationId) {
 		long userId = StpUserUtil.getLoginIdAsLong();
 		String key = RedisService.key.USER_BENEFITS_KEY.getName();
 		if (type != null) {
@@ -118,12 +118,12 @@ public class UserBenefitsFrontController {
 			userBenefitsFrontViews = (List<UserBenefitsFrontView>) o;
 		}
 		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
-		setDataInfo(userBenefitsFrontViews, type, userIdList, false);
+		setDataInfo(userBenefitsFrontViews, type, userIdList, false, relationId);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(userBenefitsFrontViews);
 	}
 
 
-	public void setDataInfo(List<UserBenefitsFrontView> userBenefitsFrontViews, UserBenefits.Type type, List<Long> userIdList, Boolean isAll) {
+	public void setDataInfo(List<UserBenefitsFrontView> userBenefitsFrontViews, UserBenefits.Type type, List<Long> userIdList, Boolean isAll, Long relationId) {
 		for (UserBenefitsFrontView data : userBenefitsFrontViews) {
 			if (isAll || type == null) {
 				type = data.getType();
@@ -135,7 +135,7 @@ public class UserBenefitsFrontController {
 				//近一年是否已经使用过该权益
 				DateTime lastYear = DateUtil.offsetMonth(DateTime.now(), -12);
 				//是否已经使用过该权益
-				Integer comboCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, data.getType(), data.getGoodsId(), null, Constant.noOrderStatus, lastYear);
+				Integer comboCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, data.getType(), data.getGoodsId(), null, Constant.noOrderStatus, lastYear, null);
 				data.setIsComboUsed(comboCount > 0);
 
 				if (StrUtil.isNotBlank(data.getComboSkuIds())) {
@@ -164,7 +164,10 @@ public class UserBenefitsFrontController {
 						.field(RenewalView::getExpiryTime, DateTime.now()).op(Operator.GreaterThan)
 						.build());
 				fhCount = tickets.intValue();
-				Integer renewCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, data.getType(), data.getGoodsId(), data.getSkuId(), Constant.noOrderAllStatus, null);
+				GroupsRelation relation = relationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
+						.eq(GroupsRelation::getId, relationId)
+						.in(GroupsRelation::getUserId, userIdList));
+				Integer renewCount = userBenefitsOrderRecordMapper.selectUseComboRecordByUid(userIdList, data.getType(), data.getGoodsId(), data.getSkuId(), Constant.noOrderAllStatus, null, relation.getStartTime());
 				data.setRenewCount(renewCount);
 			}
 			if (type == UserBenefits.Type.CERT) {