Browse Source

swagger与knife4j整合

chao 4 years ago
parent
commit
afb5c883ce

+ 5 - 0
pom.xml

@@ -116,6 +116,11 @@
             <artifactId>knife4j-spring-boot-starter</artifactId>
             <version>3.0.2</version>
         </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>3.0.0</version>
+        </dependency>
 
 
 		<dependency>

+ 4 - 2
src/main/java/com/caimei365/user/config/SwaggerConfig.java

@@ -1,15 +1,16 @@
 package com.caimei365.user.config;
 
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import springfox.documentation.builders.ApiInfoBuilder;
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.oas.annotations.EnableOpenApi;
 import springfox.documentation.service.*;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 /**
  * `@EnableOpenApi`: 用于开启Swagger的自动配置
@@ -17,8 +18,9 @@ import springfox.documentation.spring.web.plugins.Docket;
  * @author Aslee
  * @date 2021/3/10
  */
-@EnableOpenApi
 @Configuration
+@EnableSwagger2
+@EnableKnife4j
 public class SwaggerConfig {
     @Value(value = "${swagger.enabled}")
     Boolean swaggerEnabled;

+ 11 - 13
src/main/java/com/caimei365/user/controller/BaseApi.java

@@ -2,9 +2,7 @@ package com.caimei365.user.controller;
 
 import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.service.BaseService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -35,10 +33,9 @@ public class BaseApi {
      * @param platformType 0:www,1:crm/h5,2:小程序
      */
     @ApiOperation("获取图片验证码")
+    @ApiImplicitParam(required = true, name = "platformType", value = "0:www,1:crm/h5,2:小程序")
     @GetMapping("/captcha")
-    public ResponseJson<Map<String, Object>> getCaptchaImage(
-        @ApiParam(required = true, value = "0:www,1:crm/h5,2:小程序") @RequestParam("platformType") Integer platformType
-    ) {
+    public ResponseJson<Map<String, Object>> getCaptchaImage(Integer platformType) {
         return baseService.getCaptchaImage(platformType);
     }
 
@@ -54,14 +51,15 @@ public class BaseApi {
      * @param platformType     0:www,1:crm/h5,2:小程序
      */
     @ApiOperation("获取短信验证码")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "mobile", value = "手机号"),
+        @ApiImplicitParam(required = true, name = "activateCodeType", value = "1:找回密码,2:手机号注册机构,3:供应商注册"),
+        @ApiImplicitParam(required = true, name = "imgCode", value = "图片验证码"),
+        @ApiImplicitParam(required = true, name = "token", value = "图片token"),
+        @ApiImplicitParam(required = true, name = "platformType", value = "0:www,1:crm/h5,2:小程序")
+    })
     @GetMapping("/sms/code")
-    public ResponseJson getSmsCode(
-        @ApiParam(required = true, value = "手机号") @RequestParam("mobile") String mobile,
-        @ApiParam(required = true, value = "1:找回密码,2:手机号注册机构,3:供应商注册") String activateCodeType,
-        @ApiParam(required = true, value = "图片验证码") String imgCode,
-        @ApiParam(required = true, value = "图片token") String token,
-        @ApiParam(required = true, value = "0:www,1:crm/h5,2:小程序") Integer platformType
-    ) {
+    public ResponseJson getSmsCode(String mobile, String activateCodeType, String imgCode, String token, Integer platformType) {
         return baseService.getSmsCode(mobile, activateCodeType, imgCode, token, platformType);
     }
 

+ 3 - 3
src/main/java/com/caimei365/user/controller/ClubApi.java

@@ -4,6 +4,7 @@ import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.ClubUpdateDto;
 import com.caimei365.user.service.ClubService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.RequiredArgsConstructor;
@@ -36,10 +37,9 @@ public class ClubApi {
      * @return Map(userPo,clubPo)
      */
     @ApiOperation("查询机构资料")
+    @ApiImplicitParam(required = true, name = "userId", value = "用户Id")
     @GetMapping("/info")
-    public ResponseJson<Map<String, Object>> getClubUserInfo(
-    	@ApiParam(required = true, value = "用户Id") @RequestParam("userId") Integer userId
-    ) {
+    public ResponseJson<Map<String, Object>> getClubUserInfo(Integer userId) {
         return clubService.getClubUserInfo(userId);
     }
 

+ 46 - 44
src/main/java/com/caimei365/user/controller/LoginApi.java

@@ -3,9 +3,7 @@ package com.caimei365.user.controller;
 import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.vo.UserLoginVo;
 import com.caimei365.user.service.LoginService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpHeaders;
 import org.springframework.web.bind.annotation.*;
@@ -36,11 +34,12 @@ public class LoginApi {
      * @return BaseUser
      */
     @ApiOperation("登录(用户名,密码)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "mobileOrEmail", value = "手机号或邮箱"),
+        @ApiImplicitParam(required = true, name = "password", value = "密码")
+    })
     @PostMapping("/password")
-    public ResponseJson<UserLoginVo> passwordLogin(
-        @ApiParam(required = true, value = "手机号或邮箱") @RequestParam("mobileOrEmail") String mobileOrEmail,
-        @ApiParam(required = true, value = "密码") @RequestParam("password") String password
-    ) {
+    public ResponseJson<UserLoginVo> passwordLogin(String mobileOrEmail, String password) {
         return loginService.passwordLogin(mobileOrEmail, password);
     }
 
@@ -54,13 +53,13 @@ public class LoginApi {
      * @param iv            加密算法的初始向量
      */
     @ApiOperation("微信授权登录(小程序)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "code", value = "微信授权code"),
+        @ApiImplicitParam(required = false, name = "encryptedData", value = "微信加密数据"),
+        @ApiImplicitParam(required = false, name = "iv", value = "加密算法的初始向量")
+    })
     @PostMapping("/auth/applets")
-    public ResponseJson<UserLoginVo> appletsAuthorization(
-        @ApiParam("微信授权code") @RequestParam("code") String code,
-        @ApiParam("微信加密数据") @RequestParam("encryptedData") String encryptedData,
-        @ApiParam("加密算法的初始向量") @RequestParam("iv") String iv,
-        @RequestHeader HttpHeaders headers
-    ) {
+    public ResponseJson<UserLoginVo> appletsAuthorization(String code, String encryptedData, String iv, @RequestHeader HttpHeaders headers) {
         return loginService.appletsAuthorization(code, encryptedData, iv, headers);
     }
 
@@ -73,11 +72,12 @@ public class LoginApi {
      * @param mode        授权方式:1静默授权,其他手动同意授权
      */
     @ApiOperation("微信公众号授权链接(www)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "redirectUri", value = "用于微信授权的中间页面"),
+        @ApiImplicitParam(required = false, name = "mode", value = "授权方式:1静默授权,其他手动同意授权")
+    })
     @GetMapping("/auth/link")
-    public ResponseJson<String> getAuthorizationLink(
-        @ApiParam("用于微信授权的中间页面") @RequestParam("redirectUri") String redirectUri,
-        @ApiParam("授权方式:1静默授权,其他手动同意授权") @RequestParam("mode") Integer mode
-    ) {
+    public ResponseJson<String> getAuthorizationLink(String redirectUri, Integer mode) {
         return loginService.getAuthorizationLink(redirectUri, mode);
     }
 
@@ -91,13 +91,13 @@ public class LoginApi {
      * @param mode  1:静默授权,2:用户手动授权
      */
     @ApiOperation("微信公众号授权登录(www)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "code", value = "微信授权code"),
+        @ApiImplicitParam(required = true, name = "state", value = "安全认证key"),
+        @ApiImplicitParam(required = false, name = "mode", value = "1:静默授权,2:用户手动授权")
+    })
     @GetMapping("/auth/website")
-    public ResponseJson<UserLoginVo> websiteAuthorization(
-        @ApiParam("微信授权code") @RequestParam("code") String code,
-        @ApiParam("安全认证") @RequestParam("state") String state,
-        @ApiParam("1:静默授权,2:用户手动授权") @RequestParam("mode") Integer mode,
-        @RequestHeader HttpHeaders headers
-    ) {
+    public ResponseJson<UserLoginVo> websiteAuthorization(String code, String state, Integer mode, @RequestHeader HttpHeaders headers) {
         return loginService.websiteAuthorization(code, state, mode, headers);
     }
 
@@ -133,11 +133,12 @@ public class LoginApi {
      * @param state     安全认证key(第一步获取参数时自定义生成的uuid)
      */
     @ApiOperation("扫码后微信服务器回调")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = false, name = "code", value = "微信授权code"),
+        @ApiImplicitParam(required = false, name = "state", value = "安全认证key")
+    })
     @GetMapping("/auth/callback")
-    public void qrCodeAuthScan(
-        @ApiParam("微信授权code") @RequestParam("code") String code,
-        @ApiParam("安全认证") @RequestParam("state") String state
-    ) {
+    public void qrCodeAuthScan(String code, String state) {
         loginService.qrCodeAuthScan(code, state);
     }
 
@@ -150,10 +151,9 @@ public class LoginApi {
      * @return UserLoginVo
      */
     @ApiOperation("校验扫码登录结果")
+    @ApiImplicitParam(required = true, name = "state", value = "安全认证key")
     @GetMapping("/auth/scan/result")
-    public ResponseJson<UserLoginVo> qrCodeAuthScanResult(
-        @ApiParam("安全认证") @RequestParam("state") String state
-    ){
+    public ResponseJson<UserLoginVo> qrCodeAuthScanResult(String state){
         return loginService.qrCodeAuthScanResult(state);
     }
 
@@ -169,13 +169,14 @@ public class LoginApi {
      * @return UserLoginVo
      */
     @ApiOperation("运营人员邀请码授权登录")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "invitationCode", value = "邀请码"),
+        @ApiImplicitParam(required = true, name = "nickName", value = "微信昵称"),
+        @ApiImplicitParam(required = true, name = "avatarUrl", value = "微信头像(headimgurl)"),
+        @ApiImplicitParam(required = true, name = "unionId", value = "微信unionId")
+    })
     @PostMapping("/auth/invitation")
-    public ResponseJson<UserLoginVo> invitationCodeLogin(
-        @ApiParam("邀请码") @RequestParam("invitationCode") String invitationCode,
-        @ApiParam("微信昵称") @RequestParam("nickName") String nickName,
-        @ApiParam("微信头像(headimgurl)") @RequestParam("avatarUrl") String avatarUrl,
-        @ApiParam("微信unionId") @RequestParam("unionId") String unionId
-    ) {
+    public ResponseJson<UserLoginVo> invitationCodeLogin(String invitationCode, String nickName, String avatarUrl, String unionId) {
         return loginService.invitationCodeLogin(invitationCode, nickName, avatarUrl, unionId);
     }
 
@@ -187,17 +188,18 @@ public class LoginApi {
      * @param userId    要绑定的用户Id(userID)
      * @param mobile    手机号
      * @param smsCode   手机验证码(verificationCode)
-     * @param smsCode   微信unionId
+     * @param unionId   微信unionId
      * @return OperationPo
      */
     @ApiOperation("运营人员绑定微信")
-    @PostMapping("/auth/wechat/bind")
-    public ResponseJson<UserLoginVo> operationBindWeChat(
-        @ApiParam("要绑定的用户Id") @RequestParam("userId") Integer userId,
-        @ApiParam("手机号") @RequestParam("mobile") String mobile,
-        @ApiParam("手机验证码(verificationCode)") @RequestParam("smsCode") String smsCode,
-        @ApiParam("微信unionId") @RequestParam("unionId") String unionId
-    ) {
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "userId", value = "要绑定的用户Id"),
+        @ApiImplicitParam(required = true, name = "mobile", value = "手机号"),
+        @ApiImplicitParam(required = true, name = "smsCode", value = "手机验证码(verificationCode)"),
+        @ApiImplicitParam(required = true, name = "unionId", value = "微信unionId")
+    })
+    @PostMapping("/auth/bind")
+    public ResponseJson<UserLoginVo> operationBindWeChat(Integer userId, String mobile, String smsCode, String unionId) {
         return loginService.operationBindWeChat(userId, mobile, smsCode, unionId);
     }
 

+ 17 - 27
src/main/java/com/caimei365/user/controller/RegisterApi.java

@@ -9,9 +9,7 @@ import com.caimei365.user.model.dto.ShopRegisterDto;
 import com.caimei365.user.model.po.ClubPo;
 import com.caimei365.user.model.po.ShopPo;
 import com.caimei365.user.service.RegisterService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpHeaders;
 import org.springframework.web.bind.annotation.*;
@@ -51,15 +49,14 @@ public class RegisterApi {
      * @return ClubPo
      */
     @ApiOperation("注册普通机构")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "passWordConfirm", value = "用户确认密码"),
+        @ApiImplicitParam(required = true, name = "smsCode", value = "短信验证码"),
+        @ApiImplicitParam(required = true, name = "isAgreed", value = "是否同意勾选同意协议,1是,其他否")
+    })
     @Idempotent(prefix="idempotent_club", keys={"#baseUser"}, expire=5)
     @PostMapping("/club")
-    public ResponseJson clubRegister(
-        ClubRegisterDto clubRegisterDto,
-        @ApiParam(required = true, value = "用户确认密码") @RequestParam("passWordConfirm") String passWordConfirm,
-        @ApiParam(required = true, value = "短信验证码") @RequestParam("smsCode") String smsCode,
-        @ApiParam(required = true, value = "是否同意勾选同意协议,1是,其他否") @RequestParam("isAgreed") Integer isAgreed,
-        @RequestHeader HttpHeaders headers
-    ) {
+    public ResponseJson clubRegister(ClubRegisterDto clubRegisterDto, String passWordConfirm, String smsCode, Integer isAgreed, @RequestHeader HttpHeaders headers) {
         return registerService.clubRegister(clubRegisterDto, passWordConfirm, smsCode, isAgreed, headers);
     }
 
@@ -96,10 +93,7 @@ public class RegisterApi {
      */
     @ApiOperation("普通机构升级会员机构")
     @PostMapping("/club/upgrade")
-    public ResponseJson clubUpgrade(
-        ClubUpgradeDto upgradeDto,
-        @RequestHeader HttpHeaders headers
-    ){
+    public ResponseJson clubUpgrade(ClubUpgradeDto upgradeDto, @RequestHeader HttpHeaders headers){
         return registerService.clubUpgrade(upgradeDto, headers);
     }
 
@@ -134,12 +128,9 @@ public class RegisterApi {
      * @return ClubPo
      */
     @ApiOperation("协销拉机构上线(机构注册)")
+    @ApiImplicitParam(required = true, name = "isAgreed", value = "是否同意勾选同意协议,1是,其他否")
     @PostMapping("/club/online")
-    public ResponseJson<ClubPo> clubOnline(
-        ClubOnlineDto onlineDto,
-        @ApiParam(required = true, value = "是否同意勾选同意协议,1是,其他否") @RequestParam("isAgreed") Integer isAgreed,
-        @RequestHeader HttpHeaders headers
-    ) {
+    public ResponseJson<ClubPo> clubOnline( ClubOnlineDto onlineDto, Integer isAgreed, @RequestHeader HttpHeaders headers) {
         return registerService.clubOnline(onlineDto, isAgreed, headers);
     }
 
@@ -174,16 +165,15 @@ public class RegisterApi {
      * @return ShopPo
      */
     @ApiOperation("供应商注册")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "passWordConfirm", value = "用户确认密码"),
+        @ApiImplicitParam(required = true, name = "smsCode", value = "短信验证码"),
+        @ApiImplicitParam(required = true, name = "isAgreed", value = "是否同意勾选同意协议,1是,其他否"),
+        @ApiImplicitParam(required = true, name = "whichStep", value = "注册步数: PC(0),小程序(1,2,3)")
+    })
     @Idempotent(prefix="idempotent_shop", keys={"#shopRegisterDto"}, expire=5)
     @PostMapping("/shop/applets")
-    public ResponseJson<ShopPo> shopRegister(
-        ShopRegisterDto shopRegisterDto,
-        @ApiParam(required = true, value = "用户确认密码") @RequestParam("passWordConfirm") String passWordConfirm,
-        @ApiParam(required = true, value = "短信验证码") @RequestParam("smsCode") String smsCode,
-        @ApiParam(required = true, value = "是否同意勾选同意协议,1是,其他否") @RequestParam("isAgreed") Integer isAgreed,
-        @ApiParam(required = true, value = "注册步数: PC(0),小程序(1,2,3)") @RequestParam("whichStep") Integer whichStep,
-        @RequestHeader HttpHeaders headers
-    ) {
+    public ResponseJson<ShopPo> shopRegister(ShopRegisterDto shopRegisterDto, String passWordConfirm, String smsCode, Integer isAgreed, Integer whichStep, @RequestHeader HttpHeaders headers) {
         return registerService.shopRegister(shopRegisterDto, passWordConfirm, smsCode, isAgreed, whichStep, headers);
     }
 

+ 11 - 14
src/main/java/com/caimei365/user/controller/ShopApi.java

@@ -3,9 +3,7 @@ package com.caimei365.user.controller;
 import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.ShopUpdateDto;
 import com.caimei365.user.service.ShopService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
@@ -35,10 +33,9 @@ public class ShopApi {
      * @return Map(userPo,clubPo)
      */
     @ApiOperation("查询供应商资料")
+    @ApiImplicitParam(required = true, name = "userId", value = "用户Id")
     @GetMapping("/info")
-    public ResponseJson<Map<String, Object>> getShopUserInfo(
-    	@ApiParam(required = true, value = "用户Id") @RequestParam("userId") Integer userId
-    ) {
+    public ResponseJson<Map<String, Object>> getShopUserInfo(Integer userId) {
         return shopService.getShopUserInfo(userId);
     }
 
@@ -83,15 +80,15 @@ public class ShopApi {
      * @return ClubUpdateDto
      */
     @ApiOperation("更新供应商资料")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "operationLicence", value = "生产经营证书(productionLicence)"),
+        @ApiImplicitParam(required = true, name = "hygienicLicense", value = "卫生许可证"),
+        @ApiImplicitParam(required = true, name = "taxLicense", value = "税务登记证"),
+        @ApiImplicitParam(required = true, name = "honorCertification", value = "荣誉证书(certificateHonor)"),
+        @ApiImplicitParam(required = true, name = "productCertification", value = "产品证书")
+    })
     @PostMapping("/info/update")
-    public ResponseJson updateShopUserInfo(
-        ShopUpdateDto shopUpdateDto,
-        @ApiParam("生产经营证书(productionLicence)") @RequestParam("operationLicence") String operationLicence,
-        @ApiParam("卫生许可证") @RequestParam("hygienicLicense") String hygienicLicense,
-        @ApiParam("税务登记证") @RequestParam("taxLicense") String taxLicense,
-        @ApiParam("荣誉证书(certificateHonor)") @RequestParam("honorCertification") String honorCertification,
-        @ApiParam("产品证书") @RequestParam("productCertification") String productCertification
-    ) {
+    public ResponseJson updateShopUserInfo(ShopUpdateDto shopUpdateDto, String operationLicence, String hygienicLicense, String taxLicense, String honorCertification, String productCertification) {
         return shopService.updateShopUserInfo(shopUpdateDto, operationLicence, hygienicLicense, taxLicense, honorCertification, productCertification);
     }
 

+ 0 - 5
src/main/resources/bootstrap.yml

@@ -11,8 +11,3 @@ spring:
       label: master                     # 分支名称
       uri: http://localhost:18001       # 配置中心地址
       name: user                        # 配置文件名称
-
-swagger:
-  ui-config:
-    tags-sorter: method
-    operations-sorter: method