Pārlūkot izejas kodu

添加 Post JSON格式 单个参数获取注释

785834757 2 mēneši atpakaļ
vecāks
revīzija
9ff17838de

+ 5 - 2
market/src/main/java/com/ruoyi/market/domain/MarketAwardLibrary.java

@@ -1,6 +1,7 @@
 package com.ruoyi.market.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -33,11 +34,13 @@ public class MarketAwardLibrary {
     @ApiModelProperty("奖品类型")
     private String awardType;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("生效日期")
-    private LocalDate effectiveDate;
+    private LocalDateTime effectiveDate;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("失效日期")
-    private LocalDate expiryDate;
+    private LocalDateTime expiryDate;
 
     @ApiModelProperty("是否删除")
     private String isDelete;

+ 3 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/market/AwardController.java

@@ -1,6 +1,7 @@
 package com.ruoyi.web.controller.market;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.RequestSingleParam;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.market.domain.MarketAwardLibrary;
 import com.ruoyi.market.domain.vo.AwardQueryVo;
@@ -8,10 +9,7 @@ import com.ruoyi.market.service.MarketAwardLibraryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 奖品 controller
@@ -52,7 +50,7 @@ public class AwardController {
      */
     @ApiOperation("删除奖品")
     @PostMapping("delAward")
-    public AjaxResult delAward(String awardId){
+    public AjaxResult delAward(@RequestSingleParam(value = "awardId")String awardId){
         return marketAwardLibraryService.delAward(awardId) ? AjaxResult.success("删除奖品成功") : AjaxResult.error("删除奖品失败");
     }
 

+ 17 - 0
ruoyi-common/src/main/java/com/ruoyi/common/annotation/RequestSingleParam.java

@@ -0,0 +1,17 @@
+package com.ruoyi.common.annotation;
+
+import org.springframework.web.bind.annotation.ValueConstants;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.PARAMETER)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface RequestSingleParam {
+
+    String value();
+
+    boolean required() default true;
+
+    String defaultValue() default ValueConstants.DEFAULT_NONE;
+}

+ 13 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java

@@ -1,6 +1,9 @@
 package com.ruoyi.framework.config;
 
+import java.util.List;
 import java.util.concurrent.TimeUnit;
+
+import com.ruoyi.framework.interceptor.RequestStringParamHandlerMethodArgumentResolver;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -8,6 +11,7 @@ import org.springframework.http.CacheControl;
 import org.springframework.web.cors.CorsConfiguration;
 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
 import org.springframework.web.filter.CorsFilter;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@@ -70,4 +74,13 @@ public class ResourcesConfig implements WebMvcConfigurer
         // 返回新的CorsFilter
         return new CorsFilter(source);
     }
+
+    /**
+     * 注册自定义的参数解析器
+     */
+    @Override
+    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers){
+        argumentResolvers.add(new RequestStringParamHandlerMethodArgumentResolver());
+        WebMvcConfigurer.super.addArgumentResolvers(argumentResolvers);
+    }
 }

+ 38 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RequestStringParamHandlerMethodArgumentResolver.java

@@ -0,0 +1,38 @@
+package com.ruoyi.framework.interceptor;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.annotation.RequestSingleParam;
+import org.springframework.core.MethodParameter;
+import org.springframework.web.bind.support.WebDataBinderFactory;
+import org.springframework.web.context.request.NativeWebRequest;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
+import org.springframework.web.method.support.ModelAndViewContainer;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
+
+public class RequestStringParamHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
+
+    @Override
+    public boolean supportsParameter(MethodParameter parameter) {
+        return parameter.hasParameterAnnotation(RequestSingleParam.class);
+    }
+
+    @Override
+    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
+                                  NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
+        RequestSingleParam requestSingleParam = parameter.getParameterAnnotation(RequestSingleParam.class);
+        HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
+        BufferedReader reader = request.getReader();
+        StringBuilder sb = new StringBuilder();
+        char[] buf = new char[1024];
+        int rd;
+        while ((rd = reader.read(buf)) != -1) {
+            sb.append(buf, 0, rd);
+        }
+        JSONObject jsonObject = JSONObject.parseObject(sb.toString());
+        String value = requestSingleParam.value();
+        return jsonObject.get(value);
+    }
+
+}