|
|
@ -269,7 +269,7 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl<MallDeliveryOrderM |
|
|
// 逐条 UPDATE(各订单 numberCode 不同,无法单条 IN 批量更新 numberCode)
|
|
|
// 逐条 UPDATE(各订单 numberCode 不同,无法单条 IN 批量更新 numberCode)
|
|
|
for (String orderId : toUpdateOrderIds) { |
|
|
for (String orderId : toUpdateOrderIds) { |
|
|
LambdaUpdateWrapper<MallOrder> oUw = new LambdaUpdateWrapper<>(); |
|
|
LambdaUpdateWrapper<MallOrder> oUw = new LambdaUpdateWrapper<>(); |
|
|
oUw.eq(MallOrder::getId, orderId) |
|
|
oUw.eq(MallOrder::getId, orderId).eq(MallOrder::getStatus, 2) |
|
|
.set(MallOrder::getNumberCode, orderSeqMap.get(orderId)) |
|
|
.set(MallOrder::getNumberCode, orderSeqMap.get(orderId)) |
|
|
.set(MallOrder::getStatus, 3); |
|
|
.set(MallOrder::getStatus, 3); |
|
|
mallOrderService.update(oUw); |
|
|
mallOrderService.update(oUw); |
|
|
@ -438,13 +438,31 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl<MallDeliveryOrderM |
|
|
List<String> orderIds = Arrays.asList(group.getGroupOrderIds().split(",")); |
|
|
List<String> orderIds = Arrays.asList(group.getGroupOrderIds().split(",")); |
|
|
//批量更新
|
|
|
//批量更新
|
|
|
LambdaUpdateWrapper<MallOrder> oUw = new LambdaUpdateWrapper<>(); |
|
|
LambdaUpdateWrapper<MallOrder> oUw = new LambdaUpdateWrapper<>(); |
|
|
oUw.in(MallOrder::getId, orderIds).set(MallOrder::getStatus, ORDER_STATUS_DELIVERING); |
|
|
oUw.in(MallOrder::getId, orderIds) |
|
|
|
|
|
.eq(MallOrder::getStatus, 3) |
|
|
|
|
|
.set(MallOrder::getStatus, ORDER_STATUS_DELIVERING); |
|
|
mallOrderService.update(oUw); |
|
|
mallOrderService.update(oUw); |
|
|
//更新缓存
|
|
|
//更新缓存
|
|
|
for (String orderId : orderIds) { |
|
|
for (String orderId : orderIds) { |
|
|
MallOrder orderInner = mallOrderService.getById(orderId); |
|
|
MallOrder orderInner = mallOrderService.getById(orderId); |
|
|
delivery.setGetTime(new Date()); |
|
|
delivery.setGetTime(new Date()); |
|
|
delivery.setStatus(STATUS_DELIVERING); |
|
|
delivery.setStatus(STATUS_DELIVERING); |
|
|
|
|
|
if(orderInner.getStatus() == ORDER_STATUS_DELIVERING || orderInner.getStatus() == 3){ |
|
|
|
|
|
MallOrderVO orderVO = buildVO(orderInner, null, null, delivery); |
|
|
|
|
|
orderVO.setStatus(ORDER_STATUS_DELIVERING); |
|
|
|
|
|
userPendingOrderCacheUtil.update(orderInner.getUserId(), orderVO); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}else{ |
|
|
|
|
|
// 同步订单状态 -> 配送中
|
|
|
|
|
|
if (StringUtils.isNotBlank(delivery.getOrderId())) { |
|
|
|
|
|
LambdaUpdateWrapper<MallOrder> oUw = new LambdaUpdateWrapper<>(); |
|
|
|
|
|
oUw.eq(MallOrder::getId, delivery.getOrderId()) |
|
|
|
|
|
.set(MallOrder::getStatus, ORDER_STATUS_DELIVERING); |
|
|
|
|
|
mallOrderService.update(oUw); |
|
|
|
|
|
MallOrder orderInner = mallOrderService.getById(delivery.getOrderId()); |
|
|
|
|
|
delivery.setGetTime(new Date()); |
|
|
|
|
|
delivery.setStatus(STATUS_DELIVERING); |
|
|
MallOrderVO orderVO = buildVO(orderInner, null, null, delivery); |
|
|
MallOrderVO orderVO = buildVO(orderInner, null, null, delivery); |
|
|
orderVO.setStatus(ORDER_STATUS_DELIVERING); |
|
|
orderVO.setStatus(ORDER_STATUS_DELIVERING); |
|
|
userPendingOrderCacheUtil.update(orderInner.getUserId(), orderVO); |
|
|
userPendingOrderCacheUtil.update(orderInner.getUserId(), orderVO); |
|
|
@ -500,35 +518,56 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl<MallDeliveryOrderM |
|
|
//如果是有groupId证明是面对面配送,需要更新所有子订单状态为完成
|
|
|
//如果是有groupId证明是面对面配送,需要更新所有子订单状态为完成
|
|
|
if(StringUtils.isNotBlank(delivery.getGroupId())){ |
|
|
if(StringUtils.isNotBlank(delivery.getGroupId())){ |
|
|
MallOrderGroup group = mallOrderGroupMapper.selectById(delivery.getGroupId()); |
|
|
MallOrderGroup group = mallOrderGroupMapper.selectById(delivery.getGroupId()); |
|
|
List<String> orderIdList = Arrays.asList(group.getGroupOrderIds().split(",")); |
|
|
if(group.getIsFace() == 1){ |
|
|
//更新缓存
|
|
|
List<String> orderIdList = Arrays.asList(group.getGroupOrderIds().split(",")); |
|
|
for (String orderId : orderIdList) { |
|
|
//更新缓存
|
|
|
MallOrder orderInner = mallOrderService.getById(orderId); |
|
|
for (String orderId : orderIdList) { |
|
|
userPendingOrderCacheUtil.remove(orderInner.getUserId(),orderInner.getId()); |
|
|
MallOrder orderInner = mallOrderService.getById(orderId); |
|
|
} |
|
|
if(orderInner.getStatus() == 4){ |
|
|
LambdaUpdateWrapper<MallOrder> oqw = new LambdaUpdateWrapper<>(); |
|
|
userPendingOrderCacheUtil.remove(orderInner.getUserId(),orderInner.getId()); |
|
|
oqw.in(MallOrder::getId, orderIdList).set(MallOrder::getStatus,ORDER_STATUS_DONE); |
|
|
}else{ |
|
|
mallOrderService.update(oqw); |
|
|
orderIdList.remove(orderId); |
|
|
|
|
|
} |
|
|
//更新优惠券已使用
|
|
|
} |
|
|
LambdaUpdateWrapper<MallUserCoupon> oqwCoupon = new LambdaUpdateWrapper<>(); |
|
|
LambdaUpdateWrapper<MallOrder> oqw = new LambdaUpdateWrapper<>(); |
|
|
oqwCoupon.in(MallUserCoupon::getOrderId, orderIdList).set(MallUserCoupon::getStatus,2); |
|
|
oqw.in(MallOrder::getId, orderIdList).set(MallOrder::getStatus,ORDER_STATUS_DONE); |
|
|
mallUserCouponService.update(oqwCoupon); |
|
|
mallOrderService.update(oqw); |
|
|
|
|
|
|
|
|
|
|
|
//更新优惠券已使用
|
|
|
|
|
|
LambdaUpdateWrapper<MallUserCoupon> oqwCoupon = new LambdaUpdateWrapper<>(); |
|
|
|
|
|
oqwCoupon.in(MallUserCoupon::getOrderId, orderIdList).set(MallUserCoupon::getStatus,2); |
|
|
|
|
|
mallUserCouponService.update(oqwCoupon); |
|
|
|
|
|
|
|
|
|
|
|
// 面对面拼团:每个子订单单独计数(Key 按 regionId 隔离),避免多单只计 1 次
|
|
|
|
|
|
if(freeOrderCacheUtil.exists(delivery.getRegionId())){ |
|
|
|
|
|
String regionId = delivery.getRegionId(); |
|
|
|
|
|
String orderNumber = String.valueOf(freeOrderCacheUtil.get(regionId).getOrderNumber()); |
|
|
|
|
|
for (int i = 0; i < orderIdList.size(); i++) { |
|
|
|
|
|
stringRedisTemplate.execute( |
|
|
|
|
|
redisLuaScripts.getIncrementScript(), |
|
|
|
|
|
Arrays.asList("free_order:count:" + regionId, "free_order:flag:" + regionId), |
|
|
|
|
|
orderNumber |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}else{ |
|
|
|
|
|
if (StringUtils.isNotBlank(delivery.getOrderId())) { |
|
|
|
|
|
LambdaUpdateWrapper<MallOrder> oUw = new LambdaUpdateWrapper<>(); |
|
|
|
|
|
oUw.eq(MallOrder::getId, delivery.getOrderId()) |
|
|
|
|
|
.set(MallOrder::getStatus, ORDER_STATUS_DONE); |
|
|
|
|
|
mallOrderService.update(oUw); |
|
|
|
|
|
//更新缓存
|
|
|
|
|
|
MallOrder orderInner = mallOrderService.getById(delivery.getOrderId()); |
|
|
|
|
|
userPendingOrderCacheUtil.remove(orderInner.getUserId(),orderInner.getId()); |
|
|
|
|
|
|
|
|
// 面对面拼团:每个子订单单独计数(Key 按 regionId 隔离),避免多单只计 1 次
|
|
|
if(orderInner.getOtherOrder() != null){ |
|
|
if(freeOrderCacheUtil.exists(delivery.getRegionId())){ |
|
|
isFantuan = false; |
|
|
String regionId = delivery.getRegionId(); |
|
|
} |
|
|
String orderNumber = String.valueOf(freeOrderCacheUtil.get(regionId).getOrderNumber()); |
|
|
//优惠券变成已使用
|
|
|
for (int i = 0; i < orderIdList.size(); i++) { |
|
|
mallUserCouponService.useCoupon(delivery.getOrderId()); |
|
|
stringRedisTemplate.execute( |
|
|
|
|
|
redisLuaScripts.getIncrementScript(), |
|
|
|
|
|
Arrays.asList("free_order:count:" + regionId, "free_order:flag:" + regionId), |
|
|
|
|
|
orderNumber |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
isFantuan = false; // 已在上方逐单计数,跳过底部统一计数
|
|
|
//isFantuan = false; // 已在上方逐单计数,跳过底部统一计数
|
|
|
|
|
|
|
|
|
}else{ |
|
|
}else{ |
|
|
// 同步订单状态 -> 已完成
|
|
|
// 同步订单状态 -> 已完成
|
|
|
if (StringUtils.isNotBlank(delivery.getOrderId())) { |
|
|
if (StringUtils.isNotBlank(delivery.getOrderId())) { |
|
|
|