feat(core): 增强文件上传配置和异常处理
- 配置文件上传大小限制,单个文件最大10MB,请求最大50MB - 添加文件写入磁盘阈值配置,超过2MB写入临时文件 - 实现文件上传超限异常处理,返回友好提示信息 - 优化应用启动日志,显示访问地址和运行环境信息 - 增加支付订单查询和更新的日志记录 - 创建阿里云OSS配置属性类,统一管理OSS参数 - 添加业务异常类,支持自定义错误码和消息 - 完善系统架构文档,描述前后端包结构和核心组件 - 新增商品创建请求DTO,支持SKU列表和校验规则 - 添加风控相关的客户信息和商品信息DTO - 配置Logback日志框架,支持不同环境的日志输出策略
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
package com.mtkj.mtpay.dto.request;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 创建商品请求DTO
|
||||
*/
|
||||
@Data
|
||||
public class CreateProductRequestDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 商品名称
|
||||
*/
|
||||
@NotBlank(message = "商品名称不能为空")
|
||||
@Size(max = 255, message = "商品名称长度不能超过255")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 商品价格(基础价格)
|
||||
*/
|
||||
@NotNull(message = "商品价格不能为空")
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 主图URL
|
||||
*/
|
||||
@Size(max = 4000, message = "主图URL长度不能超过4000")
|
||||
private String mainImage;
|
||||
|
||||
/**
|
||||
* 商品状态:ACTIVE-上架,INACTIVE-下架
|
||||
*/
|
||||
private String status = "ACTIVE";
|
||||
|
||||
/**
|
||||
* 店铺ID
|
||||
*/
|
||||
@NotNull(message = "店铺ID不能为空")
|
||||
private Long shopId;
|
||||
|
||||
/**
|
||||
* SKU列表
|
||||
*/
|
||||
@Valid
|
||||
@NotNull(message = "SKU列表不能为空")
|
||||
@Size(min = 1, message = "至少需要一个SKU")
|
||||
private List<CreateProductSkuDTO> skus;
|
||||
|
||||
/**
|
||||
* SKU DTO
|
||||
*/
|
||||
@Data
|
||||
public static class CreateProductSkuDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* SKU编码
|
||||
*/
|
||||
@NotBlank(message = "SKU编码不能为空")
|
||||
@Size(max = 2000, message = "SKU编码长度不能超过2000")
|
||||
private String sku;
|
||||
|
||||
/**
|
||||
* 价格
|
||||
*/
|
||||
@NotNull(message = "SKU价格不能为空")
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 货币(ISO 4217三位币种代码)
|
||||
*/
|
||||
@NotBlank(message = "货币不能为空")
|
||||
@Size(min = 3, max = 3, message = "货币必须为3位ISO 4217代码")
|
||||
private String currency = "USD";
|
||||
|
||||
/**
|
||||
* 库存数量
|
||||
*/
|
||||
@NotNull(message = "库存数量不能为空")
|
||||
private Integer stock = 0;
|
||||
|
||||
/**
|
||||
* 销售属性(JSON格式)
|
||||
*/
|
||||
private String salesAttrs;
|
||||
|
||||
/**
|
||||
* SKU图片URL
|
||||
*/
|
||||
@Size(max = 4000, message = "SKU图片URL长度不能超过4000")
|
||||
private String skuImage;
|
||||
|
||||
/**
|
||||
* 重量(单位:克)
|
||||
*/
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 大小/尺寸(JSON格式)
|
||||
*/
|
||||
@Size(max = 200, message = "尺寸JSON长度不能超过200")
|
||||
private String size;
|
||||
|
||||
/**
|
||||
* 规格(文本描述)
|
||||
*/
|
||||
@Size(max = 2000, message = "规格长度不能超过2000")
|
||||
private String specification;
|
||||
|
||||
/**
|
||||
* SKU状态:ACTIVE-启用,INACTIVE-禁用
|
||||
*/
|
||||
private String status = "ACTIVE";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.mtkj.mtpay.dto.risk;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 客户信息DTO
|
||||
*/
|
||||
@Data
|
||||
public class CustomerDTO implements Serializable {
|
||||
|
||||
private String customerId;
|
||||
|
||||
private String firstName;
|
||||
|
||||
private String lastName;
|
||||
|
||||
private String email;
|
||||
|
||||
private String domain;
|
||||
|
||||
private String phone;
|
||||
|
||||
private String mobile;
|
||||
|
||||
private String workPhone;
|
||||
|
||||
private String identificationType;
|
||||
|
||||
private String identificationId;
|
||||
|
||||
private String registerTime;
|
||||
|
||||
private String registerIp;
|
||||
|
||||
private String registerTerminal;
|
||||
|
||||
private String registerCountry;
|
||||
|
||||
private String registerRange;
|
||||
|
||||
private String orderTime;
|
||||
|
||||
private String orderIp;
|
||||
|
||||
private String orderCountry;
|
||||
|
||||
private String payIp;
|
||||
|
||||
private String payCountry;
|
||||
|
||||
private String loginTime;
|
||||
|
||||
private String loginIp;
|
||||
|
||||
private String lastPayTime;
|
||||
|
||||
private String acquisitionChannel;
|
||||
|
||||
private String firstOrder;
|
||||
|
||||
private String nonMemberOrder;
|
||||
|
||||
private String preferentialOrder;
|
||||
|
||||
private String birthDate;
|
||||
|
||||
private String customerStatus;
|
||||
}
|
||||
|
||||
27
mt-pay/src/main/java/com/mtkj/mtpay/dto/risk/GoodsDTO.java
Normal file
27
mt-pay/src/main/java/com/mtkj/mtpay/dto/risk/GoodsDTO.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.mtkj.mtpay.dto.risk;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 商品信息DTO
|
||||
*/
|
||||
@Data
|
||||
public class GoodsDTO implements Serializable {
|
||||
|
||||
private String name;
|
||||
|
||||
private String description;
|
||||
|
||||
private String sku;
|
||||
|
||||
private String averageUnitPrice;
|
||||
|
||||
private String number;
|
||||
|
||||
private String virtualProduct;
|
||||
|
||||
private String imgUrl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user