调整订单接口
This commit is contained in:
@@ -351,9 +351,9 @@ public class GlobalExceptionHandler {
|
|||||||
}
|
}
|
||||||
// 4. 订单系统
|
// 4. 订单系统
|
||||||
if (StrUtil.containsAny(message, "product_", "promotion_", "trade_")) {
|
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(),
|
return CommonResult.error(NOT_IMPLEMENTED.getCode(),
|
||||||
"[商城系统 tashow-module-trade - 表结构未导入]");
|
"[订单系统表结构未导入]");
|
||||||
}
|
}
|
||||||
// 5. ERP 系统
|
// 5. ERP 系统
|
||||||
if (message.contains("erp_")) {
|
if (message.contains("erp_")) {
|
||||||
|
|||||||
@@ -2,63 +2,114 @@ package com.tashow.cloud.trade.controller.admin.order.vo;
|
|||||||
|
|
||||||
// 移除Swagger相关导入
|
// 移除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.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
// 管理后台 - 交易订单的详情 Response VO
|
// 管理后台 - 交易订单的详情 Response VO
|
||||||
@Data
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
|
public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
|
||||||
|
|
||||||
/**
|
//基本信息
|
||||||
* 订单项列表
|
private TradeOrderBaseInfo tradeOrderInfoBase;
|
||||||
*/
|
//配送信息
|
||||||
private List<Item> items;
|
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
|
@Data
|
||||||
public static class OrderLog {
|
@Accessors(chain = true)
|
||||||
|
class TradeOrderBaseInfo{
|
||||||
// 操作详情 - 必填,示例:订单发货
|
//订单id
|
||||||
private String content;
|
private String id;
|
||||||
|
//订单编号
|
||||||
// 创建时间 - 必填,示例:2023-06-01 10:50:20
|
private String orderNo;
|
||||||
|
//订单状态
|
||||||
|
private String orderStatus;
|
||||||
|
//订单类型
|
||||||
|
private String orderType;
|
||||||
|
//订单来源
|
||||||
|
private String orderTerminal;
|
||||||
|
//创建时间
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
//完成时间
|
||||||
// 用户类型 - 必填,示例:1
|
private LocalDateTime finishTime;
|
||||||
private Integer userType;
|
//取消时间
|
||||||
|
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
|
@Data
|
||||||
public static class Item extends TradeOrderItemBaseVO {
|
@Accessors(chain = true)
|
||||||
|
class TradeDeliveryInfo{
|
||||||
/**
|
//承运方
|
||||||
* 属性数组
|
private String logisticsName;
|
||||||
*/
|
//送货方式
|
||||||
private List<ProductPropertyValueDetailRespVO> properties;
|
private String logisticsType;
|
||||||
|
//送货上门
|
||||||
|
private String logisticsNum;
|
||||||
|
//收货人
|
||||||
|
private String receiverName;
|
||||||
|
//收货手机
|
||||||
|
private String receiverMobile;
|
||||||
|
//收货地址
|
||||||
|
private String receiverDetailAddress;
|
||||||
|
//快递详情
|
||||||
|
private String deliveryDetail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ public class AppTradeOrderController {
|
|||||||
}
|
}
|
||||||
// 1.2 sync 仅在等待支付
|
// 1.2 sync 仅在等待支付
|
||||||
if (Boolean.TRUE.equals(sync)
|
if (Boolean.TRUE.equals(sync)
|
||||||
&& TradeOrderStatusEnum.isUnpaid(order.getStatus()) && !order.getPayStatus()) {
|
&& TradeOrderStatusEnum.isUnpaid(order.getOrderStatus()) && !order.getPayStatus()) {
|
||||||
tradeOrderUpdateService.syncOrderPayStatusQuietly(order.getId(), order.getPayOrderId());
|
tradeOrderUpdateService.syncOrderPayStatusQuietly(order.getId(), order.getPayOrderId());
|
||||||
// 重新查询,因为同步后,可能会有变化
|
// 重新查询,因为同步后,可能会有变化
|
||||||
order = tradeOrderQueryService.getOrder(id);
|
order = tradeOrderQueryService.getOrder(id);
|
||||||
|
|||||||
@@ -53,8 +53,7 @@ public interface TradeOrderConvert {
|
|||||||
@Mappings({
|
@Mappings({
|
||||||
@Mapping(target = "id", ignore = true),
|
@Mapping(target = "id", ignore = true),
|
||||||
@Mapping(source = "userId", target = "userId"),
|
@Mapping(source = "userId", target = "userId"),
|
||||||
@Mapping(source = "createReqVO.couponId", target = "couponId"),
|
@Mapping(target = "merchantRemark", ignore = true),
|
||||||
@Mapping(target = "remark", ignore = true),
|
|
||||||
@Mapping(source = "createReqVO.remark", target = "userRemark"),
|
@Mapping(source = "createReqVO.remark", target = "userRemark"),
|
||||||
})
|
})
|
||||||
TradeOrderDO convert(Long userId, AppTradeOrderCreateReqVO createReqVO);
|
TradeOrderDO convert(Long userId, AppTradeOrderCreateReqVO createReqVO);
|
||||||
@@ -92,7 +91,7 @@ public interface TradeOrderConvert {
|
|||||||
.setAppKey(orderProperties.getPayAppKey()).setUserIp(order.getUserIp());
|
.setAppKey(orderProperties.getPayAppKey()).setUserIp(order.getUserIp());
|
||||||
// 商户相关字段
|
// 商户相关字段
|
||||||
createReqDTO.setMerchantOrderId(String.valueOf(order.getId()));
|
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 位
|
subject = StrUtils.maxLength(subject, PayOrderCreateReqDTO.SUBJECT_MAX_LENGTH); // 避免超过 32 位
|
||||||
createReqDTO.setSubject(subject);
|
createReqDTO.setSubject(subject);
|
||||||
createReqDTO.setBody(subject); // TODO 芋艿:临时写死
|
createReqDTO.setBody(subject); // TODO 芋艿:临时写死
|
||||||
@@ -130,16 +129,16 @@ public interface TradeOrderConvert {
|
|||||||
List<TradeOrderLogDO> orderLogs,
|
List<TradeOrderLogDO> orderLogs,
|
||||||
MemberUserRespDTO user, MemberUserRespDTO brokerageUser) {
|
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));
|
||||||
orderVO.setBrokerageUser(convert(brokerageUser));
|
// orderVO.setBrokerageUser(convert(brokerageUser));
|
||||||
// 处理日志
|
// // 处理日志
|
||||||
orderVO.setLogs(convertList03(orderLogs));
|
// orderVO.setLogs(convertList03(orderLogs));
|
||||||
return orderVO;
|
return orderVO;
|
||||||
}
|
}
|
||||||
List<TradeOrderDetailRespVO.OrderLog> convertList03(List<TradeOrderLogDO> orderLogs);
|
List<TradeOrderDetailRespVO> convertList03(List<TradeOrderLogDO> orderLogs);
|
||||||
|
|
||||||
TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
|
TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
|
||||||
|
|
||||||
@@ -251,7 +250,7 @@ public interface TradeOrderConvert {
|
|||||||
ProductSpuRespDTO spu, ProductSkuRespDTO sku) {
|
ProductSpuRespDTO spu, ProductSkuRespDTO sku) {
|
||||||
BrokerageAddReqBO bo = new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId())
|
BrokerageAddReqBO bo = new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId())
|
||||||
.setBasePrice(item.getPayPrice())
|
.setBasePrice(item.getPayPrice())
|
||||||
.setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getSpuName()))
|
.setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getProdId()))
|
||||||
.setFirstFixedPrice(0).setSecondFixedPrice(0);
|
.setFirstFixedPrice(0).setSecondFixedPrice(0);
|
||||||
if (BooleanUtil.isTrue(spu.getSubCommissionType())) {
|
if (BooleanUtil.isTrue(spu.getSubCommissionType())) {
|
||||||
bo.setFirstFixedPrice(sku.getFirstBrokeragePrice()).setSecondFixedPrice(sku.getSecondBrokeragePrice());
|
bo.setFirstFixedPrice(sku.getFirstBrokeragePrice()).setSecondFixedPrice(sku.getSecondBrokeragePrice());
|
||||||
@@ -263,14 +262,11 @@ public interface TradeOrderConvert {
|
|||||||
List<TradeOrderRespDTO> convertList04(List<TradeOrderDO> list);
|
List<TradeOrderRespDTO> convertList04(List<TradeOrderDO> list);
|
||||||
|
|
||||||
@Mappings({
|
@Mappings({
|
||||||
@Mapping(target = "activityId", source = "order.combinationActivityId"),
|
@Mapping(target = "prodId", source = "item.prodId"),
|
||||||
@Mapping(target = "spuId", source = "item.spuId"),
|
|
||||||
@Mapping(target = "skuId", source = "item.skuId"),
|
@Mapping(target = "skuId", source = "item.skuId"),
|
||||||
@Mapping(target = "count", source = "item.count"),
|
@Mapping(target = "count", source = "item.count"),
|
||||||
@Mapping(target = "orderId", source = "order.id"),
|
@Mapping(target = "orderId", source = "order.id"),
|
||||||
@Mapping(target = "userId", source = "order.userId"),
|
@Mapping(target = "userId", source = "order.userId"),
|
||||||
@Mapping(target = "headId", source = "order.combinationHeadId"),
|
|
||||||
@Mapping(target = "combinationPrice", source = "item.payPrice"),
|
|
||||||
})
|
})
|
||||||
CombinationRecordCreateReqDTO convert(TradeOrderDO order, TradeOrderItemDO item);
|
CombinationRecordCreateReqDTO convert(TradeOrderDO order, TradeOrderItemDO item);
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public class CombinationRecordCreateReqDTO {
|
|||||||
* spu 编号
|
* spu 编号
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "spu 编号不能为空")
|
@NotNull(message = "spu 编号不能为空")
|
||||||
private Long spuId;
|
private Long prodId;
|
||||||
/**
|
/**
|
||||||
* sku 编号
|
* sku 编号
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
package com.tashow.cloud.trade.dal.dataobject.order;
|
package com.tashow.cloud.trade.dal.dataobject.order;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
|
||||||
import com.tashow.cloud.common.enums.TerminalEnum;
|
import com.tashow.cloud.common.enums.TerminalEnum;
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
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.DeliveryExpressDO;
|
||||||
import com.tashow.cloud.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
|
import com.tashow.cloud.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
|
||||||
import com.tashow.cloud.tradeapi.enums.delivery.DeliveryTypeEnum;
|
import com.tashow.cloud.tradeapi.enums.delivery.DeliveryTypeEnum;
|
||||||
@@ -16,15 +13,13 @@ import com.tashow.cloud.tradeapi.enums.order.TradeOrderTypeEnum;
|
|||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 交易订单 DO
|
* 交易订单 DO
|
||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
@TableName(value = "trade_order", autoResultMap = true)
|
@TableName(value = "tz_trade_order", autoResultMap = true)
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
@@ -54,13 +49,13 @@ public class TradeOrderDO extends BaseDO {
|
|||||||
*
|
*
|
||||||
* 枚举 {@link TradeOrderTypeEnum}
|
* 枚举 {@link TradeOrderTypeEnum}
|
||||||
*/
|
*/
|
||||||
private Integer type;
|
private Integer orderType;
|
||||||
/**
|
/**
|
||||||
* 订单来源
|
* 订单来源
|
||||||
*
|
*
|
||||||
* 枚举 {@link TerminalEnum}
|
* 枚举 {@link TerminalEnum}
|
||||||
*/
|
*/
|
||||||
private Integer terminal;
|
private Integer orderTerminal;
|
||||||
/**
|
/**
|
||||||
* 用户编号
|
* 用户编号
|
||||||
*
|
*
|
||||||
@@ -80,7 +75,7 @@ public class TradeOrderDO extends BaseDO {
|
|||||||
*
|
*
|
||||||
* 枚举 {@link TradeOrderStatusEnum}
|
* 枚举 {@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 Boolean commentStatus;
|
||||||
|
|
||||||
/**
|
|
||||||
* 推广人编号
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private Long brokerageUserId;
|
|
||||||
|
|
||||||
// ========== 价格 + 支付基本信息 ==========
|
// ========== 价格 + 支付基本信息 ==========
|
||||||
|
|
||||||
// 价格文档 - 淘宝:https://open.taobao.com/docV3.htm?docId=108471&docType=1
|
// 价格文档 - 淘宝:https://open.taobao.com/docV3.htm?docId=108471&docType=1
|
||||||
@@ -257,102 +246,4 @@ public class TradeOrderDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer refundPrice;
|
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;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,13 +52,13 @@ public class TradeOrderItemDO extends BaseDO {
|
|||||||
*
|
*
|
||||||
* 关联 ProductSkuDO 的 spuId 编号
|
* 关联 ProductSkuDO 的 spuId 编号
|
||||||
*/
|
*/
|
||||||
private Long spuId;
|
private Long prodId;
|
||||||
/**
|
/**
|
||||||
* 商品 SPU 名称
|
* 商品 SPU 名称
|
||||||
*
|
*
|
||||||
* 冗余 ProductSkuDO 的 spuName 编号
|
* 冗余 ProductSkuDO 的 spuName 编号
|
||||||
*/
|
*/
|
||||||
private String spuName;
|
private String prodName;
|
||||||
/**
|
/**
|
||||||
* 商品 SKU 编号
|
* 商品 SKU 编号
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
|||||||
|
|
||||||
default int updateByIdAndStatus(Long id, Integer status, TradeOrderDO update) {
|
default int updateByIdAndStatus(Long id, Integer status, TradeOrderDO update) {
|
||||||
return update(update, new LambdaUpdateWrapper<TradeOrderDO>()
|
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) {
|
default TradeOrderDO selectByIdAndUserId(Long id, Long userId) {
|
||||||
@@ -34,10 +34,10 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
|||||||
.eqIfPresent(TradeOrderDO::getUserId, reqVO.getUserId())
|
.eqIfPresent(TradeOrderDO::getUserId, reqVO.getUserId())
|
||||||
.eqIfPresent(TradeOrderDO::getDeliveryType, reqVO.getDeliveryType())
|
.eqIfPresent(TradeOrderDO::getDeliveryType, reqVO.getDeliveryType())
|
||||||
.inIfPresent(TradeOrderDO::getUserId, userIds)
|
.inIfPresent(TradeOrderDO::getUserId, userIds)
|
||||||
.eqIfPresent(TradeOrderDO::getType, reqVO.getType())
|
.eqIfPresent(TradeOrderDO::getOrderType, reqVO.getType())
|
||||||
.eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus())
|
.eqIfPresent(TradeOrderDO::getOrderStatus, reqVO.getStatus())
|
||||||
.eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
|
.eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
|
||||||
.eqIfPresent(TradeOrderDO::getTerminal, reqVO.getTerminal())
|
.eqIfPresent(TradeOrderDO::getOrderTerminal, reqVO.getTerminal())
|
||||||
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
|
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
|
||||||
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
|
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
|
||||||
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
|
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
|
||||||
@@ -55,10 +55,10 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
|||||||
.eqIfPresent(TradeOrderDO::getUserId, reqVO.getUserId())
|
.eqIfPresent(TradeOrderDO::getUserId, reqVO.getUserId())
|
||||||
.eqIfPresent(TradeOrderDO::getDeliveryType, reqVO.getDeliveryType())
|
.eqIfPresent(TradeOrderDO::getDeliveryType, reqVO.getDeliveryType())
|
||||||
.inIfPresent(TradeOrderDO::getUserId, userIds)
|
.inIfPresent(TradeOrderDO::getUserId, userIds)
|
||||||
.eqIfPresent(TradeOrderDO::getType, reqVO.getType())
|
.eqIfPresent(TradeOrderDO::getOrderType, reqVO.getType())
|
||||||
.eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus())
|
.eqIfPresent(TradeOrderDO::getOrderStatus, reqVO.getStatus())
|
||||||
.eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
|
.eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
|
||||||
.eqIfPresent(TradeOrderDO::getTerminal, reqVO.getTerminal())
|
.eqIfPresent(TradeOrderDO::getOrderTerminal, reqVO.getTerminal())
|
||||||
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
|
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
|
||||||
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
|
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
|
||||||
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
|
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
|
||||||
@@ -69,7 +69,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
|||||||
default PageResult<TradeOrderDO> selectPage(AppTradeOrderPageReqVO reqVO, Long userId) {
|
default PageResult<TradeOrderDO> selectPage(AppTradeOrderPageReqVO reqVO, Long userId) {
|
||||||
return selectPage(reqVO, new LambdaQueryWrapperX<TradeOrderDO>()
|
return selectPage(reqVO, new LambdaQueryWrapperX<TradeOrderDO>()
|
||||||
.eq(TradeOrderDO::getUserId, userId)
|
.eq(TradeOrderDO::getUserId, userId)
|
||||||
.eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus())
|
.eqIfPresent(TradeOrderDO::getOrderStatus, reqVO.getStatus())
|
||||||
.eqIfPresent(TradeOrderDO::getCommentStatus, reqVO.getCommentStatus())
|
.eqIfPresent(TradeOrderDO::getCommentStatus, reqVO.getCommentStatus())
|
||||||
.orderByDesc(TradeOrderDO::getId)); // TODO 芋艿:未来不同的 status,不同的排序
|
.orderByDesc(TradeOrderDO::getId)); // TODO 芋艿:未来不同的 status,不同的排序
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
|||||||
default Long selectCountByUserIdAndStatus(Long userId, Integer status, Boolean commentStatus) {
|
default Long selectCountByUserIdAndStatus(Long userId, Integer status, Boolean commentStatus) {
|
||||||
return selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
|
return selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
|
||||||
.eq(TradeOrderDO::getUserId, userId)
|
.eq(TradeOrderDO::getUserId, userId)
|
||||||
.eqIfPresent(TradeOrderDO::getStatus, status)
|
.eqIfPresent(TradeOrderDO::getOrderStatus, status)
|
||||||
.eqIfPresent(TradeOrderDO::getCommentStatus, commentStatus));
|
.eqIfPresent(TradeOrderDO::getCommentStatus, commentStatus));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,20 +89,20 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
|||||||
|
|
||||||
default List<TradeOrderDO> selectListByStatusAndCreateTimeLt(Integer status, LocalDateTime createTime) {
|
default List<TradeOrderDO> selectListByStatusAndCreateTimeLt(Integer status, LocalDateTime createTime) {
|
||||||
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
|
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
|
||||||
.eq(TradeOrderDO::getStatus, status)
|
.eq(TradeOrderDO::getOrderStatus, status)
|
||||||
.lt(TradeOrderDO::getCreateTime, createTime));
|
.lt(TradeOrderDO::getCreateTime, createTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
default List<TradeOrderDO> selectListByStatusAndDeliveryTimeLt(Integer status, LocalDateTime deliveryTime) {
|
default List<TradeOrderDO> selectListByStatusAndDeliveryTimeLt(Integer status, LocalDateTime deliveryTime) {
|
||||||
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
|
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
|
||||||
.eq(TradeOrderDO::getStatus, status)
|
.eq(TradeOrderDO::getOrderStatus, status)
|
||||||
.lt(TradeOrderDO::getDeliveryTime, deliveryTime));
|
.lt(TradeOrderDO::getDeliveryTime, deliveryTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
default List<TradeOrderDO> selectListByStatusAndReceiveTimeLt(Integer status, LocalDateTime receive,
|
default List<TradeOrderDO> selectListByStatusAndReceiveTimeLt(Integer status, LocalDateTime receive,
|
||||||
Boolean commentStatus) {
|
Boolean commentStatus) {
|
||||||
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
|
return selectList(new LambdaUpdateWrapper<TradeOrderDO>()
|
||||||
.eq(TradeOrderDO::getStatus, status)
|
.eq(TradeOrderDO::getOrderStatus, status)
|
||||||
.lt(TradeOrderDO::getReceiveTime, receive)
|
.lt(TradeOrderDO::getReceiveTime, receive)
|
||||||
.eq(TradeOrderDO::getCommentStatus, commentStatus));
|
.eq(TradeOrderDO::getCommentStatus, commentStatus));
|
||||||
}
|
}
|
||||||
@@ -110,18 +110,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
|||||||
default List<TradeOrderDO> selectListByUserIdAndActivityId(Long userId, Long activityId, TradeOrderTypeEnum type) {
|
default List<TradeOrderDO> selectListByUserIdAndActivityId(Long userId, Long activityId, TradeOrderTypeEnum type) {
|
||||||
LambdaQueryWrapperX<TradeOrderDO> queryWrapperX = new LambdaQueryWrapperX<>();
|
LambdaQueryWrapperX<TradeOrderDO> queryWrapperX = new LambdaQueryWrapperX<>();
|
||||||
queryWrapperX.eq(TradeOrderDO::getUserId, userId);
|
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);
|
return selectList(queryWrapperX);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,8 +120,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
|||||||
default TradeOrderDO selectByUserIdAndCombinationActivityIdAndStatus(Long userId, Long combinationActivityId, Integer status) {
|
default TradeOrderDO selectByUserIdAndCombinationActivityIdAndStatus(Long userId, Long combinationActivityId, Integer status) {
|
||||||
return selectOne(new LambdaQueryWrapperX<TradeOrderDO>()
|
return selectOne(new LambdaQueryWrapperX<TradeOrderDO>()
|
||||||
.eq(TradeOrderDO::getUserId, userId)
|
.eq(TradeOrderDO::getUserId, userId)
|
||||||
.eq(TradeOrderDO::getStatus, status)
|
.eq(TradeOrderDO::getOrderStatus, status)
|
||||||
.eq(TradeOrderDO::getCombinationActivityId, combinationActivityId)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,16 +137,16 @@ public class AfterSaleServiceImpl implements AfterSaleService {
|
|||||||
}
|
}
|
||||||
// TODO 芋艿:超过一定时间,不允许售后
|
// TODO 芋艿:超过一定时间,不允许售后
|
||||||
// 已取消,无法发起售后
|
// 已取消,无法发起售后
|
||||||
if (TradeOrderStatusEnum.isCanceled(order.getStatus())) {
|
if (TradeOrderStatusEnum.isCanceled(order.getOrderStatus())) {
|
||||||
throw exception(AFTER_SALE_CREATE_FAIL_ORDER_STATUS_CANCELED);
|
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);
|
throw exception(AFTER_SALE_CREATE_FAIL_ORDER_STATUS_NO_PAID);
|
||||||
}
|
}
|
||||||
// 如果是【退货退款】的情况,需要额外校验是否发货
|
// 如果是【退货退款】的情况,需要额外校验是否发货
|
||||||
if (createReqVO.getWay().equals(AfterSaleWayEnum.RETURN_AND_REFUND.getWay())
|
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);
|
throw exception(AFTER_SALE_CREATE_FAIL_ORDER_STATUS_NO_DELIVERED);
|
||||||
}
|
}
|
||||||
return orderItem;
|
return orderItem;
|
||||||
@@ -161,7 +161,7 @@ public class AfterSaleServiceImpl implements AfterSaleService {
|
|||||||
// 标记是售中还是售后
|
// 标记是售中还是售后
|
||||||
TradeOrderDO order = tradeOrderQueryService.getOrder(orderItem.getUserId(), orderItem.getOrderId());
|
TradeOrderDO order = tradeOrderQueryService.getOrder(orderItem.getUserId(), orderItem.getOrderId());
|
||||||
afterSale.setOrderNo(order.getOrderNum()); // 记录 orderNo 订单流水,方便后续检索
|
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());
|
? AfterSaleTypeEnum.AFTER_SALE.getType() : AfterSaleTypeEnum.IN_SALE.getType());
|
||||||
tradeAfterSaleMapper.insert(afterSale);
|
tradeAfterSaleMapper.insert(afterSale);
|
||||||
|
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
|
|||||||
public int getActivityProductCount(Long userId, Long activityId, TradeOrderTypeEnum type) {
|
public int getActivityProductCount(Long userId, Long activityId, TradeOrderTypeEnum type) {
|
||||||
// 获得订单列表
|
// 获得订单列表
|
||||||
List<TradeOrderDO> orders = tradeOrderMapper.selectListByUserIdAndActivityId(userId, activityId, 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)) {
|
if (CollUtil.isEmpty(orders)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,15 +177,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
// TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(userId, createReqVO, calculateRespBO);
|
// TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(userId, createReqVO, calculateRespBO);
|
||||||
// order.setType(calculateRespBO.getType());
|
// order.setType(calculateRespBO.getType());
|
||||||
// order.setOrderNum(tradeNoRedisDAO.generate(TradeNoRedisDAO.TRADE_ORDER_NO_PREFIX));
|
// order.setOrderNum(tradeNoRedisDAO.generate(TradeNoRedisDAO.TRADE_ORDER_NO_PREFIX));
|
||||||
// order.setStatus(TradeOrderStatusEnum.UNPAID.getStatus());
|
// order.setStatus(TradeOrderStatusEnum.UNPAID.getOrderStatus());
|
||||||
// order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus());
|
// order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getOrderStatus());
|
||||||
// order.setProductCount(getSumValue(calculateRespBO.getItems(), TradePriceCalculateRespBO.OrderItem::getCount, Integer::sum));
|
// order.setProductCount(getSumValue(calculateRespBO.getItems(), TradePriceCalculateRespBO.OrderItem::getCount, Integer::sum));
|
||||||
// order.setUserIp(getClientIP()).setTerminal(getTerminal());
|
// order.setUserIp(getClientIP()).setTerminal(getTerminal());
|
||||||
// // 使用 + 赠送优惠券
|
// // 使用 + 赠送优惠券
|
||||||
// order.setGiveCouponTemplateCounts(calculateRespBO.getGiveCouponTemplateCounts());
|
// order.setGiveCouponTemplateCounts(calculateRespBO.getGiveCouponTemplateCounts());
|
||||||
// // 支付 + 退款信息
|
// // 支付 + 退款信息
|
||||||
// order.setAdjustPrice(0).setPayStatus(false);
|
// order.setAdjustPrice(0).setPayStatus(false);
|
||||||
// order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus()).setRefundPrice(0);
|
// order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getOrderStatus()).setRefundPrice(0);
|
||||||
// // 物流信息
|
// // 物流信息
|
||||||
// order.setDeliveryType(createReqVO.getDeliveryType());
|
// order.setDeliveryType(createReqVO.getDeliveryType());
|
||||||
// if (Objects.equals(createReqVO.getDeliveryType(), DeliveryTypeEnum.EXPRESS.getType())) {
|
// if (Objects.equals(createReqVO.getDeliveryType(), DeliveryTypeEnum.EXPRESS.getType())) {
|
||||||
@@ -232,7 +232,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 4. 插入订单日志
|
// 4. 插入订单日志
|
||||||
TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getStatus());
|
TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getOrderStatus());
|
||||||
|
|
||||||
// TODO @LeeYan9: 是可以思考下, 订单的营销优惠记录, 应该记录在哪里, 微信讨论起来!
|
// TODO @LeeYan9: 是可以思考下, 订单的营销优惠记录, 应该记录在哪里, 微信讨论起来!
|
||||||
}
|
}
|
||||||
@@ -255,7 +255,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
// 1.1 校验订单是否存在
|
// 1.1 校验订单是否存在
|
||||||
TradeOrderDO order = validateOrderExists(id);
|
TradeOrderDO order = validateOrderExists(id);
|
||||||
// 1.2 校验订单已支付
|
// 1.2 校验订单已支付
|
||||||
if (!TradeOrderStatusEnum.isUnpaid(order.getStatus()) || order.getPayStatus()) {
|
if (!TradeOrderStatusEnum.isUnpaid(order.getOrderStatus()) || order.getPayStatus()) {
|
||||||
// 特殊:如果订单已支付,且支付单号相同,直接返回,说明重复回调
|
// 特殊:如果订单已支付,且支付单号相同,直接返回,说明重复回调
|
||||||
if (ObjectUtil.equals(order.getPayOrderId(), payOrderId)) {
|
if (ObjectUtil.equals(order.getPayOrderId(), payOrderId)) {
|
||||||
log.warn("[updateOrderPaid][order({}) 已支付,且支付单号相同({}),直接返回]", order, payOrderId);
|
log.warn("[updateOrderPaid][order({}) 已支付,且支付单号相同({}),直接返回]", order, payOrderId);
|
||||||
@@ -270,8 +270,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
PayOrderRespDTO payOrder = validatePayOrderPaid(order, payOrderId);
|
PayOrderRespDTO payOrder = validatePayOrderPaid(order, payOrderId);
|
||||||
|
|
||||||
// 3. 更新 TradeOrderDO 状态为已支付,等待发货
|
// 3. 更新 TradeOrderDO 状态为已支付,等待发货
|
||||||
int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getStatus(),
|
int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getOrderStatus(),
|
||||||
new TradeOrderDO().setStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus()).setPayStatus(true)
|
new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus()).setPayStatus(true)
|
||||||
.setPayTime(LocalDateTime.now()).setPayChannelCode(""));
|
.setPayTime(LocalDateTime.now()).setPayChannelCode(""));
|
||||||
if (updateCount == 0) {
|
if (updateCount == 0) {
|
||||||
throw exception(ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
|
throw exception(ORDER_UPDATE_PAID_STATUS_NOT_UNPAID);
|
||||||
@@ -282,7 +282,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
tradeOrderHandlers.forEach(handler -> handler.afterPayOrder(order, orderItems));
|
tradeOrderHandlers.forEach(handler -> handler.afterPayOrder(order, orderItems));
|
||||||
|
|
||||||
// 5. 记录订单日志
|
// 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());
|
TradeOrderLogUtils.setUserInfo(order.getUserId(), UserTypeEnum.MEMBER.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -361,14 +361,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
updateOrderObj.setLogisticsId(0L).setLogisticsNo("");
|
updateOrderObj.setLogisticsId(0L).setLogisticsNo("");
|
||||||
}
|
}
|
||||||
// 执行更新
|
// 执行更新
|
||||||
updateOrderObj.setStatus(TradeOrderStatusEnum.DELIVERED.getStatus()).setDeliveryTime(LocalDateTime.now());
|
updateOrderObj.setOrderStatus(TradeOrderStatusEnum.DELIVERED.getStatus()).setDeliveryTime(LocalDateTime.now());
|
||||||
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(), updateOrderObj);
|
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(), updateOrderObj);
|
||||||
if (updateCount == 0) {
|
if (updateCount == 0) {
|
||||||
throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED);
|
throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 记录订单日志
|
// 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() : "")
|
MapUtil.<String, Object>builder().put("deliveryName", express != null ? express.getName() : "")
|
||||||
.put("logisticsNo", express != null ? deliveryReqVO.getLogisticsNo() : "").build());
|
.put("logisticsNo", express != null ? deliveryReqVO.getLogisticsNo() : "").build());
|
||||||
|
|
||||||
@@ -476,14 +476,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
*/
|
*/
|
||||||
private void receiveOrder0(TradeOrderDO order) {
|
private void receiveOrder0(TradeOrderDO order) {
|
||||||
// 更新 TradeOrderDO 状态为已完成
|
// 更新 TradeOrderDO 状态为已完成
|
||||||
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(),
|
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(),
|
||||||
new TradeOrderDO().setStatus(TradeOrderStatusEnum.COMPLETED.getStatus()).setReceiveTime(LocalDateTime.now()));
|
new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.COMPLETED.getStatus()).setReceiveTime(LocalDateTime.now()));
|
||||||
if (updateCount == 0) {
|
if (updateCount == 0) {
|
||||||
throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED);
|
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);
|
throw exception(ORDER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
// 校验订单是否是待收货状态
|
// 校验订单是否是待收货状态
|
||||||
if (!TradeOrderStatusEnum.isDelivered(order.getStatus())) {
|
if (!TradeOrderStatusEnum.isDelivered(order.getOrderStatus())) {
|
||||||
throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED);
|
throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED);
|
||||||
}
|
}
|
||||||
return order;
|
return order;
|
||||||
@@ -518,7 +518,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
throw exception(ORDER_NOT_FOUND);
|
throw exception(ORDER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
// 1.2 校验状态
|
// 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);
|
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -568,8 +568,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
*/
|
*/
|
||||||
private void cancelOrder0(TradeOrderDO order, TradeOrderCancelTypeEnum cancelType) {
|
private void cancelOrder0(TradeOrderDO order, TradeOrderCancelTypeEnum cancelType) {
|
||||||
// 1. 更新 TradeOrderDO 状态为已取消
|
// 1. 更新 TradeOrderDO 状态为已取消
|
||||||
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(),
|
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(),
|
||||||
new TradeOrderDO().setStatus(TradeOrderStatusEnum.CANCELED.getStatus())
|
new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.CANCELED.getStatus())
|
||||||
.setCancelType(cancelType.getType()).setCancelTime(LocalDateTime.now()));
|
.setCancelType(cancelType.getType()).setCancelTime(LocalDateTime.now()));
|
||||||
if (updateCount == 0) {
|
if (updateCount == 0) {
|
||||||
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
|
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
|
||||||
@@ -580,7 +580,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
tradeOrderHandlers.forEach(handler -> handler.afterCancelOrder(order, orderItems));
|
tradeOrderHandlers.forEach(handler -> handler.afterCancelOrder(order, orderItems));
|
||||||
|
|
||||||
// 3. 增加订单日志
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
||||||
.setStatus(TradeOrderStatusEnum.CANCELED.getStatus())
|
.setOrderStatus(TradeOrderStatusEnum.CANCELED.getStatus())
|
||||||
.setCancelType(TradeOrderCancelTypeEnum.AFTER_SALE_CLOSE.getType()).setCancelTime(LocalDateTime.now()));
|
.setCancelType(TradeOrderCancelTypeEnum.AFTER_SALE_CLOSE.getType()).setCancelTime(LocalDateTime.now()));
|
||||||
|
|
||||||
// 2. 执行 TradeOrderHandler 的后置处理
|
// 2. 执行 TradeOrderHandler 的后置处理
|
||||||
@@ -615,14 +615,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
throw exception(ORDER_NOT_FOUND);
|
throw exception(ORDER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
// 1.2 校验状态
|
// 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);
|
throw exception(ORDER_DELETE_FAIL_STATUS_NOT_CANCEL);
|
||||||
}
|
}
|
||||||
// 2. 删除订单
|
// 2. 删除订单
|
||||||
tradeOrderMapper.deleteById(id);
|
tradeOrderMapper.deleteById(id);
|
||||||
|
|
||||||
// 3. 记录日志
|
// 3. 记录日志
|
||||||
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
|
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -674,7 +674,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
payOrderApi.updatePayOrderPrice(order.getPayOrderId(), newPayPrice).checkError();
|
payOrderApi.updatePayOrderPrice(order.getPayOrderId(), newPayPrice).checkError();
|
||||||
|
|
||||||
// 5. 记录订单日志
|
// 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()))
|
MapUtil.<String, Object>builder().put("oldPayPrice", MoneyUtils.fenToYuanStr(order.getPayPrice()))
|
||||||
.put("adjustPrice", MoneyUtils.fenToYuanStr(reqVO.getAdjustPrice()))
|
.put("adjustPrice", MoneyUtils.fenToYuanStr(reqVO.getAdjustPrice()))
|
||||||
.put("newPayPrice", MoneyUtils.fenToYuanStr(newPayPrice)).build());
|
.put("newPayPrice", MoneyUtils.fenToYuanStr(newPayPrice)).build());
|
||||||
@@ -686,7 +686,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
// 校验交易订单
|
// 校验交易订单
|
||||||
TradeOrderDO order = validateOrderExists(reqVO.getId());
|
TradeOrderDO order = validateOrderExists(reqVO.getId());
|
||||||
// 只有待发货状态,才可以修改订单收货地址;
|
// 只有待发货状态,才可以修改订单收货地址;
|
||||||
if (!TradeOrderStatusEnum.isUndelivered(order.getStatus())) {
|
if (!TradeOrderStatusEnum.isUndelivered(order.getOrderStatus())) {
|
||||||
throw exception(ORDER_UPDATE_ADDRESS_FAIL_STATUS_NOT_DELIVERED);
|
throw exception(ORDER_UPDATE_ADDRESS_FAIL_STATUS_NOT_DELIVERED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -694,7 +694,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
tradeOrderMapper.updateById(TradeOrderConvert.INSTANCE.convert(reqVO));
|
tradeOrderMapper.updateById(TradeOrderConvert.INSTANCE.convert(reqVO));
|
||||||
|
|
||||||
// 记录订单日志
|
// 记录订单日志
|
||||||
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
|
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -753,13 +753,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
|
|
||||||
// 2.1 更新订单的退款金额、积分
|
// 2.1 更新订单的退款金额、积分
|
||||||
Integer orderRefundPrice = order.getRefundPrice() + refundPrice;
|
Integer orderRefundPrice = order.getRefundPrice() + refundPrice;
|
||||||
Integer orderRefundPoint = order.getRefundPoint() + orderItem.getUsePoint();
|
|
||||||
Integer refundStatus = isAllOrderItemAfterSaleSuccess(order.getId()) ?
|
Integer refundStatus = isAllOrderItemAfterSaleSuccess(order.getId()) ?
|
||||||
TradeOrderRefundStatusEnum.ALL.getStatus() // 如果都售后成功,则需要取消订单
|
TradeOrderRefundStatusEnum.ALL.getStatus() // 如果都售后成功,则需要取消订单
|
||||||
: TradeOrderRefundStatusEnum.PART.getStatus();
|
: TradeOrderRefundStatusEnum.PART.getStatus();
|
||||||
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId())
|
||||||
.setRefundStatus(refundStatus)
|
.setRefundStatus(refundStatus));
|
||||||
.setRefundPrice(orderRefundPrice).setRefundPoint(orderRefundPoint));
|
|
||||||
// 2.2 如果全部退款,则进行取消订单
|
// 2.2 如果全部退款,则进行取消订单
|
||||||
getSelf().cancelOrderByAfterSale(order, orderRefundPrice);
|
getSelf().cancelOrderByAfterSale(order, orderRefundPrice);
|
||||||
}
|
}
|
||||||
@@ -807,7 +805,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
if (order == null) {
|
if (order == null) {
|
||||||
throw exception(ORDER_NOT_FOUND);
|
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);
|
throw exception(ORDER_COMMENT_FAIL_STATUS_NOT_COMPLETED);
|
||||||
}
|
}
|
||||||
if (ObjectUtil.notEqual(order.getCommentStatus(), Boolean.FALSE)) {
|
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)
|
// tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE)
|
||||||
// .setFinishTime(LocalDateTime.now()));
|
// .setFinishTime(LocalDateTime.now()));
|
||||||
// // 增加订单日志。注意:只有在所有订单项都评价后,才会增加
|
// // 增加订单日志。注意:只有在所有订单项都评价后,才会增加
|
||||||
// TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
|
// TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus());
|
||||||
// }
|
// }
|
||||||
return commentId;
|
return commentId;
|
||||||
}
|
}
|
||||||
@@ -855,8 +853,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateOrderCombinationInfo(Long orderId, Long activityId, Long combinationRecordId, Long headId) {
|
public void updateOrderCombinationInfo(Long orderId, Long activityId, Long combinationRecordId, Long headId) {
|
||||||
tradeOrderMapper.updateById(
|
tradeOrderMapper.updateById(
|
||||||
new TradeOrderDO().setId(orderId).setCombinationActivityId(activityId)
|
new TradeOrderDO().setId(orderId));
|
||||||
.setCombinationRecordId(combinationRecordId).setCombinationHeadId(headId));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -900,8 +897,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|||||||
throw exception(ORDER_NOT_FOUND);
|
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)
|
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE)
|
||||||
.setFinishTime(LocalDateTime.now()));
|
.setFinishTime(LocalDateTime.now()));
|
||||||
// 增加订单日志。注意:只有在所有订单项都评价后,才会增加
|
// 增加订单日志。注意:只有在所有订单项都评价后,才会增加
|
||||||
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
|
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getOrderStatus(), order.getOrderStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user