调整分支
This commit is contained in:
@@ -4,7 +4,6 @@ package com.tashow.cloud.trade.controller.admin.aftersale.vo;
|
||||
|
||||
import com.tashow.cloud.trade.controller.admin.aftersale.vo.log.AfterSaleLogRespVO;
|
||||
import com.tashow.cloud.trade.controller.admin.base.member.user.MemberUserRespVO;
|
||||
import com.tashow.cloud.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO;
|
||||
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderBaseVO;
|
||||
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderItemBaseVO;
|
||||
import lombok.Data;
|
||||
@@ -43,11 +42,6 @@ public class AfterSaleDetailRespVO extends AfterSaleBaseVO {
|
||||
@Data
|
||||
public static class OrderItem extends TradeOrderItemBaseVO {
|
||||
|
||||
/**
|
||||
* 属性数组
|
||||
*/
|
||||
private List<ProductPropertyValueDetailRespVO> properties;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -63,16 +63,11 @@ public class TradeOrderController {
|
||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||
return success(PageResult.empty());
|
||||
}
|
||||
|
||||
// // 查询用户信息
|
||||
// Set<Long> userIds = CollUtil.unionDistinct(convertList(pageResult.getList(), TradeOrderDO::getUserId),
|
||||
// convertList(pageResult.getList(), TradeOrderDO::getBrokerageUserId, Objects::nonNull));
|
||||
// Map<Long, MemberUserRespDTO> userMap = memberUserApi.getUserMap(userIds);
|
||||
// 查询订单项
|
||||
List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(
|
||||
convertSet(pageResult.getList(), TradeOrderDO::getId));
|
||||
// 最终组合
|
||||
return success(TradeOrderConvert.INSTANCE.convertPage(pageResult, orderItems, null));
|
||||
return success(TradeOrderConvert.INSTANCE.convertPage(pageResult, orderItems));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -58,7 +58,7 @@ public class TradeOrderBaseVO {
|
||||
private String unit;
|
||||
|
||||
//预约时间
|
||||
private String orderTime;
|
||||
private String subTime;
|
||||
//服务地址
|
||||
private String serveAddress;
|
||||
// 用户备注 - 必填,示例:你猜
|
||||
|
||||
@@ -6,6 +6,7 @@ import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
// 管理后台 - 交易订单的详情 Response VO
|
||||
@Data
|
||||
@@ -14,15 +15,66 @@ public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
|
||||
|
||||
//基本信息
|
||||
private TradeOrderBaseInfo tradeOrderInfoBase;
|
||||
//配送信息
|
||||
private TradeDeliveryInfo tradeDeliveryInfo;
|
||||
//商品信息
|
||||
private String tradeProductInfo;
|
||||
private TradeProductInfo tradeProductInfo;
|
||||
//扩展服务信息
|
||||
private String tradeExtendServeInfo;
|
||||
//附加费信息
|
||||
private String tradeExtendCostInfo;
|
||||
|
||||
//配送信息
|
||||
private TradeDeliveryInfo tradeDeliveryInfo;
|
||||
|
||||
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
class TradeProductInfo{
|
||||
|
||||
//店铺log
|
||||
private String shopLogoUrl;
|
||||
//店铺名称
|
||||
private String shopName;
|
||||
|
||||
//商品id
|
||||
private Long spuId;
|
||||
//skuid
|
||||
private Long skuId;
|
||||
|
||||
//商品规格图
|
||||
private String skuPicUrl;
|
||||
//商品名称
|
||||
private String spuName;
|
||||
//商品规格
|
||||
private String skuName;
|
||||
//购买数量
|
||||
private Integer count;
|
||||
//商品单价
|
||||
private Integer price;
|
||||
//商品单位
|
||||
private String unit;
|
||||
//到手价(单价 - 优惠)
|
||||
private Integer handedPrice;
|
||||
//成本价
|
||||
private Integer expensePrice;
|
||||
//保障
|
||||
private List<String> properties;
|
||||
//服务内容
|
||||
private String serveContent;
|
||||
|
||||
//商品总价
|
||||
private Integer totalPrice;
|
||||
//优惠金额
|
||||
private Integer discountPrice;
|
||||
//实付金额
|
||||
private Integer payPrice;
|
||||
|
||||
//累计退款金额
|
||||
private Integer refundPrice;
|
||||
//累计退款数量
|
||||
private Integer refundCount;
|
||||
|
||||
}
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@@ -35,58 +87,52 @@ public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
|
||||
private String orderStatus;
|
||||
//订单类型
|
||||
private String orderType;
|
||||
//订单类目
|
||||
private String orderCategoryNameAndId;
|
||||
//订单来源
|
||||
private String orderTerminal;
|
||||
//创建时间
|
||||
private LocalDateTime createTime;
|
||||
//完成时间
|
||||
private LocalDateTime finishTime;
|
||||
//用户信息
|
||||
private String userInfo;
|
||||
|
||||
//取消时间
|
||||
private LocalDateTime cancelTime;
|
||||
//订单金额
|
||||
private String payPrice;
|
||||
//取消原因
|
||||
private String cancelReason;
|
||||
//商家备注
|
||||
private String merchantRemark;
|
||||
|
||||
//退款时间
|
||||
private String refundTime;
|
||||
|
||||
//保障时间
|
||||
private String propertyTime;
|
||||
//保障状态
|
||||
private String propertyStatus;
|
||||
|
||||
//订单总价
|
||||
private String price;
|
||||
//优惠金额
|
||||
private String discountPrice;
|
||||
//实付金额
|
||||
private Integer payPrice;
|
||||
//退款金额
|
||||
private String refundPrice;
|
||||
//实收金额
|
||||
private String actualPrice;
|
||||
//支付方式
|
||||
private String payChannel;
|
||||
private String livePrice;
|
||||
|
||||
//支付方式(支付宝微信)
|
||||
private String payType;
|
||||
//支付渠道 (线上线下)
|
||||
private String payChannelCode;
|
||||
//交易流水号
|
||||
private String payOrderId;
|
||||
//支付时间
|
||||
private LocalDateTime payTime;
|
||||
// 退款状态 - 必填,示例:待审核/待退款/已退款/已拒绝
|
||||
private String refundStatus;
|
||||
// 售后编号 - 必填,示例:450878
|
||||
private String afterSaleCode;
|
||||
// 售后类型 - 必填,示例:仅退款/退货退款/可扩展增加使用
|
||||
private String afterSaleType;
|
||||
// 退款类型 - 必填,示例:订单退款/差价退款/运费退款/可扩展增加
|
||||
private String refundType;
|
||||
// 退款原因 - 必填,示例:不想要了
|
||||
private String refundReason;
|
||||
// 退款说明 - 必填,示例:这里是用户填写的退款描述
|
||||
private String refundRemark;
|
||||
// 退款金额 - 必填
|
||||
private Integer refundAmount;
|
||||
// 申请人 - 必填,示例:用户/商家/平台+ID
|
||||
private String applicant;
|
||||
// 审核人 - 必填,示例:姓名+ID
|
||||
private String auditor;
|
||||
// 审核时间 - 必填,示例:2025-07-01 12:00:00
|
||||
private LocalDateTime auditTime;
|
||||
// 退款方式 - 必填,示例:系统自动退款
|
||||
private String refundMethod;
|
||||
// 退款至 - 必填,示例:原支付方式返还
|
||||
private String refundTo;
|
||||
// 关闭时间 - 必填,示例:2025-07-01 12:00:00
|
||||
private LocalDateTime closeTime;
|
||||
//用户昵称 示例:钱多多
|
||||
private String userNickname;
|
||||
//用户ID 示例:666
|
||||
private Long userId;
|
||||
|
||||
//创建时间
|
||||
private LocalDateTime createTime;
|
||||
//完成时间
|
||||
private LocalDateTime finishTime;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,11 +2,8 @@ package com.tashow.cloud.trade.controller.app.order.vo.item;
|
||||
|
||||
// 移除Swagger相关导入
|
||||
|
||||
import com.tashow.cloud.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
// 用户 App - 订单交易项 Response VO
|
||||
@Data
|
||||
public class AppTradeOrderItemRespVO {
|
||||
@@ -25,11 +22,6 @@ public class AppTradeOrderItemRespVO {
|
||||
// 商品 SKU 编号 - 必填,示例:1
|
||||
private Long skuId;
|
||||
|
||||
/**
|
||||
* 属性数组
|
||||
*/
|
||||
private List<AppProductPropertyValueDetailRespVO> properties;
|
||||
|
||||
// 商品图片 - 必填,示例:https://www.iocoder.cn/1.png
|
||||
private String picUrl;
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ import com.tashow.cloud.trade.controller.admin.base.member.user.MemberUserRespVO
|
||||
import com.tashow.cloud.trade.controller.admin.order.vo.*;
|
||||
import com.tashow.cloud.trade.controller.app.order.vo.*;
|
||||
import com.tashow.cloud.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO;
|
||||
import com.tashow.cloud.trade.convert.order.dto.CombinationRecordCreateReqDTO;
|
||||
import com.tashow.cloud.trade.convert.order.dto.ProductSkuRespDTO;
|
||||
import com.tashow.cloud.trade.convert.order.dto.ProductSkuUpdateStockReqDTO;
|
||||
import com.tashow.cloud.trade.convert.order.dto.ProductSpuRespDTO;
|
||||
@@ -50,6 +49,30 @@ public interface TradeOrderConvert {
|
||||
|
||||
TradeOrderConvert INSTANCE = Mappers.getMapper(TradeOrderConvert.class);
|
||||
|
||||
//region 分页结果
|
||||
|
||||
default PageResult<TradeOrderPageRespVO> convertPage(PageResult<TradeOrderDO> pageResult, List<TradeOrderItemDO> orderItems) {
|
||||
Map<Long, TradeOrderItemDO> orderItemMap = convertMap(orderItems, TradeOrderItemDO::getOrderId);
|
||||
// 转化 List
|
||||
List<TradeOrderPageRespVO> orderVOs = CollectionUtils.convertList(pageResult.getList(), order -> {
|
||||
TradeOrderItemDO itemDO = orderItemMap.get(order.getId());
|
||||
TradeOrderPageRespVO orderVO = convert(order, itemDO);
|
||||
orderVO.setHandedPrice(itemDO.getPrice()-itemDO.getDiscountPrice());
|
||||
return orderVO;
|
||||
});
|
||||
return new PageResult<>(orderVOs, pageResult.getTotal());
|
||||
}
|
||||
|
||||
@Mappings({
|
||||
@Mapping(source = "order.id", target = "id"),
|
||||
@Mapping(source = "order.userId", target = "userId"),
|
||||
@Mapping(source = "items.createTime", target = "createTime"),
|
||||
@Mapping(source = "items.price", target = "price"),
|
||||
@Mapping(source = "items.payPrice", target = "payPrice"),
|
||||
})
|
||||
TradeOrderPageRespVO convert(TradeOrderDO order, TradeOrderItemDO items);
|
||||
//endregion
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "id", ignore = true),
|
||||
@Mapping(source = "userId", target = "userId"),
|
||||
@@ -61,7 +84,7 @@ public interface TradeOrderConvert {
|
||||
TradeOrderRespDTO convert(TradeOrderDO orderDO);
|
||||
|
||||
default List<TradeOrderItemDO> convertList(TradeOrderDO tradeOrderDO) {
|
||||
return null;//CollectionUtils.convertList(calculateRespBO.getItems(), item -> {
|
||||
return null;//CollectionUtils.convertList(calculateRespBO.getItems(), item -> {
|
||||
// TradeOrderItemDO orderItem = convert(item);
|
||||
// orderItem.setOrderId(tradeOrderDO.getId());
|
||||
// orderItem.setUserId(tradeOrderDO.getUserId());
|
||||
@@ -100,23 +123,6 @@ public interface TradeOrderConvert {
|
||||
return createReqDTO;
|
||||
}
|
||||
|
||||
default PageResult<TradeOrderPageRespVO> convertPage(PageResult<TradeOrderDO> pageResult,
|
||||
List<TradeOrderItemDO> orderItems,
|
||||
Map<Long, MemberUserRespDTO> memberUserMap) {
|
||||
Map<Long, List<TradeOrderItemDO>> orderItemMap = convertMultiMap(orderItems, TradeOrderItemDO::getOrderId);
|
||||
// 转化 List
|
||||
List<TradeOrderPageRespVO> orderVOs = CollectionUtils.convertList(pageResult.getList(), order -> {
|
||||
List<TradeOrderItemDO> xOrderItems = orderItemMap.get(order.getId());
|
||||
TradeOrderPageRespVO orderVO = convert(order, xOrderItems);
|
||||
// 处理收货地址
|
||||
return orderVO;
|
||||
});
|
||||
return new PageResult<>(orderVOs, pageResult.getTotal());
|
||||
}
|
||||
|
||||
MemberUserRespVO convertUser(MemberUserRespDTO memberUserRespDTO);
|
||||
|
||||
TradeOrderPageRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> items);
|
||||
|
||||
// ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean);
|
||||
|
||||
@@ -133,6 +139,7 @@ public interface TradeOrderConvert {
|
||||
// orderVO.setLogs(convertList03(orderLogs));
|
||||
return orderVO;
|
||||
}
|
||||
|
||||
List<TradeOrderDetailRespVO> convertList03(List<TradeOrderLogDO> orderLogs);
|
||||
|
||||
TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
|
||||
@@ -159,7 +166,7 @@ public interface TradeOrderConvert {
|
||||
DeliveryExpressDO express) {
|
||||
AppTradeOrderDetailRespVO orderVO = convert3(order, orderItems);
|
||||
orderVO.setPayExpireTime(order.getCreateTime().plus(tradeOrderProperties.getPayExpireTime()));
|
||||
if (StrUtil.isNotEmpty(order.getPayChannelCode())) {
|
||||
if (order.getPayChannelCode() == null) {
|
||||
orderVO.setPayChannelName(DictFrameworkUtils.getDictDataLabel(DictTypeConstants.CHANNEL_CODE, order.getPayChannelCode()));
|
||||
}
|
||||
// 处理收货地址
|
||||
@@ -222,7 +229,8 @@ public interface TradeOrderConvert {
|
||||
}
|
||||
return reqBO;
|
||||
}
|
||||
//
|
||||
|
||||
//
|
||||
default AppTradeOrderSettlementRespVO convert(TradePriceCalculateRespBO calculate, MemberAddressRespDTO address) {
|
||||
AppTradeOrderSettlementRespVO respVO = convert0(calculate, address);
|
||||
if (address != null) {
|
||||
@@ -230,7 +238,8 @@ public interface TradeOrderConvert {
|
||||
}
|
||||
return respVO;
|
||||
}
|
||||
//
|
||||
|
||||
//
|
||||
AppTradeOrderSettlementRespVO convert0(TradePriceCalculateRespBO calculate, MemberAddressRespDTO address);
|
||||
|
||||
List<AppOrderExpressTrackRespDTO> convertList02(List<ExpressTrackRespDTO> list);
|
||||
@@ -256,13 +265,4 @@ public interface TradeOrderConvert {
|
||||
@Named("convertList04")
|
||||
List<TradeOrderRespDTO> convertList04(List<TradeOrderDO> list);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "spuId", source = "item.spuId"),
|
||||
@Mapping(target = "skuId", source = "item.skuId"),
|
||||
@Mapping(target = "count", source = "item.count"),
|
||||
@Mapping(target = "orderId", source = "order.id"),
|
||||
@Mapping(target = "userId", source = "order.userId"),
|
||||
})
|
||||
CombinationRecordCreateReqDTO convert(TradeOrderDO order, TradeOrderItemDO item);
|
||||
|
||||
}
|
||||
|
||||
@@ -121,13 +121,6 @@ public class AfterSaleDO extends BaseDO {
|
||||
* 关联 ProductSkuDO 的编号
|
||||
*/
|
||||
private Long skuId;
|
||||
/**
|
||||
* 属性数组,JSON 格式
|
||||
*
|
||||
* 冗余 {@link TradeOrderItemDO#getProperties()}
|
||||
*/
|
||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||
private List<TradeOrderItemDO.Property> properties;
|
||||
/**
|
||||
* 商品图片
|
||||
*
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
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.TableName;
|
||||
import com.tashow.cloud.common.enums.TerminalEnum;
|
||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||
import com.tashow.cloud.trade.dal.dataobject.delivery.DeliveryExpressDO;
|
||||
import com.tashow.cloud.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
|
||||
import com.tashow.cloud.tradeapi.enums.delivery.DeliveryTypeEnum;
|
||||
import com.tashow.cloud.tradeapi.enums.order.TradeOrderCancelTypeEnum;
|
||||
import com.tashow.cloud.tradeapi.enums.order.TradeOrderRefundStatusEnum;
|
||||
import com.tashow.cloud.tradeapi.enums.order.TradeOrderStatusEnum;
|
||||
import com.tashow.cloud.tradeapi.enums.order.TradeOrderTypeEnum;
|
||||
import lombok.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
@@ -19,7 +13,8 @@ import java.time.LocalDateTime;
|
||||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
@TableName(value = "tz_trade_order", autoResultMap = true)
|
||||
@TableName("tz_trade_order")
|
||||
@KeySequence("tz_trade_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@@ -28,57 +23,55 @@ import java.time.LocalDateTime;
|
||||
@AllArgsConstructor
|
||||
public class TradeOrderDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 发货物流公司编号 - 空(无需发货)
|
||||
*/
|
||||
public static final Long LOGISTICS_ID_NULL = 0L;
|
||||
|
||||
// ========== 订单基本信息 ==========
|
||||
/**
|
||||
* 订单编号,主键自增
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 订单流水号
|
||||
*
|
||||
* 例如说,1146347329394184195
|
||||
*/
|
||||
private String orderNum;
|
||||
/**
|
||||
* 订单类型
|
||||
*
|
||||
* 枚举 {@link TradeOrderTypeEnum}
|
||||
* 订单类目id
|
||||
*/
|
||||
private Long orderCategoryId;
|
||||
/**
|
||||
* 订单类目名称
|
||||
*/
|
||||
private String orderCategoryName;
|
||||
/**
|
||||
* 订单类型 (枚举 TradeOrderTypeEnum)
|
||||
*/
|
||||
private Integer orderType;
|
||||
/**
|
||||
* 订单来源
|
||||
*
|
||||
* 枚举 {@link TerminalEnum}
|
||||
* 订单来源 (枚举 TerminalEnum)
|
||||
*/
|
||||
private Integer orderTerminal;
|
||||
/**
|
||||
* 订单状态 (枚举 TradeOrderStatusEnum)
|
||||
*/
|
||||
private Integer orderStatus;
|
||||
/**
|
||||
* 用户编号
|
||||
*
|
||||
* 关联 MemberUserDO 的 id 编号
|
||||
*/
|
||||
private Long userId;
|
||||
private String userMobile;
|
||||
private String userName;
|
||||
/**
|
||||
* 用户 IP
|
||||
* 用户IP
|
||||
*/
|
||||
private String userIp;
|
||||
/**
|
||||
* 用户昵称
|
||||
*/
|
||||
private String userName;
|
||||
/**
|
||||
* 用户手机号
|
||||
*/
|
||||
private String userMobile;
|
||||
/**
|
||||
* 用户备注
|
||||
*/
|
||||
private String userRemark;
|
||||
/**
|
||||
* 订单状态
|
||||
*
|
||||
* 枚举 {@link TradeOrderStatusEnum}
|
||||
*/
|
||||
private Integer orderStatus;
|
||||
private Integer financeStatus;
|
||||
/**
|
||||
* 订单完成时间
|
||||
*/
|
||||
@@ -88,115 +81,81 @@ public class TradeOrderDO extends BaseDO {
|
||||
*/
|
||||
private LocalDateTime cancelTime;
|
||||
/**
|
||||
* 取消类型
|
||||
*
|
||||
* 枚举 {@link TradeOrderCancelTypeEnum}
|
||||
* 取消类型 (枚举 TradeOrderCancelTypeEnum)
|
||||
*/
|
||||
private Integer cancelType;
|
||||
/**
|
||||
* 取消原因
|
||||
*/
|
||||
private String cancelReason;
|
||||
/**
|
||||
* 商家编号
|
||||
*/
|
||||
private Long merchantId;
|
||||
/**
|
||||
* 商家名称
|
||||
*/
|
||||
private String merchantName;
|
||||
/**
|
||||
* 商家备注
|
||||
*/
|
||||
private String merchantRemark;
|
||||
private String merchantName;
|
||||
private Long orderCategoryId;
|
||||
/**
|
||||
* 是否评价
|
||||
*
|
||||
* true - 已评价
|
||||
* false - 未评价
|
||||
* 是否评价 (true-已评价, false-未评价)
|
||||
*/
|
||||
private Boolean commentStatus;
|
||||
|
||||
// ========== 价格 + 支付基本信息 ==========
|
||||
|
||||
// 价格文档 - 淘宝:https://open.taobao.com/docV3.htm?docId=108471&docType=1
|
||||
// 价格文档 - 京东到家:https://openo2o.jddj.com/api/getApiDetail/182/4d1494c5e7ac4679bfdaaed950c5bc7f.htm
|
||||
// 价格文档 - 有赞:https://doc.youzanyun.com/detail/API/0/906
|
||||
|
||||
/**
|
||||
* 应付金额(总),单位:分
|
||||
*/
|
||||
private Integer payPrice;
|
||||
/**
|
||||
* 实收金额(总),单位:分
|
||||
*/
|
||||
private Integer livePrice;
|
||||
/**
|
||||
* 预约类型(1预约 2 加急)
|
||||
*/
|
||||
private Boolean subType;
|
||||
/**
|
||||
* 预约时间
|
||||
*/
|
||||
private LocalDateTime subTime;
|
||||
/**
|
||||
* 支付订单编号
|
||||
*
|
||||
* 对接 pay-module-biz 支付服务的支付订单编号,即 PayOrderDO 的 id 编号
|
||||
*/
|
||||
private Long payOrderId;
|
||||
/**
|
||||
* 是否已支付
|
||||
*
|
||||
* true - 已经支付过
|
||||
* false - 没有支付过
|
||||
* 是否已支付 (true-已支付, false-未支付)
|
||||
*/
|
||||
private Boolean payStatus;
|
||||
/**
|
||||
* 支付方式(PayTypeEnum)
|
||||
*/
|
||||
private Integer payType;
|
||||
/**
|
||||
* 付款时间
|
||||
*/
|
||||
private LocalDateTime payTime;
|
||||
/**
|
||||
* 支付渠道
|
||||
*
|
||||
* 对应 PayChannelEnum 枚举
|
||||
* 支付渠道(PayTypeEnum)
|
||||
*/
|
||||
private String payChannelCode;
|
||||
|
||||
private Integer payChannelCode;
|
||||
/**
|
||||
* 商品原价,单位:分
|
||||
*
|
||||
* totalPrice = {@link TradeOrderItemDO#getPrice()} * {@link TradeOrderItemDO#getCount()} 求和
|
||||
*
|
||||
* 对应 taobao 的 trade.total_fee 字段
|
||||
*/
|
||||
private Integer totalPrice;
|
||||
/**
|
||||
* 优惠金额,单位:分
|
||||
*
|
||||
* 对应 taobao 的 order.discount_fee 字段
|
||||
*/
|
||||
private Integer discountPrice;
|
||||
/**
|
||||
* 运费金额,单位:分
|
||||
*/
|
||||
private Integer deliveryPrice;
|
||||
/**
|
||||
* 订单调价,单位:分
|
||||
*
|
||||
* 正数,加价;负数,减价
|
||||
*/
|
||||
private Integer adjustPrice;
|
||||
/**
|
||||
* 应付金额(总),单位:分
|
||||
*
|
||||
* = {@link #totalPrice}
|
||||
* - {@link #discountPrice}
|
||||
* + {@link #deliveryPrice}
|
||||
* + {@link #adjustPrice}
|
||||
*/
|
||||
private Integer payPrice;
|
||||
|
||||
// ========== 收件 + 物流基本信息 ==========
|
||||
/**
|
||||
* 配送方式
|
||||
*
|
||||
* 枚举 {@link DeliveryTypeEnum}
|
||||
* 配送方式 (枚举 DeliveryTypeEnum)
|
||||
*/
|
||||
private Integer deliveryType;
|
||||
/**
|
||||
* 发货物流公司编号
|
||||
*
|
||||
* 如果无需发货,则 logisticsId 设置为 0。原因是,不想再添加额外字段
|
||||
*
|
||||
* 关联 {@link DeliveryExpressDO#getId()}
|
||||
*/
|
||||
private Long logisticsId;
|
||||
/**
|
||||
* 发货物流单号
|
||||
*
|
||||
* 如果无需发货,则 logisticsNo 设置 ""。原因是,不想再添加额外字段
|
||||
*/
|
||||
private String logisticsNo;
|
||||
/**
|
||||
* 发货时间
|
||||
*/
|
||||
private LocalDateTime deliveryTime;
|
||||
|
||||
/**
|
||||
* 收货时间
|
||||
*/
|
||||
@@ -217,35 +176,45 @@ public class TradeOrderDO extends BaseDO {
|
||||
* 收件人详细地址
|
||||
*/
|
||||
private String receiverDetailAddress;
|
||||
|
||||
/**
|
||||
* 自提门店编号
|
||||
*
|
||||
* 关联 {@link DeliveryPickUpStoreDO#getId()}
|
||||
*/
|
||||
private Long pickUpStoreId;
|
||||
/**
|
||||
* 自提核销码
|
||||
*/
|
||||
private String pickUpVerifyCode;
|
||||
|
||||
// ========== 售后基本信息 ==========
|
||||
/**
|
||||
* 售后状态
|
||||
*
|
||||
* 枚举 {@link TradeOrderRefundStatusEnum}
|
||||
* 退款状态 (枚举 TradeOrderRefundStatusEnum)
|
||||
*/
|
||||
private Integer refundStatus;
|
||||
/**
|
||||
* 退款金额,单位:分
|
||||
*
|
||||
* 注意,退款并不会影响 {@link #payPrice} 实际支付金额
|
||||
* 也就说,一个订单最终产生多少金额的收入 = payPrice - refundPrice
|
||||
*/
|
||||
private Integer refundPrice;
|
||||
|
||||
/**
|
||||
* 退款时间
|
||||
*/
|
||||
private LocalDateTime refundTime;
|
||||
/**
|
||||
* 售后单编号
|
||||
*/
|
||||
private Long afterSaleId;
|
||||
/**
|
||||
* 售后状态 (枚举 TradeOrderItemAfterSaleStatusEnum)
|
||||
*/
|
||||
private Integer afterSaleStatus;
|
||||
private Integer subType;
|
||||
private LocalDateTime subTime;
|
||||
/**
|
||||
* 财务单编号
|
||||
*/
|
||||
private Long financeId;
|
||||
/**
|
||||
* 财务状态 (枚举 TradeOrderItemFinanceEnum)
|
||||
*/
|
||||
private Integer financeStatus;
|
||||
/**
|
||||
* 版本号(乐观锁)
|
||||
*/
|
||||
private Integer version;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,80 +1,65 @@
|
||||
package com.tashow.cloud.trade.dal.dataobject.order;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 交易订单项 DO
|
||||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
@TableName(value = "trade_order_item", autoResultMap = true)
|
||||
@TableName("tz_trade_order_item")
|
||||
@KeySequence("tz_trade_order_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TradeOrderItemDO extends BaseDO {
|
||||
|
||||
// ========== 订单项基本信息 ==========
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 用户编号
|
||||
*
|
||||
* 关联 MemberUserDO 的 id 编号
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 订单编号
|
||||
*
|
||||
* 关联 {@link TradeOrderDO#getId()}
|
||||
*/
|
||||
private Long orderId;
|
||||
/**
|
||||
* 购物车项编号
|
||||
*/
|
||||
private Long cartId;
|
||||
|
||||
// ========== 商品基本信息; 冗余较多字段,减少关联查询 ==========
|
||||
/**
|
||||
* 商品 SPU 编号
|
||||
*
|
||||
* 关联 ProductSkuDO 的 spuId 编号
|
||||
*/
|
||||
private Long spuId;
|
||||
/**
|
||||
* 商品 SPU 名称
|
||||
*
|
||||
* 冗余 ProductSkuDO 的 spuName 编号
|
||||
*/
|
||||
private String spuName;
|
||||
|
||||
private Integer spuType;
|
||||
/**
|
||||
* 商品类型(1商品 2服务)
|
||||
*/
|
||||
private Boolean spuType;
|
||||
/**
|
||||
* 商品 SKU 编号
|
||||
*
|
||||
* 关联 ProductSkuDO 的 id 编号
|
||||
*/
|
||||
private Long skuId;
|
||||
private String skuName;
|
||||
/**
|
||||
* 属性数组,JSON 格式
|
||||
*
|
||||
* 冗余 ProductSkuDO 的 properties 字段
|
||||
* 商品 SKU 名称
|
||||
*/
|
||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||
private List<Property> properties;
|
||||
private String skuName;
|
||||
/**
|
||||
* 商品图片
|
||||
*/
|
||||
@@ -83,22 +68,20 @@ public class TradeOrderItemDO extends BaseDO {
|
||||
* 购买数量
|
||||
*/
|
||||
private Integer count;
|
||||
|
||||
// ========== 价格 + 支付基本信息 ==========
|
||||
//商品成本
|
||||
/**
|
||||
* 商品单位
|
||||
*/
|
||||
private String unit;
|
||||
/**
|
||||
* 商品成本(单),单位:分
|
||||
*/
|
||||
private Integer expensePrice;
|
||||
|
||||
/**
|
||||
* 商品原价(单),单位:分
|
||||
*
|
||||
* 对应 ProductSkuDO 的 price 字段
|
||||
* 对应 taobao 的 order.price 字段
|
||||
*/
|
||||
private Integer price;
|
||||
/**
|
||||
* 优惠金额(总),单位:分
|
||||
*
|
||||
* 对应 taobao 的 order.discount_fee 字段
|
||||
*/
|
||||
private Integer discountPrice;
|
||||
/**
|
||||
@@ -107,67 +90,40 @@ public class TradeOrderItemDO extends BaseDO {
|
||||
private Integer deliveryPrice;
|
||||
/**
|
||||
* 订单调价(总),单位:分
|
||||
*
|
||||
* 正数,加价;负数,减价
|
||||
*/
|
||||
private Integer adjustPrice;
|
||||
/**
|
||||
* 应付金额(总),单位:分
|
||||
*
|
||||
* = {@link #price} * {@link #count}
|
||||
* - {@link #discountPrice}
|
||||
* + {@link #deliveryPrice}
|
||||
* + {@link #adjustPrice}
|
||||
*/
|
||||
private Integer payPrice;
|
||||
//实收金额
|
||||
/**
|
||||
* 实收金额(总),单位:分
|
||||
*/
|
||||
private Integer livePrice;
|
||||
|
||||
private Integer orderType;
|
||||
private LocalDateTime orderTime;
|
||||
private String serveAddress;
|
||||
/**
|
||||
* 服务地址
|
||||
*/
|
||||
private LocalDateTime serveAddress;
|
||||
/**
|
||||
* 属性数组
|
||||
*/
|
||||
private String properties;
|
||||
/**
|
||||
* 服务信息
|
||||
*/
|
||||
private String serveInfo;
|
||||
/**
|
||||
* 扩展服务信息,存储额外的服务相关数据
|
||||
*/
|
||||
private String serveExtInfo;
|
||||
/**
|
||||
* 附加费信息
|
||||
*/
|
||||
private String priceExtInfo;
|
||||
|
||||
@Version
|
||||
/**
|
||||
* 版本号(乐观锁)
|
||||
*/
|
||||
private Integer version;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 商品属性
|
||||
*/
|
||||
@Data
|
||||
public static class Property implements Serializable {
|
||||
|
||||
/**
|
||||
* 属性编号
|
||||
*
|
||||
* 关联 ProductPropertyDO 的 id 编号
|
||||
*/
|
||||
private Long propertyId;
|
||||
/**
|
||||
* 属性名字
|
||||
*
|
||||
* 关联 ProductPropertyDO 的 name 字段
|
||||
*/
|
||||
private String propertyName;
|
||||
|
||||
/**
|
||||
* 属性值编号
|
||||
*
|
||||
* 关联 ProductPropertyValueDO 的 id 编号
|
||||
*/
|
||||
private Long valueId;
|
||||
/**
|
||||
* 属性值名字
|
||||
*
|
||||
* 关联 ProductPropertyValueDO 的 name 字段
|
||||
*/
|
||||
private String valueName;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -270,7 +270,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
// 3. 更新 TradeOrderDO 状态为已支付,等待发货
|
||||
int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getOrderStatus(),
|
||||
new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus()).setPayStatus(true)
|
||||
.setPayTime(LocalDateTime.now()).setPayChannelCode(""));
|
||||
.setPayTime(LocalDateTime.now()).setPayChannelCode(1));
|
||||
if (updateCount == 0) {
|
||||
throw exception(ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
|
||||
}
|
||||
@@ -351,7 +351,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
TradeOrderDO updateOrderObj = new TradeOrderDO();
|
||||
// 2.1 快递发货
|
||||
DeliveryExpressDO express = null;
|
||||
if (ObjectUtil.notEqual(deliveryReqVO.getLogisticsId(), TradeOrderDO.LOGISTICS_ID_NULL)) {
|
||||
if (ObjectUtil.notEqual(deliveryReqVO.getLogisticsId(), null)) {
|
||||
express = deliveryExpressService.validateDeliveryExpress(deliveryReqVO.getLogisticsId());
|
||||
updateOrderObj.setLogisticsId(deliveryReqVO.getLogisticsId()).setLogisticsNo(deliveryReqVO.getLogisticsNo());
|
||||
} else {
|
||||
@@ -643,9 +643,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
throw exception(ORDER_UPDATE_PRICE_FAIL_PAID);
|
||||
}
|
||||
// 1.2 校验调价金额是否变化
|
||||
if (order.getAdjustPrice() > 0) {
|
||||
throw exception(ORDER_UPDATE_PRICE_FAIL_ALREADY);
|
||||
}
|
||||
// if (order.getAdjustPrice() > 0) {
|
||||
// throw exception(ORDER_UPDATE_PRICE_FAIL_ALREADY);
|
||||
// }
|
||||
// 1.3 支付价格不能为 0
|
||||
int newPayPrice = order.getPayPrice() + reqVO.getAdjustPrice();
|
||||
if (newPayPrice <= 0) {
|
||||
@@ -653,8 +653,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
}
|
||||
|
||||
// 2. 更新订单
|
||||
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
||||
.setAdjustPrice(reqVO.getAdjustPrice() + order.getAdjustPrice()).setPayPrice(newPayPrice));
|
||||
// tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
||||
// .setAdjustPrice(reqVO.getAdjustPrice() + order.getAdjustPrice()).setPayPrice(newPayPrice));
|
||||
|
||||
// 3. 更新 TradeOrderItem,需要做 adjustPrice 的分摊
|
||||
List<TradeOrderItemDO> orderOrderItems = tradeOrderItemMapper.selectListByOrderId(order.getId());
|
||||
|
||||
Reference in New Issue
Block a user