소스 검색

fix gpt车位数

zoujiajian 2 년 전
부모
커밋
ec5462e327

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/GroupsRelation.java

@@ -96,6 +96,13 @@ public class GroupsRelation extends BaseEntity {
     @DbIgnore
     private Integer groupsAvailParkingNum;
 
+    /**
+     * 车队最多可用车位数
+     */
+    @TableField(exist = false)
+    @DbIgnore
+    private Integer maxNum;
+
 
     @AllArgsConstructor
     @Getter

+ 2 - 0
netflix-dao/src/main/resources/mapper/GroupRelationMapper.xml

@@ -225,6 +225,7 @@
           and (select count(*)
                from groups_relation gr
                where gr.num > #{skuNum}
+                 and gr.num <= #{maxNum}
                  and gr.groups_id = gt.id
                  and gr.user_id
             != 0)
@@ -295,6 +296,7 @@
                         and gr.num <= #{maxNum}) as s2
               from groups_trips gt
               where gt.sku_id = #{skuId}
+                and gt.status = 'validity'
                 and gt.available_parking_num != 0) t
         where t.s1 >= s2
     </select>

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/exchange/impl/ExchangeCodeServiceImpl.java

@@ -394,7 +394,7 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 			Long skuId = sku.getId();
 			Long groupsId = relation.getGroupsId();
 			//校验指定平台规格的 目前车队的可停车位数
-			groupRelationFrontService.checkGroupsAvailParkingNum(skuId, groupsId, relation.getGroupsAvailParkingNum());
+			groupRelationFrontService.checkGroupsAvailParkingNum(skuId, groupsId, relation.getGroupsAvailParkingNum(), relation.getMaxNum());
 
 			groupRelationFrontService.adjustGroupsParkingTime(relation.getId(), sku);
 		} catch (Exception e) {

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

@@ -1978,7 +1978,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		Long skuId = sku.getId();
 		Long groupsId = relation.getGroupsId();
 		//校验指定平台规格的 目前车队的可停车位数
-		groupRelationFrontService.checkGroupsAvailParkingNum(skuId, groupsId, relation.getGroupsAvailParkingNum());
+		groupRelationFrontService.checkGroupsAvailParkingNum(skuId, groupsId, relation.getGroupsAvailParkingNum(), relation.getMaxNum());
 		return relation;
 	}
 

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/relation/GroupRelationFrontService.java

@@ -40,7 +40,7 @@ public interface GroupRelationFrontService {
 	String getAiVerifyCode(Long userId, Long relationId) throws Exception;
 
 
-	void checkGroupsAvailParkingNum(Long skuId, Long groupsId, Integer availableParkingNum);
+	void checkGroupsAvailParkingNum(Long skuId, Long groupsId, Integer availableParkingNum, Integer maxNum);
 
 	/**
 	 * 调整指定规格车队下次可 停用车位数的时间

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

@@ -311,6 +311,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 	@Override
 	public GroupsRelation getRelation(Long payRelationId, Long userId, GoodsDonSku sku) {
 		GroupsRelation relation = null;
+		Integer maxNum = sku.getNum();
 		if (payRelationId != null && payRelationId > 0) {
 			relation = groupsRelationMapper.selectById(payRelationId);
 			if (relation == null) {
@@ -324,7 +325,6 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 			GroupsTrips groups = null;
 			//ChatGpt Plus、Midjourney非独立规格 上车先获取硬塞座位 硬塞5个座位
 			//主账号过期时间25天以外
-			Integer maxNum = sku.getNum();
 			if (sku.getNum() > 1 && Constant.AI_goodsIds.contains(sku.getGoodsId())) {
 				Integer extraNum = 5;
 				if (sku.getId() == 178l) {
@@ -398,6 +398,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 			}
 			//车队目前可用停车数
 			relation.setGroupsAvailParkingNum(groups.getAvailableParkingNum());
+			relation.setMaxNum(maxNum);
 		}
 		return relation;
 	}
@@ -432,7 +433,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 
 
 	@Override
-	public void checkGroupsAvailParkingNum(Long skuId, Long groupsId, Integer availableParkingNum) {
+	public void checkGroupsAvailParkingNum(Long skuId, Long groupsId, Integer availableParkingNum, Integer maxNum) {
 		//GPT10人月付、4人月付
 		if (skuId == 161l || skuId == 178l) {
 			//为0时,不参与限制
@@ -443,7 +444,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 			//目前上车人数
 			Integer currentParkingNum = groupsRelationMapper.selectCount(Wrappers.lambdaQuery(GroupsRelation.class)
 					.eq(GroupsRelation::getGroupsId, groupsId)
-					.ne(GroupsRelation::getUserId, 0));
+					.ne(GroupsRelation::getUserId, 0)
+					.le(GroupsRelation::getNum, maxNum));
 			if (currentParkingNum > availableParkingNum) {
 				throw BusinessRuntimeException.getInstance("系统繁忙,请重试...");
 			}
@@ -467,14 +469,15 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 			if (skuId == 178l) {
 				extraNum = 2;
 			}
-			Integer skuNum = sku.getNum();
-			if (availableParkingNum >= skuNum + extraNum) {
+			Integer maxNum = sku.getNum() + extraNum;
+			if (availableParkingNum >= maxNum) {
 				return;
 			}
 			//目前上车人数
 			Integer currentParkingNum = groupsRelationMapper.selectCount(Wrappers.lambdaQuery(GroupsRelation.class)
 					.eq(GroupsRelation::getGroupsId, groupsId)
-					.ne(GroupsRelation::getUserId, 0));
+					.ne(GroupsRelation::getUserId, 0)
+					.le(GroupsRelation::getNum, maxNum));
 			if (currentParkingNum >= availableParkingNum) {
 				//锁住
 				DateTime parkingTime = DateUtil.offsetDay(DateTime.now(), 1);