Browse Source

对接拼团数据1

master
wangfukang 3 weeks ago
parent
commit
9929a7eeee
  1. 95
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java

95
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java

@ -269,7 +269,7 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl<MallDeliveryOrderM
// 逐条 UPDATE(各订单 numberCode 不同,无法单条 IN 批量更新 numberCode)
for (String orderId : toUpdateOrderIds) {
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::getStatus, 3);
mallOrderService.update(oUw);
@ -438,13 +438,31 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl<MallDeliveryOrderM
List<String> orderIds = Arrays.asList(group.getGroupOrderIds().split(","));
//批量更新
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);
//更新缓存
for (String orderId : orderIds) {
MallOrder orderInner = mallOrderService.getById(orderId);
delivery.setGetTime(new Date());
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);
orderVO.setStatus(ORDER_STATUS_DELIVERING);
userPendingOrderCacheUtil.update(orderInner.getUserId(), orderVO);
@ -500,35 +518,56 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl<MallDeliveryOrderM
//如果是有groupId证明是面对面配送,需要更新所有子订单状态为完成
if(StringUtils.isNotBlank(delivery.getGroupId())){
MallOrderGroup group = mallOrderGroupMapper.selectById(delivery.getGroupId());
List<String> orderIdList = Arrays.asList(group.getGroupOrderIds().split(","));
//更新缓存
for (String orderId : orderIdList) {
MallOrder orderInner = mallOrderService.getById(orderId);
userPendingOrderCacheUtil.remove(orderInner.getUserId(),orderInner.getId());
}
LambdaUpdateWrapper<MallOrder> oqw = new LambdaUpdateWrapper<>();
oqw.in(MallOrder::getId, orderIdList).set(MallOrder::getStatus,ORDER_STATUS_DONE);
mallOrderService.update(oqw);
//更新优惠券已使用
LambdaUpdateWrapper<MallUserCoupon> oqwCoupon = new LambdaUpdateWrapper<>();
oqwCoupon.in(MallUserCoupon::getOrderId, orderIdList).set(MallUserCoupon::getStatus,2);
mallUserCouponService.update(oqwCoupon);
if(group.getIsFace() == 1){
List<String> orderIdList = Arrays.asList(group.getGroupOrderIds().split(","));
//更新缓存
for (String orderId : orderIdList) {
MallOrder orderInner = mallOrderService.getById(orderId);
if(orderInner.getStatus() == 4){
userPendingOrderCacheUtil.remove(orderInner.getUserId(),orderInner.getId());
}else{
orderIdList.remove(orderId);
}
}
LambdaUpdateWrapper<MallOrder> oqw = new LambdaUpdateWrapper<>();
oqw.in(MallOrder::getId, orderIdList).set(MallOrder::getStatus,ORDER_STATUS_DONE);
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(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
);
if(orderInner.getOtherOrder() != null){
isFantuan = false;
}
//优惠券变成已使用
mallUserCouponService.useCoupon(delivery.getOrderId());
}
}
isFantuan = false; // 已在上方逐单计数,跳过底部统一计数
//isFantuan = false; // 已在上方逐单计数,跳过底部统一计数
}else{
// 同步订单状态 -> 已完成
if (StringUtils.isNotBlank(delivery.getOrderId())) {

Loading…
Cancel
Save