|
|
@@ -316,9 +316,13 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
//ChatGpt Plus、Midjourney非独立规格 上车先获取硬塞座位 硬塞5个座位
|
|
|
//主账号过期时间25天以外
|
|
|
if (sku.getNum() > 1 && Constant.AI_goodsIds.contains(sku.getGoodsId())) {
|
|
|
+ Integer extraNum = 5;
|
|
|
+ if (sku.getId() == 178l) {
|
|
|
+ extraNum = 2;
|
|
|
+ }
|
|
|
DateTime time = DateUtil.offsetDay(DateUtil.beginOfDay(DateTime.now()), 25);
|
|
|
//不塞存在该用户的车队
|
|
|
- Long groupsId = groupsRelationMapper.getOutSideGroupsTripsRelationByGoodsId(sku.getId(), time, 5, userId, sku.getNum());
|
|
|
+ Long groupsId = groupsRelationMapper.getOutSideGroupsTripsRelationByGoodsId(sku.getId(), time, extraNum, userId, sku.getNum());
|
|
|
if (groupsId != null) {
|
|
|
relation = groupsRelationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
|
|
|
.eq(GroupsRelation::getGroupsId, groupsId)
|
|
|
@@ -350,6 +354,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
groups = groupsMapper.selectOne(Wrappers.lambdaQuery(GroupsTrips.class)
|
|
|
.eq(GroupsTrips::getSkuId, sku.getId())
|
|
|
.gt(GroupsTrips::getAvailableNum, 0).last("limit 1")
|
|
|
+ .apply("(available_parking_num = 0 or available_parking_num > (select count(*) from groups_relation gr where gr.groups_id = groups_trips.id and user_id != 0))")
|
|
|
.eq(GroupsTrips::getStatus, GroupsTrips.Status.validity)
|
|
|
.orderByAsc(GroupsTrips::getAvailableNum));
|
|
|
if (groups == null) {
|
|
|
@@ -358,6 +363,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
.eq(GroupsTrips::getSkuId, sku.getId())
|
|
|
.gt(GroupsTrips::getAvailableNum, 0).last("limit 1")
|
|
|
.eq(GroupsTrips::getStatus, GroupsTrips.Status.waiting)
|
|
|
+ .apply("(available_parking_num = 0 or available_parking_num > (select count(*) from groups_relation gr where gr.groups_id = groups_trips.id and user_id != 0))")
|
|
|
.orderByAsc(GroupsTrips::getAvailableNum));
|
|
|
}
|
|
|
//新增空车队
|
|
|
@@ -376,6 +382,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //车队目前可用停车数
|
|
|
+ relation.setGroupsAvailParkingNum(groups.getAvailableParkingNum());
|
|
|
}
|
|
|
return relation;
|
|
|
}
|
|
|
@@ -407,4 +415,94 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
}
|
|
|
return code.trim();
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void checkGroupsAvailParkingNum(Long skuId, Long groupsId, Integer availableParkingNum) {
|
|
|
+ //GPT10人月付、4人月付
|
|
|
+ if (skuId == 161l || skuId == 178l) {
|
|
|
+ //为0时,不参与限制
|
|
|
+ if (availableParkingNum == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //目前车队可用停车数
|
|
|
+ //目前上车人数
|
|
|
+ Integer currentParkingNum = groupsRelationMapper.selectCount(Wrappers.lambdaQuery(GroupsRelation.class)
|
|
|
+ .eq(GroupsRelation::getGroupsId, groupsId)
|
|
|
+ .ne(GroupsRelation::getUserId, 0));
|
|
|
+ if (currentParkingNum > availableParkingNum) {
|
|
|
+ throw BusinessRuntimeException.getInstance("系统繁忙,请重试...");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void adjustGroupsParkingTime(Long relationId, GoodsDonSku sku) {
|
|
|
+ Long skuId = sku.getId();
|
|
|
+ //更新GPT Plus10人、4人月付车队状态
|
|
|
+ if (skuId == 161l || skuId == 178l) {
|
|
|
+ GroupsRelation relation = groupsRelationMapper.selectById(relationId);
|
|
|
+ Long groupsId = relation.getGroupsId();
|
|
|
+ GroupsTrips groupsTrips = groupsMapper.selectById(groupsId);
|
|
|
+ Integer availableParkingNum = groupsTrips.getAvailableParkingNum();
|
|
|
+ //为0时 不参与限制
|
|
|
+ if (availableParkingNum == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Integer extraNum = 5;
|
|
|
+ if (skuId == 178l) {
|
|
|
+ extraNum = 2;
|
|
|
+ }
|
|
|
+ Integer skuNum = sku.getNum();
|
|
|
+ if (availableParkingNum >= skuNum + extraNum) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //目前上车人数
|
|
|
+ Integer currentParkingNum = groupsRelationMapper.selectCount(Wrappers.lambdaQuery(GroupsRelation.class)
|
|
|
+ .eq(GroupsRelation::getGroupsId, groupsId)
|
|
|
+ .ne(GroupsRelation::getUserId, 0));
|
|
|
+ if (currentParkingNum >= availableParkingNum) {
|
|
|
+ //锁住
|
|
|
+ DateTime parkingTime = DateUtil.offsetDay(DateTime.now(), 1);
|
|
|
+
|
|
|
+ groupsMapper.update(null, Wrappers.lambdaUpdate(GroupsTrips.class)
|
|
|
+ .eq(GroupsTrips::getId, groupsTrips.getId())
|
|
|
+ .set(GroupsTrips::getParkingTime, parkingTime)
|
|
|
+ .isNull(GroupsTrips::getParkingTime));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setGroupsTripsParkingTimeEmpty(GoodsDonSku sku, Long relationId) {
|
|
|
+ Long skuId = sku.getId();
|
|
|
+ if (skuId == 161l || skuId == 178l) {
|
|
|
+ GroupsRelation relation = groupsRelationMapper.selectById(relationId);
|
|
|
+ Long groupsId = relation.getGroupsId();
|
|
|
+ GroupsTrips groupsTrips = groupsMapper.selectById(groupsId);
|
|
|
+ Integer availableParkingNum = groupsTrips.getAvailableParkingNum();
|
|
|
+ if (groupsTrips.getParkingTime() == null || availableParkingNum == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Integer extraNum = 5;
|
|
|
+ if (skuId == 178l) {
|
|
|
+ extraNum = 2;
|
|
|
+ }
|
|
|
+ Integer skuNum = sku.getNum();
|
|
|
+ if (availableParkingNum >= skuNum + extraNum) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //目前上车人数
|
|
|
+ Integer currentParkingNum = groupsRelationMapper.selectCount(Wrappers.lambdaQuery(GroupsRelation.class)
|
|
|
+ .eq(GroupsRelation::getGroupsId, groupsId)
|
|
|
+ .ne(GroupsRelation::getUserId, 0));
|
|
|
+ if (currentParkingNum < availableParkingNum) {
|
|
|
+
|
|
|
+ groupsMapper.update(null, Wrappers.lambdaUpdate(GroupsTrips.class)
|
|
|
+ .eq(GroupsTrips::getId, groupsTrips.getId())
|
|
|
+ .set(GroupsTrips::getParkingTime, null)
|
|
|
+ .isNotNull(GroupsTrips::getParkingTime));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|