将 onemall 老代码,统一到归档目录,后续不断迁移移除
This commit is contained in:
36
归档/trade-service-project/trade-service-api/pom.xml
Normal file
36
归档/trade-service-project/trade-service-api/pom.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>trade-service-project</artifactId>
|
||||
<groupId>cn.iocoder.mall</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>trade-service-api</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cn.iocoder.mall</groupId>
|
||||
<artifactId>common-framework</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 工具类相关 -->
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-openfeign-core</artifactId>
|
||||
<version>RELEASE</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,51 @@
|
||||
package cn.iocoder.mall.tradeservice.enums;
|
||||
|
||||
import cn.iocoder.common.framework.exception.ErrorCode;
|
||||
|
||||
/**
|
||||
* 订单错误码
|
||||
* <p>
|
||||
* 错误码区间 [1-008-000-000 ~ 1-008-000-000]
|
||||
*
|
||||
* @author Sin
|
||||
* @time 2019-03-23 11:23
|
||||
*/
|
||||
public interface OrderErrorCodeConstants {
|
||||
|
||||
// order
|
||||
ErrorCode ORDER_NOT_EXISTENT = new ErrorCode(1008000000, "获取订单不存在!");
|
||||
ErrorCode ORDER_GET_SKU_FAIL = new ErrorCode(1008000001, "获取商品失败!)");
|
||||
ErrorCode ORDER_GET_SKU_NOT_EXISTENT = new ErrorCode(1008000002, "获取的商品不存在!");
|
||||
ErrorCode ORDER_PAY_AMOUNT_NOT_NEGATIVE = new ErrorCode(1008000003, "支付金额不能为负数!");
|
||||
ErrorCode ORDER_STATUS_NOT_CANCEL = new ErrorCode(1008000004, "订单状态不能取消!)");
|
||||
ErrorCode ORDER_DELIVERY_INCORRECT_DATA = new ErrorCode(1008000005, "订单发货数据不正确!");
|
||||
ErrorCode ORDER_INSUFFICIENT_INVENTORY = new ErrorCode(1008000006, "库存不足!");
|
||||
ErrorCode ORDER_GOODS_AMOUNT_INCORRECT = new ErrorCode(1008000007, "商品金额非法!");
|
||||
ErrorCode ORDER_GET_GOODS_INFO_INCORRECT = new ErrorCode(1008000008, "获取额商品信息不正确!");
|
||||
ErrorCode ORDER_GET_USER_ADDRESS_FAIL = new ErrorCode(1008000009, "获取用户地址失败!");
|
||||
ErrorCode ORDER_GET_PAY_FAIL = new ErrorCode(1008000010, "调用pay失败!");
|
||||
ErrorCode ORDER_NOT_USER_ORDER = new ErrorCode(1008000011, "不是该用户的订单!");
|
||||
ErrorCode ORDER_UNABLE_CONFIRM_ORDER = new ErrorCode(1008000012, "状态不对不能确认订单!");
|
||||
ErrorCode ORDER_CREATE_CART_IS_EMPTY = new ErrorCode(1008000013, "购物车无选中的商品,无法创建订单");
|
||||
ErrorCode ORDER_STATUS_NOT_WAITING_PAYMENT = new ErrorCode(1008000014, "订单不处于等待支付状态");
|
||||
ErrorCode ORDER_PAY_AMOUNT_ERROR = new ErrorCode(1008000015, "订单金额不正确");
|
||||
|
||||
// order item
|
||||
ErrorCode ORDER_ITEM_ONLY_ONE = new ErrorCode(1008000200, "订单Item只有一个!");
|
||||
ErrorCode ORDER_ITEM_SOME_NOT_EXISTS = new ErrorCode(1008000201, "有不存在的商品!");
|
||||
|
||||
// 订单退货
|
||||
ErrorCode ORDER_RETURN_NO_RETURN_APPLY = new ErrorCode(1008000400, "未退货申请");
|
||||
ErrorCode ORDER_RETURN_NOT_EXISTENT = new ErrorCode(1008000401, "退货订单不存在");
|
||||
ErrorCode ORDER_RETURN_REFUND_FAILED = new ErrorCode(1008000402, "退款失败");
|
||||
|
||||
// ========== 购物车 ==========
|
||||
ErrorCode CARD_ITEM_NOT_FOUND = new ErrorCode(1008003000, "购物车项不存在");
|
||||
ErrorCode CARD_ITEM_SKU_NOT_FOUND = new ErrorCode(1008003001, "商品不存在");
|
||||
ErrorCode CARD_ITEM_SKU_QUANTITY_NOT_ENOUGH = new ErrorCode(1008003002, "商品库存不足");
|
||||
|
||||
// 工具类服务 1008004000
|
||||
ErrorCode DICT_SERVER_INVOKING_FAIL = new ErrorCode(1008004000, "字典服务调用失败!");
|
||||
ErrorCode ORDER_LOGISTICS_INVOKING_FAIL = new ErrorCode(1008004001, "订单物流调用失败!");
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package cn.iocoder.mall.tradeservice.enums.aftersale;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 售后订单的状态枚举
|
||||
*
|
||||
* 整体流程,见 https://www.processon.com/view/link/5fbdf47f07912946156305d7
|
||||
*
|
||||
* 1. 在退款的情况下,需要 1 个来回
|
||||
* 2. 在退货退款的情况下,需要 2 个来回,额外增加一个买家退货的过程
|
||||
* 3. 在换货的情况下,需要 3 个来回,额外增加一个买家退货 + 卖家发货的过程
|
||||
*/
|
||||
@Getter
|
||||
public enum AfterSaleOrderStatusEnum {
|
||||
|
||||
WAIT_SELLER_AGREE(10, "售后申请待商家处理"),
|
||||
WAIT_BUYER_RETURN_GOODS(20, "商家同意售后申请,待买家处理"),
|
||||
SELLER_REFUSE_BUYER(30, "商家不同意售后申请,待买家处理"),
|
||||
WAIT_SELLER_CONFIRM_GOODS(40, "买家已退货,待商家确认收货"),
|
||||
WAIT_BUYER_CONFIRM_GOODS(50, "商家已发货,待买家确认收货"),
|
||||
SELLER_REFUSE_RETURN_GOODS(60, "商家拒绝收货,待买家处理"),
|
||||
SUCCESS(70, "售后成功"),
|
||||
CLOSED(80, "售后失败"),
|
||||
;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private final Integer status;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
AfterSaleOrderStatusEnum(Integer status, String desc) {
|
||||
this.status = status;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package cn.iocoder.mall.tradeservice.enums.aftersale;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 售后单的类型枚举
|
||||
*/
|
||||
@Getter
|
||||
public enum AfterSaleTypeEnum {
|
||||
|
||||
IN_SALE(10, "售中退款"),
|
||||
AFTER_SALE(20, "售后退款");
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private final Integer type;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
AfterSaleTypeEnum(Integer type, String desc) {
|
||||
this.type = type;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.iocoder.mall.tradeservice.enums.aftersale;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 售后单的方式枚举
|
||||
*/
|
||||
@Getter
|
||||
public enum AfterSaleWayEnum {
|
||||
|
||||
REFUND(10, "退款"),
|
||||
RETURN_AND_REFUND(20, "退货退款"),
|
||||
EXCHANGE(30, "换货");
|
||||
|
||||
/**
|
||||
* 方式
|
||||
*/
|
||||
private final Integer way;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
AfterSaleWayEnum(Integer way, String desc) {
|
||||
this.way = way;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package cn.iocoder.mall.tradeservice.enums.logistics;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 物流的配送类型
|
||||
*/
|
||||
@Getter
|
||||
public enum LogisticsDeliveryTypeEnum {
|
||||
|
||||
/**
|
||||
* 无需快递
|
||||
*/
|
||||
NULL(0),
|
||||
/**
|
||||
* 传统快递
|
||||
*/
|
||||
EXPRESS(1);
|
||||
|
||||
private final Integer deliveryType;
|
||||
|
||||
LogisticsDeliveryTypeEnum(Integer deliveryType) {
|
||||
this.deliveryType = deliveryType;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.iocoder.mall.tradeservice.enums.order;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 交易订单的售后状态的枚举
|
||||
*/
|
||||
@Getter
|
||||
public enum TradeOrderAfterSaleStatusEnum {
|
||||
|
||||
NULL(0, "无"),
|
||||
IN_PROCESS(10, "售后中"),
|
||||
END(10, "售后结束");
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private final Integer status;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
TradeOrderAfterSaleStatusEnum(Integer status, String desc) {
|
||||
this.status = status;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package cn.iocoder.mall.tradeservice.enums.order;
|
||||
|
||||
import cn.iocoder.mall.tradeservice.rpc.order.dto.TradeOrderRespDTO;
|
||||
|
||||
/**
|
||||
* 交易订单的明细的字段枚举
|
||||
*
|
||||
* @see TradeOrderRespDTO
|
||||
*/
|
||||
public enum TradeOrderDetailFieldEnum {
|
||||
|
||||
/**
|
||||
* 交易订单项
|
||||
*/
|
||||
ITEM("item");
|
||||
|
||||
/**
|
||||
* 字段
|
||||
*/
|
||||
private final String field;
|
||||
|
||||
TradeOrderDetailFieldEnum(String field) {
|
||||
this.field = field;
|
||||
}
|
||||
|
||||
public String getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package cn.iocoder.mall.tradeservice.enums.order;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 交易订单 - 状态蜜桔
|
||||
*
|
||||
* @author Sin
|
||||
* @time 2019-03-16 14:06
|
||||
*/
|
||||
@Getter
|
||||
public enum TradeOrderStatusEnum {
|
||||
|
||||
WAITING_PAYMENT(10, "等待付款"),
|
||||
WAIT_SHIPMENT(20, "等待发货"),
|
||||
ALREADY_SHIPMENT(30, "已发货"),
|
||||
COMPLETED(40, "已完成"),
|
||||
CLOSED(50, "已关闭");
|
||||
|
||||
/**
|
||||
* 状态值
|
||||
*/
|
||||
private final Integer value;
|
||||
/**
|
||||
* 状态名
|
||||
*/
|
||||
private final String name;
|
||||
|
||||
TradeOrderStatusEnum(int value, String name) {
|
||||
this.value = value;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.cart;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.tradeservice.rpc.cart.dto.*;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Title:
|
||||
* Description:
|
||||
*
|
||||
* @author zhuyang
|
||||
* @version 1.0 2021/10/9
|
||||
*/
|
||||
@FeignClient(value = "trade-service")
|
||||
public interface CartFeign {
|
||||
/**
|
||||
* 添加商品到购物车
|
||||
*
|
||||
* @param addReqDTO 添加商品信息
|
||||
* @return 成功
|
||||
*/
|
||||
@PostMapping("/trade/cart/addCartItem")
|
||||
CommonResult<Boolean> addCartItem(@RequestBody CartItemAddReqDTO addReqDTO);
|
||||
|
||||
/**
|
||||
* 更新购物车商品数量
|
||||
*
|
||||
* @param updateQuantityReqDTO 更新商品数量 DTO
|
||||
* @return 成功
|
||||
*/
|
||||
@PostMapping("/trade/cart/updateCartItemQuantity")
|
||||
CommonResult<Boolean> updateCartItemQuantity(@RequestBody CartItemUpdateQuantityReqDTO updateQuantityReqDTO);
|
||||
|
||||
/**
|
||||
* 更新购物车商品是否选中
|
||||
*
|
||||
* @param updateSelectedReqDTO 更新商品是否选中 DTO
|
||||
* @return 成功
|
||||
*/
|
||||
@PostMapping("/trade/cart/updateCartItemSelected")
|
||||
CommonResult<Boolean> updateCartItemSelected(@RequestBody CartItemUpdateSelectedReqDTO updateSelectedReqDTO);
|
||||
|
||||
/**
|
||||
* 删除购物车商品列表
|
||||
*
|
||||
* @param deleteListReqDTO 删除商品列表 DTO
|
||||
* @return 成功
|
||||
*/
|
||||
@PostMapping("/trade/cart/deleteCartItems")
|
||||
CommonResult<Boolean> deleteCartItems(@RequestBody CartItemDeleteListReqDTO deleteListReqDTO);
|
||||
@GetMapping("/sumCartItemQuantity")
|
||||
public CommonResult<Integer> sumCartItemQuantity(@RequestParam("userId") Integer userId) ;
|
||||
@PostMapping("/trade/cart/listCartItems")
|
||||
public CommonResult<List<CartItemRespDTO>> listCartItems(@RequestBody CartItemListReqDTO listReqDTO) ;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.cart.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 购物车添加购物项 Request DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CartItemAddReqDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 商品 SKU 编号
|
||||
*/
|
||||
@NotNull(message = "商品 SKU 编号不能为空")
|
||||
private Integer skuId;
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@NotNull(message = "数量不能为空")
|
||||
@Min(message = "数量必须大于 0", value = 1L)
|
||||
private Integer quantity;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.cart.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 购物车删除商品列表 Request DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CartItemDeleteListReqDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 商品 SKU 编号列表
|
||||
*/
|
||||
@NotNull(message = "商品 SKU 编号列表不能为空")
|
||||
private List<Integer> skuIds;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.cart.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 购物车的商品信息查询 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CartItemListReqDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 是否选中
|
||||
*/
|
||||
private Boolean selected;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.cart.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 购物车的商品信息 Response DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CartItemRespDTO implements Serializable {
|
||||
|
||||
// ========= 基础字段 BEGIN =========
|
||||
|
||||
/**
|
||||
* 编号,唯一自增。
|
||||
*/
|
||||
private Integer id;
|
||||
/**
|
||||
* 是否选中
|
||||
*/
|
||||
private Boolean selected;
|
||||
|
||||
// ========= 基础字段 END =========
|
||||
|
||||
// ========= 买家信息 BEGIN =========
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
private Integer userId;
|
||||
|
||||
// ========= 买家信息 END =========
|
||||
|
||||
// ========= 商品信息 BEGIN =========
|
||||
|
||||
/**
|
||||
* 商品 SPU 编号
|
||||
*/
|
||||
private Integer spuId;
|
||||
/**
|
||||
* 商品 SKU 编号
|
||||
*/
|
||||
private Integer skuId;
|
||||
/**
|
||||
* 商品购买数量
|
||||
*/
|
||||
private Integer quantity;
|
||||
|
||||
// ========= 商品信息 END =========
|
||||
|
||||
// ========= 优惠信息 BEGIN =========
|
||||
|
||||
// /**
|
||||
// * 商品营销活动编号
|
||||
// */
|
||||
// private Integer activityId;
|
||||
// /**
|
||||
// * 商品营销活动类型
|
||||
// */
|
||||
// private Integer activityType;
|
||||
|
||||
// ========= 优惠信息 END =========
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.cart.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 购物车更新数量 Request DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CartItemUpdateQuantityReqDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 商品 SKU 编号
|
||||
*/
|
||||
@NotNull(message = "商品 SKU 编号不能为空")
|
||||
private Integer skuId;
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@NotNull(message = "数量不能为空")
|
||||
@Min(message = "数量必须大于 0", value = 1L)
|
||||
private Integer quantity;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.cart.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 购物车更新是否选中 Request DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CartItemUpdateSelectedReqDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 商品 SKU 编号列表
|
||||
*/
|
||||
@NotNull(message = "商品 SKU 编号列表不能为空")
|
||||
private Collection<Integer> skuIds;
|
||||
/**
|
||||
* 是否选中
|
||||
*/
|
||||
@NotNull(message = "是否选中不能为空")
|
||||
private Boolean selected;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.order;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.tradeservice.rpc.order.dto.TradeOrderCreateReqDTO;
|
||||
import cn.iocoder.mall.tradeservice.rpc.order.dto.TradeOrderPageReqDTO;
|
||||
import cn.iocoder.mall.tradeservice.rpc.order.dto.TradeOrderRespDTO;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Title:
|
||||
* Description:
|
||||
*
|
||||
* @author zhuyang
|
||||
* @version 1.0 2021/10/9
|
||||
*/
|
||||
@FeignClient(value = "trade-service")
|
||||
public interface TradeOrderFeign {
|
||||
|
||||
/**
|
||||
* 创建交易订单
|
||||
*
|
||||
* @param createReqDTO 订单信息
|
||||
* @return 订单编号
|
||||
*/
|
||||
@PostMapping("/trade/order/createTradeOrder")
|
||||
CommonResult<Integer> createTradeOrder(@RequestBody TradeOrderCreateReqDTO createReqDTO);
|
||||
|
||||
/**
|
||||
* 获得订单交易
|
||||
*
|
||||
* @param tradeOrderId 订单交易编号
|
||||
* @param fields 额外返回字段,可见 {@link cn.iocoder.mall.tradeservice.enums.order.TradeOrderDetailFieldEnum}
|
||||
* @return 订单交易
|
||||
*/
|
||||
@GetMapping("/trade/order/getTradeOrder")
|
||||
CommonResult<TradeOrderRespDTO> getTradeOrder(@RequestParam("tradeOrderId")Integer tradeOrderId, @RequestParam("fields") Collection<String> fields);
|
||||
/**
|
||||
* 获得交易订单分页
|
||||
*
|
||||
* @param pageDTO 订单交易分页查询
|
||||
* @return 订单交易分页结果
|
||||
*/
|
||||
@PostMapping("/trade/order/pageTradeOrder")
|
||||
CommonResult<PageResult<TradeOrderRespDTO>> pageTradeOrder(@RequestBody TradeOrderPageReqDTO pageDTO);
|
||||
// TODO 芋艿:需要重构成入参是 DTO,方便后续升级;返回是 CommonResult,用于返回失败的原因
|
||||
|
||||
/**
|
||||
* 更新交易订单支付成功
|
||||
*
|
||||
* 目前用于对接 pay-service 支付服务,回调该交易订单在三方支付平台,支付成功
|
||||
*
|
||||
* @param tradeOrderId 交易订单编号
|
||||
* @param payAmount 支付金额
|
||||
* @return 成功
|
||||
*/
|
||||
@PostMapping("/trade/order/updateTradeOrderPaySuccess")
|
||||
CommonResult<Boolean> updateTradeOrderPaySuccess(@RequestParam("tradeOrderId") String tradeOrderId, @RequestParam("payAmount")Integer payAmount);
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.order.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 交易订单创建 Request DTO
|
||||
*
|
||||
* @author Sin
|
||||
* @time 2019-03-16 14:42
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class TradeOrderCreateReqDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 用户 IP
|
||||
*/
|
||||
@NotNull(message = "用户 IP 不能为空")
|
||||
private String ip;
|
||||
/**
|
||||
* 收件地址编号
|
||||
*/
|
||||
@NotNull(message = "用户地址不能为空")
|
||||
private Integer userAddressId;
|
||||
/**
|
||||
* 优惠劵编号
|
||||
*/
|
||||
private Integer couponCardId;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 订单商品项列表
|
||||
*/
|
||||
@NotNull(message = "必须选择购买的商品")
|
||||
private List<OrderItem> orderItems;
|
||||
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public static class OrderItem implements Serializable {
|
||||
|
||||
/**
|
||||
* 商品编号
|
||||
*/
|
||||
@NotNull(message = "商品 SKU 编号不能为空")
|
||||
private Integer skuId;
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@NotNull(message = "商品 SKU 购买数量不能为空")
|
||||
@Min(value = 1, message = "商品 SKU 购买数量必须大于 0")
|
||||
private Integer quantity;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.order.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 交易订单项 Response DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class TradeOrderItemRespDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* id自增长
|
||||
*/
|
||||
private Integer id;
|
||||
/**
|
||||
* 订单编号
|
||||
*/
|
||||
private Integer orderId;
|
||||
/**
|
||||
* 订单项状态
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
* 商品 SKU 编号
|
||||
*/
|
||||
private Integer skuId;
|
||||
/**
|
||||
* 商品 SPU 编号
|
||||
*/
|
||||
private Integer spuId;
|
||||
/**
|
||||
* 商品名字
|
||||
*/
|
||||
private String skuName;
|
||||
/**
|
||||
* 图片名字
|
||||
*/
|
||||
private String skuImage;
|
||||
/**
|
||||
* 商品数量
|
||||
*/
|
||||
private Integer quantity;
|
||||
/**
|
||||
* 原始单价,单位:分
|
||||
*/
|
||||
private Integer originPrice;
|
||||
/**
|
||||
* 购买单价,单位:分
|
||||
*/
|
||||
private Integer buyPrice;
|
||||
/**
|
||||
* 最终价格,单位:分
|
||||
*/
|
||||
private Integer presentPrice;
|
||||
/**
|
||||
* 购买总金额,单位:分
|
||||
*/
|
||||
private Integer buyTotal;
|
||||
/**
|
||||
* 优惠总金额,单位:分
|
||||
*/
|
||||
private Integer discountTotal;
|
||||
/**
|
||||
* 最终总金额,单位:分
|
||||
*/
|
||||
private Integer presentTotal;
|
||||
/**
|
||||
* 退款总金额,单位:分
|
||||
*/
|
||||
private Integer refundTotal;
|
||||
/**
|
||||
* 物流id
|
||||
*/
|
||||
private Integer logisticsId;
|
||||
/**
|
||||
* 售后状态
|
||||
*/
|
||||
private Integer afterSaleStatus;
|
||||
/**
|
||||
* 售后订单编号
|
||||
*/
|
||||
private Integer afterSaleOrderId;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
/**
|
||||
* 删除状态
|
||||
*/
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.order.dto;
|
||||
|
||||
import cn.iocoder.common.framework.vo.PageParam;
|
||||
import cn.iocoder.common.framework.vo.SortingField;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 交易订单分页 Request DTO
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
public class TradeOrderPageReqDTO extends PageParam {
|
||||
|
||||
public static final SortingField ID_ASC = new SortingField("id", "asc");
|
||||
public static final SortingField ID_DESC = new SortingField("id", "desc");
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
private Integer userId;
|
||||
/**
|
||||
* 订单状态
|
||||
*/
|
||||
private Integer orderStatus;
|
||||
|
||||
/**
|
||||
* 排序字段数组
|
||||
*/
|
||||
private List<SortingField> sorts;
|
||||
|
||||
/**
|
||||
* 额外返回字段
|
||||
*
|
||||
* @see cn.iocoder.mall.tradeservice.enums.order.TradeOrderDetailFieldEnum
|
||||
*/
|
||||
private Collection<String> fields = Collections.emptySet();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
package cn.iocoder.mall.tradeservice.rpc.order.dto;
|
||||
|
||||
import cn.iocoder.mall.tradeservice.enums.order.TradeOrderDetailFieldEnum;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 交易订单 Response DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class TradeOrderRespDTO implements Serializable {
|
||||
|
||||
// ========== 订单基本信息 ==========
|
||||
/**
|
||||
* 订单编号
|
||||
*/
|
||||
private Integer id;
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
private Integer userId;
|
||||
/**
|
||||
* 订单单号
|
||||
*/
|
||||
private String orderNo;
|
||||
/**
|
||||
* 订单状态
|
||||
*/
|
||||
private Integer orderStatus;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
// ========== 价格 + 支付基本信息 ==========
|
||||
/**
|
||||
* 订单结束时间
|
||||
*/
|
||||
private Date endTime;
|
||||
/**
|
||||
* 订单金额(总金额),单位:分
|
||||
*/
|
||||
private Integer buyPrice;
|
||||
/**
|
||||
* 优惠总金额,单位:分
|
||||
*/
|
||||
private Integer discountPrice;
|
||||
/**
|
||||
* 物流金额,单位:分
|
||||
*/
|
||||
private Integer logisticsPrice;
|
||||
/**
|
||||
* 最终金额,单位:分
|
||||
*/
|
||||
private Integer presentPrice;
|
||||
/**
|
||||
* 支付金额,单位:分
|
||||
*/
|
||||
private Integer payPrice;
|
||||
/**
|
||||
* 退款金额,单位:分
|
||||
*/
|
||||
private Integer refundPrice;
|
||||
/**
|
||||
* 付款时间
|
||||
*/
|
||||
private Date payTime;
|
||||
/**
|
||||
* 支付订单编号
|
||||
*/
|
||||
private Integer payTransactionId;
|
||||
/**
|
||||
* 支付渠道
|
||||
*/
|
||||
private Integer payChannel;
|
||||
|
||||
// ========== 收件 + 物流基本信息 ==========
|
||||
/**
|
||||
* 配送类型
|
||||
*/
|
||||
private Integer deliveryType;
|
||||
/**
|
||||
* 发货时间
|
||||
*/
|
||||
private Date deliveryTime;
|
||||
/**
|
||||
* 收货时间
|
||||
*/
|
||||
private Date receiveTime;
|
||||
/**
|
||||
* 收件人名称
|
||||
*/
|
||||
private String receiverName;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String receiverMobile;
|
||||
/**
|
||||
* 地区编码
|
||||
*/
|
||||
private Integer receiverAreaCode;
|
||||
/**
|
||||
* 收件详细地址
|
||||
*/
|
||||
private String receiverDetailAddress;
|
||||
|
||||
// ========== 售后基本信息 ==========
|
||||
/**
|
||||
* 售后状态
|
||||
*/
|
||||
private Integer afterSaleStatus;
|
||||
|
||||
// ========== 营销基本信息 ==========
|
||||
/**
|
||||
* 优惠劵编号
|
||||
*/
|
||||
private Integer couponCardId;
|
||||
|
||||
// ========== 商品基本信息 ==========
|
||||
|
||||
/**
|
||||
* 订单项数组
|
||||
*
|
||||
* 需要设置 {@link TradeOrderDetailFieldEnum#ITEM} 才返回
|
||||
*
|
||||
* // TODO 芋艿,后续考虑怎么优化下,目前是内嵌了别的 dto
|
||||
*/
|
||||
private List<TradeOrderItemRespDTO> orderItems;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user