From 9f92aa108c24a67fabe80977cede0e0352318681 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期三, 10 九月 2025 19:11:17 +0800 Subject: [PATCH] 扫码修改地址 --- framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 4d9dd28..9d38114 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -200,6 +200,7 @@ private RedisTemplate<Object,Object> redisTemplate; private final static String LOCK_ORDER_NO_MQ="lock_order_no_mq:"; + private final static String LOCK_EDIT_ORDER_ADDRESS="lock_edit_order_address:"; @Override @Transactional(rollbackFor = Exception.class) public void intoDB(TradeDTO tradeDTO) { @@ -488,6 +489,18 @@ //鏌ヨ璁㈠崟鍜岃嚜璁㈠崟锛岀劧鍚庡啓鍏o杩斿洖 return new OrderDetailVO(order, orderItems, orderLogs, receipt); } + @Override + public OrderDetailVO queryEditAddressDetail(String orderSn) { + Order order = this.getBySn(orderSn); + if (order == null) { + throw new ServiceException(ResultCode.ORDER_NOT_EXIST); + } + //鏌ヨ璁㈠崟椤逛俊鎭� + List<OrderItem> orderItems = orderItemService.getByOrderSn(orderSn); + + //鏌ヨ璁㈠崟鍜岃嚜璁㈠崟锛岀劧鍚庡啓鍏o杩斿洖 + return new OrderDetailVO(order, orderItems, null, null); + } @Override @Transactional @@ -666,7 +679,40 @@ return order; } + @Override + @SystemLogPoint(description = "淇敼璁㈠崟", customerLog = "'璁㈠崟[' + #orderSn + ']鏀惰揣淇℃伅淇敼锛屼慨鏀逛负'+#memberAddressDTO.consigneeDetail") + @Transactional(rollbackFor = Exception.class) + public Order updateAddressConsignee(String orderSn, MemberAddressDTO memberAddressDTO) { + Order order = this.getBySn(orderSn); + if (order == null) { + throw new ServiceException(ResultCode.ORDER_NOT_EXIST); + } + //闄愬埗30绉掑彧鑳借姹備竴娆¢伩鍏嶅嚭鐜伴噸鏂版彁浜ら棶棰� + Boolean b = redisTemplate.opsForValue().setIfAbsent(LOCK_EDIT_ORDER_ADDRESS + orderSn, orderSn,30, TimeUnit.SECONDS); + if ( Boolean.FALSE.equals(b)){ + throw new ServiceException("璇峰湪30绉掑悗閲嶈瘯"); + } + String modifyAddressFlag = order.getModifyAddressFlag(); + if (StringUtils.isNotBlank(modifyAddressFlag)) { + throw new ServiceException("褰撳墠璁㈠崟宸茬粡琚鍙�"); + } + QueryWrapper<Order> wrapper = new QueryWrapper<>(); + wrapper.eq("id", order.getId()); + // 浣跨敤 last 鏂规硶鎷兼帴 FOR UPDATE 璇彞 + wrapper.last("FOR UPDATE"); + baseMapper.selectOne(wrapper); + //瑕佽褰曚箣鍓嶇殑鏀惰揣鍦板潃锛屾墍浠ラ渶瑕佷互浠g爜鏂瑰紡杩涜璋冪敤 涓嶉噰鐢ㄦ敞瑙� + String message = "璁㈠崟[" + orderSn + "]鏀惰揣淇℃伅淇敼锛岀敱[" +order.getConsigneeAddressPath()+ order.getConsigneeDetail() + "]淇敼涓篬" + memberAddressDTO.getConsigneeAddressPath()+ memberAddressDTO.getConsigneeDetail() + "]"; + //璁板綍璁㈠崟鎿嶄綔鏃ュ織 + BeanUtil.copyProperties(memberAddressDTO, order); + order.setModifyAddressFlag(ModifyAddressEnums.USED.name()); + this.updateById(order); + OrderLog orderLog = new OrderLog(orderSn, UserContext.getCurrentUser().getId(), UserContext.getCurrentUser().getRole().getRole(), + UserContext.getCurrentUser().getUsername(), message); + orderLogService.save(orderLog); + return order; + } @Override @OrderLogPoint(description = "'璁㈠崟['+#orderSn+']鍙戣揣锛屽彂璐у崟鍙穂'+#logisticsNo+']'", orderSn = "#orderSn") @Transactional(rollbackFor = Exception.class) @@ -1345,6 +1391,12 @@ this.update(new LambdaUpdateWrapper<Order>() .eq(Order::getSn, orderSn) .set(Order::getOrderStatus, orderStatusEnum.name())); + //淇敼璁㈠崟鍟嗗搧 todo 鎵�鏈夌殑璁㈠崟闇�瑕佸鏍稿悗鎵嶈兘閫�娆� + orderItemService.update(new LambdaUpdateWrapper<OrderItem>() + .eq(OrderItem::getOrderSn,orderSn) + .set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.NOT_APPLIED.name()) + .set(OrderItem::getCommentStatus,CommentStatusEnum.UNFINISHED.name()) + .set(OrderItem::getComplainStatus, OrderComplaintStatusEnum.NO_APPLY.name())); //淇敼璁㈠崟 OrderMessage orderMessage = new OrderMessage(); orderMessage.setNewStatus(orderStatusEnum); -- Gitblit v1.8.0