trade:完善订单详情

This commit is contained in:
YunaiV
2023-10-02 10:34:52 +08:00
parent f8b4a08fae
commit 0c1f5c9582
13 changed files with 103 additions and 33 deletions

View File

@ -9,6 +9,8 @@ import cn.iocoder.yudao.module.trade.controller.admin.order.vo.*;
import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
import cn.iocoder.yudao.module.trade.service.order.TradeOrderLogService;
import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService;
import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -37,6 +39,8 @@ public class TradeOrderController {
private TradeOrderUpdateService tradeOrderUpdateService; private TradeOrderUpdateService tradeOrderUpdateService;
@Resource @Resource
private TradeOrderQueryService tradeOrderQueryService; private TradeOrderQueryService tradeOrderQueryService;
@Resource
private TradeOrderLogService tradeOrderLogService;
@Resource @Resource
private MemberUserApi memberUserApi; private MemberUserApi memberUserApi;
@ -70,13 +74,15 @@ public class TradeOrderController {
if (order == null) { if (order == null) {
return success(null); return success(null);
} }
// 查询订单项 // 查询订单项
List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(id); List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(id);
// TODO @puhui999orderLog
// 拼接数据 // 拼接数据
MemberUserRespDTO user = memberUserApi.getUser(order.getUserId()); MemberUserRespDTO user = memberUserApi.getUser(order.getUserId());
return success(TradeOrderConvert.INSTANCE.convert(order, orderItems, user)); MemberUserRespDTO brokerageUser = order.getBrokerageUserId() != null ?
memberUserApi.getUser(order.getBrokerageUserId()) : null;
List<TradeOrderLogDO> orderLogs = tradeOrderLogService.getOrderLogListByOrderId(id);
return success(TradeOrderConvert.INSTANCE.convert(order, orderItems, orderLogs, user, brokerageUser));
} }
@GetMapping("/get-express-track-list") @GetMapping("/get-express-track-list")

View File

@ -141,4 +141,8 @@ public class TradeOrderBaseVO {
@Schema(description = "积分抵扣的金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") @Schema(description = "积分抵扣的金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
private Integer pointPrice; private Integer pointPrice;
@Schema(description = "VIP 减免金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
private Integer vipPrice;
} }

View File

@ -12,24 +12,28 @@ import java.util.List;
@Data @Data
public class TradeOrderDetailRespVO extends TradeOrderBaseVO { public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
@Schema(description = "收件人地区名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "上海 上海市 普陀区")
private String receiverAreaName;
/** /**
* 订单项列表 * 订单项列表
*/ */
private List<Item> items; private List<Item> items;
/** /**
* 用户信息 * 下单用户信息
*/ */
private MemberUserRespVO user; private MemberUserRespVO user;
/**
* 推广用户信息
*/
private MemberUserRespVO brokerageUser;
/** /**
* TODO 订单操作日志, 先模拟一波 * 操作日志列表
*/ */
private List<OrderLog> logs; private List<OrderLog> logs;
@Schema(description = "收件人地区名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "上海 上海市 普陀区")
private String receiverAreaName;
@Schema(description = "管理后台 - 交易订单的操作日志") @Schema(description = "管理后台 - 交易订单的操作日志")
@Data @Data
public static class OrderLog { public static class OrderLog {

View File

@ -74,8 +74,6 @@ public class AppTradeOrderController {
return success(true); return success(true);
} }
// TODO @芋艿:如果拼团活动、秒杀活动、砍价活动时,是不是要额外在返回活动之类的信息;
// TODO @puhui999需要的
@GetMapping("/get-detail") @GetMapping("/get-detail")
@Operation(summary = "获得交易订单") @Operation(summary = "获得交易订单")
@Parameter(name = "id", description = "交易订单编号") @Parameter(name = "id", description = "交易订单编号")
@ -91,7 +89,6 @@ public class AppTradeOrderController {
// 查询物流公司 // 查询物流公司
DeliveryExpressDO express = order.getLogisticsId() != null && order.getLogisticsId() > 0 ? DeliveryExpressDO express = order.getLogisticsId() != null && order.getLogisticsId() > 0 ?
deliveryExpressService.getDeliveryExpress(order.getLogisticsId()) : null; deliveryExpressService.getDeliveryExpress(order.getLogisticsId()) : null;
// TODO @puhui999如果门店自提信息的拼接
// 最终组合 // 最终组合
return success(TradeOrderConvert.INSTANCE.convert02(order, orderItems, tradeOrderProperties, express)); return success(TradeOrderConvert.INSTANCE.convert02(order, orderItems, tradeOrderProperties, express));
} }

View File

@ -29,6 +29,7 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum;
import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO; import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
@ -42,7 +43,6 @@ import org.mapstruct.Mapping;
import org.mapstruct.Mappings; import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -115,7 +115,6 @@ public interface TradeOrderConvert {
return createReqDTO; return createReqDTO;
} }
// TODO 芋艿:可简化
default PageResult<TradeOrderPageItemRespVO> convertPage(PageResult<TradeOrderDO> pageResult, default PageResult<TradeOrderPageItemRespVO> convertPage(PageResult<TradeOrderDO> pageResult,
List<TradeOrderItemDO> orderItems, List<TradeOrderItemDO> orderItems,
Map<Long, MemberUserRespDTO> memberUserMap) { Map<Long, MemberUserRespDTO> memberUserMap) {
@ -138,24 +137,19 @@ public interface TradeOrderConvert {
ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean); ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean);
default TradeOrderDetailRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> orderItems, default TradeOrderDetailRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> orderItems,
MemberUserRespDTO user) { List<TradeOrderLogDO> orderLogs,
MemberUserRespDTO user, MemberUserRespDTO brokerageUser) {
TradeOrderDetailRespVO orderVO = convert2(order, orderItems); TradeOrderDetailRespVO orderVO = convert2(order, orderItems);
// 处理收货地址 // 处理收货地址
orderVO.setReceiverAreaName(AreaUtils.format(order.getReceiverAreaId())); orderVO.setReceiverAreaName(AreaUtils.format(order.getReceiverAreaId()));
// 处理用户信息 // 处理用户信息
orderVO.setUser(convert(user)); orderVO.setUser(convert(user));
// TODO puhui999模拟订单操作日志 orderVO.setBrokerageUser(convert(brokerageUser));
ArrayList<TradeOrderDetailRespVO.OrderLog> orderLogs = new ArrayList<>(); // 处理日志
for (int i = 0; i < 6; i++) { orderVO.setLogs(convertList03(orderLogs));
TradeOrderDetailRespVO.OrderLog orderLog = new TradeOrderDetailRespVO.OrderLog();
orderLog.setContent("订单操作" + i);
orderLog.setCreateTime(LocalDateTime.now());
orderLog.setUserType(i % 2 == 0 ? 2 : 1);
orderLogs.add(orderLog);
}
orderVO.setLogs(orderLogs);
return orderVO; return orderVO;
} }
List<TradeOrderDetailRespVO.OrderLog> convertList03(List<TradeOrderLogDO> orderLogs);
TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items); TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
@ -176,7 +170,6 @@ public interface TradeOrderConvert {
AppProductPropertyValueDetailRespVO convert02(ProductPropertyValueDetailRespDTO bean); AppProductPropertyValueDetailRespVO convert02(ProductPropertyValueDetailRespDTO bean);
// TODO 芋艿:可简化
default AppTradeOrderDetailRespVO convert02(TradeOrderDO order, List<TradeOrderItemDO> orderItems, default AppTradeOrderDetailRespVO convert02(TradeOrderDO order, List<TradeOrderItemDO> orderItems,
TradeOrderProperties tradeOrderProperties, TradeOrderProperties tradeOrderProperties,
DeliveryExpressDO express) { DeliveryExpressDO express) {
@ -244,9 +237,6 @@ public interface TradeOrderConvert {
if (address != null) { if (address != null) {
respVO.getAddress().setAreaName(AreaUtils.format(address.getAreaId())); respVO.getAddress().setAreaName(AreaUtils.format(address.getAreaId()));
} }
// TODO 芋艿:积分的接入;
respVO.setUsedPoint(1);
respVO.setTotalPoint(100);
return respVO; return respVO;
} }

View File

@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.trade.convert.order;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface TradeOrderLogConvert {
TradeOrderLogConvert INSTANCE = Mappers.getMapper(TradeOrderLogConvert.class);
TradeOrderLogDO convert(TradeOrderLogCreateReqBO createReqBO);
}

View File

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.trade.dal.mysql.order;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TradeOrderLogMapper extends BaseMapperX<TradeOrderLogDO> {
default List<TradeOrderLogDO> selectListByOrderId(Long orderId) {
return selectList(TradeOrderLogDO::getOrderId, orderId);
}
}

View File

@ -88,8 +88,9 @@ public class TradeOrderLogAspect {
.setOperateType(orderLog.operateType().getType()).setContent(content); .setOperateType(orderLog.operateType().getType()).setContent(content);
orderLogService.createOrderLog(createBO); orderLogService.createOrderLog(createBO);
} catch (Exception ex) { } catch (Exception ex) {
// todo 芋艿:清理上下文
log.error("[doAfterReturning][orderLog({}) 订单日志错误]", toJsonString(orderLog), ex); log.error("[doAfterReturning][orderLog({}) 订单日志错误]", toJsonString(orderLog), ex);
} finally {
clear();
} }
} }
@ -127,4 +128,13 @@ public class TradeOrderLogAspect {
USER_TYPE.set(userType); USER_TYPE.set(userType);
} }
private static void clear() {
USER_ID.remove();
USER_TYPE.remove();
ORDER_ID.remove();
BEFORE_STATUS.remove();
AFTER_STATUS.remove();
EXTS.remove();
}
} }

View File

@ -25,6 +25,9 @@ public class TradeMessageServiceImpl implements TradeMessageService {
@Override @Override
public void sendMessageWhenDeliveryOrder(TradeOrderMessageWhenDeliveryOrderReqBO reqBO) { public void sendMessageWhenDeliveryOrder(TradeOrderMessageWhenDeliveryOrderReqBO reqBO) {
if (true) {
return;
}
// 1、构造消息 // 1、构造消息
Map<String, Object> msgMap = new HashMap<>(2); Map<String, Object> msgMap = new HashMap<>(2);
msgMap.put("orderId", reqBO.getOrderId()); msgMap.put("orderId", reqBO.getOrderId());

View File

@ -1,8 +1,11 @@
package cn.iocoder.yudao.module.trade.service.order; package cn.iocoder.yudao.module.trade.service.order;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO; import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import java.util.List;
/** /**
* 交易下单日志 Service 接口 * 交易下单日志 Service 接口
* *
@ -21,4 +24,12 @@ public interface TradeOrderLogService {
@Async @Async
void createOrderLog(TradeOrderLogCreateReqBO logDTO); void createOrderLog(TradeOrderLogCreateReqBO logDTO);
/**
* 获得交易订单日志列表
*
* @param orderId 订单编号
* @return 交易订单日志列表
*/
List<TradeOrderLogDO> getOrderLogListByOrderId(Long orderId);
} }

View File

@ -1,8 +1,14 @@
package cn.iocoder.yudao.module.trade.service.order; package cn.iocoder.yudao.module.trade.service.order;
import cn.iocoder.yudao.module.trade.convert.order.TradeOrderLogConvert;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO;
import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderLogMapper;
import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO; import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/** /**
* 交易下单日志 Service 实现类 * 交易下单日志 Service 实现类
* *
@ -12,10 +18,17 @@ import org.springframework.stereotype.Service;
@Service @Service
public class TradeOrderLogServiceImpl implements TradeOrderLogService { public class TradeOrderLogServiceImpl implements TradeOrderLogService {
@Resource
private TradeOrderLogMapper tradeOrderLogMapper;
@Override @Override
public void createOrderLog(TradeOrderLogCreateReqBO createReqBO) { public void createOrderLog(TradeOrderLogCreateReqBO createReqBO) {
// TODO 芋艿:存储还没搞 tradeOrderLogMapper.insert(TradeOrderLogConvert.INSTANCE.convert(createReqBO));
System.out.println(); }
@Override
public List<TradeOrderLogDO> getOrderLogListByOrderId(Long orderId) {
return tradeOrderLogMapper.selectListByOrderId(orderId);
} }
} }

View File

@ -211,8 +211,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
return order; return order;
} }
// TODO @puhui999订单超时自动取消
private TradeOrderDO createTradeOrder(Long userId, String clientIp, AppTradeOrderCreateReqVO createReqVO, private TradeOrderDO createTradeOrder(Long userId, String clientIp, AppTradeOrderCreateReqVO createReqVO,
TradePriceCalculateRespBO calculateRespBO) { TradePriceCalculateRespBO calculateRespBO) {
TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(userId, clientIp, createReqVO, calculateRespBO); TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(userId, clientIp, createReqVO, calculateRespBO);

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.service.order.bo.logger;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -42,10 +43,12 @@ public class TradeOrderLogCreateReqBO {
/** /**
* 操作类型 * 操作类型
*/ */
@NotNull(message = "操作类型不能为空")
private Integer operateType; private Integer operateType;
/** /**
* 操作明细 * 操作明细
*/ */
@NotEmpty(message = "操作明细不能为空")
private String content; private String content;
} }