Commit 0c1f5c9582f36f00796f251d0c88e48ba7e1d09e

Authored by YunaiV
1 parent f8b4a08f

trade:完善订单详情

Showing 13 changed files with 103 additions and 33 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.java
... ... @@ -9,6 +9,8 @@ import cn.iocoder.yudao.module.trade.controller.admin.order.vo.*;
9 9 import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
10 10 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
11 11 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
  12 +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
  13 +import cn.iocoder.yudao.module.trade.service.order.TradeOrderLogService;
12 14 import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService;
13 15 import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService;
14 16 import io.swagger.v3.oas.annotations.Operation;
... ... @@ -37,6 +39,8 @@ public class TradeOrderController {
37 39 private TradeOrderUpdateService tradeOrderUpdateService;
38 40 @Resource
39 41 private TradeOrderQueryService tradeOrderQueryService;
  42 + @Resource
  43 + private TradeOrderLogService tradeOrderLogService;
40 44  
41 45 @Resource
42 46 private MemberUserApi memberUserApi;
... ... @@ -70,13 +74,15 @@ public class TradeOrderController {
70 74 if (order == null) {
71 75 return success(null);
72 76 }
73   -
74 77 // 查询订单项
75 78 List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(id);
76   - // TODO @puhui999:orderLog
  79 +
77 80 // 拼接数据
78 81 MemberUserRespDTO user = memberUserApi.getUser(order.getUserId());
79   - return success(TradeOrderConvert.INSTANCE.convert(order, orderItems, user));
  82 + MemberUserRespDTO brokerageUser = order.getBrokerageUserId() != null ?
  83 + memberUserApi.getUser(order.getBrokerageUserId()) : null;
  84 + List<TradeOrderLogDO> orderLogs = tradeOrderLogService.getOrderLogListByOrderId(id);
  85 + return success(TradeOrderConvert.INSTANCE.convert(order, orderItems, orderLogs, user, brokerageUser));
80 86 }
81 87  
82 88 @GetMapping("/get-express-track-list")
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderBaseVO.java
... ... @@ -141,4 +141,8 @@ public class TradeOrderBaseVO {
141 141  
142 142 @Schema(description = "积分抵扣的金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
143 143 private Integer pointPrice;
  144 +
  145 + @Schema(description = "VIP 减免金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
  146 + private Integer vipPrice;
  147 +
144 148 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderDetailRespVO.java
... ... @@ -12,24 +12,28 @@ import java.util.List;
12 12 @Data
13 13 public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
14 14  
15   - @Schema(description = "收件人地区名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "上海 上海市 普陀区")
16   - private String receiverAreaName;
17   -
18 15 /**
19 16 * 订单项列表
20 17 */
21 18 private List<Item> items;
22 19  
23 20 /**
24   - * 用户信息
  21 + * 下单用户信息
25 22 */
26 23 private MemberUserRespVO user;
  24 + /**
  25 + * 推广用户信息
  26 + */
  27 + private MemberUserRespVO brokerageUser;
27 28  
28 29 /**
29   - * TODO 订单操作日志, 先模拟一波
  30 + * 操作日志列表
30 31 */
31 32 private List<OrderLog> logs;
32 33  
  34 + @Schema(description = "收件人地区名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "上海 上海市 普陀区")
  35 + private String receiverAreaName;
  36 +
33 37 @Schema(description = "管理后台 - 交易订单的操作日志")
34 38 @Data
35 39 public static class OrderLog {
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java
... ... @@ -74,8 +74,6 @@ public class AppTradeOrderController {
74 74 return success(true);
75 75 }
76 76  
77   - // TODO @芋艿:如果拼团活动、秒杀活动、砍价活动时,是不是要额外在返回活动之类的信息;
78   - // TODO @puhui999:需要的
79 77 @GetMapping("/get-detail")
80 78 @Operation(summary = "获得交易订单")
81 79 @Parameter(name = "id", description = "交易订单编号")
... ... @@ -91,7 +89,6 @@ public class AppTradeOrderController {
91 89 // 查询物流公司
92 90 DeliveryExpressDO express = order.getLogisticsId() != null && order.getLogisticsId() > 0 ?
93 91 deliveryExpressService.getDeliveryExpress(order.getLogisticsId()) : null;
94   - // TODO @puhui999:如果门店自提,信息的拼接;
95 92 // 最终组合
96 93 return success(TradeOrderConvert.INSTANCE.convert02(order, orderItems, tradeOrderProperties, express));
97 94 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
... ... @@ -29,6 +29,7 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO;
29 29 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
30 30 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
31 31 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
  32 +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
32 33 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum;
33 34 import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
34 35 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
... ... @@ -42,7 +43,6 @@ import org.mapstruct.Mapping;
42 43 import org.mapstruct.Mappings;
43 44 import org.mapstruct.factory.Mappers;
44 45  
45   -import java.time.LocalDateTime;
46 46 import java.util.ArrayList;
47 47 import java.util.List;
48 48 import java.util.Map;
... ... @@ -115,7 +115,6 @@ public interface TradeOrderConvert {
115 115 return createReqDTO;
116 116 }
117 117  
118   - // TODO 芋艿:可简化
119 118 default PageResult<TradeOrderPageItemRespVO> convertPage(PageResult<TradeOrderDO> pageResult,
120 119 List<TradeOrderItemDO> orderItems,
121 120 Map<Long, MemberUserRespDTO> memberUserMap) {
... ... @@ -138,24 +137,19 @@ public interface TradeOrderConvert {
138 137 ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean);
139 138  
140 139 default TradeOrderDetailRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> orderItems,
141   - MemberUserRespDTO user) {
  140 + List<TradeOrderLogDO> orderLogs,
  141 + MemberUserRespDTO user, MemberUserRespDTO brokerageUser) {
142 142 TradeOrderDetailRespVO orderVO = convert2(order, orderItems);
143 143 // 处理收货地址
144 144 orderVO.setReceiverAreaName(AreaUtils.format(order.getReceiverAreaId()));
145 145 // 处理用户信息
146 146 orderVO.setUser(convert(user));
147   - // TODO puhui999:模拟订单操作日志
148   - ArrayList<TradeOrderDetailRespVO.OrderLog> orderLogs = new ArrayList<>();
149   - for (int i = 0; i < 6; i++) {
150   - TradeOrderDetailRespVO.OrderLog orderLog = new TradeOrderDetailRespVO.OrderLog();
151   - orderLog.setContent("订单操作" + i);
152   - orderLog.setCreateTime(LocalDateTime.now());
153   - orderLog.setUserType(i % 2 == 0 ? 2 : 1);
154   - orderLogs.add(orderLog);
155   - }
156   - orderVO.setLogs(orderLogs);
  147 + orderVO.setBrokerageUser(convert(brokerageUser));
  148 + // 处理日志
  149 + orderVO.setLogs(convertList03(orderLogs));
157 150 return orderVO;
158 151 }
  152 + List<TradeOrderDetailRespVO.OrderLog> convertList03(List<TradeOrderLogDO> orderLogs);
159 153  
160 154 TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
161 155  
... ... @@ -176,7 +170,6 @@ public interface TradeOrderConvert {
176 170  
177 171 AppProductPropertyValueDetailRespVO convert02(ProductPropertyValueDetailRespDTO bean);
178 172  
179   - // TODO 芋艿:可简化
180 173 default AppTradeOrderDetailRespVO convert02(TradeOrderDO order, List<TradeOrderItemDO> orderItems,
181 174 TradeOrderProperties tradeOrderProperties,
182 175 DeliveryExpressDO express) {
... ... @@ -244,9 +237,6 @@ public interface TradeOrderConvert {
244 237 if (address != null) {
245 238 respVO.getAddress().setAreaName(AreaUtils.format(address.getAreaId()));
246 239 }
247   - // TODO 芋艿:积分的接入;
248   - respVO.setUsedPoint(1);
249   - respVO.setTotalPoint(100);
250 240 return respVO;
251 241 }
252 242  
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderLogConvert.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.convert.order;
  2 +
  3 +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
  4 +import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO;
  5 +import org.mapstruct.Mapper;
  6 +import org.mapstruct.factory.Mappers;
  7 +
  8 +@Mapper
  9 +public interface TradeOrderLogConvert {
  10 +
  11 + TradeOrderLogConvert INSTANCE = Mappers.getMapper(TradeOrderLogConvert.class);
  12 +
  13 + TradeOrderLogDO convert(TradeOrderLogCreateReqBO createReqBO);
  14 +
  15 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderLogMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.dal.mysql.order;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  4 +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
  5 +import org.apache.ibatis.annotations.Mapper;
  6 +
  7 +import java.util.List;
  8 +
  9 +@Mapper
  10 +public interface TradeOrderLogMapper extends BaseMapperX<TradeOrderLogDO> {
  11 +
  12 + default List<TradeOrderLogDO> selectListByOrderId(Long orderId) {
  13 + return selectList(TradeOrderLogDO::getOrderId, orderId);
  14 + }
  15 +
  16 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/core/aop/TradeOrderLogAspect.java
... ... @@ -88,8 +88,9 @@ public class TradeOrderLogAspect {
88 88 .setOperateType(orderLog.operateType().getType()).setContent(content);
89 89 orderLogService.createOrderLog(createBO);
90 90 } catch (Exception ex) {
91   - // todo 芋艿:清理上下文
92 91 log.error("[doAfterReturning][orderLog({}) 订单日志错误]", toJsonString(orderLog), ex);
  92 + } finally {
  93 + clear();
93 94 }
94 95 }
95 96  
... ... @@ -127,4 +128,13 @@ public class TradeOrderLogAspect {
127 128 USER_TYPE.set(userType);
128 129 }
129 130  
  131 + private static void clear() {
  132 + USER_ID.remove();
  133 + USER_TYPE.remove();
  134 + ORDER_ID.remove();
  135 + BEFORE_STATUS.remove();
  136 + AFTER_STATUS.remove();
  137 + EXTS.remove();
  138 + }
  139 +
130 140 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/message/TradeMessageServiceImpl.java
... ... @@ -25,6 +25,9 @@ public class TradeMessageServiceImpl implements TradeMessageService {
25 25  
26 26 @Override
27 27 public void sendMessageWhenDeliveryOrder(TradeOrderMessageWhenDeliveryOrderReqBO reqBO) {
  28 + if (true) {
  29 + return;
  30 + }
28 31 // 1、构造消息
29 32 Map<String, Object> msgMap = new HashMap<>(2);
30 33 msgMap.put("orderId", reqBO.getOrderId());
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderLogService.java
1 1 package cn.iocoder.yudao.module.trade.service.order;
2 2  
  3 +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
3 4 import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO;
4 5 import org.springframework.scheduling.annotation.Async;
5 6  
  7 +import java.util.List;
  8 +
6 9 /**
7 10 * 交易下单日志 Service 接口
8 11 *
... ... @@ -21,4 +24,12 @@ public interface TradeOrderLogService {
21 24 @Async
22 25 void createOrderLog(TradeOrderLogCreateReqBO logDTO);
23 26  
  27 + /**
  28 + * 获得交易订单日志列表
  29 + *
  30 + * @param orderId 订单编号
  31 + * @return 交易订单日志列表
  32 + */
  33 + List<TradeOrderLogDO> getOrderLogListByOrderId(Long orderId);
  34 +
24 35 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderLogServiceImpl.java
1 1 package cn.iocoder.yudao.module.trade.service.order;
2 2  
  3 +import cn.iocoder.yudao.module.trade.convert.order.TradeOrderLogConvert;
  4 +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
  5 +import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderLogMapper;
3 6 import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO;
4 7 import org.springframework.stereotype.Service;
5 8  
  9 +import javax.annotation.Resource;
  10 +import java.util.List;
  11 +
6 12 /**
7 13 * 交易下单日志 Service 实现类
8 14 *
... ... @@ -12,10 +18,17 @@ import org.springframework.stereotype.Service;
12 18 @Service
13 19 public class TradeOrderLogServiceImpl implements TradeOrderLogService {
14 20  
  21 + @Resource
  22 + private TradeOrderLogMapper tradeOrderLogMapper;
  23 +
15 24 @Override
16 25 public void createOrderLog(TradeOrderLogCreateReqBO createReqBO) {
17   - // TODO 芋艿:存储还没搞
18   - System.out.println();
  26 + tradeOrderLogMapper.insert(TradeOrderLogConvert.INSTANCE.convert(createReqBO));
  27 + }
  28 +
  29 + @Override
  30 + public List<TradeOrderLogDO> getOrderLogListByOrderId(Long orderId) {
  31 + return tradeOrderLogMapper.selectListByOrderId(orderId);
19 32 }
20 33  
21 34 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
... ... @@ -211,8 +211,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
211 211 return order;
212 212 }
213 213  
214   - // TODO @puhui999:订单超时,自动取消;
215   -
216 214 private TradeOrderDO createTradeOrder(Long userId, String clientIp, AppTradeOrderCreateReqVO createReqVO,
217 215 TradePriceCalculateRespBO calculateRespBO) {
218 216 TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(userId, clientIp, createReqVO, calculateRespBO);
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/bo/logger/TradeOrderLogCreateReqBO.java
... ... @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.service.order.bo.logger;
2 2  
3 3 import lombok.Data;
4 4  
  5 +import javax.validation.constraints.NotEmpty;
5 6 import javax.validation.constraints.NotNull;
6 7  
7 8 /**
... ... @@ -42,10 +43,12 @@ public class TradeOrderLogCreateReqBO {
42 43 /**
43 44 * 操作类型
44 45 */
  46 + @NotNull(message = "操作类型不能为空")
45 47 private Integer operateType;
46 48 /**
47 49 * 操作明细
48 50 */
  51 + @NotEmpty(message = "操作明细不能为空")
49 52 private String content;
50 53  
51 54 }
... ...