调整
This commit is contained in:
@@ -1,14 +0,0 @@
|
||||
### 获得交易订单分页 => 成功
|
||||
GET {{baseUrl}}/trade/order/page?pageNo=1&pageSize=10
|
||||
Authorization: Bearer {{token}}
|
||||
tenant-id: {{adminTenantId}}
|
||||
|
||||
### 获得交易订单分页 => 成功
|
||||
GET {{baseUrl}}/trade/order/get-detail?id=21
|
||||
Authorization: Bearer {{token}}
|
||||
tenant-id: {{adminTenantId}}
|
||||
|
||||
### 获得交易订单的物流轨迹 => 成功
|
||||
GET {{baseUrl}}/trade/order/get-express-track-list?id=21
|
||||
Authorization: Bearer {{token}}
|
||||
tenant-id: {{adminTenantId}}
|
||||
@@ -5,7 +5,7 @@ import com.tashow.cloud.common.pojo.CommonResult;
|
||||
import com.tashow.cloud.common.pojo.PageResult;
|
||||
import com.tashow.cloud.memberapi.api.user.MemberUserApi;
|
||||
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderDetailRespVO;
|
||||
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderPageItemRespVO;
|
||||
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderPageRespVO;
|
||||
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderPageReqVO;
|
||||
import com.tashow.cloud.trade.convert.order.TradeOrderConvert;
|
||||
import com.tashow.cloud.trade.dal.dataobject.order.TradeOrderDO;
|
||||
@@ -16,6 +16,7 @@ import com.tashow.cloud.trade.service.order.TradeOrderQueryService;
|
||||
import com.tashow.cloud.trade.service.order.TradeOrderUpdateService;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.annotation.security.PermitAll;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@@ -56,7 +57,7 @@ public class TradeOrderController {
|
||||
@GetMapping("/page")
|
||||
@PermitAll
|
||||
// @PreAuthorize("@ss.hasPermission('trade:order:query')")
|
||||
public CommonResult<PageResult<TradeOrderPageItemRespVO>> getOrderPage(@Validated TradeOrderPageReqVO reqVO) {
|
||||
public CommonResult<PageResult<TradeOrderPageRespVO>> getOrderPage(@Valid TradeOrderPageReqVO reqVO) {
|
||||
// 查询订单
|
||||
PageResult<TradeOrderDO> pageResult = tradeOrderQueryService.getOrderPage(reqVO);
|
||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||
|
||||
@@ -1,151 +1,71 @@
|
||||
package com.tashow.cloud.trade.controller.admin.order.vo;
|
||||
|
||||
// 移除Swagger相关导入
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 交易订单 Base VO,提供给添加、修改、详细的子 VO 使用
|
||||
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
|
||||
*/
|
||||
@Data
|
||||
public class TradeOrderBaseVO {
|
||||
|
||||
// ========== 订单基本信息 ==========
|
||||
|
||||
// 订单编号 - 必填,示例:1024
|
||||
// 订单编号
|
||||
private Long id;
|
||||
|
||||
// 订单流水号 - 必填,示例:1146347329394184195
|
||||
// 订单流水号
|
||||
private String orderNum;
|
||||
|
||||
// 下单时间 - 必填
|
||||
// 下单时间
|
||||
private LocalDateTime createTime;
|
||||
|
||||
// 订单类型 - 必填,示例:1
|
||||
private Integer type;
|
||||
// 订单类目
|
||||
private String orderCategoryName;
|
||||
|
||||
// 订单来源 - 必填,示例:1
|
||||
private Integer terminal;
|
||||
// 订单来源
|
||||
private Integer orderTerminal;
|
||||
|
||||
// 用户编号 - 必填,示例:2048
|
||||
// 用户编号
|
||||
private Long userId;
|
||||
// 用户姓名
|
||||
private String userName;
|
||||
//用户昵称
|
||||
private String userNickName;
|
||||
// 用户头像
|
||||
private String userAvatar;
|
||||
//用户手机号
|
||||
private String userMobile;
|
||||
// 订单状态
|
||||
private Integer orderStatus;
|
||||
|
||||
// 用户 IP - 必填,示例:127.0.0.1
|
||||
private String userIp;
|
||||
//商品图片
|
||||
private String picUrl;
|
||||
//商品名称
|
||||
private String spuName;
|
||||
//商品规格
|
||||
private String skuName;
|
||||
// 购买的商品数量
|
||||
private Integer count;
|
||||
// 单价
|
||||
private Integer price;
|
||||
//到手价
|
||||
private Integer handedPrice;
|
||||
//实付金额
|
||||
private Integer payPrice;
|
||||
// 单位
|
||||
private String unit;
|
||||
|
||||
//预约时间
|
||||
private String orderTime;
|
||||
//服务地址
|
||||
private String serveAddress;
|
||||
// 用户备注 - 必填,示例:你猜
|
||||
private String userRemark;
|
||||
|
||||
// 订单状态 - 必填,示例:1
|
||||
private Integer status;
|
||||
|
||||
// 购买的商品数量 - 必填,示例:10
|
||||
private Integer productCount;
|
||||
|
||||
// 订单完成时间
|
||||
private LocalDateTime finishTime;
|
||||
|
||||
// 订单取消时间
|
||||
private LocalDateTime cancelTime;
|
||||
|
||||
// 取消类型,示例:10
|
||||
private Integer cancelType;
|
||||
|
||||
// 商家备注,示例:你猜一下
|
||||
private String remark;
|
||||
|
||||
// ========== 价格 + 支付基本信息 ==========
|
||||
|
||||
// 支付订单编号 - 必填,示例:1024
|
||||
private Long payOrderId;
|
||||
|
||||
// 是否已支付 - 必填,示例:true
|
||||
private Boolean payStatus;
|
||||
|
||||
// 付款时间
|
||||
private LocalDateTime payTime;
|
||||
|
||||
// 支付渠道 - 必填,示例:wx_lite
|
||||
private String payChannelCode;
|
||||
|
||||
// 商品原价(总) - 必填,示例:1000
|
||||
private Integer totalPrice;
|
||||
|
||||
// 订单优惠(总) - 必填,示例:100
|
||||
private Integer discountPrice;
|
||||
|
||||
// 运费金额 - 必填,示例:100
|
||||
private Integer deliveryPrice;
|
||||
|
||||
// 订单调价(总) - 必填,示例:100
|
||||
private Integer adjustPrice;
|
||||
|
||||
// 应付金额(总) - 必填,示例:1000
|
||||
private Integer payPrice;
|
||||
|
||||
// ========== 收件 + 物流基本信息 ==========
|
||||
|
||||
// 配送方式,示例:10
|
||||
private Integer deliveryType;
|
||||
|
||||
// 自提门店,示例:10
|
||||
private Long pickUpStoreId;
|
||||
|
||||
// 自提核销码,示例:10
|
||||
private Long pickUpVerifyCode;
|
||||
|
||||
// 配送模板编号,示例:1024
|
||||
private Long deliveryTemplateId;
|
||||
|
||||
// 发货物流公司编号,示例:1024
|
||||
private Long logisticsId;
|
||||
|
||||
// 发货物流单号,示例:1024
|
||||
private String logisticsNo;
|
||||
|
||||
// 发货时间
|
||||
private LocalDateTime deliveryTime;
|
||||
|
||||
// 收货时间
|
||||
private LocalDateTime receiveTime;
|
||||
|
||||
// 收件人名称 - 必填,示例:张三
|
||||
private String receiverName;
|
||||
|
||||
// 收件人手机 - 必填,示例:13800138000
|
||||
private String receiverMobile;
|
||||
|
||||
// 收件人地区编号 - 必填,示例:110000
|
||||
private Integer receiverAreaId;
|
||||
|
||||
// 收件人详细地址 - 必填,示例:中关村大街 1 号
|
||||
private String receiverDetailAddress;
|
||||
|
||||
// ========== 售后基本信息 ==========
|
||||
|
||||
// 售后状态,示例:1
|
||||
private Integer afterSaleStatus;
|
||||
|
||||
// 退款金额 - 必填,示例:100
|
||||
private Integer refundPrice;
|
||||
|
||||
// ========== 营销基本信息 ==========
|
||||
|
||||
// 优惠劵编号,示例:1024
|
||||
private Long couponId;
|
||||
|
||||
// 优惠劵减免金额 - 必填,示例:100
|
||||
private Integer couponPrice;
|
||||
|
||||
// 积分抵扣的金额 - 必填,示例:100
|
||||
private Integer pointPrice;
|
||||
|
||||
// VIP 减免金额 - 必填,示例:888
|
||||
private Integer vipPrice;
|
||||
|
||||
// 推广人编号,示例:1
|
||||
private Long brokerageUserId;
|
||||
//支付方式
|
||||
private String payType;
|
||||
//财务状态
|
||||
private String financeStatus;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
package com.tashow.cloud.trade.controller.admin.order.vo;
|
||||
|
||||
|
||||
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 java.util.List;
|
||||
|
||||
// 管理后台 - 交易订单的分页项 Response VO
|
||||
@Data
|
||||
public class TradeOrderPageItemRespVO extends TradeOrderBaseVO {
|
||||
|
||||
// 收件人地区名字 - 必填,示例:上海 上海市 普陀区
|
||||
private String receiverAreaName;
|
||||
|
||||
// 订单项列表 - 必填
|
||||
private List<Item> items;
|
||||
|
||||
// 用户信息 - 必填
|
||||
private MemberUserRespVO user;
|
||||
|
||||
// 推广人信息
|
||||
private MemberUserRespVO brokerageUser;
|
||||
|
||||
// 管理后台 - 交易订单的分页项的订单项目
|
||||
@Data
|
||||
public static class Item extends TradeOrderItemBaseVO {
|
||||
|
||||
// 属性列表 - 必填
|
||||
private List<ProductPropertyValueDetailRespVO> properties;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,16 +2,11 @@ package com.tashow.cloud.trade.controller.admin.order.vo;
|
||||
|
||||
// 移除Swagger相关导入
|
||||
|
||||
import com.tashow.cloud.common.enums.TerminalEnum;
|
||||
import com.tashow.cloud.common.pojo.PageParam;
|
||||
import com.tashow.cloud.common.validation.InEnum;
|
||||
import com.tashow.cloud.common.validation.Mobile;
|
||||
import com.tashow.cloud.tradeapi.enums.order.TradeOrderStatusEnum;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@@ -20,47 +15,34 @@ import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_
|
||||
@Data
|
||||
public class TradeOrderPageReqVO extends PageParam {
|
||||
|
||||
// 订单号,示例:88888888
|
||||
private String orderNum;
|
||||
|
||||
// 用户编号,示例:1024
|
||||
private Long userId;
|
||||
|
||||
// 用户昵称,示例:小王
|
||||
private String userNickname;
|
||||
|
||||
// 用户手机号,示例:小王
|
||||
@Mobile
|
||||
private String userMobile;
|
||||
|
||||
// 配送方式,示例:1
|
||||
private Integer deliveryType;
|
||||
|
||||
// 发货物流公司编号,示例:1
|
||||
private Long logisticsId;
|
||||
|
||||
// 自提门店编号,示例:[1,2]
|
||||
private List<Long> pickUpStoreIds;
|
||||
|
||||
// 自提核销码,示例:12345678
|
||||
private String pickUpVerifyCode;
|
||||
|
||||
// 订单类型,示例:1
|
||||
private Integer type;
|
||||
|
||||
// 订单状态,示例:1
|
||||
@InEnum(value = TradeOrderStatusEnum.class, message = "订单状态必须是 {value}")
|
||||
private Integer status;
|
||||
private Integer orderStatus;
|
||||
//聚合检索字段(商品名称,商品id,订单号)
|
||||
private String prodSearch;
|
||||
|
||||
// 支付渠道,示例:wx_lite
|
||||
private String payChannelCode;
|
||||
//聚合检索字段 买家昵称/手机号
|
||||
private String userSearch;
|
||||
|
||||
//卖家名称
|
||||
private String merchantName;
|
||||
|
||||
// 订单类目id,示例:1
|
||||
private Integer orderCategoryId;
|
||||
// 订单来源,示例:1
|
||||
private Integer orderTerminal;
|
||||
// 财务状态,示例:1
|
||||
private Integer financeStatus;
|
||||
// 售后状态,示例:1
|
||||
private Integer afterSaleStatus;
|
||||
// 预约类型,示例:1
|
||||
private Integer subType;
|
||||
|
||||
// 创建时间
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
// 创建时间
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] subTime;
|
||||
|
||||
// 订单来源,示例:10
|
||||
@InEnum(value = TerminalEnum.class, message = "订单来源 {value}")
|
||||
private Integer terminal;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.tashow.cloud.trade.controller.admin.order.vo;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
// 管理后台 - 交易订单的分页项 Response VO
|
||||
@Data
|
||||
public class TradeOrderPageRespVO extends TradeOrderBaseVO {
|
||||
|
||||
|
||||
}
|
||||
@@ -91,7 +91,7 @@ public interface TradeOrderConvert {
|
||||
.setAppKey(orderProperties.getPayAppKey()).setUserIp(order.getUserIp());
|
||||
// 商户相关字段
|
||||
createReqDTO.setMerchantOrderId(String.valueOf(order.getId()));
|
||||
String subject = orderItems.get(0).getProdName();
|
||||
String subject = orderItems.get(0).getSpuName();
|
||||
subject = StrUtils.maxLength(subject, PayOrderCreateReqDTO.SUBJECT_MAX_LENGTH); // 避免超过 32 位
|
||||
createReqDTO.setSubject(subject);
|
||||
createReqDTO.setBody(subject); // TODO 芋艿:临时写死
|
||||
@@ -100,20 +100,15 @@ public interface TradeOrderConvert {
|
||||
return createReqDTO;
|
||||
}
|
||||
|
||||
default PageResult<TradeOrderPageItemRespVO> convertPage(PageResult<TradeOrderDO> pageResult,
|
||||
List<TradeOrderItemDO> orderItems,
|
||||
Map<Long, MemberUserRespDTO> memberUserMap) {
|
||||
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<TradeOrderPageItemRespVO> orderVOs = CollectionUtils.convertList(pageResult.getList(), order -> {
|
||||
List<TradeOrderPageRespVO> orderVOs = CollectionUtils.convertList(pageResult.getList(), order -> {
|
||||
List<TradeOrderItemDO> xOrderItems = orderItemMap.get(order.getId());
|
||||
TradeOrderPageItemRespVO orderVO = convert(order, xOrderItems);
|
||||
TradeOrderPageRespVO orderVO = convert(order, xOrderItems);
|
||||
// 处理收货地址
|
||||
orderVO.setReceiverAreaName(AreaUtils.format(order.getReceiverAreaId()));
|
||||
// 增加用户信息
|
||||
orderVO.setUser(convertUser(memberUserMap.get(orderVO.getUserId())));
|
||||
// 增加推广人信息
|
||||
orderVO.setBrokerageUser(convertUser(memberUserMap.get(orderVO.getBrokerageUserId())));
|
||||
return orderVO;
|
||||
});
|
||||
return new PageResult<>(orderVOs, pageResult.getTotal());
|
||||
@@ -121,7 +116,7 @@ public interface TradeOrderConvert {
|
||||
|
||||
MemberUserRespVO convertUser(MemberUserRespDTO memberUserRespDTO);
|
||||
|
||||
TradeOrderPageItemRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> items);
|
||||
TradeOrderPageRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> items);
|
||||
|
||||
// ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean);
|
||||
|
||||
@@ -250,7 +245,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.getProdId()))
|
||||
.setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getSpuId()))
|
||||
.setFirstFixedPrice(0).setSecondFixedPrice(0);
|
||||
if (BooleanUtil.isTrue(spu.getSubCommissionType())) {
|
||||
bo.setFirstFixedPrice(sku.getFirstBrokeragePrice()).setSecondFixedPrice(sku.getSecondBrokeragePrice());
|
||||
@@ -262,7 +257,7 @@ public interface TradeOrderConvert {
|
||||
List<TradeOrderRespDTO> convertList04(List<TradeOrderDO> list);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "prodId", source = "item.prodId"),
|
||||
@Mapping(target = "spuId", source = "item.spuId"),
|
||||
@Mapping(target = "skuId", source = "item.skuId"),
|
||||
@Mapping(target = "count", source = "item.count"),
|
||||
@Mapping(target = "orderId", source = "order.id"),
|
||||
|
||||
@@ -20,7 +20,7 @@ public class CombinationRecordCreateReqDTO {
|
||||
* spu 编号
|
||||
*/
|
||||
@NotNull(message = "spu 编号不能为空")
|
||||
private Long prodId;
|
||||
private Long spuId;
|
||||
/**
|
||||
* sku 编号
|
||||
*/
|
||||
|
||||
@@ -62,6 +62,8 @@ public class TradeOrderDO extends BaseDO {
|
||||
* 关联 MemberUserDO 的 id 编号
|
||||
*/
|
||||
private Long userId;
|
||||
private String userMobile;
|
||||
private String userName;
|
||||
/**
|
||||
* 用户 IP
|
||||
*/
|
||||
@@ -76,10 +78,7 @@ public class TradeOrderDO extends BaseDO {
|
||||
* 枚举 {@link TradeOrderStatusEnum}
|
||||
*/
|
||||
private Integer orderStatus;
|
||||
/**
|
||||
* 购买的商品数量
|
||||
*/
|
||||
private Integer productCount;
|
||||
private Integer financeStatus;
|
||||
/**
|
||||
* 订单完成时间
|
||||
*/
|
||||
@@ -98,6 +97,8 @@ public class TradeOrderDO extends BaseDO {
|
||||
* 商家备注
|
||||
*/
|
||||
private String merchantRemark;
|
||||
private String merchantName;
|
||||
private Long orderCategoryId;
|
||||
/**
|
||||
* 是否评价
|
||||
*
|
||||
@@ -164,12 +165,9 @@ public class TradeOrderDO extends BaseDO {
|
||||
* 应付金额(总),单位:分
|
||||
*
|
||||
* = {@link #totalPrice}
|
||||
* - {@link #couponPrice}
|
||||
* - {@link #pointPrice}
|
||||
* - {@link #discountPrice}
|
||||
* + {@link #deliveryPrice}
|
||||
* + {@link #adjustPrice}
|
||||
* - {@link #vipPrice}
|
||||
*/
|
||||
private Integer payPrice;
|
||||
|
||||
@@ -246,4 +244,8 @@ public class TradeOrderDO extends BaseDO {
|
||||
*/
|
||||
private Integer refundPrice;
|
||||
|
||||
private Integer afterSaleStatus;
|
||||
private Integer subType;
|
||||
private LocalDateTime subTime;
|
||||
|
||||
}
|
||||
|
||||
@@ -2,15 +2,15 @@ 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.Version;
|
||||
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
||||
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
|
||||
import com.tashow.cloud.trade.dal.dataobject.aftersale.AfterSaleDO;
|
||||
import com.tashow.cloud.tradeapi.enums.order.TradeOrderItemAfterSaleStatusEnum;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -52,19 +52,22 @@ public class TradeOrderItemDO extends BaseDO {
|
||||
*
|
||||
* 关联 ProductSkuDO 的 spuId 编号
|
||||
*/
|
||||
private Long prodId;
|
||||
private Long spuId;
|
||||
/**
|
||||
* 商品 SPU 名称
|
||||
*
|
||||
* 冗余 ProductSkuDO 的 spuName 编号
|
||||
*/
|
||||
private String prodName;
|
||||
private String spuName;
|
||||
|
||||
private Integer spuType;
|
||||
/**
|
||||
* 商品 SKU 编号
|
||||
*
|
||||
* 关联 ProductSkuDO 的 id 编号
|
||||
*/
|
||||
private Long skuId;
|
||||
private String skuName;
|
||||
/**
|
||||
* 属性数组,JSON 格式
|
||||
*
|
||||
@@ -80,15 +83,10 @@ public class TradeOrderItemDO extends BaseDO {
|
||||
* 购买数量
|
||||
*/
|
||||
private Integer count;
|
||||
/**
|
||||
* 是否评价
|
||||
*
|
||||
* true - 已评价
|
||||
* false - 未评价
|
||||
*/
|
||||
private Boolean commentStatus;
|
||||
|
||||
// ========== 价格 + 支付基本信息 ==========
|
||||
//商品成本
|
||||
private Integer expensePrice;
|
||||
|
||||
/**
|
||||
* 商品原价(单),单位:分
|
||||
@@ -117,60 +115,25 @@ public class TradeOrderItemDO extends BaseDO {
|
||||
* 应付金额(总),单位:分
|
||||
*
|
||||
* = {@link #price} * {@link #count}
|
||||
* - {@link #couponPrice}
|
||||
* - {@link #pointPrice}
|
||||
* - {@link #discountPrice}
|
||||
* + {@link #deliveryPrice}
|
||||
* + {@link #adjustPrice}
|
||||
* - {@link #vipPrice}
|
||||
*/
|
||||
private Integer payPrice;
|
||||
//实收金额
|
||||
private Integer livePrice;
|
||||
|
||||
// ========== 营销基本信息 ==========
|
||||
private Integer orderType;
|
||||
private LocalDateTime orderTime;
|
||||
private String serveAddress;
|
||||
private String serveInfo;
|
||||
private String serveExtInfo;
|
||||
private String priceExtInfo;
|
||||
|
||||
/**
|
||||
* 优惠劵减免金额,单位:分
|
||||
*
|
||||
* 对应 taobao 的 trade.coupon_fee 字段
|
||||
*/
|
||||
private Integer couponPrice;
|
||||
/**
|
||||
* 积分抵扣的金额,单位:分
|
||||
*
|
||||
* 对应 taobao 的 trade.point_fee 字段
|
||||
*/
|
||||
private Integer pointPrice;
|
||||
/**
|
||||
* 使用的积分
|
||||
*
|
||||
* 目的:用于后续取消或者售后订单时,需要归还赠送
|
||||
*/
|
||||
private Integer usePoint;
|
||||
/**
|
||||
* 赠送的积分
|
||||
*
|
||||
* 目的:用于后续取消或者售后订单时,需要扣减赠送
|
||||
*/
|
||||
private Integer givePoint;
|
||||
/**
|
||||
* VIP 减免金额,单位:分
|
||||
*/
|
||||
private Integer vipPrice;
|
||||
@Version
|
||||
private Integer version;
|
||||
|
||||
// ========== 售后基本信息 ==========
|
||||
|
||||
/**
|
||||
* 售后单编号
|
||||
*
|
||||
* 关联 {@link AfterSaleDO#getId()} 字段
|
||||
*/
|
||||
private Long afterSaleId;
|
||||
/**
|
||||
* 售后状态
|
||||
*
|
||||
* 枚举 {@link TradeOrderItemAfterSaleStatusEnum}
|
||||
*/
|
||||
private Integer afterSaleStatus;
|
||||
|
||||
/**
|
||||
* 商品属性
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.tashow.cloud.trade.dal.mysql.order;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.tashow.cloud.mybatis.mybatis.core.mapper.BaseMapperX;
|
||||
import com.tashow.cloud.mybatis.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.tashow.cloud.trade.dal.dataobject.order.TradeOrderItemDO;
|
||||
@@ -20,8 +19,8 @@ public interface TradeOrderItemMapper extends BaseMapperX<TradeOrderItemDO> {
|
||||
|
||||
default int updateAfterSaleStatus(Long id, Integer oldAfterSaleStatus, Integer newAfterSaleStatus,
|
||||
Long afterSaleId) {
|
||||
return update(new TradeOrderItemDO().setAfterSaleStatus(newAfterSaleStatus).setAfterSaleId(afterSaleId),
|
||||
new LambdaUpdateWrapper<>(new TradeOrderItemDO().setId(id).setAfterSaleStatus(oldAfterSaleStatus)));
|
||||
return 1;// update(new TradeOrderItemDO().setAfterSaleStatus(newAfterSaleStatus).setAfterSaleId(afterSaleId),
|
||||
//new LambdaUpdateWrapper<>(new TradeOrderItemDO().setId(id).setAfterSaleStatus(oldAfterSaleStatus)));
|
||||
}
|
||||
|
||||
default List<TradeOrderItemDO> selectListByOrderId(Long orderId) {
|
||||
@@ -41,7 +40,8 @@ public interface TradeOrderItemMapper extends BaseMapperX<TradeOrderItemDO> {
|
||||
default List<TradeOrderItemDO> selectListByOrderIdAndCommentStatus(Long orderId, Boolean commentStatus) {
|
||||
return selectList(new LambdaQueryWrapperX<TradeOrderItemDO>()
|
||||
.eq(TradeOrderItemDO::getOrderId, orderId)
|
||||
.eq(TradeOrderItemDO::getCommentStatus, commentStatus));
|
||||
// .eq(TradeOrderItemDO::getCommentStatus, commentStatus)
|
||||
);
|
||||
}
|
||||
|
||||
default int selectProductSumByOrderId(@Param("orderIds") Set<Long> orderIds) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.tashow.cloud.trade.dal.mysql.order;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.tashow.cloud.common.pojo.PageResult;
|
||||
import com.tashow.cloud.mybatis.mybatis.core.mapper.BaseMapperX;
|
||||
@@ -30,18 +31,21 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
||||
|
||||
default PageResult<TradeOrderDO> selectPage(TradeOrderPageReqVO reqVO, Set<Long> userIds) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<TradeOrderDO>()
|
||||
.likeIfPresent(TradeOrderDO::getOrderNum, reqVO.getOrderNum())
|
||||
.eqIfPresent(TradeOrderDO::getUserId, reqVO.getUserId())
|
||||
.eqIfPresent(TradeOrderDO::getDeliveryType, reqVO.getDeliveryType())
|
||||
.inIfPresent(TradeOrderDO::getUserId, userIds)
|
||||
.eqIfPresent(TradeOrderDO::getOrderType, reqVO.getType())
|
||||
.eqIfPresent(TradeOrderDO::getOrderStatus, reqVO.getStatus())
|
||||
.eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
|
||||
.eqIfPresent(TradeOrderDO::getOrderTerminal, reqVO.getTerminal())
|
||||
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
|
||||
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
|
||||
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
|
||||
.likeIfPresent(TradeOrderDO::getMerchantName, reqVO.getMerchantName())
|
||||
.eqIfPresent(TradeOrderDO::getOrderCategoryId, reqVO.getOrderCategoryId())
|
||||
.eqIfPresent(TradeOrderDO::getOrderTerminal, reqVO.getOrderTerminal())
|
||||
.eqIfPresent(TradeOrderDO::getFinanceStatus, reqVO.getFinanceStatus())
|
||||
.eqIfPresent(TradeOrderDO::getAfterSaleStatus, reqVO.getAfterSaleStatus())
|
||||
.eqIfPresent(TradeOrderDO::getSubType, reqVO.getSubType())
|
||||
.betweenIfPresent(TradeOrderDO::getSubTime, reqVO.getSubTime())
|
||||
.betweenIfPresent(TradeOrderDO::getCreateTime, reqVO.getCreateTime())
|
||||
.and(StrUtil.isNotBlank(reqVO.getProdSearch()),
|
||||
qw->qw.like(TradeOrderDO::getOrderNum, reqVO.getProdSearch())
|
||||
.or().like(TradeOrderDO::getOrderStatus, reqVO.getProdSearch())
|
||||
.or().like(TradeOrderDO::getOrderType, reqVO.getProdSearch()))
|
||||
.and(StrUtil.isNotBlank(reqVO.getUserSearch()),
|
||||
qw->qw.eq(TradeOrderDO::getUserMobile, reqVO.getUserSearch())
|
||||
.or().like(TradeOrderDO::getUserName,reqVO.getProdSearch()))
|
||||
.orderByDesc(TradeOrderDO::getId));
|
||||
}
|
||||
|
||||
@@ -51,17 +55,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
||||
.selectAs(TradeOrderDO::getRefundStatus, TradeOrderDO::getRefundStatus) // 售后状态
|
||||
.selectCount(TradeOrderDO::getId, "count") // 售后状态对应的数量
|
||||
.selectSum(TradeOrderDO::getPayPrice, "price") // 售后状态对应的支付金额
|
||||
.likeIfPresent(TradeOrderDO::getOrderNum, reqVO.getOrderNum())
|
||||
.eqIfPresent(TradeOrderDO::getUserId, reqVO.getUserId())
|
||||
.eqIfPresent(TradeOrderDO::getDeliveryType, reqVO.getDeliveryType())
|
||||
.inIfPresent(TradeOrderDO::getUserId, userIds)
|
||||
.eqIfPresent(TradeOrderDO::getOrderType, reqVO.getType())
|
||||
.eqIfPresent(TradeOrderDO::getOrderStatus, reqVO.getStatus())
|
||||
.eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
|
||||
.eqIfPresent(TradeOrderDO::getOrderTerminal, reqVO.getTerminal())
|
||||
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
|
||||
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
|
||||
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
|
||||
.betweenIfPresent(TradeOrderDO::getCreateTime, reqVO.getCreateTime())
|
||||
.groupBy(TradeOrderDO::getRefundStatus)); // 按售后状态分组
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ public class AfterSaleServiceImpl implements AfterSaleService {
|
||||
throw exception(ORDER_ITEM_NOT_FOUND);
|
||||
}
|
||||
// 已申请售后,不允许再发起售后申请
|
||||
if (!TradeOrderItemAfterSaleStatusEnum.isNone(orderItem.getAfterSaleStatus())) {
|
||||
if (!TradeOrderItemAfterSaleStatusEnum.isNone(1)) {
|
||||
throw exception(AFTER_SALE_CREATE_FAIL_ORDER_ITEM_APPLIED);
|
||||
}
|
||||
// 申请的退款金额,不能超过商品的价格
|
||||
|
||||
@@ -157,7 +157,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
TradePriceCalculateRespBO calculateRespBO = calculatePrice(userId, createReqVO);
|
||||
// 1.2 构建订单
|
||||
TradeOrderDO order = null;// buildTradeOrder(userId, createReqVO, calculateRespBO);
|
||||
List<TradeOrderItemDO> orderItems =null;// buildTradeOrderItems(order, calculateRespBO);
|
||||
List<TradeOrderItemDO> orderItems = null;// buildTradeOrderItems(order, calculateRespBO);
|
||||
|
||||
// 2. 订单创建前的逻辑
|
||||
tradeOrderHandlers.forEach(handler -> handler.beforeOrderCreate(order, orderItems));
|
||||
@@ -227,9 +227,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
|
||||
// 3. 生成预支付
|
||||
// 特殊情况:积分兑换时,可能支付金额为零
|
||||
if (order.getPayPrice() > 0) {
|
||||
createPayOrder(order, orderItems);
|
||||
}
|
||||
createPayOrder(order, orderItems);
|
||||
|
||||
// 4. 插入订单日志
|
||||
TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getOrderStatus());
|
||||
@@ -787,7 +785,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
*/
|
||||
private boolean isAllOrderItemAfterSaleSuccess(Long id) {
|
||||
List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(id);
|
||||
return orderItems.stream().allMatch(orderItem -> Objects.equals(orderItem.getAfterSaleStatus(),
|
||||
return orderItems.stream().allMatch(orderItem -> Objects.equals(1,
|
||||
TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus()));
|
||||
}
|
||||
|
||||
@@ -923,7 +921,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
createOrderItemComment0(orderItem, commentCreateReqVO);
|
||||
|
||||
// 2.2 更新订单项评价状态
|
||||
tradeOrderItemMapper.updateById(new TradeOrderItemDO().setId(orderItem.getId()).setCommentStatus(Boolean.TRUE));
|
||||
tradeOrderItemMapper.updateById(new TradeOrderItemDO().setId(orderItem.getId()));
|
||||
}
|
||||
|
||||
// 3. 所有订单项都评论了,则更新订单评价状态
|
||||
@@ -946,8 +944,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
// Long commentId = productCommentApi.createComment(productCommentCreateReqDTO).getCheckedData();
|
||||
|
||||
// 2. 更新订单项评价状态
|
||||
tradeOrderItemMapper.updateById(new TradeOrderItemDO().setId(orderItem.getId()).setCommentStatus(Boolean.TRUE));
|
||||
return 0l;//commentId;
|
||||
tradeOrderItemMapper.updateById(new TradeOrderItemDO().setId(orderItem.getId()));
|
||||
return 0l;//commentId;
|
||||
}
|
||||
|
||||
// =================== 营销相关的操作 ===================
|
||||
|
||||
@@ -73,7 +73,7 @@ public interface TradeOrderHandler {
|
||||
*/
|
||||
default List<TradeOrderItemDO> filterOrderItemListByNoneAfterSale(List<TradeOrderItemDO> orderItems) {
|
||||
return CollectionUtils.filterList(orderItems,
|
||||
item -> TradeOrderItemAfterSaleStatusEnum.isNone(item.getAfterSaleStatus()));
|
||||
item -> TradeOrderItemAfterSaleStatusEnum.isNone(1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
spring:
|
||||
cloud:
|
||||
nacos:
|
||||
server-addr: localhost:8848 # Nacos 服务器地址
|
||||
# username: nacos # Nacos 账号
|
||||
# password: nacos # Nacos 密码
|
||||
server-addr: 43.139.42.137:8848 # Nacos 服务器地址
|
||||
username: nacos # Nacos 账号
|
||||
password: nacos # Nacos 密码
|
||||
discovery: # 【配置中心】配置项
|
||||
namespace: dev # 命名空间。这里使用 dev 开发环境
|
||||
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
|
||||
|
||||
Reference in New Issue
Block a user