|
|
@@ -229,7 +229,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
User user;
|
|
|
String payOpenId = null;
|
|
|
Long relationId = 0L;
|
|
|
-
|
|
|
+ GroupsRelation relation = null;
|
|
|
if (isNoLogin != null && isNoLogin) {
|
|
|
user = new User();
|
|
|
user.setId(0l);
|
|
|
@@ -242,7 +242,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
payOpenId = user.getOpenId();
|
|
|
if (goodsDon.getType() == 1) {
|
|
|
//获取座位
|
|
|
- relationId = getRelation(payRequest, sku);
|
|
|
+ relation = getRelation(payRequest, sku);
|
|
|
+ relationId = relation.getId();
|
|
|
} else {
|
|
|
|
|
|
}
|
|
|
@@ -341,6 +342,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
orderDon.setIsWebPay(payRequest.getIsWebPay());
|
|
|
orderDon.setSource(payRequest.getSource());
|
|
|
orderDon.setCouponExCode(payRequest.getCouponExCode());
|
|
|
+ if (relation != null && relation.getStatus() == GroupsRelation.Status.outside) {
|
|
|
+ orderDon.setIsOt(true);
|
|
|
+ }
|
|
|
if (isNoLogin == null || !isNoLogin) {
|
|
|
//虚拟商品订单,是否是分销订单
|
|
|
if (goodsDon.getType() == 1 || goodsDon.getType() == 2) {
|
|
|
@@ -813,6 +817,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
orderDon.setPreSkuId(tripsSkuId);
|
|
|
}
|
|
|
orderDon.setGoodsId(goodsDon.getId());
|
|
|
+ if (relation != null && relation.getStatus() == GroupsRelation.Status.outside) {
|
|
|
+ orderDon.setIsOt(true);
|
|
|
+ }
|
|
|
//虚拟商品订单,是否是分销订单
|
|
|
if (goodsDon.getType() == 1) {
|
|
|
UserDistributeShared userDistributeShared = userDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(UserDistributeShared.class).eq(UserDistributeShared::getUserId, user.getId()).last("limit 1"));
|
|
|
@@ -1942,7 +1949,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
/**
|
|
|
* 获取车位
|
|
|
*/
|
|
|
- public Long getRelation(OrderPayRequest payRequest, GoodsDonSku sku) {
|
|
|
+ public GroupsRelation getRelation(OrderPayRequest payRequest, GoodsDonSku sku) {
|
|
|
GroupsRelation relation;
|
|
|
Long payRelationId = payRequest.getRelationId();
|
|
|
Boolean isLoginPopularize = payRequest.getIsLoginPopularize();
|
|
|
@@ -1967,20 +1974,13 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
.gt(GroupsTrips::getAvailableNum, 0).last("limit 1")
|
|
|
.eq(GroupsTrips::getStatus, GroupsTrips.Status.validity)
|
|
|
.orderByAsc(GroupsTrips::getAvailableNum));
|
|
|
- //待发车
|
|
|
- if (groups == null) {
|
|
|
- groups = groupsMapper.selectOne( Wrappers.lambdaQuery(GroupsTrips.class)
|
|
|
- .eq(GroupsTrips::getSkuId, sku.getId())
|
|
|
- .gt(GroupsTrips::getAvailableNum, 0).last("limit 1")
|
|
|
- .eq(GroupsTrips::getStatus, GroupsTrips.Status.waiting)
|
|
|
- .orderByAsc(GroupsTrips::getAvailableNum));
|
|
|
- }
|
|
|
if (groups == null) {
|
|
|
//若是MidJourney、ChatGPT PLUS每个已满车队 硬塞5个座位
|
|
|
//主账号过期时间10天以外
|
|
|
if (sku.getNum() > 1 && Constant.AI_goodsIds.contains(sku.getGoodsId())) {
|
|
|
DateTime tenExpiry = DateUtil.offsetDay(DateUtil.beginOfDay(DateTime.now()), 10);
|
|
|
- Long groupsId = groupsRelationMapper.getOutSideGroupsTripsRelationByGoodsId(sku.getId(), tenExpiry, 5);
|
|
|
+ //不塞存在该用户的车队
|
|
|
+ Long groupsId = groupsRelationMapper.getOutSideGroupsTripsRelationByGoodsId(sku.getId(), tenExpiry, 5, userId);
|
|
|
if (groupsId != null) {
|
|
|
relation = groupsRelationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
|
|
|
.eq(GroupsRelation::getGroupsId, groupsId)
|
|
|
@@ -1999,12 +1999,24 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
redisService.del(RedisService.key.GROUPS_TRIPS_OUTSIDE_RELATION.getName() + groupsId);
|
|
|
}
|
|
|
}
|
|
|
+ groups = groupsMapper.selectById(groupsId);
|
|
|
}
|
|
|
}
|
|
|
if (relation == null) {
|
|
|
- relation = groupsFuncService.createNewGroupsTrips(sku);
|
|
|
+ //待发车
|
|
|
+ groups = groupsMapper.selectOne( Wrappers.lambdaQuery(GroupsTrips.class)
|
|
|
+ .eq(GroupsTrips::getSkuId, sku.getId())
|
|
|
+ .gt(GroupsTrips::getAvailableNum, 0).last("limit 1")
|
|
|
+ .eq(GroupsTrips::getStatus, GroupsTrips.Status.waiting)
|
|
|
+ .orderByAsc(GroupsTrips::getAvailableNum));
|
|
|
}
|
|
|
- } else {
|
|
|
+ }
|
|
|
+
|
|
|
+ if (groups == null) {
|
|
|
+ relation = groupsFuncService.createNewGroupsTrips(sku);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (relation == null) {
|
|
|
//寻找快满编车队进行占座
|
|
|
relation = groupsRelationMapper.selectRandomOneRelationByGroupsId(groups.getId());
|
|
|
if (relation == null) {
|
|
|
@@ -2022,7 +2034,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
groupsRelationMapper.updateById(relation);
|
|
|
redisService.del(RedisKey.GROUPS_RELATION_NUM_KEY + relation.getId());
|
|
|
- return relation.getId();
|
|
|
+ return relation;
|
|
|
}
|
|
|
|
|
|
/**
|