调整订单接口

This commit is contained in:
2025-08-29 09:44:37 +08:00
parent 52839e17cc
commit 3f674bd17a
11 changed files with 163 additions and 243 deletions

View File

@@ -351,9 +351,9 @@ public class GlobalExceptionHandler {
}
// 4. 订单系统
if (StrUtil.containsAny(message, "product_", "promotion_", "trade_")) {
log.error("[商城系统 tashow-module-trade - 表结构未导入]");
log.error("[订单系统 tashow-module-trade"+StrUtil.subBetween(message,"Table","does")+"- 表结构未导入]");
return CommonResult.error(NOT_IMPLEMENTED.getCode(),
"[商城系统 tashow-module-trade - 表结构未导入]");
"[订单系统表结构未导入]");
}
// 5. ERP 系统
if (message.contains("erp_")) {

View File

@@ -2,63 +2,114 @@ package com.tashow.cloud.trade.controller.admin.order.vo;
// 移除Swagger相关导入
import com.tashow.cloud.trade.controller.admin.base.member.user.MemberUserRespVO;
import com.tashow.cloud.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO;
import lombok.Data;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.List;
// 管理后台 - 交易订单的详情 Response VO
@Data
@Accessors(chain = true)
public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
/**
* 订单项列表
*/
private List<Item> items;
//基本信息
private TradeOrderBaseInfo tradeOrderInfoBase;
//配送信息
private TradeDeliveryInfo tradeDeliveryInfo;
//商品信息
private String tradeProductInfo;
//扩展服务信息
private String tradeExtendServeInfo;
//附加费信息
private String tradeExtendCostInfo;
/**
* 下单用户信息
*/
private MemberUserRespVO user;
/**
* 推广用户信息
*/
private MemberUserRespVO brokerageUser;
/**
* 操作日志列表
*/
private List<OrderLog> logs;
// 收件人地区名字 - 必填,示例:上海 上海市 普陀区
private String receiverAreaName;
// 管理后台 - 交易订单的操作日志
@Data
public static class OrderLog {
// 操作详情 - 必填,示例:订单发货
private String content;
// 创建时间 - 必填示例2023-06-01 10:50:20
@Accessors(chain = true)
class TradeOrderBaseInfo{
//订单id
private String id;
//订单编号
private String orderNo;
//订单状态
private String orderStatus;
//订单类型
private String orderType;
//订单来源
private String orderTerminal;
//创建时间
private LocalDateTime createTime;
// 用户类型 - 必填示例1
private Integer userType;
//完成时间
private LocalDateTime finishTime;
//取消时间
private LocalDateTime cancelTime;
//订单金额
private String payPrice;
//优惠金额
private String discountPrice;
//退款金额
private String refundPrice;
//实收金额
private String actualPrice;
//支付方式
private String payChannel;
//交易流水号
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;
}
// 管理后台 - 交易订单的详情的订单项目
@Data
public static class Item extends TradeOrderItemBaseVO {
/**
* 属性数组
*/
private List<ProductPropertyValueDetailRespVO> properties;
@Accessors(chain = true)
class TradeDeliveryInfo{
//承运方
private String logisticsName;
//送货方式
private String logisticsType;
//送货上门
private String logisticsNum;
//收货人
private String receiverName;
//收货手机
private String receiverMobile;
//收货地址
private String receiverDetailAddress;
//快递详情
private String deliveryDetail;
}
}

View File

@@ -96,7 +96,7 @@ public class AppTradeOrderController {
}
// 1.2 sync 仅在等待支付
if (Boolean.TRUE.equals(sync)
&& TradeOrderStatusEnum.isUnpaid(order.getStatus()) && !order.getPayStatus()) {
&& TradeOrderStatusEnum.isUnpaid(order.getOrderStatus()) && !order.getPayStatus()) {
tradeOrderUpdateService.syncOrderPayStatusQuietly(order.getId(), order.getPayOrderId());
// 重新查询,因为同步后,可能会有变化
order = tradeOrderQueryService.getOrder(id);

View File

@@ -53,8 +53,7 @@ public interface TradeOrderConvert {
@Mappings({
@Mapping(target = "id", ignore = true),
@Mapping(source = "userId", target = "userId"),
@Mapping(source = "createReqVO.couponId", target = "couponId"),
@Mapping(target = "remark", ignore = true),
@Mapping(target = "merchantRemark", ignore = true),
@Mapping(source = "createReqVO.remark", target = "userRemark"),
})
TradeOrderDO convert(Long userId, AppTradeOrderCreateReqVO createReqVO);
@@ -92,7 +91,7 @@ public interface TradeOrderConvert {
.setAppKey(orderProperties.getPayAppKey()).setUserIp(order.getUserIp());
// 商户相关字段
createReqDTO.setMerchantOrderId(String.valueOf(order.getId()));
String subject = orderItems.get(0).getSpuName();
String subject = orderItems.get(0).getProdName();
subject = StrUtils.maxLength(subject, PayOrderCreateReqDTO.SUBJECT_MAX_LENGTH); // 避免超过 32 位
createReqDTO.setSubject(subject);
createReqDTO.setBody(subject); // TODO 芋艿:临时写死
@@ -130,16 +129,16 @@ public interface TradeOrderConvert {
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));
// // 处理收货地址
// orderVO.setReceiverAreaName(AreaUtils.format(order.getReceiverAreaId()));
// // 处理用户信息
// orderVO.setUser(convert(user));
// orderVO.setBrokerageUser(convert(brokerageUser));
// // 处理日志
// orderVO.setLogs(convertList03(orderLogs));
return orderVO;
}
List<TradeOrderDetailRespVO.OrderLog> convertList03(List<TradeOrderLogDO> orderLogs);
List<TradeOrderDetailRespVO> convertList03(List<TradeOrderLogDO> orderLogs);
TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
@@ -251,7 +250,7 @@ public interface TradeOrderConvert {
ProductSpuRespDTO spu, ProductSkuRespDTO sku) {
BrokerageAddReqBO bo = new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId())
.setBasePrice(item.getPayPrice())
.setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getSpuName()))
.setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getProdId()))
.setFirstFixedPrice(0).setSecondFixedPrice(0);
if (BooleanUtil.isTrue(spu.getSubCommissionType())) {
bo.setFirstFixedPrice(sku.getFirstBrokeragePrice()).setSecondFixedPrice(sku.getSecondBrokeragePrice());
@@ -263,14 +262,11 @@ public interface TradeOrderConvert {
List<TradeOrderRespDTO> convertList04(List<TradeOrderDO> list);
@Mappings({
@Mapping(target = "activityId", source = "order.combinationActivityId"),
@Mapping(target = "spuId", source = "item.spuId"),
@Mapping(target = "prodId", source = "item.prodId"),
@Mapping(target = "skuId", source = "item.skuId"),
@Mapping(target = "count", source = "item.count"),
@Mapping(target = "orderId", source = "order.id"),
@Mapping(target = "userId", source = "order.userId"),
@Mapping(target = "headId", source = "order.combinationHeadId"),
@Mapping(target = "combinationPrice", source = "item.payPrice"),
})
CombinationRecordCreateReqDTO convert(TradeOrderDO order, TradeOrderItemDO item);

View File

@@ -20,7 +20,7 @@ public class CombinationRecordCreateReqDTO {
* spu 编号
*/
@NotNull(message = "spu 编号不能为空")
private Long spuId;
private Long prodId;
/**
* sku 编号
*/

View File

@@ -1,11 +1,8 @@
package com.tashow.cloud.trade.dal.dataobject.order;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.tashow.cloud.common.enums.TerminalEnum;
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
import com.tashow.cloud.mybatis.mybatis.core.type.LongListTypeHandler;
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;
@@ -16,15 +13,13 @@ import com.tashow.cloud.tradeapi.enums.order.TradeOrderTypeEnum;
import lombok.*;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* 交易订单 DO
*
* @author 芋道源码
*/
@TableName(value = "trade_order", autoResultMap = true)
@TableName(value = "tz_trade_order", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@@ -54,13 +49,13 @@ public class TradeOrderDO extends BaseDO {
*
* 枚举 {@link TradeOrderTypeEnum}
*/
private Integer type;
private Integer orderType;
/**
* 订单来源
*
* 枚举 {@link TerminalEnum}
*/
private Integer terminal;
private Integer orderTerminal;
/**
* 用户编号
*
@@ -80,7 +75,7 @@ public class TradeOrderDO extends BaseDO {
*
* 枚举 {@link TradeOrderStatusEnum}
*/
private Integer status;
private Integer orderStatus;
/**
* 购买的商品数量
*/
@@ -102,7 +97,7 @@ public class TradeOrderDO extends BaseDO {
/**
* 商家备注
*/
private String remark;
private String merchantRemark;
/**
* 是否评价
*
@@ -111,12 +106,6 @@ public class TradeOrderDO extends BaseDO {
*/
private Boolean commentStatus;
/**
* 推广人编号
*
*/
private Long brokerageUserId;
// ========== 价格 + 支付基本信息 ==========
// 价格文档 - 淘宝https://open.taobao.com/docV3.htm?docId=108471&docType=1
@@ -257,102 +246,4 @@ public class TradeOrderDO extends BaseDO {
*/
private Integer refundPrice;
// ========== 营销基本信息 ==========
/**
* 优惠劵编号
*/
private Long couponId;
/**
* 优惠劵减免金额,单位:分
*
* 对应 taobao 的 trade.coupon_fee 字段
*/
private Integer couponPrice;
/**
* 使用的积分
*/
private Integer usePoint;
/**
* 积分抵扣的金额,单位:分
*
* 对应 taobao 的 trade.point_fee 字段
*/
private Integer pointPrice;
/**
* 赠送的积分
*/
private Integer givePoint;
/**
* 退还的使用的积分
*/
private Integer refundPoint;
/**
* VIP 减免金额,单位:分
*/
private Integer vipPrice;
/**
* 赠送的优惠劵
*
* key: 优惠劵模版编号
* value对应的优惠券数量
*
* 目的:用于订单支付后赠送优惠券
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private Map<Long, Integer> giveCouponTemplateCounts;
/**
* 赠送的优惠劵编号
*
* 目的:用于后续取消或者售后订单时,需要扣减赠送
*/
@TableField(typeHandler = LongListTypeHandler.class)
private List<Long> giveCouponIds;
/**
* 秒杀活动编号
*
* 关联 SeckillActivityDO 的 id 字段
*/
private Long seckillActivityId;
/**
* 砍价活动编号
*
* 关联 BargainActivityDO 的 id 字段
*/
private Long bargainActivityId;
/**
* 砍价记录编号
*
* 关联 BargainRecordDO 的 id 字段
*/
private Long bargainRecordId;
/**
* 拼团活动编号
*
* 关联 CombinationActivityDO 的 id 字段
*/
private Long combinationActivityId;
/**
* 拼团团长编号
*
* 关联 CombinationRecordDO 的 headId 字段
*/
private Long combinationHeadId;
/**
* 拼团记录编号
*
* 关联 CombinationRecordDO 的 id 字段
*/
private Long combinationRecordId;
/**
* 积分商城活动的编号
*
* 关联 PointActivityDO 的 id 字段
*/
private Long pointActivityId;
}

View File

@@ -52,13 +52,13 @@ public class TradeOrderItemDO extends BaseDO {
*
* 关联 ProductSkuDO 的 spuId 编号
*/
private Long spuId;
private Long prodId;
/**
* 商品 SPU 名称
*
* 冗余 ProductSkuDO 的 spuName 编号
*/
private String spuName;
private String prodName;
/**
* 商品 SKU 编号
*

View File

@@ -21,7 +21,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
default int updateByIdAndStatus(Long id, Integer status, TradeOrderDO update) {
return update(update, new LambdaUpdateWrapper<TradeOrderDO>()
.eq(TradeOrderDO::getId, id).eq(TradeOrderDO::getStatus, status));
.eq(TradeOrderDO::getId, id).eq(TradeOrderDO::getOrderStatus, status));
}
default TradeOrderDO selectByIdAndUserId(Long id, Long userId) {
@@ -34,10 +34,10 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
.eqIfPresent(TradeOrderDO::getUserId, reqVO.getUserId())
.eqIfPresent(TradeOrderDO::getDeliveryType, reqVO.getDeliveryType())
.inIfPresent(TradeOrderDO::getUserId, userIds)
.eqIfPresent(TradeOrderDO::getType, reqVO.getType())
.eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus())
.eqIfPresent(TradeOrderDO::getOrderType, reqVO.getType())
.eqIfPresent(TradeOrderDO::getOrderStatus, reqVO.getStatus())
.eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
.eqIfPresent(TradeOrderDO::getTerminal, reqVO.getTerminal())
.eqIfPresent(TradeOrderDO::getOrderTerminal, reqVO.getTerminal())
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
@@ -55,10 +55,10 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
.eqIfPresent(TradeOrderDO::getUserId, reqVO.getUserId())
.eqIfPresent(TradeOrderDO::getDeliveryType, reqVO.getDeliveryType())
.inIfPresent(TradeOrderDO::getUserId, userIds)
.eqIfPresent(TradeOrderDO::getType, reqVO.getType())
.eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus())
.eqIfPresent(TradeOrderDO::getOrderType, reqVO.getType())
.eqIfPresent(TradeOrderDO::getOrderStatus, reqVO.getStatus())
.eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
.eqIfPresent(TradeOrderDO::getTerminal, reqVO.getTerminal())
.eqIfPresent(TradeOrderDO::getOrderTerminal, reqVO.getTerminal())
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
@@ -69,7 +69,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
default PageResult<TradeOrderDO> selectPage(AppTradeOrderPageReqVO reqVO, Long userId) {
return selectPage(reqVO, new LambdaQueryWrapperX<TradeOrderDO>()
.eq(TradeOrderDO::getUserId, userId)
.eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus())
.eqIfPresent(TradeOrderDO::getOrderStatus, reqVO.getStatus())
.eqIfPresent(TradeOrderDO::getCommentStatus, reqVO.getCommentStatus())
.orderByDesc(TradeOrderDO::getId)); // TODO 芋艿:未来不同的 status不同的排序
}
@@ -77,7 +77,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
default Long selectCountByUserIdAndStatus(Long userId, Integer status, Boolean commentStatus) {
return selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
.eq(TradeOrderDO::getUserId, userId)
.eqIfPresent(TradeOrderDO::getStatus, status)
.eqIfPresent(TradeOrderDO::getOrderStatus, status)
.eqIfPresent(TradeOrderDO::getCommentStatus, commentStatus));
}
@@ -89,20 +89,20 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
default List<TradeOrderDO> selectListByStatusAndCreateTimeLt(Integer status, LocalDateTime createTime) {
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
.eq(TradeOrderDO::getStatus, status)
.eq(TradeOrderDO::getOrderStatus, status)
.lt(TradeOrderDO::getCreateTime, createTime));
}
default List<TradeOrderDO> selectListByStatusAndDeliveryTimeLt(Integer status, LocalDateTime deliveryTime) {
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
.eq(TradeOrderDO::getStatus, status)
.eq(TradeOrderDO::getOrderStatus, status)
.lt(TradeOrderDO::getDeliveryTime, deliveryTime));
}
default List<TradeOrderDO> selectListByStatusAndReceiveTimeLt(Integer status, LocalDateTime receive,
Boolean commentStatus) {
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
.eq(TradeOrderDO::getStatus, status)
.eq(TradeOrderDO::getOrderStatus, status)
.lt(TradeOrderDO::getReceiveTime, receive)
.eq(TradeOrderDO::getCommentStatus, commentStatus));
}
@@ -110,18 +110,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
default List<TradeOrderDO> selectListByUserIdAndActivityId(Long userId, Long activityId, TradeOrderTypeEnum type) {
LambdaQueryWrapperX<TradeOrderDO> queryWrapperX = new LambdaQueryWrapperX<>();
queryWrapperX.eq(TradeOrderDO::getUserId, userId);
if (TradeOrderTypeEnum.isSeckill(type.getType())) {
queryWrapperX.eq(TradeOrderDO::getSeckillActivityId, activityId);
}
if (TradeOrderTypeEnum.isBargain(type.getType())) {
queryWrapperX.eq(TradeOrderDO::getBargainActivityId, activityId);
}
if (TradeOrderTypeEnum.isCombination(type.getType())) {
queryWrapperX.eq(TradeOrderDO::getCombinationActivityId, activityId);
}
if (TradeOrderTypeEnum.isPoint(type.getType())) {
queryWrapperX.eq(TradeOrderDO::getPointActivityId, activityId);
}
return selectList(queryWrapperX);
}
@@ -132,8 +120,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
default TradeOrderDO selectByUserIdAndCombinationActivityIdAndStatus(Long userId, Long combinationActivityId, Integer status) {
return selectOne(new LambdaQueryWrapperX<TradeOrderDO>()
.eq(TradeOrderDO::getUserId, userId)
.eq(TradeOrderDO::getStatus, status)
.eq(TradeOrderDO::getCombinationActivityId, combinationActivityId)
.eq(TradeOrderDO::getOrderStatus, status)
);
}

View File

@@ -137,16 +137,16 @@ public class AfterSaleServiceImpl implements AfterSaleService {
}
// TODO 芋艿:超过一定时间,不允许售后
// 已取消,无法发起售后
if (TradeOrderStatusEnum.isCanceled(order.getStatus())) {
if (TradeOrderStatusEnum.isCanceled(order.getOrderStatus())) {
throw exception(AFTER_SALE_CREATE_FAIL_ORDER_STATUS_CANCELED);
}
// 未支付,无法发起售后
if (!TradeOrderStatusEnum.havePaid(order.getStatus())) {
if (!TradeOrderStatusEnum.havePaid(order.getOrderStatus())) {
throw exception(AFTER_SALE_CREATE_FAIL_ORDER_STATUS_NO_PAID);
}
// 如果是【退货退款】的情况,需要额外校验是否发货
if (createReqVO.getWay().equals(AfterSaleWayEnum.RETURN_AND_REFUND.getWay())
&& !TradeOrderStatusEnum.haveDelivered(order.getStatus())) {
&& !TradeOrderStatusEnum.haveDelivered(order.getOrderStatus())) {
throw exception(AFTER_SALE_CREATE_FAIL_ORDER_STATUS_NO_DELIVERED);
}
return orderItem;
@@ -161,7 +161,7 @@ public class AfterSaleServiceImpl implements AfterSaleService {
// 标记是售中还是售后
TradeOrderDO order = tradeOrderQueryService.getOrder(orderItem.getUserId(), orderItem.getOrderId());
afterSale.setOrderNo(order.getOrderNum()); // 记录 orderNo 订单流水,方便后续检索
afterSale.setType(TradeOrderStatusEnum.isCompleted(order.getStatus())
afterSale.setType(TradeOrderStatusEnum.isCompleted(order.getOrderStatus())
? AfterSaleTypeEnum.AFTER_SALE.getType() : AfterSaleTypeEnum.IN_SALE.getType());
tradeAfterSaleMapper.insert(afterSale);

View File

@@ -177,7 +177,7 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
public int getActivityProductCount(Long userId, Long activityId, TradeOrderTypeEnum type) {
// 获得订单列表
List<TradeOrderDO> orders = tradeOrderMapper.selectListByUserIdAndActivityId(userId, activityId, type);
orders.removeIf(order -> TradeOrderStatusEnum.isCanceled(order.getStatus())); // 过滤掉【已取消】的订单
orders.removeIf(order -> TradeOrderStatusEnum.isCanceled(order.getOrderStatus())); // 过滤掉【已取消】的订单
if (CollUtil.isEmpty(orders)) {
return 0;
}

View File

@@ -177,15 +177,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(userId, createReqVO, calculateRespBO);
// order.setType(calculateRespBO.getType());
// order.setOrderNum(tradeNoRedisDAO.generate(TradeNoRedisDAO.TRADE_ORDER_NO_PREFIX));
// order.setStatus(TradeOrderStatusEnum.UNPAID.getStatus());
// order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus());
// order.setStatus(TradeOrderStatusEnum.UNPAID.getOrderStatus());
// order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getOrderStatus());
// order.setProductCount(getSumValue(calculateRespBO.getItems(), TradePriceCalculateRespBO.OrderItem::getCount, Integer::sum));
// order.setUserIp(getClientIP()).setTerminal(getTerminal());
// // 使用 + 赠送优惠券
// order.setGiveCouponTemplateCounts(calculateRespBO.getGiveCouponTemplateCounts());
// // 支付 + 退款信息
// order.setAdjustPrice(0).setPayStatus(false);
// order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus()).setRefundPrice(0);
// order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getOrderStatus()).setRefundPrice(0);
// // 物流信息
// order.setDeliveryType(createReqVO.getDeliveryType());
// if (Objects.equals(createReqVO.getDeliveryType(), DeliveryTypeEnum.EXPRESS.getType())) {
@@ -232,7 +232,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
}
// 4. 插入订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getStatus());
TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getOrderStatus());
// TODO @LeeYan9: 是可以思考下, 订单的营销优惠记录, 应该记录在哪里, 微信讨论起来!
}
@@ -255,7 +255,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// 1.1 校验订单是否存在
TradeOrderDO order = validateOrderExists(id);
// 1.2 校验订单已支付
if (!TradeOrderStatusEnum.isUnpaid(order.getStatus()) || order.getPayStatus()) {
if (!TradeOrderStatusEnum.isUnpaid(order.getOrderStatus()) || order.getPayStatus()) {
// 特殊:如果订单已支付,且支付单号相同,直接返回,说明重复回调
if (ObjectUtil.equals(order.getPayOrderId(), payOrderId)) {
log.warn("[updateOrderPaid][order({}) 已支付,且支付单号相同({}),直接返回]", order, payOrderId);
@@ -270,8 +270,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
PayOrderRespDTO payOrder = validatePayOrderPaid(order, payOrderId);
// 3. 更新 TradeOrderDO 状态为已支付,等待发货
int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getStatus(),
new TradeOrderDO().setStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus()).setPayStatus(true)
int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getOrderStatus(),
new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus()).setPayStatus(true)
.setPayTime(LocalDateTime.now()).setPayChannelCode(""));
if (updateCount == 0) {
throw exception(ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
@@ -282,7 +282,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
tradeOrderHandlers.forEach(handler -> handler.afterPayOrder(order, orderItems));
// 5. 记录订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.UNDELIVERED.getStatus());
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), TradeOrderStatusEnum.UNDELIVERED.getStatus());
TradeOrderLogUtils.setUserInfo(order.getUserId(), UserTypeEnum.MEMBER.getValue());
}
@@ -361,14 +361,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
updateOrderObj.setLogisticsId(0L).setLogisticsNo("");
}
// 执行更新
updateOrderObj.setStatus(TradeOrderStatusEnum.DELIVERED.getStatus()).setDeliveryTime(LocalDateTime.now());
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(), updateOrderObj);
updateOrderObj.setOrderStatus(TradeOrderStatusEnum.DELIVERED.getStatus()).setDeliveryTime(LocalDateTime.now());
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(), updateOrderObj);
if (updateCount == 0) {
throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED);
}
// 3. 记录订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.DELIVERED.getStatus(),
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), TradeOrderStatusEnum.DELIVERED.getStatus(),
MapUtil.<String, Object>builder().put("deliveryName", express != null ? express.getName() : "")
.put("logisticsNo", express != null ? deliveryReqVO.getLogisticsNo() : "").build());
@@ -476,14 +476,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
*/
private void receiveOrder0(TradeOrderDO order) {
// 更新 TradeOrderDO 状态为已完成
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(),
new TradeOrderDO().setStatus(TradeOrderStatusEnum.COMPLETED.getStatus()).setReceiveTime(LocalDateTime.now()));
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(),
new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.COMPLETED.getStatus()).setReceiveTime(LocalDateTime.now()));
if (updateCount == 0) {
throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED);
}
// 插入订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus());
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), TradeOrderStatusEnum.COMPLETED.getStatus());
}
/**
@@ -502,7 +502,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
throw exception(ORDER_NOT_FOUND);
}
// 校验订单是否是待收货状态
if (!TradeOrderStatusEnum.isDelivered(order.getStatus())) {
if (!TradeOrderStatusEnum.isDelivered(order.getOrderStatus())) {
throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED);
}
return order;
@@ -518,7 +518,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
throw exception(ORDER_NOT_FOUND);
}
// 1.2 校验状态
if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.UNPAID.getStatus())) {
if (ObjectUtil.notEqual(order.getOrderStatus(), TradeOrderStatusEnum.UNPAID.getStatus())) {
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
}
@@ -568,8 +568,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
*/
private void cancelOrder0(TradeOrderDO order, TradeOrderCancelTypeEnum cancelType) {
// 1. 更新 TradeOrderDO 状态为已取消
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(),
new TradeOrderDO().setStatus(TradeOrderStatusEnum.CANCELED.getStatus())
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(),
new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.CANCELED.getStatus())
.setCancelType(cancelType.getType()).setCancelTime(LocalDateTime.now()));
if (updateCount == 0) {
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
@@ -580,7 +580,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
tradeOrderHandlers.forEach(handler -> handler.afterCancelOrder(order, orderItems));
// 3. 增加订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.CANCELED.getStatus());
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), TradeOrderStatusEnum.CANCELED.getStatus());
}
/**
@@ -597,7 +597,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
return;
}
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
.setStatus(TradeOrderStatusEnum.CANCELED.getStatus())
.setOrderStatus(TradeOrderStatusEnum.CANCELED.getStatus())
.setCancelType(TradeOrderCancelTypeEnum.AFTER_SALE_CLOSE.getType()).setCancelTime(LocalDateTime.now()));
// 2. 执行 TradeOrderHandler 的后置处理
@@ -615,14 +615,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
throw exception(ORDER_NOT_FOUND);
}
// 1.2 校验状态
if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.CANCELED.getStatus())) {
if (ObjectUtil.notEqual(order.getOrderStatus(), TradeOrderStatusEnum.CANCELED.getStatus())) {
throw exception(ORDER_DELETE_FAIL_STATUS_NOT_CANCEL);
}
// 2. 删除订单
tradeOrderMapper.deleteById(id);
// 3. 记录日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus());
}
@Override
@@ -674,7 +674,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
payOrderApi.updatePayOrderPrice(order.getPayOrderId(), newPayPrice).checkError();
// 5. 记录订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus(),
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus(),
MapUtil.<String, Object>builder().put("oldPayPrice", MoneyUtils.fenToYuanStr(order.getPayPrice()))
.put("adjustPrice", MoneyUtils.fenToYuanStr(reqVO.getAdjustPrice()))
.put("newPayPrice", MoneyUtils.fenToYuanStr(newPayPrice)).build());
@@ -686,7 +686,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// 校验交易订单
TradeOrderDO order = validateOrderExists(reqVO.getId());
// 只有待发货状态,才可以修改订单收货地址;
if (!TradeOrderStatusEnum.isUndelivered(order.getStatus())) {
if (!TradeOrderStatusEnum.isUndelivered(order.getOrderStatus())) {
throw exception(ORDER_UPDATE_ADDRESS_FAIL_STATUS_NOT_DELIVERED);
}
@@ -694,7 +694,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
tradeOrderMapper.updateById(TradeOrderConvert.INSTANCE.convert(reqVO));
// 记录订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus());
}
@Override
@@ -753,13 +753,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// 2.1 更新订单的退款金额、积分
Integer orderRefundPrice = order.getRefundPrice() + refundPrice;
Integer orderRefundPoint = order.getRefundPoint() + orderItem.getUsePoint();
Integer refundStatus = isAllOrderItemAfterSaleSuccess(order.getId()) ?
TradeOrderRefundStatusEnum.ALL.getStatus() // 如果都售后成功,则需要取消订单
: TradeOrderRefundStatusEnum.PART.getStatus();
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
.setRefundStatus(refundStatus)
.setRefundPrice(orderRefundPrice).setRefundPoint(orderRefundPoint));
.setRefundStatus(refundStatus));
// 2.2 如果全部退款,则进行取消订单
getSelf().cancelOrderByAfterSale(order, orderRefundPrice);
}
@@ -807,7 +805,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
if (order == null) {
throw exception(ORDER_NOT_FOUND);
}
if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus())) {
if (ObjectUtil.notEqual(order.getOrderStatus(), TradeOrderStatusEnum.COMPLETED.getStatus())) {
throw exception(ORDER_COMMENT_FAIL_STATUS_NOT_COMPLETED);
}
if (ObjectUtil.notEqual(order.getCommentStatus(), Boolean.FALSE)) {
@@ -823,7 +821,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE)
// .setFinishTime(LocalDateTime.now()));
// // 增加订单日志。注意:只有在所有订单项都评价后,才会增加
// TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
// TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus());
// }
return commentId;
}
@@ -855,8 +853,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
@Transactional(rollbackFor = Exception.class)
public void updateOrderCombinationInfo(Long orderId, Long activityId, Long combinationRecordId, Long headId) {
tradeOrderMapper.updateById(
new TradeOrderDO().setId(orderId).setCombinationActivityId(activityId)
.setCombinationRecordId(combinationRecordId).setCombinationHeadId(headId));
new TradeOrderDO().setId(orderId));
}
@Override
@@ -900,8 +897,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
throw exception(ORDER_NOT_FOUND);
}
// 2. 更新订单赠送的优惠券编号列表
tradeOrderMapper.updateById(new TradeOrderDO().setId(orderId).setGiveCouponIds(giveCouponIds));
}
/**
@@ -935,7 +930,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE)
.setFinishTime(LocalDateTime.now()));
// 增加订单日志。注意:只有在所有订单项都评价后,才会增加
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus());
}
/**