Эх сурвалжийг харах

提现失败自动补偿一次

wujiefeng 9 сар өмнө
parent
commit
055436deae

+ 14 - 15
RewardClient/src/main/java/com/zhongshu/reward/client/model/param/TransferRulerParam.java

@@ -25,22 +25,23 @@ public class TransferRulerParam {
      * 单笔最小提现金额
      */
     @ApiModelProperty("单笔最小提现金额")
-    @Max(value = 200000, message = "单笔提现金额不得超过 2000")
-    @Min(value = 30, message = "单笔提现金额不得低于 3")
+    @Max(value = 20000, message = "单笔提现金额不得超过 200")
+    @Min(value = 30, message = "单笔提现金额不得低于 0.3")
     private BigDecimal minTotal = BigDecimal.ZERO;
 
     /**
      * 单笔最大提现金额
      */
     @ApiModelProperty("单笔最大提现金额")
-    @Max(value = 200000, message = "单笔提现金额不得超过 2000")
-    @Max(value = 30, message = "单笔提现金额不得低于3")
+    @Max(value = 20000, message = "单笔提现金额不得超过 200")
+    @Min(value = 30, message = "单笔提现金额不得低于0.3")
     private BigDecimal maxTotal = BigDecimal.ZERO;
 
     /**
      * 单日最大转账金额
      */
     @ApiModelProperty("单日最大转账金额")
+    @Max(value = 2000000, message = "单日最大转账金额不得超过20000")
     private BigDecimal dayMaxTotal = BigDecimal.ZERO;
 
     /**
@@ -53,8 +54,6 @@ public class TransferRulerParam {
      * 提现次数
      */
     @ApiModelProperty("提现次数")
-    @Max(value = 2000, message = "单日最大转账金额不得超过 100000")
-
     private Integer size;
 
     /**
@@ -68,7 +67,7 @@ public class TransferRulerParam {
      */
     @ApiModelProperty("每月开始号数")
     @Max(value = 31, message = "超出月份天数")
-    @Max(value = 1, message = "日数最小为1")
+    @Min(value = 1, message = "日数最小为1")
     private Integer startDay;
 
     /**
@@ -76,30 +75,30 @@ public class TransferRulerParam {
      */
     @ApiModelProperty("每月结束号数")
     @Max(value = 31, message = "超出月份天数")
-    @Max(value = 1, message = "日数最小为1")
+    @Min(value = 1, message = "日数最小为1")
     private Integer endDay;
 
     /**
      * 每日开始时
      */
     @ApiModelProperty("每日开始时")
-    @Max(value = 23, message = "不过超过23时")
-    @Max(value = 0, message = "不得小于0时")
+    @Max(value = 24, message = "不过超过23时")
+    @Min(value = 0, message = "不得小于0时")
     private Integer startHour;
 
     /**
      * 每日开始分
      */
-    @Max(value = 23, message = "不过超过23时")
-    @Max(value = 0, message = "不得小于0时")
+    @Max(value = 59, message = "不过超过59分")
+    @Min(value = 0, message = "不得小于0分")
     @ApiModelProperty("每日开始分")
     private Integer startMinute;
 
     /**
      * 每日结束时
      */
-    @Max(value = 59, message = "不过超过59分")
-    @Max(value = 0, message = "不得小于0分")
+    @Max(value = 24, message = "不过超过24时")
+    @Min(value = 0, message = "不得小于0时")
     @ApiModelProperty("每日结束时")
     private Integer endHour;
 
@@ -107,7 +106,7 @@ public class TransferRulerParam {
      * 每日结束分
      */
     @Max(value = 59, message = "不过超过59分")
-    @Max(value = 0, message = "不得小于0分")
+    @Min(value = 0, message = "不得小于0分")
     @ApiModelProperty("每日结束分")
     private Integer endMinute;
 }

+ 3 - 1
RewardServer/src/main/java/com/zhongshu/reward/server/core/controller/wallet/TransferRulerController.java

@@ -10,6 +10,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
+
 /**
  * @author wjf
  * @date 2024/8/12
@@ -26,7 +28,7 @@ public class TransferRulerController {
     @Operation(summary = "新增/修改提现规则", description = "新增/修改提现规则")
 //    @ResourceAuth(value = "user", type = AuthType.User)
     @PostMapping("saveOrUpdate")
-    public Object saveOrUpdate(@RequestBody TransferRulerParam param){
+    public Object saveOrUpdate(@Valid @RequestBody TransferRulerParam param){
         return transferRulerService.saveOrUpdate(param);
     }
 

+ 101 - 0
RewardServer/src/main/java/com/zhongshu/reward/server/core/hanlder/RestExceptionHandler.java

@@ -0,0 +1,101 @@
+package com.zhongshu.reward.server.core.hanlder;
+
+import com.zhongshu.reward.client.ret.ResultContent;
+import com.zhongshu.reward.client.ret.ResultException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.lang.Nullable;
+import org.springframework.validation.BindException;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.MissingServletRequestParameterException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver;
+import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+@Slf4j
+@RestControllerAdvice
+@ResponseBody
+public class RestExceptionHandler extends DefaultHandlerExceptionResolver {
+
+    @ResponseStatus(HttpStatus.OK)
+    @ExceptionHandler({MethodArgumentNotValidException.class})
+    public ResultContent<String> paramExceptionHandler(MethodArgumentNotValidException exception) {
+        String msg = exception.getMessage();
+        BindingResult exceptions = exception.getBindingResult();
+// 判断异常中是否有错误信息,如果存在就使用异常中的消息,否则使用默认消息
+        if (exceptions.hasErrors()) {
+            List errors = exceptions.getAllErrors();
+            if (!errors.isEmpty()) {
+// 这里列出了全部错误参数,按正常逻辑,只需要第一条错误即可
+                FieldError fieldError = (FieldError) errors.get(0);
+                return ResultContent.buildFail(fieldError.getDefaultMessage());
+            }
+        }
+        return ResultContent.buildFail(msg);
+    }
+    @ExceptionHandler(Exception.class)
+    @ResponseStatus(HttpStatus.OK)
+    public ResultContent<String> exception(Exception exception) {
+        String msg = exception.getMessage();
+        log.error("绑定异常信息 ex={}", exception.getMessage(), exception);
+        return ResultContent.buildFail(msg);
+    }
+
+    @ExceptionHandler(BindException.class)
+    @ResponseStatus(HttpStatus.OK)
+    public ResultContent<String> bindException(BindException exception) {
+        String msg = exception.getMessage();
+        try {
+            if (exception.getBindingResult() != null) {
+                List<ObjectError> list = exception.getBindingResult().getAllErrors();
+                if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
+                    ObjectError objectError = list.get(0);
+                    if (objectError instanceof FieldError) {
+                        FieldError fieldError = (FieldError) objectError;
+                        msg = String.format("【%s】 %s", fieldError.getField(), fieldError.getDefaultMessage());
+                    } else {
+                        msg = String.format("%s", objectError.getDefaultMessage());
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        log.error("绑定异常信息 ex1={}", exception.getMessage(), exception);
+        return ResultContent.buildFail(msg);
+    }
+
+    protected ModelAndView handleMissingServletRequestParameter(MissingServletRequestParameterException ex,
+                                                                HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException {
+
+        log.error("missing param exception,uri:{},url:{}", request.getRequestURI(), request.getRequestURL());
+        return super.handleMissingServletRequestParameter(ex, request, response, handler);
+    }
+
+
+    @Override
+    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
+        e.printStackTrace();
+        log.error("exception : {}", e);
+        ModelAndView mv = new ModelAndView();
+        mv.addObject("state", "Fail");
+        mv.setView(new MappingJackson2JsonView());
+        mv.addObject("exception", ResultException.build(e));
+        mv.addObject("msg", e.getMessage());
+        return mv;
+    }
+
+}