feat(order): 添加重复购买检测功能

- 新增 DuplicatePurchaseException 类用于处理重复购买异常
- 在 OrderServiceImpl 中实现重复购买检查逻辑
- 更新 CustomExceptionHandle 以处理新的重复购买异常
-优化订单创建流程,在生成订单号前增加重复购买检查
This commit is contained in:
2025-08-30 10:52:26 +08:00
parent 93a424058a
commit 792deb5c4d
4 changed files with 212 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
package com.ycwl.basic.exception;
import com.ycwl.basic.enums.BizCodeEnum;
import com.ycwl.basic.order.exception.DuplicatePurchaseException;
import com.ycwl.basic.utils.ApiResponse;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException;
@@ -106,4 +107,18 @@ public class CustomExceptionHandle {
public ApiResponse<String> handle(SizeLimitExceededException sizeLimitExceededException) {
return ApiResponse.buildResponse(415, "文件过大,请重新上传");
}
/**
* 重复购买异常处理
*/
@ExceptionHandler(value = DuplicatePurchaseException.class)
public ApiResponse<String> handle(HttpServletResponse response, DuplicatePurchaseException exception) {
response.setStatus(HttpStatus.BAD_REQUEST.value());
LOGGER.warn("检测到重复购买: productType={}, productId={}, existingOrderId={}, existingOrderNo={}",
exception.getProductType(), exception.getProductId(),
exception.getExistingOrderId(), exception.getExistingOrderNo());
// 返回友好的错误信息给前端
return ApiResponse.buildResponse(4001, exception.getFriendlyMessage());
}
}