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) // 逐条 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())) {

Loading…
Cancel
Save