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 | 70 +++++++++++++++++++++++++++++++++-- 1 files changed, 66 insertions(+), 4 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 bcf11bf..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 @@ -71,6 +71,7 @@ import cn.lili.trigger.util.DelayQueueTools; import cn.lili.utils.COSUtil; import cn.lili.utils.CommonUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -98,6 +99,7 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; +import java.math.BigDecimal; import java.net.URLEncoder; import java.util.*; import java.util.concurrent.TimeUnit; @@ -198,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) { @@ -263,7 +266,7 @@ List<OrderSimpleVO> list = this.baseMapper.queryByParamsCount(queryWrapper); OrderCountVO orderCountVO = new OrderCountVO(); orderCountVO.setOrderNumCount(0); - orderCountVO.setOrderPriceCount(0.0); + orderCountVO.setOrderPriceCount(BigDecimal.ZERO); if (CollectionUtil.isEmpty(list)) { return orderCountVO; }else { @@ -273,9 +276,14 @@ continue; // 璺宠繃null鍏冪礌锛屾垨鏍规嵁涓氬姟澶勭悊 } orderCountVO.setOrderNumCount(orderCountVO.getOrderNumCount() + 1); - Double flowPrice = vo.getFlowPrice() != null ? vo.getFlowPrice() : 0.0; - orderCountVO.setOrderPriceCount(orderCountVO.getOrderPriceCount() + flowPrice);; + // 閲戦绱姞锛氱敤BigDecimal澶勭悊锛岄伩鍏嶇簿搴﹂棶棰� + BigDecimal flowPrice = vo.getFlowPrice() != null ? + BigDecimal.valueOf(vo.getFlowPrice()) : BigDecimal.ZERO; + + // 鐢˙igDecimal鐨刟dd鏂规硶绱姞 + BigDecimal totalPrice = orderCountVO.getOrderPriceCount().add(flowPrice); + orderCountVO.setOrderPriceCount(totalPrice); } } @@ -481,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 @@ -659,16 +679,52 @@ 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) public Order delivery(String orderSn, String logisticsNo, String logisticsId) { Order order = OperationalJudgment.judgment(this.getBySn(orderSn)); //濡傛灉璁㈠崟鏈彂璐э紝骞朵笖璁㈠崟鐘舵�佸�肩瓑浜庡緟鍙戣揣 + log.info("鑾峰彇鍒扮殑璁㈠崟淇℃伅涓簕}", JSON.toJSONString(order)); if (order.getDeliverStatus().equals(DeliverStatusEnum.UNDELIVERED.name()) && order.getOrderStatus().equals(OrderStatusEnum.UNDELIVERED.name())) { //鑾峰彇瀵瑰簲鐗╂祦 Logistics logistics = logisticsService.getById(logisticsId); + log.info("鑾峰彇鍒扮殑鐗╂祦淇℃伅id涓簕}", logisticsId); + log.info("鑾峰彇鍒扮殑鐗╂祦淇℃伅涓簕}", JSON.toJSONString(logistics)); if (logistics == null) { throw new ServiceException(ResultCode.ORDER_LOGISTICS_ERROR); } @@ -1335,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); @@ -1457,7 +1519,7 @@ // 鍒涘缓琛ㄥご Row header = sheet.createRow(0); String[] headers = {"涓昏鍗曠紪鍙�", "瀛愯鍗曠紪鍙�", "閫夎喘鍟嗗搧", "鍟嗗搧鏁伴噺", "鍟嗗搧ID", "鍟嗗搧鍗曚环", "璁㈠崟搴斾粯閲戦", - "杩愯垂", "浼樻儬鎬婚噾棰�", "骞冲彴浼樻儬", "鍟嗗浼樻儬", "鍟嗗鏀逛环", "鏀粯鏂瑰紡","鍗栧鍚嶇О", "鏀朵欢浜�", "鏀朵欢浜烘墜鏈哄彿", + "杩愯垂", "浼樻儬鎬婚噾棰�", "骞冲彴浼樻儬", "鍟嗗浼樻儬", "鍟嗗鏀逛环", "鏀粯鏂瑰紡","涔板鍚嶇О", "鏀朵欢浜�", "鏀朵欢浜烘墜鏈哄彿", "鐪�", "甯�", "鍖�", "琛楅亾", "璇︾粏鍦板潃", "涔板鐣欒█", "璁㈠崟鎻愪氦鏃堕棿", "鏀粯瀹屾垚鏃堕棿", "鏉ユ簮", "璁㈠崟鐘舵��", "璁㈠崟绫诲瀷", "鍞悗鐘舵��", "鍙栨秷鍘熷洜", "鍙戣揣鏃堕棿", "瀹屾垚鏃堕棿", "搴楅摵"}; -- Gitblit v1.8.0