订单详情接口调整

This commit is contained in:
2025-10-16 16:49:36 +08:00
parent 191eadbf77
commit 3fbb1383fd
4 changed files with 271 additions and 96 deletions

View File

@@ -87,12 +87,8 @@ public class TradeOrderController {
// 查询订单项 // 查询订单项
List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(id); List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(id);
// 拼接数据
// MemberUserRespDTO user = memberUserApi.getUser(order.getUserId()).getCheckedData();
// MemberUserRespDTO brokerageUser = order.getBrokerageUserId() != null ?
// memberUserApi.getUser(order.getBrokerageUserId()).getCheckedData() : null;
List<TradeOrderLogDO> orderLogs = tradeOrderLogService.getOrderLogListByOrderId(id); List<TradeOrderLogDO> orderLogs = tradeOrderLogService.getOrderLogListByOrderId(id);
return success(TradeOrderConvert.INSTANCE.convert(order, orderItems, orderLogs, null, null)); return success(TradeOrderConvert.INSTANCE.convert(order, orderItems, orderLogs));
} }
// // 获得交易订单统计 // // 获得交易订单统计

View File

@@ -6,30 +6,95 @@ import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
// 管理后台 - 交易订单的详情 Response VO // 管理后台 - 交易订单的详情 Response VO
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class TradeOrderDetailRespVO extends TradeOrderBaseVO { public class TradeOrderDetailRespVO {
//基本信息 //基本信息
private TradeOrderBaseInfo tradeOrderInfoBase; private TradeOrderBaseInfo tradeOrderInfoBase;
//商品信息 //商品信息
private TradeProductInfo tradeProductInfo; private TradeProductInfo tradeProductInfo;
//服务信息
private TradeServeInfo tradeServeInfo;
//扩展服务信息 //扩展服务信息
private String tradeExtendServeInfo; private TradeExtendServeInfo tradeExtendServeInfo;
//附加费信息 //附加费信息
private String tradeExtendCostInfo; private TradeExtendCostInfo tradeExtendCostInfo;
//配送信息
private TradeDeliveryInfo tradeDeliveryInfo;
/**
* 订单基本信息
*/
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
class TradeProductInfo{ public static class TradeOrderBaseInfo{
//订单id
private String id;
//订单编号
private String orderNo;
//订单状态
private String orderStatus;
//订单类型
private String orderType;
//订单类目
private String orderCategoryNameAndId;
//订单来源
private String orderTerminal;
//用户信息
private String userInfo;
//取消时间
private String cancelTime;
//取消原因
private String cancelReason;
//商家备注
private String merchantRemark;
//退款时间
private String refundTime;
//保障时间
private String propertyTime;
//保障状态
private String propertyStatus;
//订单总价
private Integer price;
//优惠金额
private Integer discountPrice;
//实付金额
private Integer payPrice;
//退款金额
private Integer refundPrice;
//实收金额
private Integer livePrice;
//支付方式(支付宝微信)
private String payType;
//支付渠道 (线上线下)
private String payChannelCode;
//交易流水号
private String payOrderId;
//支付时间
private LocalDateTime payTime;
//创建时间
private LocalDateTime createTime;
//完成时间
private LocalDateTime finishTime;
}
/**
* 商品信息
*/
@Data
@Accessors(chain = true)
public class TradeProductInfo{
//店铺log //店铺log
private String shopLogoUrl; private String shopLogoUrl;
@@ -76,86 +141,195 @@ public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
} }
/**
* 服务信息(殡葬专属字段)
*/
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
class TradeOrderBaseInfo{ public class TradeServeInfo{
//订单id // 内部存储动态属性的 Map键为属性名称值为属性值
private String id; private Map<String, Object> properties;
//订单编号 /**
private String orderNo; * 构造方法:初始化动态属性 Map
//订单状态 */
private String orderStatus; public TradeServeInfo() {
//订单类型 properties = new HashMap<>();
private String orderType; }
//订单类目
private String orderCategoryNameAndId;
//订单来源
private String orderTerminal;
//用户信息
private String userInfo;
//取消时间 /**
private LocalDateTime cancelTime; * setProperty 方法:添加或更新指定属性
//取消原因 *
private String cancelReason; * @param key 属性名称
//商家备注 * @param value 属性值
private String merchantRemark; */
public void setProperty(String key, Object value) {
if (key == null) {
throw new IllegalArgumentException("属性名称不能为 null");
}
properties.put(key, value);
}
//退款时间 /**
private String refundTime; * getProperty 方法:获取指定属性的值
*
* @param key 属性名称
* @return 属性值;若不存在则返回 null
*/
public Object getProperty(String key) {
if (key == null) {
return null;
}
return properties.get(key);
}
//保障时间 /**
private String propertyTime; * removeProperty 方法:删除指定属性
//保障状态 *
private String propertyStatus; * @param key 属性名称
* @return 删除的属性值;若属性不存在则返回 null
//订单总价 */
private String price; public Object removeProperty(String key) {
//优惠金额 if (key == null) {
private String discountPrice; return null;
//实付金额 }
private Integer payPrice; return properties.remove(key);
//退款金额 }
private String refundPrice;
//实收金额
private String livePrice;
//支付方式(支付宝微信)
private String payType;
//支付渠道 (线上线下)
private String payChannelCode;
//交易流水号
private String payOrderId;
//支付时间
private LocalDateTime payTime;
//创建时间
private LocalDateTime createTime;
//完成时间
private LocalDateTime finishTime;
/**
* getProperties 方法:返回所有动态属性的 Map
*
* @return 内部存储属性的 Map
*/
public Map<String, Object> getProperties() {
return properties;
}
} }
/**
* 服务信息(殡葬专属字段)
*/
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
class TradeDeliveryInfo{ public class TradeExtendServeInfo{
//承运方 // 内部存储动态属性的 Map键为属性名称值为属性值
private String logisticsName; private Map<String, Object> properties;
//送货方式 /**
private String logisticsType; * 构造方法:初始化动态属性 Map
//送货上门 */
private String logisticsNum; public TradeExtendServeInfo() {
//收货人 properties = new HashMap<>();
private String receiverName; }
//收货手机
private String receiverMobile; /**
//收货地址 * setProperty 方法:添加或更新指定属性
private String receiverDetailAddress; *
//快递详情 * @param key 属性名称
private String deliveryDetail; * @param value 属性值
*/
public void setProperty(String key, Object value) {
if (key == null) {
throw new IllegalArgumentException("属性名称不能为 null");
}
properties.put(key, value);
}
/**
* getProperty 方法:获取指定属性的值
*
* @param key 属性名称
* @return 属性值;若不存在则返回 null
*/
public Object getProperty(String key) {
if (key == null) {
return null;
}
return properties.get(key);
}
/**
* removeProperty 方法:删除指定属性
*
* @param key 属性名称
* @return 删除的属性值;若属性不存在则返回 null
*/
public Object removeProperty(String key) {
if (key == null) {
return null;
}
return properties.remove(key);
}
/**
* getProperties 方法:返回所有动态属性的 Map
*
* @return 内部存储属性的 Map
*/
public Map<String, Object> getProperties() {
return properties;
}
} }
/**
* 服务信息(殡葬专属字段)
*/
@Data
@Accessors(chain = true)
public class TradeExtendCostInfo{
// 内部存储动态属性的 Map键为属性名称值为属性值
private Map<String, Object> properties;
/**
* 构造方法:初始化动态属性 Map
*/
public TradeExtendCostInfo() {
properties = new HashMap<>();
}
/**
* setProperty 方法:添加或更新指定属性
*
* @param key 属性名称
* @param value 属性值
*/
public void setProperty(String key, Object value) {
if (key == null) {
throw new IllegalArgumentException("属性名称不能为 null");
}
properties.put(key, value);
}
/**
* getProperty 方法:获取指定属性的值
*
* @param key 属性名称
* @return 属性值;若不存在则返回 null
*/
public Object getProperty(String key) {
if (key == null) {
return null;
}
return properties.get(key);
}
/**
* removeProperty 方法:删除指定属性
*
* @param key 属性名称
* @return 删除的属性值;若属性不存在则返回 null
*/
public Object removeProperty(String key) {
if (key == null) {
return null;
}
return properties.remove(key);
}
/**
* getProperties 方法:返回所有动态属性的 Map
*
* @return 内部存储属性的 Map
*/
public Map<String, Object> getProperties() {
return properties;
}
}
} }

View File

@@ -73,6 +73,24 @@ public interface TradeOrderConvert {
TradeOrderPageRespVO convert(TradeOrderDO order, TradeOrderItemDO items); TradeOrderPageRespVO convert(TradeOrderDO order, TradeOrderItemDO items);
//endregion //endregion
//region 订单详情
default TradeOrderDetailRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> orderItems,List<TradeOrderLogDO> orderLogs) {
//
TradeOrderDetailRespVO orderVO = convert2(order, orderItems);
return orderVO;
}
@Mappings({
@Mapping(source = "order", target = "tradeOrderInfoBase"),
})
TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
@Mappings({
@Mapping(source = "items", target = "tradeOrderInfoBase"),
})
TradeOrderDetailRespVO convert3(TradeOrderItemDO items);
//endregion
@Mappings({ @Mappings({
@Mapping(target = "id", ignore = true), @Mapping(target = "id", ignore = true),
@Mapping(source = "userId", target = "userId"), @Mapping(source = "userId", target = "userId"),
@@ -126,23 +144,11 @@ public interface TradeOrderConvert {
// ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean); // ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean);
default TradeOrderDetailRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> orderItems,
List<TradeOrderLogDO> orderLogs,
MemberUserRespDTO user, MemberUserRespDTO brokerageUser) {
TradeOrderDetailRespVO orderVO = convert2(order, orderItems);
// // 处理收货地址
// orderVO.setReceiverAreaName(AreaUtils.format(order.getReceiverAreaId()));
// // 处理用户信息
// orderVO.setUser(convert(user));
// orderVO.setBrokerageUser(convert(brokerageUser));
// // 处理日志
// orderVO.setLogs(convertList03(orderLogs));
return orderVO;
}
List<TradeOrderDetailRespVO> convertList03(List<TradeOrderLogDO> orderLogs); List<TradeOrderDetailRespVO> convertList03(List<TradeOrderLogDO> orderLogs);
TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
MemberUserRespVO convert(MemberUserRespDTO bean); MemberUserRespVO convert(MemberUserRespDTO bean);

View File

@@ -1,6 +1,5 @@
package com.tashow.cloud.trade.dal.dataobject.order; package com.tashow.cloud.trade.dal.dataobject.order;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.tashow.cloud.common.enums.UserTypeEnum; import com.tashow.cloud.common.enums.UserTypeEnum;
@@ -13,7 +12,7 @@ import lombok.*;
* *
* @author 陈賝 * @author 陈賝
*/ */
@TableName("trade_order_log") @TableName("tz_trade_order_log")
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)