This commit is contained in:
2025-10-16 13:53:07 +08:00
parent de062744b4
commit e5f0d57286
51 changed files with 1327 additions and 641 deletions

View File

@@ -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}}

View File

@@ -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())) {

View File

@@ -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;
}

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -0,0 +1,11 @@
package com.tashow.cloud.trade.controller.admin.order.vo;
import lombok.Data;
// 管理后台 - 交易订单的分页项 Response VO
@Data
public class TradeOrderPageRespVO extends TradeOrderBaseVO {
}

View File

@@ -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"),

View File

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

View File

@@ -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;
}

View File

@@ -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;
/**
* 商品属性

View File

@@ -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) {

View File

@@ -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)); // 按售后状态分组
}

View File

@@ -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);
}
// 申请的退款金额,不能超过商品的价格

View File

@@ -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;
}
// =================== 营销相关的操作 ===================

View File

@@ -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));
}
}

View File

@@ -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