Commit be9d670beed60fe4f50e3760c7e2298621b8a0dc

Authored by xingyu
1 parent f2adb441

feat: mp springdoc

Showing 54 changed files with 412 additions and 448 deletions
yudao-module-mp/yudao-module-mp-biz/pom.xml
... ... @@ -54,6 +54,11 @@
54 54 <artifactId>yudao-spring-boot-starter-security</artifactId>
55 55 </dependency>
56 56  
  57 + <dependency>
  58 + <groupId>org.springframework.boot</groupId>
  59 + <artifactId>spring-boot-starter-validation</artifactId>
  60 + </dependency>
  61 +
57 62 <!-- DB 相关 -->
58 63 <dependency>
59 64 <groupId>cn.iocoder.boot</groupId>
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/account/MpAccountController.java
... ... @@ -6,9 +6,9 @@ import cn.iocoder.yudao.module.mp.controller.admin.account.vo.*;
6 6 import cn.iocoder.yudao.module.mp.convert.account.MpAccountConvert;
7 7 import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
8 8 import cn.iocoder.yudao.module.mp.service.account.MpAccountService;
9   -import io.swagger.annotations.Api;
10   -import io.swagger.annotations.ApiImplicitParam;
11   -import io.swagger.annotations.ApiOperation;
  9 +import io.swagger.v3.oas.annotations.Operation;
  10 +import io.swagger.v3.oas.annotations.Parameter;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
12 12 import org.springframework.security.access.prepost.PreAuthorize;
13 13 import org.springframework.validation.annotation.Validated;
14 14 import org.springframework.web.bind.annotation.*;
... ... @@ -19,7 +19,7 @@ import java.util.List;
19 19  
20 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 21  
22   -@Api(tags = "管理后台 - 公众号账号")
  22 +@Tag(name = "管理后台 - 公众号账号")
23 23 @RestController
24 24 @RequestMapping("/mp/account")
25 25 @Validated
... ... @@ -29,14 +29,14 @@ public class MpAccountController {
29 29 private MpAccountService mpAccountService;
30 30  
31 31 @PostMapping("/create")
32   - @ApiOperation("创建公众号账号")
  32 + @Operation(summary = "创建公众号账号")
33 33 @PreAuthorize("@ss.hasPermission('mp:account:create')")
34 34 public CommonResult<Long> createAccount(@Valid @RequestBody MpAccountCreateReqVO createReqVO) {
35 35 return success(mpAccountService.createAccount(createReqVO));
36 36 }
37 37  
38 38 @PutMapping("/update")
39   - @ApiOperation("更新公众号账号")
  39 + @Operation(summary = "更新公众号账号")
40 40 @PreAuthorize("@ss.hasPermission('mp:account:update')")
41 41 public CommonResult<Boolean> updateAccount(@Valid @RequestBody MpAccountUpdateReqVO updateReqVO) {
42 42 mpAccountService.updateAccount(updateReqVO);
... ... @@ -44,8 +44,8 @@ public class MpAccountController {
44 44 }
45 45  
46 46 @DeleteMapping("/delete")
47   - @ApiOperation("删除公众号账号")
48   - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
  47 + @Operation(summary = "删除公众号账号")
  48 + @Parameter(name = "id", description = "编号", required = true)
49 49 @PreAuthorize("@ss.hasPermission('mp:account:delete')")
50 50 public CommonResult<Boolean> deleteAccount(@RequestParam("id") Long id) {
51 51 mpAccountService.deleteAccount(id);
... ... @@ -53,8 +53,8 @@ public class MpAccountController {
53 53 }
54 54  
55 55 @GetMapping("/get")
56   - @ApiOperation("获得公众号账号")
57   - @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  56 + @Operation(summary = "获得公众号账号")
  57 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
58 58 @PreAuthorize("@ss.hasPermission('mp:account:query')")
59 59 public CommonResult<MpAccountRespVO> getAccount(@RequestParam("id") Long id) {
60 60 MpAccountDO wxAccount = mpAccountService.getAccount(id);
... ... @@ -62,7 +62,7 @@ public class MpAccountController {
62 62 }
63 63  
64 64 @GetMapping("/page")
65   - @ApiOperation("获得公众号账号分页")
  65 + @Operation(summary = "获得公众号账号分页")
66 66 @PreAuthorize("@ss.hasPermission('mp:account:query')")
67 67 public CommonResult<PageResult<MpAccountRespVO>> getAccountPage(@Valid MpAccountPageReqVO pageVO) {
68 68 PageResult<MpAccountDO> pageResult = mpAccountService.getAccountPage(pageVO);
... ... @@ -70,7 +70,7 @@ public class MpAccountController {
70 70 }
71 71  
72 72 @GetMapping("/list-all-simple")
73   - @ApiOperation(value = "获取公众号账号精简信息列表")
  73 + @Operation(summary = "获取公众号账号精简信息列表")
74 74 @PreAuthorize("@ss.hasPermission('mp:account:query')")
75 75 public CommonResult<List<MpAccountSimpleRespVO>> getSimpleAccounts() {
76 76 List<MpAccountDO> list = mpAccountService.getAccountList();
... ... @@ -78,8 +78,8 @@ public class MpAccountController {
78 78 }
79 79  
80 80 @PutMapping("/generate-qr-code")
81   - @ApiOperation("生成公众号二维码")
82   - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
  81 + @Operation(summary = "生成公众号二维码")
  82 + @Parameter(name = "id", description = "编号", required = true)
83 83 @PreAuthorize("@ss.hasPermission('mp:account:qr-code')")
84 84 public CommonResult<Boolean> generateAccountQrCode(@RequestParam("id") Long id) {
85 85 mpAccountService.generateAccountQrCode(id);
... ... @@ -87,8 +87,8 @@ public class MpAccountController {
87 87 }
88 88  
89 89 @PutMapping("/clear-quota")
90   - @ApiOperation("清空公众号 API 配额")
91   - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
  90 + @Operation(summary = "清空公众号 API 配额")
  91 + @Parameter(name = "id", description = "编号", required = true)
92 92 @PreAuthorize("@ss.hasPermission('mp:account:clear-quota')")
93 93 public CommonResult<Boolean> clearAccountQuota(@RequestParam("id") Long id) {
94 94 mpAccountService.clearAccountQuota(id);
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/account/vo/MpAccountBaseVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.account.vo;
2 2  
3   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5 5  
6 6 import javax.validation.constraints.NotEmpty;
... ... @@ -14,30 +14,30 @@ import javax.validation.constraints.NotEmpty;
14 14 @Data
15 15 public class MpAccountBaseVO {
16 16  
17   - @ApiModelProperty(value = "公众号名称", required = true, example = "芋道源码")
  17 + @Schema(description = "公众号名称", required = true, example = "芋道源码")
18 18 @NotEmpty(message = "公众号名称不能为空")
19 19 private String name;
20 20  
21   - @ApiModelProperty(value = "公众号微信号", required = true, example = "yudaoyuanma")
  21 + @Schema(description = "公众号微信号", required = true, example = "yudaoyuanma")
22 22 @NotEmpty(message = "公众号微信号不能为空")
23 23 private String account;
24 24  
25   - @ApiModelProperty(value = "公众号 appId", required = true, example = "wx5b23ba7a5589ecbb")
  25 + @Schema(description = "公众号 appId", required = true, example = "wx5b23ba7a5589ecbb")
26 26 @NotEmpty(message = "公众号 appId 不能为空")
27 27 private String appId;
28 28  
29   - @ApiModelProperty(value = "公众号密钥", required = true, example = "3a7b3b20c537e52e74afd395eb85f61f")
  29 + @Schema(description = "公众号密钥", required = true, example = "3a7b3b20c537e52e74afd395eb85f61f")
30 30 @NotEmpty(message = "公众号密钥不能为空")
31 31 private String appSecret;
32 32  
33   - @ApiModelProperty(value = "公众号 token", required = true, example = "kangdayuzhen")
  33 + @Schema(description = "公众号 token", required = true, example = "kangdayuzhen")
34 34 @NotEmpty(message = "公众号 token 不能为空")
35 35 private String token;
36 36  
37   - @ApiModelProperty(value = "加密密钥", example = "gjN+Ksei")
  37 + @Schema(description = "加密密钥", example = "gjN+Ksei")
38 38 private String aesKey;
39 39  
40   - @ApiModelProperty(value = "备注", example = "请关注芋道源码,学习技术")
  40 + @Schema(description = "备注", example = "请关注芋道源码,学习技术")
41 41 private String remark;
42 42  
43 43 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/account/vo/MpAccountCreateReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.account.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5 5 import lombok.EqualsAndHashCode;
6 6 import lombok.ToString;
7 7  
8   -@ApiModel("管理后台 - 公众号账号创建 Request VO")
  8 +@Schema(description = "管理后台 - 公众号账号创建 Request VO")
9 9 @Data
10 10 @EqualsAndHashCode(callSuper = true)
11 11 @ToString(callSuper = true)
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/account/vo/MpAccountPageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.account.vo;
2 2  
3   -import lombok.*;
4   -import io.swagger.annotations.*;
5 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
6 8  
7   -@ApiModel("管理后台 - 公众号账号分页 Request VO")
  9 +@Schema(description = "管理后台 - 公众号账号分页 Request VO")
8 10 @Data
9 11 @EqualsAndHashCode(callSuper = true)
10 12 @ToString(callSuper = true)
11 13 public class MpAccountPageReqVO extends PageParam {
12 14  
13   - @ApiModelProperty(value = "公众号名称", notes = "模糊匹配")
  15 + @Schema(name = "公众号名称", description = "模糊匹配")
14 16 private String name;
15 17  
16   - @ApiModelProperty(value = "公众号账号", notes = "模糊匹配")
  18 + @Schema(name = "公众号账号", description = "模糊匹配")
17 19 private String account;
18 20  
19   - @ApiModelProperty(value = "公众号 appid", notes = "模糊匹配")
  21 + @Schema(name = "公众号 appid", description = "模糊匹配")
20 22 private String appId;
21 23  
22 24 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/account/vo/MpAccountRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.account.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7 6 import lombok.ToString;
8 7  
9 8 import java.util.Date;
10 9  
11   -@ApiModel("管理后台 - 公众号账号 Response VO")
  10 +@Schema(description = "管理后台 - 公众号账号 Response VO")
12 11 @Data
13 12 @EqualsAndHashCode(callSuper = true)
14 13 @ToString(callSuper = true)
15 14 public class MpAccountRespVO extends MpAccountBaseVO {
16 15  
17   - @ApiModelProperty(value = "编号", required = true, example = "1024")
  16 + @Schema(description = "编号", required = true, example = "1024")
18 17 private Long id;
19 18  
20   - @ApiModelProperty(value = "二维码图片URL", example = "https://www.iocoder.cn/1024.png")
  19 + @Schema(description = "二维码图片URL", example = "https://www.iocoder.cn/1024.png")
21 20 private String qrCodeUrl;
22 21  
23   - @ApiModelProperty(value = "创建时间", required = true)
  22 + @Schema(description = "创建时间", required = true)
24 23 private Date createTime;
25 24  
26 25 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/account/vo/MpAccountSimpleRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.account.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7   -@ApiModel("管理后台 - 公众号账号精简信息 Response VO")
  6 +@Schema(description = "管理后台 - 公众号账号精简信息 Response VO")
8 7 @Data
9 8 public class MpAccountSimpleRespVO {
10 9  
11   - @ApiModelProperty(value = "编号", required = true, example = "1024")
  10 + @Schema(description = "编号", required = true, example = "1024")
12 11 private Long id;
13 12  
14   - @ApiModelProperty(value = "公众号名称", required = true, example = "芋道源码")
  13 + @Schema(description = "公众号名称", required = true, example = "芋道源码")
15 14 private String name;
16 15  
17 16 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/account/vo/MpAccountUpdateReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.account.vo;
2 2  
3   -import lombok.*;
4   -import io.swagger.annotations.*;
5   -import javax.validation.constraints.*;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import lombok.ToString;
6 7  
7   -@ApiModel("管理后台 - 公众号账号更新 Request VO")
  8 +import javax.validation.constraints.NotNull;
  9 +
  10 +@Schema(description = "管理后台 - 公众号账号更新 Request VO")
8 11 @Data
9 12 @EqualsAndHashCode(callSuper = true)
10 13 @ToString(callSuper = true)
11 14 public class MpAccountUpdateReqVO extends MpAccountBaseVO {
12 15  
13   - @ApiModelProperty(value = "编号", required = true, example = "1024")
  16 + @Schema(description = "编号", required = true, example = "1024")
14 17 @NotNull(message = "编号不能为空")
15 18 private Long id;
16 19  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/material/MpMaterialController.java
... ... @@ -6,9 +6,9 @@ import cn.iocoder.yudao.module.mp.controller.admin.material.vo.*;
6 6 import cn.iocoder.yudao.module.mp.convert.material.MpMaterialConvert;
7 7 import cn.iocoder.yudao.module.mp.dal.dataobject.material.MpMaterialDO;
8 8 import cn.iocoder.yudao.module.mp.service.material.MpMaterialService;
9   -import io.swagger.annotations.Api;
10   -import io.swagger.annotations.ApiImplicitParam;
11   -import io.swagger.annotations.ApiOperation;
  9 +import io.swagger.v3.oas.annotations.Operation;
  10 +import io.swagger.v3.oas.annotations.Parameter;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
12 12 import org.springframework.security.access.prepost.PreAuthorize;
13 13 import org.springframework.validation.annotation.Validated;
14 14 import org.springframework.web.bind.annotation.*;
... ... @@ -19,7 +19,7 @@ import java.io.IOException;
19 19  
20 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 21  
22   -@Api(tags = "管理后台 - 公众号素材")
  22 +@Tag(name = "管理后台 - 公众号素材")
23 23 @RestController
24 24 @RequestMapping("/mp/material")
25 25 @Validated
... ... @@ -28,7 +28,7 @@ public class MpMaterialController {
28 28 @Resource
29 29 private MpMaterialService mpMaterialService;
30 30  
31   - @ApiOperation("上传临时素材")
  31 + @Operation(summary = "上传临时素材")
32 32 @PostMapping("/upload-temporary")
33 33 @PreAuthorize("@ss.hasPermission('mp:material:upload-temporary')")
34 34 public CommonResult<MpMaterialUploadRespVO> uploadTemporaryMaterial(
... ... @@ -37,7 +37,7 @@ public class MpMaterialController {
37 37 return success(MpMaterialConvert.INSTANCE.convert(material));
38 38 }
39 39  
40   - @ApiOperation("上传永久素材")
  40 + @Operation(summary = "上传永久素材")
41 41 @PostMapping("/upload-permanent")
42 42 @PreAuthorize("@ss.hasPermission('mp:material:upload-permanent')")
43 43 public CommonResult<MpMaterialUploadRespVO> uploadPermanentMaterial(
... ... @@ -46,16 +46,16 @@ public class MpMaterialController {
46 46 return success(MpMaterialConvert.INSTANCE.convert(material));
47 47 }
48 48  
49   - @ApiOperation("删除素材")
  49 + @Operation(summary = "删除素材")
50 50 @DeleteMapping("/delete-permanent")
51   - @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  51 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
52 52 @PreAuthorize("@ss.hasPermission('mp:material:delete')")
53 53 public CommonResult<Boolean> deleteMaterial(@RequestParam("id") Long id) {
54 54 mpMaterialService.deleteMaterial(id);
55 55 return success(true);
56 56 }
57 57  
58   - @ApiOperation("上传图文内容中的图片")
  58 + @Operation(summary = "上传图文内容中的图片")
59 59 @PostMapping("/upload-news-image")
60 60 @PreAuthorize("@ss.hasPermission('mp:material:upload-news-image')")
61 61 public CommonResult<String> uploadNewsImage(@Valid MpMaterialUploadNewsImageReqVO reqVO)
... ... @@ -63,7 +63,7 @@ public class MpMaterialController {
63 63 return success(mpMaterialService.uploadNewsImage(reqVO));
64 64 }
65 65  
66   - @ApiOperation("获得素材分页")
  66 + @Operation(summary = "获得素材分页")
67 67 @GetMapping("/page")
68 68 @PreAuthorize("@ss.hasPermission('mp:material:query')")
69 69 public CommonResult<PageResult<MpMaterialRespVO>> getMaterialPage(@Valid MpMaterialPageReqVO pageReqVO) {
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/material/vo/MpMaterialPageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.material.vo;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6 import lombok.EqualsAndHashCode;
8 7 import lombok.ToString;
9 8  
10 9 import javax.validation.constraints.NotNull;
11 10  
12   -@ApiModel("管理后台 - 公众号素材的分页 Request VO")
  11 +@Schema(description = "管理后台 - 公众号素材的分页 Request VO")
13 12 @Data
14 13 @EqualsAndHashCode(callSuper = true)
15 14 @ToString(callSuper = true)
16 15 public class MpMaterialPageReqVO extends PageParam {
17 16  
18   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  17 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
19 18 @NotNull(message = "公众号账号的编号不能为空")
20 19 private Long accountId;
21 20  
22   - @ApiModelProperty(value = "是否永久", example = "true")
  21 + @Schema(description = "是否永久", example = "true")
23 22 private Boolean permanent;
24 23  
25   - @ApiModelProperty(value = "文件类型", example = "image", notes = "参见 WxConsts.MediaFileType 枚举")
  24 + @Schema(description = "文件类型 参见 WxConsts.MediaFileType 枚举", example = "image")
26 25 private String type;
27 26  
28 27 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/material/vo/MpMaterialRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.material.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import java.util.Date;
8 7  
9   -@ApiModel("管理后台 - 公众号素材 Response VO")
  8 +@Schema(description = "管理后台 - 公众号素材 Response VO")
10 9 @Data
11 10 public class MpMaterialRespVO {
12 11  
13   - @ApiModelProperty(value = "主键", required = true, example = "1024")
  12 + @Schema(description = "主键", required = true, example = "1024")
14 13 private Long id;
15 14  
16   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1")
  15 + @Schema(description = "公众号账号的编号", required = true, example = "1")
17 16 private Long accountId;
18   - @ApiModelProperty(value = "公众号账号的 appId", required = true, example = "wx1234567890")
  17 + @Schema(description = "公众号账号的 appId", required = true, example = "wx1234567890")
19 18 private String appId;
20 19  
21   - @ApiModelProperty(value = "素材的 media_id", required = true, example = "123")
  20 + @Schema(description = "素材的 media_id", required = true, example = "123")
22 21 private String mediaId;
23 22  
24   - @ApiModelProperty(value = "文件类型", required = true, example = "image", notes = "参见 WxConsts.MediaFileType 枚举")
  23 + @Schema(description = "文件类型 参见 WxConsts.MediaFileType 枚举", required = true, example = "image")
25 24 private String type;
26 25  
27   - @ApiModelProperty(value = "是否永久", required = true, example = "true", notes = "true - 永久;false - 临时")
  26 + @Schema(description = "是否永久 true - 永久;false - 临时", required = true, example = "true")
28 27 private Boolean permanent;
29 28  
30   - @ApiModelProperty(value = "素材的 URL", required = true, example = "https://www.iocoder.cn/1.png")
  29 + @Schema(description = "素材的 URL", required = true, example = "https://www.iocoder.cn/1.png")
31 30 private String url;
32 31  
33 32  
34   - @ApiModelProperty(value = "名字", example = "yunai.png")
  33 + @Schema(description = "名字", example = "yunai.png")
35 34 private String name;
36 35  
37   - @ApiModelProperty(value = "公众号文件 URL", example = "https://mmbiz.qpic.cn/xxx.mp3", notes = "只有【永久素材】使用")
  36 + @Schema(description = "公众号文件 URL 只有【永久素材】使用", example = "https://mmbiz.qpic.cn/xxx.mp3")
38 37 private String mpUrl;
39 38  
40   - @ApiModelProperty(value = "视频素材的标题", example = "我是标题", notes = "只有【永久素材】使用")
  39 + @Schema(description = "视频素材的标题 只有【永久素材】使用", example = "我是标题")
41 40 private String title;
42   - @ApiModelProperty(value = "视频素材的描述", example = "我是介绍", notes = "只有【永久素材】使用")
  41 + @Schema(description = "视频素材的描述 只有【永久素材】使用", example = "我是介绍")
43 42 private String introduction;
44 43  
45   - @ApiModelProperty(value = "创建时间", required = true)
  44 + @Schema(description = "创建时间", required = true)
46 45 private Date createTime;
47 46  
48 47 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/material/vo/MpMaterialUploadNewsImageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.material.vo;
2 2  
3 3 import com.fasterxml.jackson.annotation.JsonIgnore;
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6 import org.springframework.web.multipart.MultipartFile;
8 7  
9 8 import javax.validation.constraints.NotNull;
10 9  
11   -@ApiModel("管理后台 - 公众号素材上传图文内容中的图片 Request VO")
  10 +@Schema(description = "管理后台 - 公众号素材上传图文内容中的图片 Request VO")
12 11 @Data
13 12 public class MpMaterialUploadNewsImageReqVO {
14 13  
15   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  14 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
16 15 @NotNull(message = "公众号账号的编号不能为空")
17 16 private Long accountId;
18 17  
19   - @ApiModelProperty(value = "文件附件", required = true)
  18 + @Schema(description = "文件附件", required = true)
20 19 @NotNull(message = "文件不能为空")
21 20 @JsonIgnore // 避免被操作日志,进行序列化,导致报错
22 21 private MultipartFile file;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/material/vo/MpMaterialUploadPermanentReqVO.java
... ... @@ -2,8 +2,7 @@ package cn.iocoder.yudao.module.mp.controller.admin.material.vo;
2 2  
3 3 import cn.hutool.core.util.ObjectUtil;
4 4 import com.fasterxml.jackson.annotation.JsonIgnore;
5   -import io.swagger.annotations.ApiModel;
6   -import io.swagger.annotations.ApiModelProperty;
  5 +import io.swagger.v3.oas.annotations.media.Schema;
7 6 import lombok.Data;
8 7 import me.chanjar.weixin.common.api.WxConsts;
9 8 import org.springframework.web.multipart.MultipartFile;
... ... @@ -12,29 +11,29 @@ import javax.validation.constraints.AssertTrue;
12 11 import javax.validation.constraints.NotEmpty;
13 12 import javax.validation.constraints.NotNull;
14 13  
15   -@ApiModel("管理后台 - 公众号素材上传永久 Request VO")
  14 +@Schema(description = "管理后台 - 公众号素材上传永久 Request VO")
16 15 @Data
17 16 public class MpMaterialUploadPermanentReqVO {
18 17  
19   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  18 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
20 19 @NotNull(message = "公众号账号的编号不能为空")
21 20 private Long accountId;
22 21  
23   - @ApiModelProperty(value = "文件类型", required = true, example = "image", notes = "参见 WxConsts.MediaFileType 枚举")
  22 + @Schema(description = "文件类型 参见 WxConsts.MediaFileType 枚举", required = true, example = "image")
24 23 @NotEmpty(message = "文件类型不能为空")
25 24 private String type;
26 25  
27   - @ApiModelProperty(value = "文件附件", required = true)
  26 + @Schema(description = "文件附件", required = true)
28 27 @NotNull(message = "文件不能为空")
29 28 @JsonIgnore // 避免被操作日志,进行序列化,导致报错
30 29 private MultipartFile file;
31 30  
32   - @ApiModelProperty(value = "名字", example = "wechat.mp", notes = "如果 name 为空,则使用 file 文件名")
  31 + @Schema(description = "名字 如果 name 为空,则使用 file 文件名", example = "wechat.mp")
33 32 private String name;
34 33  
35   - @ApiModelProperty(value = "视频素材的标题", example = "视频素材的标题", notes = "文件类型为 video 时,必填")
  34 + @Schema(description = "视频素材的标题 文件类型为 video 时,必填", example = "视频素材的标题")
36 35 private String title;
37   - @ApiModelProperty(value = "视频素材的描述", example = "视频素材的描述", notes = "文件类型为 video 时,必填")
  36 + @Schema(description = "视频素材的描述 文件类型为 video 时,必填", example = "视频素材的描述")
38 37 private String introduction;
39 38  
40 39 @AssertTrue(message = "标题不能为空")
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/material/vo/MpMaterialUploadRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.material.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7   -@ApiModel("管理后台 - 公众号素材上传结果 Response VO")
  6 +@Schema(description = "管理后台 - 公众号素材上传结果 Response VO")
8 7 @Data
9 8 public class MpMaterialUploadRespVO {
10 9  
11   - @ApiModelProperty(value = "素材的 media_id", required = true, example = "123")
  10 + @Schema(description = "素材的 media_id", required = true, example = "123")
12 11 private String mediaId;
13 12  
14   - @ApiModelProperty(value = "素材的 URL", required = true, example = "https://www.iocoder.cn/1.png")
  13 + @Schema(description = "素材的 URL", required = true, example = "https://www.iocoder.cn/1.png")
15 14 private String url;
16 15  
17 16 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/material/vo/MpMaterialUploadTemporaryReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.material.vo;
2 2  
3 3 import com.fasterxml.jackson.annotation.JsonIgnore;
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6 import org.springframework.web.multipart.MultipartFile;
8 7  
9 8 import javax.validation.constraints.NotEmpty;
10 9 import javax.validation.constraints.NotNull;
11 10  
12   -@ApiModel("管理后台 - 公众号素材上传临时 Request VO")
  11 +@Schema(description = "管理后台 - 公众号素材上传临时 Request VO")
13 12 @Data
14 13 public class MpMaterialUploadTemporaryReqVO {
15 14  
16   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  15 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
17 16 @NotNull(message = "公众号账号的编号不能为空")
18 17 private Long accountId;
19 18  
20   - @ApiModelProperty(value = "文件类型", required = true, example = "image", notes = "参见 WxConsts.MediaFileType 枚举")
  19 + @Schema(description = "文件类型 参见 WxConsts.MediaFileType 枚举", required = true, example = "image")
21 20 @NotEmpty(message = "文件类型不能为空")
22 21 private String type;
23 22  
24   - @ApiModelProperty(value = "文件附件", required = true)
  23 + @Schema(description = "文件附件", required = true)
25 24 @NotNull(message = "文件不能为空")
26 25 @JsonIgnore // 避免被操作日志,进行序列化,导致报错
27 26 private MultipartFile file;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/MpMenuController.java
... ... @@ -6,9 +6,9 @@ import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.MpMenuSaveReqVO;
6 6 import cn.iocoder.yudao.module.mp.convert.menu.MpMenuConvert;
7 7 import cn.iocoder.yudao.module.mp.dal.dataobject.menu.MpMenuDO;
8 8 import cn.iocoder.yudao.module.mp.service.menu.MpMenuService;
9   -import io.swagger.annotations.Api;
10   -import io.swagger.annotations.ApiImplicitParam;
11   -import io.swagger.annotations.ApiOperation;
  9 +import io.swagger.v3.oas.annotations.Operation;
  10 +import io.swagger.v3.oas.annotations.Parameter;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
12 12 import org.springframework.security.access.prepost.PreAuthorize;
13 13 import org.springframework.validation.annotation.Validated;
14 14 import org.springframework.web.bind.annotation.*;
... ... @@ -19,7 +19,7 @@ import java.util.List;
19 19  
20 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 21  
22   -@Api(tags = "管理后台 - 公众号菜单")
  22 +@Tag(name = "管理后台 - 公众号菜单")
23 23 @RestController
24 24 @RequestMapping("/mp/menu")
25 25 @Validated
... ... @@ -29,7 +29,7 @@ public class MpMenuController {
29 29 private MpMenuService mpMenuService;
30 30  
31 31 @PostMapping("/save")
32   - @ApiOperation("保存公众号菜单")
  32 + @Operation(summary = "保存公众号菜单")
33 33 @PreAuthorize("@ss.hasPermission('mp:menu:save')")
34 34 public CommonResult<Boolean> saveMenu(@Valid @RequestBody MpMenuSaveReqVO createReqVO) {
35 35 mpMenuService.saveMenu(createReqVO);
... ... @@ -37,8 +37,8 @@ public class MpMenuController {
37 37 }
38 38  
39 39 @DeleteMapping("/delete")
40   - @ApiOperation("删除公众号菜单")
41   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true, example = "10", dataTypeClass = Long.class)
  40 + @Operation(summary = "删除公众号菜单")
  41 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true, example = "10")
42 42 @PreAuthorize("@ss.hasPermission('mp:menu:delete')")
43 43 public CommonResult<Boolean> deleteMenu(@RequestParam("accountId") Long accountId) {
44 44 mpMenuService.deleteMenuByAccountId(accountId);
... ... @@ -46,8 +46,8 @@ public class MpMenuController {
46 46 }
47 47  
48 48 @GetMapping("/list")
49   - @ApiOperation("获得公众号菜单列表")
50   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true, example = "10", dataTypeClass = Long.class)
  49 + @Operation(summary = "获得公众号菜单列表")
  50 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true, example = "10")
51 51 @PreAuthorize("@ss.hasPermission('mp:menu:query')")
52 52 public CommonResult<List<MpMenuRespVO>> getMenuList(@RequestParam("accountId") Long accountId) {
53 53 List<MpMenuDO> list = mpMenuService.getMenuListByAccountId(accountId);
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/MpMenuBaseVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
2 2  
3 3 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
4   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
5 5 import lombok.Data;
6 6 import me.chanjar.weixin.common.api.WxConsts;
7 7 import org.hibernate.validator.constraints.URL;
... ... @@ -44,54 +44,53 @@ public class MpMenuBaseVO {
44 44 */
45 45 private String type;
46 46  
47   - @ApiModelProperty(value = "网页链接", example = "https://www.iocoder.cn/")
  47 + @Schema(description = "网页链接", example = "https://www.iocoder.cn/")
48 48 @NotEmpty(message = "网页链接不能为空", groups = {ViewButtonGroup.class, MiniProgramButtonGroup.class})
49 49 @URL(message = "网页链接必须是 URL 格式")
50 50 private String url;
51 51  
52   - @ApiModelProperty(value = "小程序的 appId", example = "wx1234567890")
  52 + @Schema(description = "小程序的 appId", example = "wx1234567890")
53 53 @NotEmpty(message = "小程序的 appId 不能为空", groups = MiniProgramButtonGroup.class)
54 54 private String miniProgramAppId;
55 55  
56   - @ApiModelProperty(value = "小程序的页面路径", example = "pages/index/index")
  56 + @Schema(description = "小程序的页面路径", example = "pages/index/index")
57 57 @NotEmpty(message = "小程序的页面路径不能为空", groups = MiniProgramButtonGroup.class)
58 58 private String miniProgramPagePath;
59 59  
60   - @ApiModelProperty(value ="跳转图文的媒体编号", example = "jCQk93AIIgp8ixClWcW_NXXqBKInNWNmq2XnPeDZl7IMVqWiNeL4FfELtggRXd83")
  60 + @Schema(description ="跳转图文的媒体编号", example = "jCQk93AIIgp8ixClWcW_NXXqBKInNWNmq2XnPeDZl7IMVqWiNeL4FfELtggRXd83")
61 61 @NotEmpty(message = "跳转图文的媒体编号不能为空", groups = ViewLimitedButtonGroup.class)
62 62 private String articleId;
63 63  
64 64 // ========== 消息内容 ==========
65 65  
66   - @ApiModelProperty(value = "回复的消息类型", example = "text",
67   - notes = "枚举 TEXT、IMAGE、VOICE、VIDEO、NEWS、MUSIC")
  66 + @Schema(description = "回复的消息类型 枚举 TEXT、IMAGE、VOICE、VIDEO、NEWS、MUSIC", example = "text")
68 67 @NotEmpty(message = "回复的消息类型不能为空", groups = {ClickButtonGroup.class, ScanCodeWaitMsgButtonGroup.class})
69 68 private String replyMessageType;
70 69  
71   - @ApiModelProperty(value = "回复的消息内容", example = "欢迎关注")
  70 + @Schema(description = "回复的消息内容", example = "欢迎关注")
72 71 @NotEmpty(message = "回复的消息内容不能为空", groups = TextMessageGroup.class)
73 72 private String replyContent;
74 73  
75   - @ApiModelProperty(value = "回复的媒体 id", example = "123456")
  74 + @Schema(description = "回复的媒体 id", example = "123456")
76 75 @NotEmpty(message = "回复的消息 mediaId 不能为空",
77 76 groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
78 77 private String replyMediaId;
79   - @ApiModelProperty(value = "回复的媒体 URL", example = "https://www.iocoder.cn/xxx.jpg")
  78 + @Schema(description = "回复的媒体 URL", example = "https://www.iocoder.cn/xxx.jpg")
80 79 @NotEmpty(message = "回复的消息 mediaId 不能为空",
81 80 groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
82 81 private String replyMediaUrl;
83 82  
84   - @ApiModelProperty(value = "缩略图的媒体 id", example = "123456")
  83 + @Schema(description = "缩略图的媒体 id", example = "123456")
85 84 @NotEmpty(message = "回复的消息 thumbMediaId 不能为空", groups = {MusicMessageGroup.class})
86 85 private String replyThumbMediaId;
87   - @ApiModelProperty(value = "缩略图的媒体 URL",example = "https://www.iocoder.cn/xxx.jpg")
  86 + @Schema(description = "缩略图的媒体 URL",example = "https://www.iocoder.cn/xxx.jpg")
88 87 @NotEmpty(message = "回复的消息 thumbMedia 地址不能为空", groups = {MusicMessageGroup.class})
89 88 private String replyThumbMediaUrl;
90 89  
91   - @ApiModelProperty(value = "回复的标题", example = "视频标题")
  90 + @Schema(description = "回复的标题", example = "视频标题")
92 91 @NotEmpty(message = "回复的消息标题不能为空", groups = VideoMessageGroup.class)
93 92 private String replyTitle;
94   - @ApiModelProperty(value = "回复的描述", example = "视频描述")
  93 + @Schema(description = "回复的描述", example = "视频描述")
95 94 @NotEmpty(message = "消息描述不能为空", groups = VideoMessageGroup.class)
96 95 private String replyDescription;
97 96  
... ... @@ -104,11 +103,11 @@ public class MpMenuBaseVO {
104 103 @Valid
105 104 private List<MpMessageDO.Article> replyArticles;
106 105  
107   - @ApiModelProperty(value = "回复的音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
  106 + @Schema(description = "回复的音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
108 107 @NotEmpty(message = "回复的音乐链接不能为空", groups = MusicMessageGroup.class)
109 108 @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
110 109 private String replyMusicUrl;
111   - @ApiModelProperty(value = "高质量音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
  110 + @Schema(description = "高质量音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
112 111 @NotEmpty(message = "回复的高质量音乐链接不能为空", groups = MusicMessageGroup.class)
113 112 @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
114 113 private String replyHqMusicUrl;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/MpMenuRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7 6 import lombok.ToString;
8 7  
9 8 import java.util.Date;
10 9  
11   -@ApiModel("管理后台 - 公众号菜单 Response VO")
  10 +@Schema(description = "管理后台 - 公众号菜单 Response VO")
12 11 @Data
13 12 @EqualsAndHashCode(callSuper = true)
14 13 @ToString(callSuper = true)
15 14 public class MpMenuRespVO extends MpMenuBaseVO {
16 15  
17   - @ApiModelProperty(value = "主键", required = true, example = "1024")
  16 + @Schema(description = "主键", required = true, example = "1024")
18 17 private Long id;
19 18  
20   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  19 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
21 20 private Long accountId;
22 21  
23   - @ApiModelProperty(value = "公众号 appId", required = true, example = "wx1234567890ox")
  22 + @Schema(description = "公众号 appId", required = true, example = "wx1234567890ox")
24 23 private String appId;
25 24  
26   - @ApiModelProperty(value = "创建时间", required = true)
  25 + @Schema(description = "创建时间", required = true)
27 26 private Date createTime;
28 27  
29 28 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/MpMenuSaveReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import javax.validation.Valid;
... ... @@ -9,11 +8,11 @@ import javax.validation.constraints.NotEmpty;
9 8 import javax.validation.constraints.NotNull;
10 9 import java.util.List;
11 10  
12   -@ApiModel("管理后台 - 公众号菜单保存 Request VO")
  11 +@Schema(description = "管理后台 - 公众号菜单保存 Request VO")
13 12 @Data
14 13 public class MpMenuSaveReqVO {
15 14  
16   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  15 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
17 16 @NotNull(message = "公众号账号的编号不能为空")
18 17 private Long accountId;
19 18  
... ... @@ -21,7 +20,7 @@ public class MpMenuSaveReqVO {
21 20 @Valid
22 21 private List<Menu> menus;
23 22  
24   - @ApiModel("管理后台 - 公众号菜单保存时的每个菜单")
  23 + @Schema(description = "管理后台 - 公众号菜单保存时的每个菜单")
25 24 @Data
26 25 public static class Menu extends MpMenuBaseVO {
27 26  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpAutoReplyController.java
... ... @@ -9,9 +9,9 @@ import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageP
9 9 import cn.iocoder.yudao.module.mp.convert.message.MpAutoReplyConvert;
10 10 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpAutoReplyDO;
11 11 import cn.iocoder.yudao.module.mp.service.message.MpAutoReplyService;
12   -import io.swagger.annotations.Api;
13   -import io.swagger.annotations.ApiImplicitParam;
14   -import io.swagger.annotations.ApiOperation;
  12 +import io.swagger.v3.oas.annotations.Operation;
  13 +import io.swagger.v3.oas.annotations.Parameter;
  14 +import io.swagger.v3.oas.annotations.tags.Tag;
15 15 import org.springframework.security.access.prepost.PreAuthorize;
16 16 import org.springframework.validation.annotation.Validated;
17 17 import org.springframework.web.bind.annotation.*;
... ... @@ -21,7 +21,7 @@ import javax.validation.Valid;
21 21  
22 22 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
23 23  
24   -@Api(tags = "管理后台 - 公众号自动回复")
  24 +@Tag(name = "管理后台 - 公众号自动回复")
25 25 @RestController
26 26 @RequestMapping("/mp/auto-reply")
27 27 @Validated
... ... @@ -31,7 +31,7 @@ public class MpAutoReplyController {
31 31 private MpAutoReplyService mpAutoReplyService;
32 32  
33 33 @GetMapping("/page")
34   - @ApiOperation("获得公众号自动回复分页")
  34 + @Operation(summary = "获得公众号自动回复分页")
35 35 @PreAuthorize("@ss.hasPermission('mp:auto-reply:query')")
36 36 public CommonResult<PageResult<MpAutoReplyRespVO>> getAutoReplyPage(@Valid MpMessagePageReqVO pageVO) {
37 37 PageResult<MpAutoReplyDO> pageResult = mpAutoReplyService.getAutoReplyPage(pageVO);
... ... @@ -39,8 +39,8 @@ public class MpAutoReplyController {
39 39 }
40 40  
41 41 @GetMapping("/get")
42   - @ApiOperation("获得公众号自动回复")
43   - @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  42 + @Operation(summary = "获得公众号自动回复")
  43 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
44 44 @PreAuthorize("@ss.hasPermission('mp:auto-reply:query')")
45 45 public CommonResult<MpAutoReplyRespVO> getAutoReply(@RequestParam("id") Long id) {
46 46 MpAutoReplyDO autoReply = mpAutoReplyService.getAutoReply(id);
... ... @@ -48,14 +48,14 @@ public class MpAutoReplyController {
48 48 }
49 49  
50 50 @PostMapping("/create")
51   - @ApiOperation("创建公众号自动回复")
  51 + @Operation(summary = "创建公众号自动回复")
52 52 @PreAuthorize("@ss.hasPermission('mp:auto-reply:create')")
53 53 public CommonResult<Long> createAutoReply(@Valid @RequestBody MpAutoReplyCreateReqVO createReqVO) {
54 54 return success(mpAutoReplyService.createAutoReply(createReqVO));
55 55 }
56 56  
57 57 @PutMapping("/update")
58   - @ApiOperation("更新公众号自动回复")
  58 + @Operation(summary = "更新公众号自动回复")
59 59 @PreAuthorize("@ss.hasPermission('mp:auto-reply:update')")
60 60 public CommonResult<Boolean> updateAutoReply(@Valid @RequestBody MpAutoReplyUpdateReqVO updateReqVO) {
61 61 mpAutoReplyService.updateAutoReply(updateReqVO);
... ... @@ -63,8 +63,8 @@ public class MpAutoReplyController {
63 63 }
64 64  
65 65 @DeleteMapping("/delete")
66   - @ApiOperation("删除公众号自动回复")
67   - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
  66 + @Operation(summary = "删除公众号自动回复")
  67 + @Parameter(name = "id", description = "编号", required = true)
68 68 @PreAuthorize("@ss.hasPermission('mp:auto-reply:delete')")
69 69 public CommonResult<Boolean> deleteAutoReply(@RequestParam("id") Long id) {
70 70 mpAutoReplyService.deleteAutoReply(id);
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/MpMessageController.java
... ... @@ -8,8 +8,8 @@ import cn.iocoder.yudao.module.mp.controller.admin.message.vo.message.MpMessageS
8 8 import cn.iocoder.yudao.module.mp.convert.message.MpMessageConvert;
9 9 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
10 10 import cn.iocoder.yudao.module.mp.service.message.MpMessageService;
11   -import io.swagger.annotations.Api;
12   -import io.swagger.annotations.ApiOperation;
  11 +import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.tags.Tag;
13 13 import org.springframework.security.access.prepost.PreAuthorize;
14 14 import org.springframework.validation.annotation.Validated;
15 15 import org.springframework.web.bind.annotation.*;
... ... @@ -19,7 +19,7 @@ import javax.validation.Valid;
19 19  
20 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 21  
22   -@Api(tags = "管理后台 - 公众号消息")
  22 +@Tag(name = "管理后台 - 公众号消息")
23 23 @RestController
24 24 @RequestMapping("/mp/message")
25 25 @Validated
... ... @@ -29,7 +29,7 @@ public class MpMessageController {
29 29 private MpMessageService mpMessageService;
30 30  
31 31 @GetMapping("/page")
32   - @ApiOperation("获得公众号消息分页")
  32 + @Operation(summary = "获得公众号消息分页")
33 33 @PreAuthorize("@ss.hasPermission('mp:message:query')")
34 34 public CommonResult<PageResult<MpMessageRespVO>> getMessagePage(@Valid MpMessagePageReqVO pageVO) {
35 35 PageResult<MpMessageDO> pageResult = mpMessageService.getMessagePage(pageVO);
... ... @@ -37,7 +37,7 @@ public class MpMessageController {
37 37 }
38 38  
39 39 @PostMapping("/send")
40   - @ApiOperation("给粉丝发送消息")
  40 + @Operation(summary = "给粉丝发送消息")
41 41 @PreAuthorize("@ss.hasPermission('mp:message:send')")
42 42 public CommonResult<MpMessageRespVO> sendMessage(@Valid @RequestBody MpMessageSendReqVO reqVO) {
43 43 MpMessageDO message = mpMessageService.sendKefuMessage(reqVO);
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyBaseVO.java
... ... @@ -4,7 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
4 4 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
5 5 import cn.iocoder.yudao.module.mp.enums.message.MpAutoReplyTypeEnum;
6 6 import cn.iocoder.yudao.module.mp.framework.mp.core.util.MpUtils.*;
7   -import io.swagger.annotations.ApiModelProperty;
  7 +import io.swagger.v3.oas.annotations.media.Schema;
8 8 import lombok.Data;
9 9 import me.chanjar.weixin.common.api.WxConsts;
10 10 import org.hibernate.validator.constraints.URL;
... ... @@ -22,51 +22,50 @@ import java.util.List;
22 22 @Data
23 23 public class MpAutoReplyBaseVO {
24 24  
25   - @ApiModelProperty(value = "回复类型", example = "1", notes = "参见 MpAutoReplyTypeEnum 枚举")
  25 + @Schema(description = "回复类型 参见 MpAutoReplyTypeEnum 枚举", example = "1")
26 26 @NotNull(message = "回复类型不能为空")
27 27 private Integer type;
28 28  
29 29 // ==================== 请求消息 ====================
30 30  
31   - @ApiModelProperty(value = "请求的关键字", example = "关键字", notes = "当 type 为 MpAutoReplyTypeEnum#KEYWORD 时,必填")
  31 + @Schema(description = "请求的关键字 当 type 为 MpAutoReplyTypeEnum#KEYWORD 时,必填", example = "关键字")
32 32 private String requestKeyword;
33   - @ApiModelProperty(value = "请求的匹配方式", example = "1", notes = "当 type 为 MpAutoReplyTypeEnum#KEYWORD 时,必填")
  33 + @Schema(description = "请求的匹配方式 当 type 为 MpAutoReplyTypeEnum#KEYWORD 时,必填", example = "1")
34 34 private Integer requestMatch;
35 35  
36   - @ApiModelProperty(value = "请求的消息类型", example = "text", notes = "当 type 为 MpAutoReplyTypeEnum#MESSAGE 时,必填")
  36 + @Schema(description = "请求的消息类型 当 type 为 MpAutoReplyTypeEnum#MESSAGE 时,必填", example = "text")
37 37 private String requestMessageType;
38 38  
39 39 // ==================== 响应消息 ====================
40 40  
41   - @ApiModelProperty(value = "回复的消息类型", example = "text",
42   - notes = "枚举 TEXT、IMAGE、VOICE、VIDEO、NEWS、MUSIC")
  41 + @Schema(description = "回复的消息类型 枚举 TEXT、IMAGE、VOICE、VIDEO、NEWS、MUSIC", example = "text")
43 42 @NotEmpty(message = "回复的消息类型不能为空")
44 43 private String responseMessageType;
45 44  
46   - @ApiModelProperty(value = "回复的消息内容", example = "欢迎关注")
  45 + @Schema(description = "回复的消息内容", example = "欢迎关注")
47 46 @NotEmpty(message = "回复的消息内容不能为空", groups = TextMessageGroup.class)
48 47 private String responseContent;
49 48  
50   - @ApiModelProperty(value = "回复的媒体 id", example = "123456")
  49 + @Schema(description = "回复的媒体 id", example = "123456")
51 50 @NotEmpty(message = "回复的消息 mediaId 不能为空",
52 51 groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
53 52 private String responseMediaId;
54   - @ApiModelProperty(value = "回复的媒体 URL", example = "https://www.iocoder.cn/xxx.jpg")
  53 + @Schema(description = "回复的媒体 URL", example = "https://www.iocoder.cn/xxx.jpg")
55 54 @NotEmpty(message = "回复的消息 mediaId 不能为空",
56 55 groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
57 56 private String responseMediaUrl;
58 57  
59   - @ApiModelProperty(value = "缩略图的媒体 id", example = "123456")
  58 + @Schema(description = "缩略图的媒体 id", example = "123456")
60 59 @NotEmpty(message = "回复的消息 thumbMediaId 不能为空", groups = {MusicMessageGroup.class})
61 60 private String responseThumbMediaId;
62   - @ApiModelProperty(value = "缩略图的媒体 URL",example = "https://www.iocoder.cn/xxx.jpg")
  61 + @Schema(description = "缩略图的媒体 URL",example = "https://www.iocoder.cn/xxx.jpg")
63 62 @NotEmpty(message = "回复的消息 thumbMedia 地址不能为空", groups = {MusicMessageGroup.class})
64 63 private String responseThumbMediaUrl;
65 64  
66   - @ApiModelProperty(value = "回复的标题", example = "视频标题")
  65 + @Schema(description = "回复的标题", example = "视频标题")
67 66 @NotEmpty(message = "回复的消息标题不能为空", groups = VideoMessageGroup.class)
68 67 private String responseTitle;
69   - @ApiModelProperty(value = "回复的描述", example = "视频描述")
  68 + @Schema(description = "回复的描述", example = "视频描述")
70 69 @NotEmpty(message = "消息描述不能为空", groups = VideoMessageGroup.class)
71 70 private String responseDescription;
72 71  
... ... @@ -79,11 +78,11 @@ public class MpAutoReplyBaseVO {
79 78 @Valid
80 79 private List<MpMessageDO.Article> responseArticles;
81 80  
82   - @ApiModelProperty(value = "回复的音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
  81 + @Schema(description = "回复的音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
83 82 @NotEmpty(message = "回复的音乐链接不能为空", groups = MusicMessageGroup.class)
84 83 @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
85 84 private String responseMusicUrl;
86   - @ApiModelProperty(value = "高质量音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
  85 + @Schema(description = "高质量音乐链接", example = "https://www.iocoder.cn/xxx.mp3")
87 86 @NotEmpty(message = "回复的高质量音乐链接不能为空", groups = MusicMessageGroup.class)
88 87 @URL(message = "回复的高质量音乐链接格式不正确", groups = MusicMessageGroup.class)
89 88 private String responseHqMusicUrl;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyCreateReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7 6 import lombok.ToString;
8 7  
9 8 import javax.validation.constraints.NotNull;
10 9  
11   -@ApiModel("管理后台 - 公众号自动回复的创建 Request VO")
  10 +@Schema(description = "管理后台 - 公众号自动回复的创建 Request VO")
12 11 @Data
13 12 @EqualsAndHashCode(callSuper = true)
14 13 @ToString(callSuper = true)
15 14 public class MpAutoReplyCreateReqVO extends MpAutoReplyBaseVO {
16 15  
17   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1024")
  16 + @Schema(description = "公众号账号的编号", required = true, example = "1024")
18 17 @NotNull(message = "公众号账号的编号不能为空")
19 18 private Long accountId;
20 19  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyPageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6 import lombok.EqualsAndHashCode;
8 7 import lombok.ToString;
9 8  
10 9 import javax.validation.constraints.NotNull;
11 10  
12   -@ApiModel("管理后台 - 公众号自动回复的分页 Request VO")
  11 +@Schema(description = "管理后台 - 公众号自动回复的分页 Request VO")
13 12 @Data
14 13 @EqualsAndHashCode(callSuper = true)
15 14 @ToString(callSuper = true)
16 15 public class MpAutoReplyPageReqVO extends PageParam {
17 16  
18   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1")
  17 + @Schema(description = "公众号账号的编号", required = true, example = "1")
19 18 @NotNull(message = "公众号账号的编号不能为空")
20 19 private Long accountId;
21 20  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7 6 import lombok.ToString;
8 7  
9 8 import java.util.Date;
10 9  
11   -@ApiModel("管理后台 - 公众号自动回复 Response VO")
  10 +@Schema(description = "管理后台 - 公众号自动回复 Response VO")
12 11 @Data
13 12 @EqualsAndHashCode(callSuper = true)
14 13 @ToString(callSuper = true)
15 14 public class MpAutoReplyRespVO extends MpAutoReplyBaseVO {
16 15  
17   - @ApiModelProperty(value = "主键", required = true, example = "1024")
  16 + @Schema(description = "主键", required = true, example = "1024")
18 17 private Long id;
19 18  
20   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1024")
  19 + @Schema(description = "公众号账号的编号", required = true, example = "1024")
21 20 private Long accountId;
22   - @ApiModelProperty(value = "公众号 appId", required = true, example = "wx1234567890")
  21 + @Schema(description = "公众号 appId", required = true, example = "wx1234567890")
23 22 private String appId;
24 23  
25   - @ApiModelProperty(value = "创建时间", required = true)
  24 + @Schema(description = "创建时间", required = true)
26 25 private Date createTime;
27 26  
28 27 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/autoreply/MpAutoReplyUpdateReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.message.vo.autoreply;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7 6 import lombok.ToString;
8 7  
9 8 import javax.validation.constraints.NotNull;
10 9  
11   -@ApiModel("管理后台 - 公众号自动回复的更新 Request VO")
  10 +@Schema(description = "管理后台 - 公众号自动回复的更新 Request VO")
12 11 @Data
13 12 @EqualsAndHashCode(callSuper = true)
14 13 @ToString(callSuper = true)
15 14 public class MpAutoReplyUpdateReqVO extends MpAutoReplyBaseVO {
16 15  
17   - @ApiModelProperty(value = "主键", required = true, example = "1024")
  16 + @Schema(description = "主键", required = true, example = "1024")
18 17 @NotNull(message = "主键不能为空")
19 18 private Long id;
20 19  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
2 2  
3   -import lombok.*;
4   -
5   -import io.swagger.annotations.*;
6 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
7 8 import org.springframework.format.annotation.DateTimeFormat;
8 9  
9 10 import javax.validation.constraints.NotNull;
... ... @@ -11,24 +12,24 @@ import java.time.LocalDateTime;
11 12  
12 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 14  
14   -@ApiModel("管理后台 - 公众号消息分页 Request VO")
  15 +@Schema(description = "管理后台 - 公众号消息分页 Request VO")
15 16 @Data
16 17 @EqualsAndHashCode(callSuper = true)
17 18 @ToString(callSuper = true)
18 19 public class MpMessagePageReqVO extends PageParam {
19 20  
20   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1024")
  21 + @Schema(description = "公众号账号的编号", required = true, example = "1024")
21 22 @NotNull(message = "公众号账号的编号不能为空")
22 23 private Long accountId;
23 24  
24   - @ApiModelProperty(value = "消息类型", example = "text", notes = "参见 WxConsts.XmlMsgType 枚举")
  25 + @Schema(description = "消息类型 参见 WxConsts.XmlMsgType 枚举", example = "text")
25 26 private String type;
26 27  
27   - @ApiModelProperty(value = "公众号粉丝标识", example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M")
  28 + @Schema(description = "公众号粉丝标识", example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M")
28 29 private String openid;
29 30  
30 31 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31   - @ApiModelProperty(value = "创建时间")
  32 + @Schema(description = "创建时间")
32 33 private LocalDateTime[] createTime;
33 34  
34 35 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessageRespVO.java
... ... @@ -2,80 +2,77 @@ package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
2 2  
3 3 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
4 4 import com.baomidou.mybatisplus.annotation.TableField;
5   -import io.swagger.annotations.ApiModel;
6   -import io.swagger.annotations.ApiModelProperty;
  5 +import io.swagger.v3.oas.annotations.media.Schema;
7 6 import lombok.Data;
8 7 import me.chanjar.weixin.common.api.WxConsts;
9 8  
10 9 import java.util.Date;
11 10 import java.util.List;
12 11  
13   -@ApiModel("管理后台 - 公众号消息 Response VO")
  12 +@Schema(description = "管理后台 - 公众号消息 Response VO")
14 13 @Data
15 14 public class MpMessageRespVO {
16 15  
17   - @ApiModelProperty(value = "主键", required = true, example = "1024")
  16 + @Schema(description = "主键", required = true, example = "1024")
18 17 private Integer id;
19 18  
20   - @ApiModelProperty(value = "微信公众号消息 id", required = true, example = "23953173569869169")
  19 + @Schema(description = "微信公众号消息 id", required = true, example = "23953173569869169")
21 20 private Long msgId;
22 21  
23   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1")
  22 + @Schema(description = "公众号账号的编号", required = true, example = "1")
24 23 private Long accountId;
25   - @ApiModelProperty(value = "公众号账号的 appid", required = true, example = "wx1234567890")
  24 + @Schema(description = "公众号账号的 appid", required = true, example = "wx1234567890")
26 25 private String appId;
27 26  
28   - @ApiModelProperty(value = "公众号粉丝编号", required = true, example = "2048")
  27 + @Schema(description = "公众号粉丝编号", required = true, example = "2048")
29 28 private Long userId;
30   - @ApiModelProperty(value = "公众号粉丝标志", required = true, example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M")
  29 + @Schema(description = "公众号粉丝标志", required = true, example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M")
31 30 private String openid;
32 31  
33   - @ApiModelProperty(value = "消息类型", required = true, example = "text", notes = "参见 WxConsts.XmlMsgType 枚举")
  32 + @Schema(description = "消息类型 参见 WxConsts.XmlMsgType 枚举", required = true, example = "text")
34 33 private String type;
35   - @ApiModelProperty(value = "消息来源", required = true, example = "1", notes = "参见 MpMessageSendFromEnum 枚举")
  34 + @Schema(description = "消息来源 参见 MpMessageSendFromEnum 枚举", required = true, example = "1")
36 35 private Integer sendFrom;
37 36  
38 37 // ========= 普通消息内容 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html
39 38  
40   - @ApiModelProperty(value = "消息内容", example = "你好呀", notes = "消息类型为 text 时,才有值")
  39 + @Schema(description = "消息内容 消息类型为 text 时,才有值", example = "你好呀")
41 40 private String content;
42 41  
43   - @ApiModelProperty(value = "媒体素材的编号", example = "1234567890", notes = "消息类型为 image、voice、video 时,才有值")
  42 + @Schema(description = "媒体素材的编号 消息类型为 image、voice、video 时,才有值", example = "1234567890")
44 43 private String mediaId;
45   - @ApiModelProperty(value = "媒体文件的 URL", example = "https://www.iocoder.cn/xxx.png",
46   - notes = "消息类型为 image、voice、video 时,才有值")
  44 + @Schema(description = "媒体文件的 URL 消息类型为 image、voice、video 时,才有值", example = "https://www.iocoder.cn/xxx.png")
47 45 private String mediaUrl;
48 46  
49   - @ApiModelProperty(value = "语音识别后文本", example = "语音识别后文本", notes = "消息类型为 voice 时,才有值")
  47 + @Schema(description = "语音识别后文本 消息类型为 voice 时,才有值", example = "语音识别后文本")
50 48 private String recognition;
51   - @ApiModelProperty(value = "语音格式", example = "amr", notes = "消息类型为 voice 时,才有值")
  49 + @Schema(description = "语音格式 消息类型为 voice 时,才有值", example = "amr")
52 50 private String format;
53 51  
54   - @ApiModelProperty(value = "标题", example = "我是标题", notes = "消息类型为 video、music、link 时,才有值")
  52 + @Schema(description = "标题 消息类型为 video、music、link 时,才有值", example = "我是标题")
55 53 private String title;
56 54  
57   - @ApiModelProperty(value = "描述", example = "我是描述", notes = "消息类型为 video、music 时,才有值")
  55 + @Schema(description = "描述 消息类型为 video、music 时,才有值", example = "我是描述")
58 56 private String description;
59 57  
60   - @ApiModelProperty(value = "缩略图的媒体 id", example = "1234567890", notes = "消息类型为 video、music 时,才有值")
  58 + @Schema(description = "缩略图的媒体 id 消息类型为 video、music 时,才有值", example = "1234567890")
61 59 private String thumbMediaId;
62   - @ApiModelProperty(value = "缩略图的媒体 URL", example = "https://www.iocoder.cn/xxx.png",
63   - notes = "消息类型为 video、music 时,才有值")
  60 + @Schema(description = "缩略图的媒体 URL 消息类型为 video、music 时,才有值", example = "https://www.iocoder.cn/xxx.png")
64 61 private String thumbMediaUrl;
65 62  
66   - @ApiModelProperty(value = "点击图文消息跳转链接", example = "https://www.iocoder.cn", notes = "消息类型为 link 时,才有值")
  63 + @Schema(description = "点击图文消息跳转链接 消息类型为 link 时,才有值", example = "https://www.iocoder.cn")
67 64 private String url;
68 65  
69   - @ApiModelProperty(value = "地理位置维度", example = "23.137466", notes = "消息类型为 location 时,才有值")
  66 + @Schema(description = "地理位置维度 消息类型为 location 时,才有值", example = "23.137466")
70 67 private Double locationX;
71 68  
72   - @ApiModelProperty(value = "地理位置经度", example = "113.352425", notes = "消息类型为 location 时,才有值")
  69 + @Schema(description = "地理位置经度 消息类型为 location 时,才有值", example = "113.352425")
73 70 private Double locationY;
74 71  
75   - @ApiModelProperty(value = "地图缩放大小", example = "13", notes = "消息类型为 location 时,才有值")
  72 + @Schema(description = "地图缩放大小 消息类型为 location 时,才有值", example = "13")
76 73 private Double scale;
77 74  
78   - @ApiModelProperty(value = "详细地址", example = "杨浦区黄兴路 221-4 号临", notes = "消息类型为 location 时,才有值")
  75 + @Schema(description = "详细地址 消息类型为 location 时,才有值", example = "杨浦区黄兴路 221-4 号临")
79 76 private String label;
80 77  
81 78 /**
... ... @@ -86,19 +83,19 @@ public class MpMessageRespVO {
86 83 @TableField(typeHandler = MpMessageDO.ArticleTypeHandler.class)
87 84 private List<MpMessageDO.Article> articles;
88 85  
89   - @ApiModelProperty(value = "音乐链接", example = "https://www.iocoder.cn/xxx.mp3", notes = "消息类型为 music 时,才有值")
  86 + @Schema(description = "音乐链接 消息类型为 music 时,才有值", example = "https://www.iocoder.cn/xxx.mp3")
90 87 private String musicUrl;
91   - @ApiModelProperty(value = "高质量音乐链接", example = "https://www.iocoder.cn/xxx.mp3", notes = "消息类型为 music 时,才有值")
  88 + @Schema(description = "高质量音乐链接 消息类型为 music 时,才有值", example = "https://www.iocoder.cn/xxx.mp3")
92 89 private String hqMusicUrl;
93 90  
94 91 // ========= 事件推送 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html
95 92  
96   - @ApiModelProperty(value = "事件类型", example = "subscribe", notes = "参见 WxConsts.EventType 枚举")
  93 + @Schema(description = "事件类型 参见 WxConsts.EventType 枚举", example = "subscribe")
97 94 private String event;
98   - @ApiModelProperty(value = "事件 Key", example = "qrscene_123456", notes = "参见 WxConsts.EventType 枚举")
  95 + @Schema(description = "事件 Key 参见 WxConsts.EventType 枚举", example = "qrscene_123456")
99 96 private String eventKey;
100 97  
101   - @ApiModelProperty(value = "创建时间", required = true)
  98 + @Schema(description = "创建时间", required = true)
102 99 private Date createTime;
103 100  
104 101 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessageSendReqVO.java
... ... @@ -2,8 +2,7 @@ package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message;
2 2  
3 3 import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
4 4 import cn.iocoder.yudao.module.mp.framework.mp.core.util.MpUtils.*;
5   -import io.swagger.annotations.ApiModel;
6   -import io.swagger.annotations.ApiModelProperty;
  5 +import io.swagger.v3.oas.annotations.media.Schema;
7 6 import lombok.Data;
8 7  
9 8 import javax.validation.Valid;
... ... @@ -11,49 +10,49 @@ import javax.validation.constraints.NotEmpty;
11 10 import javax.validation.constraints.NotNull;
12 11 import java.util.List;
13 12  
14   -@ApiModel("管理后台 - 公众号消息发送 Request VO")
  13 +@Schema(description = "管理后台 - 公众号消息发送 Request VO")
15 14 @Data
16 15 public class MpMessageSendReqVO {
17 16  
18   - @ApiModelProperty(value = "公众号粉丝的编号", required = true, example = "1024")
  17 + @Schema(description = "公众号粉丝的编号", required = true, example = "1024")
19 18 @NotNull(message = "公众号粉丝的编号不能为空")
20 19 private Long userId;
21 20  
22 21 // ========== 消息内容 ==========
23 22  
24   - @ApiModelProperty(value = "消息类型", required = true, example = "text", notes = "TEXT/IMAGE/VOICE/VIDEO/NEWS")
  23 + @Schema(description = "消息类型 TEXT/IMAGE/VOICE/VIDEO/NEWS", required = true, example = "text")
25 24 @NotEmpty(message = "消息类型不能为空")
26 25 public String type;
27 26  
28   - @ApiModelProperty(value = "消息内容", required = true, example = "你好呀")
  27 + @Schema(description = "消息内容", required = true, example = "你好呀")
29 28 @NotEmpty(message = "消息内容不能为空", groups = TextMessageGroup.class)
30 29 private String content;
31 30  
32   - @ApiModelProperty(value = "媒体 ID", required = true, example = "qqc_2Fot30Jse-HDoZmo5RrUDijz2nGUkP")
  31 + @Schema(description = "媒体 ID", required = true, example = "qqc_2Fot30Jse-HDoZmo5RrUDijz2nGUkP")
33 32 @NotEmpty(message = "消息内容不能为空", groups = {ImageMessageGroup.class, VoiceMessageGroup.class, VideoMessageGroup.class})
34 33 private String mediaId;
35 34  
36   - @ApiModelProperty(value = "标题", required = true, example = "没有标题")
  35 + @Schema(description = "标题", required = true, example = "没有标题")
37 36 @NotEmpty(message = "消息内容不能为空", groups = VideoMessageGroup.class)
38 37 private String title;
39 38  
40   - @ApiModelProperty(value = "描述", required = true, example = "你猜")
  39 + @Schema(description = "描述", required = true, example = "你猜")
41 40 @NotEmpty(message = "消息描述不能为空", groups = VideoMessageGroup.class)
42 41 private String description;
43 42  
44   - @ApiModelProperty(value = "缩略图的媒体 id", required = true, example = "qqc_2Fot30Jse-HDoZmo5RrUDijz2nGUkP")
  43 + @Schema(description = "缩略图的媒体 id", required = true, example = "qqc_2Fot30Jse-HDoZmo5RrUDijz2nGUkP")
45 44 @NotEmpty(message = "缩略图的媒体 id 不能为空", groups = MusicMessageGroup.class)
46 45 private String thumbMediaId;
47 46  
48   - @ApiModelProperty(value = "图文消息", required = true)
  47 + @Schema(description = "图文消息", required = true)
49 48 @Valid
50 49 @NotNull(message = "图文消息不能为空", groups = NewsMessageGroup.class)
51 50 private List<MpMessageDO.Article> articles;
52 51  
53   - @ApiModelProperty(value = "音乐链接", example = "https://www.iocoder.cn/music.mp3", notes = "消息类型为 MUSIC 时")
  52 + @Schema(description = "音乐链接 消息类型为 MUSIC 时", example = "https://www.iocoder.cn/music.mp3")
54 53 private String musicUrl;
55 54  
56   - @ApiModelProperty(value = "高质量音乐链接", example = "https://www.iocoder.cn/music.mp3", notes = "消息类型为 MUSIC 时")
  55 + @Schema(description = "高质量音乐链接 消息类型为 MUSIC 时", example = "https://www.iocoder.cn/music.mp3")
57 56 private String hqMusicUrl;
58 57  
59 58 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/news/MpDraftController.java
... ... @@ -9,10 +9,10 @@ import cn.iocoder.yudao.module.mp.controller.admin.news.vo.MpDraftPageReqVO;
9 9 import cn.iocoder.yudao.module.mp.dal.dataobject.material.MpMaterialDO;
10 10 import cn.iocoder.yudao.module.mp.framework.mp.core.MpServiceFactory;
11 11 import cn.iocoder.yudao.module.mp.service.material.MpMaterialService;
12   -import io.swagger.annotations.Api;
13   -import io.swagger.annotations.ApiImplicitParam;
14   -import io.swagger.annotations.ApiImplicitParams;
15   -import io.swagger.annotations.ApiOperation;
  12 +import io.swagger.v3.oas.annotations.Operation;
  13 +import io.swagger.v3.oas.annotations.Parameter;
  14 +import io.swagger.v3.oas.annotations.Parameters;
  15 +import io.swagger.v3.oas.annotations.tags.Tag;
16 16 import me.chanjar.weixin.common.error.WxErrorException;
17 17 import me.chanjar.weixin.mp.api.WxMpService;
18 18 import me.chanjar.weixin.mp.bean.draft.*;
... ... @@ -31,7 +31,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
31 31 import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
32 32 import static cn.iocoder.yudao.module.mp.enums.ErrorCodeConstants.*;
33 33  
34   -@Api(tags = "管理后台 - 公众号草稿")
  34 +@Tag(name = "管理后台 - 公众号草稿")
35 35 @RestController
36 36 @RequestMapping("/mp/draft")
37 37 @Validated
... ... @@ -44,7 +44,7 @@ public class MpDraftController {
44 44 private MpMaterialService mpMaterialService;
45 45  
46 46 @GetMapping("/page")
47   - @ApiOperation("获得草稿分页")
  47 + @Operation(summary = "获得草稿分页")
48 48 @PreAuthorize("@ss.hasPermission('mp:draft:query')")
49 49 public CommonResult<PageResult<WxMpDraftItem>> getDraftPage(MpDraftPageReqVO reqVO) {
50 50 // 从公众号查询草稿箱
... ... @@ -79,9 +79,8 @@ public class MpDraftController {
79 79 }
80 80  
81 81 @PostMapping("/create")
82   - @ApiOperation("创建草稿")
83   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true,
84   - example = "1024", dataTypeClass = Long.class)
  82 + @Operation(summary = "创建草稿")
  83 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true, example = "1024")
85 84 @PreAuthorize("@ss.hasPermission('mp:draft:create')")
86 85 public CommonResult<String> deleteDraft(@RequestParam("accountId") Long accountId,
87 86 @RequestBody WxMpAddDraft draft) {
... ... @@ -95,12 +94,10 @@ public class MpDraftController {
95 94 }
96 95  
97 96 @PutMapping("/update")
98   - @ApiOperation("更新草稿")
99   - @ApiImplicitParams({
100   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true,
101   - example = "1024", dataTypeClass = Long.class),
102   - @ApiImplicitParam(name = "mediaId", value = "草稿素材的编号", required = true,
103   - example = "xxx", dataTypeClass = String.class),
  97 + @Operation(summary = "更新草稿")
  98 + @Parameters({
  99 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true, example = "1024"),
  100 + @Parameter(name = "mediaId", description = "草稿素材的编号", required = true, example = "xxx")
104 101 })
105 102 @PreAuthorize("@ss.hasPermission('mp:draft:update')")
106 103 public CommonResult<Boolean> deleteDraft(@RequestParam("accountId") Long accountId,
... ... @@ -119,12 +116,10 @@ public class MpDraftController {
119 116 }
120 117  
121 118 @DeleteMapping("/delete")
122   - @ApiOperation("删除草稿")
123   - @ApiImplicitParams({
124   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true,
125   - example = "1024", dataTypeClass = Long.class),
126   - @ApiImplicitParam(name = "mediaId", value = "草稿素材的编号", required = true,
127   - example = "xxx", dataTypeClass = String.class),
  119 + @Operation(summary = "删除草稿")
  120 + @Parameters({
  121 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true, example = "1024"),
  122 + @Parameter(name = "mediaId", description = "草稿素材的编号", required = true, example = "xxx")
128 123 })
129 124 @PreAuthorize("@ss.hasPermission('mp:draft:delete')")
130 125 public CommonResult<Boolean> deleteDraft(@RequestParam("accountId") Long accountId,
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/news/MpFreePublishController.java
... ... @@ -9,10 +9,10 @@ import cn.iocoder.yudao.module.mp.controller.admin.news.vo.MpFreePublishPageReqV
9 9 import cn.iocoder.yudao.module.mp.dal.dataobject.material.MpMaterialDO;
10 10 import cn.iocoder.yudao.module.mp.framework.mp.core.MpServiceFactory;
11 11 import cn.iocoder.yudao.module.mp.service.material.MpMaterialService;
12   -import io.swagger.annotations.Api;
13   -import io.swagger.annotations.ApiImplicitParam;
14   -import io.swagger.annotations.ApiImplicitParams;
15   -import io.swagger.annotations.ApiOperation;
  12 +import io.swagger.v3.oas.annotations.Operation;
  13 +import io.swagger.v3.oas.annotations.Parameter;
  14 +import io.swagger.v3.oas.annotations.Parameters;
  15 +import io.swagger.v3.oas.annotations.tags.Tag;
16 16 import me.chanjar.weixin.common.error.WxErrorException;
17 17 import me.chanjar.weixin.mp.api.WxMpService;
18 18 import me.chanjar.weixin.mp.bean.freepublish.WxMpFreePublishItem;
... ... @@ -32,7 +32,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
32 32 import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
33 33 import static cn.iocoder.yudao.module.mp.enums.ErrorCodeConstants.*;
34 34  
35   -@Api(tags = "管理后台 - 公众号发布能力")
  35 +@Tag(name = "管理后台 - 公众号发布能力")
36 36 @RestController
37 37 @RequestMapping("/mp/free-publish")
38 38 @Validated
... ... @@ -45,7 +45,7 @@ public class MpFreePublishController {
45 45 private MpMaterialService mpMaterialService;
46 46  
47 47 @GetMapping("/page")
48   - @ApiOperation("获得已发布的图文分页")
  48 + @Operation(summary = "获得已发布的图文分页")
49 49 @PreAuthorize("@ss.hasPermission('mp:free-publish:query')")
50 50 public CommonResult<PageResult<WxMpFreePublishItem>> getFreePublishPage(MpFreePublishPageReqVO reqVO) {
51 51 // 从公众号查询已发布的图文列表
... ... @@ -81,12 +81,10 @@ public class MpFreePublishController {
81 81 }
82 82  
83 83 @PostMapping("/submit")
84   - @ApiOperation("发布草稿")
85   - @ApiImplicitParams({
86   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true,
87   - example = "1024", dataTypeClass = Long.class),
88   - @ApiImplicitParam(name = "mediaId", value = "要发布的草稿的 media_id", required = true,
89   - example = "2048", dataTypeClass = String.class)
  84 + @Operation(summary = "发布草稿")
  85 + @Parameters({
  86 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true, example = "1024"),
  87 + @Parameter(name = "mediaId", description = "要发布的草稿的 media_id", required = true, example = "2048")
90 88 })
91 89 @PreAuthorize("@ss.hasPermission('mp:free-publish:submit')")
92 90 public CommonResult<String> submitFreePublish(@RequestParam("accountId") Long accountId,
... ... @@ -101,12 +99,10 @@ public class MpFreePublishController {
101 99 }
102 100  
103 101 @DeleteMapping("/delete")
104   - @ApiOperation("删除草稿")
105   - @ApiImplicitParams({
106   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true,
107   - example = "1024", dataTypeClass = Long.class),
108   - @ApiImplicitParam(name = "articleId", value = "发布记录的编号", required = true,
109   - example = "2048", dataTypeClass = String.class)
  102 + @Operation(summary = "删除草稿")
  103 + @Parameters({
  104 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true, example = "1024"),
  105 + @Parameter(name = "articleId", description = "发布记录的编号", required = true, example = "2048")
110 106 })
111 107 @PreAuthorize("@ss.hasPermission('mp:free-publish:delete')")
112 108 public CommonResult<Boolean> deleteFreePublish(@RequestParam("accountId") Long accountId,
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/news/vo/MpDraftPageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.news.vo;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6 import lombok.EqualsAndHashCode;
8 7 import lombok.ToString;
9 8  
10 9 import javax.validation.constraints.NotNull;
11 10  
12   -@ApiModel("管理后台 - 公众号草稿的分页 Request VO")
  11 +@Schema(description = "管理后台 - 公众号草稿的分页 Request VO")
13 12 @Data
14 13 @EqualsAndHashCode(callSuper = true)
15 14 @ToString(callSuper = true)
16 15 public class MpDraftPageReqVO extends PageParam {
17 16  
18   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1024")
  17 + @Schema(description = "公众号账号的编号", required = true, example = "1024")
19 18 @NotNull(message = "公众号账号的编号不能为空")
20 19 private Long accountId;
21 20  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/news/vo/MpFreePublishPageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.news.vo;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6 import lombok.EqualsAndHashCode;
8 7 import lombok.ToString;
9 8  
10 9 import javax.validation.constraints.NotNull;
11 10  
12   -@ApiModel("管理后台 - 公众号已发布列表的分页 Request VO")
  11 +@Schema(description = "管理后台 - 公众号已发布列表的分页 Request VO")
13 12 @Data
14 13 @EqualsAndHashCode(callSuper = true)
15 14 @ToString(callSuper = true)
16 15 public class MpFreePublishPageReqVO extends PageParam {
17 16  
18   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1024")
  17 + @Schema(description = "公众号账号的编号", required = true, example = "1024")
19 18 @NotNull(message = "公众号账号的编号不能为空")
20 19 private Long accountId;
21 20  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/open/MpOpenController.java
... ... @@ -10,8 +10,8 @@ import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
10 10 import cn.iocoder.yudao.module.mp.framework.mp.core.MpServiceFactory;
11 11 import cn.iocoder.yudao.module.mp.framework.mp.core.context.MpContextHolder;
12 12 import cn.iocoder.yudao.module.mp.service.account.MpAccountService;
13   -import io.swagger.annotations.Api;
14   -import io.swagger.annotations.ApiOperation;
  13 +import io.swagger.v3.oas.annotations.Operation;
  14 +import io.swagger.v3.oas.annotations.tags.Tag;
15 15 import lombok.extern.slf4j.Slf4j;
16 16 import me.chanjar.weixin.mp.api.WxMpMessageRouter;
17 17 import me.chanjar.weixin.mp.api.WxMpService;
... ... @@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
23 23 import javax.annotation.Resource;
24 24 import java.util.Objects;
25 25  
26   -@Api(tags = "管理后台 - 公众号回调")
  26 +@Tag(name = "管理后台 - 公众号回调")
27 27 @RestController
28 28 @RequestMapping("/mp/open")
29 29 @Validated
... ... @@ -41,7 +41,7 @@ public class MpOpenController {
41 41 *
42 42 * 对应 <a href="https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html">文档</a>
43 43 */
44   - @ApiOperation("校验签名") // 参见
  44 + @Operation(summary = "校验签名") // 参见
45 45 @GetMapping(value = "/{appId}", produces = "text/plain;charset=utf-8")
46 46 public String checkSignature(@PathVariable("appId") String appId,
47 47 MpOpenCheckSignatureReqVO reqVO) {
... ... @@ -61,7 +61,7 @@ public class MpOpenController {
61 61 *
62 62 * <a href="https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html">文档</a>
63 63 */
64   - @ApiOperation("处理消息")
  64 + @Operation(summary = "处理消息")
65 65 @PostMapping(value = "/{appId}", produces = "application/xml; charset=UTF-8")
66 66 @OperateLog(enable = false) // 回调地址,无需记录操作日志
67 67 public String handleMessage(@PathVariable("appId") String appId,
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/open/vo/MpOpenCheckSignatureReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.open.vo;
2 2  
3   -
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
6 4 import lombok.Data;
7   -import lombok.EqualsAndHashCode;
8   -import lombok.ToString;
9   -import org.springframework.web.bind.annotation.RequestParam;
10 5  
11 6 import javax.validation.constraints.NotEmpty;
12 7  
13   -@ApiModel("管理后台 - 公众号校验签名 Request VO")
  8 +@Schema(description = "管理后台 - 公众号校验签名 Request VO")
14 9 @Data
15 10 public class MpOpenCheckSignatureReqVO {
16 11  
17   - @ApiModelProperty(value = "微信加密签名", required = true, example = "490eb57f448b87bd5f20ccef58aa4de46aa1908e")
  12 + @Schema(description = "微信加密签名", required = true, example = "490eb57f448b87bd5f20ccef58aa4de46aa1908e")
18 13 @NotEmpty(message = "微信加密签名不能为空")
19 14 private String signature;
20 15  
21   - @ApiModelProperty(value = "时间戳", required = true, example = "1672587863")
  16 + @Schema(description = "时间戳", required = true, example = "1672587863")
22 17 @NotEmpty(message = "时间戳不能为空")
23 18 private String timestamp;
24 19  
25   - @ApiModelProperty(value = "随机数", required = true, example = "1827365808")
  20 + @Schema(description = "随机数", required = true, example = "1827365808")
26 21 @NotEmpty(message = "随机数不能为空")
27 22 private String nonce;
28 23  
29   - @ApiModelProperty(value = "随机字符串", required = true, example = "2721154047828672511")
  24 + @Schema(description = "随机字符串", required = true, example = "2721154047828672511")
30 25 @NotEmpty(message = "随机字符串不能为空")
31 26 @SuppressWarnings("SpellCheckingInspection")
32 27 private String echostr;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/open/vo/MpOpenHandleMessageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.open.vo;
2 2  
3 3  
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6  
8 7 import javax.validation.constraints.NotEmpty;
9 8  
10   -@ApiModel("管理后台 - 公众号处理消息 Request VO")
  9 +@Schema(description = "管理后台 - 公众号处理消息 Request VO")
11 10 @Data
12 11 public class MpOpenHandleMessageReqVO {
13 12  
14 13 public static final String ENCRYPT_TYPE_AES = "aes";
15 14  
16   - @ApiModelProperty(value = "微信加密签名", required = true, example = "490eb57f448b87bd5f20ccef58aa4de46aa1908e")
  15 + @Schema(description = "微信加密签名", required = true, example = "490eb57f448b87bd5f20ccef58aa4de46aa1908e")
17 16 @NotEmpty(message = "微信加密签名不能为空")
18 17 private String signature;
19 18  
20   - @ApiModelProperty(value = "时间戳", required = true, example = "1672587863")
  19 + @Schema(description = "时间戳", required = true, example = "1672587863")
21 20 @NotEmpty(message = "时间戳不能为空")
22 21 private String timestamp;
23 22  
24   - @ApiModelProperty(value = "随机数", required = true, example = "1827365808")
  23 + @Schema(description = "随机数", required = true, example = "1827365808")
25 24 @NotEmpty(message = "随机数不能为空")
26 25 private String nonce;
27 26  
28   - @ApiModelProperty(value = "粉丝 openid", required = true, example = "oz-Jdtyn-WGm4C4I5Z-nvBMO_ZfY")
  27 + @Schema(description = "粉丝 openid", required = true, example = "oz-Jdtyn-WGm4C4I5Z-nvBMO_ZfY")
29 28 @NotEmpty(message = "粉丝 openid 不能为空")
30 29 private String openid;
31 30  
32   - @ApiModelProperty(value = "消息加密类型", example = "aes")
  31 + @Schema(description = "消息加密类型", example = "aes")
33 32 private String encrypt_type;
34 33  
35   - @ApiModelProperty(value = "微信签名", example = "QW5kcm9pZCBUaGUgQmFzZTY0IGlzIGEgZ2VuZXJhdGVkIHN0cmluZw==")
  34 + @Schema(description = "微信签名", example = "QW5kcm9pZCBUaGUgQmFzZTY0IGlzIGEgZ2VuZXJhdGVkIHN0cmluZw==")
36 35 private String msg_signature;
37 36  
38 37 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/statistics/MpStatisticsController.java
... ... @@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 4 import cn.iocoder.yudao.module.mp.controller.admin.statistics.vo.*;
5 5 import cn.iocoder.yudao.module.mp.convert.statistics.MpStatisticsConvert;
6 6 import cn.iocoder.yudao.module.mp.service.statistics.MpStatisticsService;
7   -import io.swagger.annotations.Api;
8   -import io.swagger.annotations.ApiOperation;
  7 +import io.swagger.v3.oas.annotations.Operation;
  8 +import io.swagger.v3.oas.annotations.tags.Tag;
9 9 import me.chanjar.weixin.mp.bean.datacube.WxDataCubeInterfaceResult;
10 10 import me.chanjar.weixin.mp.bean.datacube.WxDataCubeMsgResult;
11 11 import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate;
... ... @@ -21,7 +21,7 @@ import java.util.List;
21 21  
22 22 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
23 23  
24   -@Api(tags = "管理后台 - 公众号统计")
  24 +@Tag(name = "管理后台 - 公众号统计")
25 25 @RestController
26 26 @RequestMapping("/mp/statistics")
27 27 @Validated
... ... @@ -31,7 +31,7 @@ public class MpStatisticsController {
31 31 private MpStatisticsService mpStatisticsService;
32 32  
33 33 @GetMapping("/user-summary")
34   - @ApiOperation("获得粉丝增减数据")
  34 + @Operation(summary = "获得粉丝增减数据")
35 35 @PreAuthorize("@ss.hasPermission('mp:statistics:query')")
36 36 public CommonResult<List<MpStatisticsUserSummaryRespVO>> getUserSummary(MpStatisticsGetReqVO getReqVO) {
37 37 List<WxDataCubeUserSummary> list = mpStatisticsService.getUserSummary(
... ... @@ -40,7 +40,7 @@ public class MpStatisticsController {
40 40 }
41 41  
42 42 @GetMapping("/user-cumulate")
43   - @ApiOperation("获得粉丝累计数据")
  43 + @Operation(summary = "获得粉丝累计数据")
44 44 @PreAuthorize("@ss.hasPermission('mp:statistics:query')")
45 45 public CommonResult<List<MpStatisticsUserCumulateRespVO>> getUserCumulate(MpStatisticsGetReqVO getReqVO) {
46 46 List<WxDataCubeUserCumulate> list = mpStatisticsService.getUserCumulate(
... ... @@ -49,7 +49,7 @@ public class MpStatisticsController {
49 49 }
50 50  
51 51 @GetMapping("/upstream-message")
52   - @ApiOperation("获取消息发送概况数据")
  52 + @Operation(summary = "获取消息发送概况数据")
53 53 @PreAuthorize("@ss.hasPermission('mp:statistics:query')")
54 54 public CommonResult<List<MpStatisticsUpstreamMessageRespVO>> getUpstreamMessage(MpStatisticsGetReqVO getReqVO) {
55 55 List<WxDataCubeMsgResult> list = mpStatisticsService.getUpstreamMessage(
... ... @@ -58,7 +58,7 @@ public class MpStatisticsController {
58 58 }
59 59  
60 60 @GetMapping("/interface-summary")
61   - @ApiOperation("获取消息发送概况数据")
  61 + @Operation(summary = "获取消息发送概况数据")
62 62 @PreAuthorize("@ss.hasPermission('mp:statistics:query')")
63 63 public CommonResult<List<MpStatisticsInterfaceSummaryRespVO>> getInterfaceSummary(MpStatisticsGetReqVO getReqVO) {
64 64 List<WxDataCubeInterfaceResult> list = mpStatisticsService.getInterfaceSummary(
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/statistics/vo/MpStatisticsGetReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.statistics.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5 import org.springframework.format.annotation.DateTimeFormat;
7 6  
... ... @@ -10,15 +9,15 @@ import java.time.LocalDateTime;
10 9  
11 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
12 11  
13   -@ApiModel("管理后台 - 获得统计数据 Request VO")
  12 +@Schema(description = "管理后台 - 获得统计数据 Request VO")
14 13 @Data
15 14 public class MpStatisticsGetReqVO {
16 15  
17   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1024")
  16 + @Schema(description = "公众号账号的编号", required = true, example = "1024")
18 17 @NotNull(message = "公众号账号的编号不能为空")
19 18 private Long accountId;
20 19  
21   - @ApiModelProperty(value = "查询时间范围")
  20 + @Schema(description = "查询时间范围")
22 21 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
23 22 @NotNull(message = "查询时间范围不能为空")
24 23 private LocalDateTime[] date;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/statistics/vo/MpStatisticsInterfaceSummaryRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.statistics.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import java.util.Date;
8 7  
9   -@ApiModel("管理后台 - 某一天的接口分析数据 Response VO")
  8 +@Schema(description = "管理后台 - 某一天的接口分析数据 Response VO")
10 9 @Data
11 10 public class MpStatisticsInterfaceSummaryRespVO {
12 11  
13   - @ApiModelProperty(value = "日期", required = true)
  12 + @Schema(description = "日期", required = true)
14 13 private Date refDate;
15 14  
16   - @ApiModelProperty(value = "通过服务器配置地址获得消息后,被动回复粉丝消息的次数", required = true, example = "10")
  15 + @Schema(description = "通过服务器配置地址获得消息后,被动回复粉丝消息的次数", required = true, example = "10")
17 16 private Integer callbackCount;
18 17  
19   - @ApiModelProperty(value = "上述动作的失败次数", required = true, example = "20")
  18 + @Schema(description = "上述动作的失败次数", required = true, example = "20")
20 19 private Integer failCount;
21 20  
22   - @ApiModelProperty(value = "总耗时,除以 callback_count 即为平均耗时", required = true, example = "30")
  21 + @Schema(description = "总耗时,除以 callback_count 即为平均耗时", required = true, example = "30")
23 22 private Integer totalTimeCost;
24 23  
25   - @ApiModelProperty(value = "最大耗时", required = true, example = "40")
  24 + @Schema(description = "最大耗时", required = true, example = "40")
26 25 private Integer maxTimeCost;
27 26  
28 27 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/statistics/vo/MpStatisticsUpstreamMessageRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.statistics.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import java.util.Date;
8 7  
9   -@ApiModel("管理后台 - 某一天的粉丝增减数据 Response VO")
  8 +@Schema(description = "管理后台 - 某一天的粉丝增减数据 Response VO")
10 9 @Data
11 10 public class MpStatisticsUpstreamMessageRespVO {
12 11  
13   - @ApiModelProperty(value = "日期", required = true)
  12 + @Schema(description = "日期", required = true)
14 13 private Date refDate;
15 14  
16   - @ApiModelProperty(value = "上行发送了(向公众号发送了)消息的粉丝数", required = true, example = "10")
  15 + @Schema(description = "上行发送了(向公众号发送了)消息的粉丝数", required = true, example = "10")
17 16 private Integer messageUser;
18 17  
19   - @ApiModelProperty(value = "上行发送了消息的消息总数", required = true, example = "20")
  18 + @Schema(description = "上行发送了消息的消息总数", required = true, example = "20")
20 19 private Integer messageCount;
21 20  
22 21 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/statistics/vo/MpStatisticsUserCumulateRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.statistics.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import java.util.Date;
8 7  
9   -@ApiModel("管理后台 - 某一天的消息发送概况数据 Response VO")
  8 +@Schema(description = "管理后台 - 某一天的消息发送概况数据 Response VO")
10 9 @Data
11 10 public class MpStatisticsUserCumulateRespVO {
12 11  
13   - @ApiModelProperty(value = "日期", required = true)
  12 + @Schema(description = "日期", required = true)
14 13 private Date refDate;
15 14  
16   - @ApiModelProperty(value = "累计粉丝量", required = true, example = "10")
  15 + @Schema(description = "累计粉丝量", required = true, example = "10")
17 16 private Integer cumulateUser;
18 17  
19 18 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/statistics/vo/MpStatisticsUserSummaryRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.statistics.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import java.util.Date;
8 7  
9   -@ApiModel("管理后台 - 某一天的粉丝增减数据 Response VO")
  8 +@Schema(description = "管理后台 - 某一天的粉丝增减数据 Response VO")
10 9 @Data
11 10 public class MpStatisticsUserSummaryRespVO {
12 11  
13   - @ApiModelProperty(value = "日期", required = true)
  12 + @Schema(description = "日期", required = true)
14 13 private Date refDate;
15 14  
16   - @ApiModelProperty(value = "粉丝来源", required = true, example = "0")
  15 + @Schema(description = "粉丝来源", required = true, example = "0")
17 16 private Integer userSource;
18 17  
19   - @ApiModelProperty(value = "新关注的粉丝数量", required = true, example = "10")
  18 + @Schema(description = "新关注的粉丝数量", required = true, example = "10")
20 19 private Integer newUser;
21 20  
22   - @ApiModelProperty(value = "取消关注的粉丝数量", required = true, example = "20")
  21 + @Schema(description = "取消关注的粉丝数量", required = true, example = "20")
23 22 private Integer cancelUser;
24 23  
25 24 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/tag/MpTagController.java
... ... @@ -6,9 +6,9 @@ import cn.iocoder.yudao.module.mp.controller.admin.tag.vo.*;
6 6 import cn.iocoder.yudao.module.mp.convert.tag.MpTagConvert;
7 7 import cn.iocoder.yudao.module.mp.dal.dataobject.tag.MpTagDO;
8 8 import cn.iocoder.yudao.module.mp.service.tag.MpTagService;
9   -import io.swagger.annotations.Api;
10   -import io.swagger.annotations.ApiImplicitParam;
11   -import io.swagger.annotations.ApiOperation;
  9 +import io.swagger.v3.oas.annotations.Operation;
  10 +import io.swagger.v3.oas.annotations.Parameter;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
12 12 import org.springframework.security.access.prepost.PreAuthorize;
13 13 import org.springframework.validation.annotation.Validated;
14 14 import org.springframework.web.bind.annotation.*;
... ... @@ -19,7 +19,7 @@ import java.util.List;
19 19  
20 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 21  
22   -@Api(tags = "管理后台 - 公众号标签")
  22 +@Tag(name = "管理后台 - 公众号标签")
23 23 @RestController
24 24 @RequestMapping("/mp/tag")
25 25 @Validated
... ... @@ -29,14 +29,14 @@ public class MpTagController {
29 29 private MpTagService mpTagService;
30 30  
31 31 @PostMapping("/create")
32   - @ApiOperation("创建公众号标签")
  32 + @Operation(summary = "创建公众号标签")
33 33 @PreAuthorize("@ss.hasPermission('mp:tag:create')")
34 34 public CommonResult<Long> createTag(@Valid @RequestBody MpTagCreateReqVO createReqVO) {
35 35 return success(mpTagService.createTag(createReqVO));
36 36 }
37 37  
38 38 @PutMapping("/update")
39   - @ApiOperation("更新公众号标签")
  39 + @Operation(summary = "更新公众号标签")
40 40 @PreAuthorize("@ss.hasPermission('mp:tag:update')")
41 41 public CommonResult<Boolean> updateTag(@Valid @RequestBody MpTagUpdateReqVO updateReqVO) {
42 42 mpTagService.updateTag(updateReqVO);
... ... @@ -44,8 +44,8 @@ public class MpTagController {
44 44 }
45 45  
46 46 @DeleteMapping("/delete")
47   - @ApiOperation("删除公众号标签")
48   - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
  47 + @Operation(summary = "删除公众号标签")
  48 + @Parameter(name = "id", description = "编号", required = true)
49 49 @PreAuthorize("@ss.hasPermission('mp:tag:delete')")
50 50 public CommonResult<Boolean> deleteTag(@RequestParam("id") Long id) {
51 51 mpTagService.deleteTag(id);
... ... @@ -53,7 +53,7 @@ public class MpTagController {
53 53 }
54 54  
55 55 @GetMapping("/page")
56   - @ApiOperation("获取公众号标签分页")
  56 + @Operation(summary = "获取公众号标签分页")
57 57 @PreAuthorize("@ss.hasPermission('mp:tag:query')")
58 58 public CommonResult<PageResult<MpTagRespVO>> getTagPage(MpTagPageReqVO pageReqVO) {
59 59 PageResult<MpTagDO> pageResult = mpTagService.getTagPage(pageReqVO);
... ... @@ -61,7 +61,7 @@ public class MpTagController {
61 61 }
62 62  
63 63 @GetMapping("/list-all-simple")
64   - @ApiOperation(value = "获取公众号账号精简信息列表")
  64 + @Operation(summary = "获取公众号账号精简信息列表")
65 65 @PreAuthorize("@ss.hasPermission('mp:account:query')")
66 66 public CommonResult<List<MpTagSimpleRespVO>> getSimpleTags() {
67 67 List<MpTagDO> list = mpTagService.getTagList();
... ... @@ -69,8 +69,8 @@ public class MpTagController {
69 69 }
70 70  
71 71 @PostMapping("/sync")
72   - @ApiOperation("同步公众号标签")
73   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true, dataTypeClass = Long.class)
  72 + @Operation(summary = "同步公众号标签")
  73 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true)
74 74 @PreAuthorize("@ss.hasPermission('mp:tag:sync')")
75 75 public CommonResult<Boolean> syncTag(@RequestParam("accountId") Long accountId) {
76 76 mpTagService.syncTag(accountId);
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/tag/vo/MpTagBaseVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.tag.vo;
2 2  
3   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5 5  
6 6 import javax.validation.constraints.NotEmpty;
... ... @@ -14,7 +14,7 @@ import javax.validation.constraints.NotEmpty;
14 14 @Data
15 15 public class MpTagBaseVO {
16 16  
17   - @ApiModelProperty(value = "标签名", required = true, example = "土豆")
  17 + @Schema(description = "标签名", required = true, example = "土豆")
18 18 @NotEmpty(message = "标签名不能为空")
19 19 private String name;
20 20  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/tag/vo/MpTagCreateReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.tag.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7 6 import lombok.ToString;
8 7  
9 8 import javax.validation.constraints.NotNull;
10 9  
11   -@ApiModel("管理后台 - 公众号标签创建 Request VO")
  10 +@Schema(description = "管理后台 - 公众号标签创建 Request VO")
12 11 @Data
13 12 @EqualsAndHashCode(callSuper = true)
14 13 @ToString(callSuper = true)
15 14 public class MpTagCreateReqVO extends MpTagBaseVO {
16 15  
17   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  16 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
18 17 @NotNull(message = "公众号账号的编号不能为空")
19 18 private Long accountId;
20 19  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/tag/vo/MpTagPageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.tag.vo;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6 import lombok.EqualsAndHashCode;
8 7 import lombok.ToString;
9 8  
10 9 import javax.validation.constraints.NotEmpty;
11 10  
12   -@ApiModel("管理后台 - 公众号标签分页 Request VO")
  11 +@Schema(description = "管理后台 - 公众号标签分页 Request VO")
13 12 @Data
14 13 @EqualsAndHashCode(callSuper = true)
15 14 @ToString(callSuper = true)
16 15 public class MpTagPageReqVO extends PageParam {
17 16  
18   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  17 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
19 18 @NotEmpty(message = "公众号账号的编号不能为空")
20 19 private Long accountId;
21 20  
22   - @ApiModelProperty(value = "标签名", example = "哈哈", notes = "模糊匹配")
  21 + @Schema(description = "标签名 模糊匹配", example = "哈哈")
23 22 private String name;
24 23  
25 24 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/tag/vo/MpTagRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.tag.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7 6 import lombok.ToString;
8 7  
9 8 import java.util.Date;
10 9  
11   -@ApiModel("管理后台 - 公众号标签 Response VO")
  10 +@Schema(description = "管理后台 - 公众号标签 Response VO")
12 11 @Data
13 12 @EqualsAndHashCode(callSuper = true)
14 13 @ToString(callSuper = true)
15 14 public class MpTagRespVO extends MpTagBaseVO {
16 15  
17   - @ApiModelProperty(value = "编号", required = true, example = "1024")
  16 + @Schema(description = "编号", required = true, example = "1024")
18 17 private Long id;
19 18  
20   - @ApiModelProperty(value = "此标签下粉丝数量", required = true, example = "0")
  19 + @Schema(description = "此标签下粉丝数量", required = true, example = "0")
21 20 private Integer count;
22 21  
23   - @ApiModelProperty(value = "创建时间", required = true)
  22 + @Schema(description = "创建时间", required = true)
24 23 private Date createTime;
25 24  
26 25 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/tag/vo/MpTagSimpleRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.tag.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7   -@ApiModel("管理后台 - 公众号标签精简信息 Response VO")
  6 +@Schema(description = "管理后台 - 公众号标签精简信息 Response VO")
8 7 @Data
9 8 public class MpTagSimpleRespVO {
10 9  
11   - @ApiModelProperty(value = "编号", required = true, example = "1024")
  10 + @Schema(description = "编号", required = true, example = "1024")
12 11 private Long id;
13 12  
14   - @ApiModelProperty(value = "公众号的标签编号", required = true, example = "2048")
  13 + @Schema(description = "公众号的标签编号", required = true, example = "2048")
15 14 private Long tagId;
16 15  
17   - @ApiModelProperty(value = "标签名称", required = true, example = "快乐")
  16 + @Schema(description = "标签名称", required = true, example = "快乐")
18 17 private String name;
19 18  
20 19 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/tag/vo/MpTagUpdateReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.tag.vo;
2 2  
3   -import lombok.*;
4   -import io.swagger.annotations.*;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import lombok.ToString;
5 7  
6   -import javax.validation.constraints.*;
  8 +import javax.validation.constraints.NotNull;
7 9  
8   -@ApiModel("管理后台 - 公众号标签更新 Request VO")
  10 +@Schema(description = "管理后台 - 公众号标签更新 Request VO")
9 11 @Data
10 12 @EqualsAndHashCode(callSuper = true)
11 13 @ToString(callSuper = true)
12 14 public class MpTagUpdateReqVO extends MpTagBaseVO {
13 15  
14   - @ApiModelProperty(value = "编号", required = true)
  16 + @Schema(description = "编号", required = true)
15 17 @NotNull(message = "编号不能为空")
16 18 private Long id;
17 19  
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/user/MpUserController.java
... ... @@ -8,9 +8,9 @@ import cn.iocoder.yudao.module.mp.controller.admin.user.vo.MpUserUpdateReqVO;
8 8 import cn.iocoder.yudao.module.mp.convert.user.MpUserConvert;
9 9 import cn.iocoder.yudao.module.mp.dal.dataobject.user.MpUserDO;
10 10 import cn.iocoder.yudao.module.mp.service.user.MpUserService;
11   -import io.swagger.annotations.Api;
12   -import io.swagger.annotations.ApiImplicitParam;
13   -import io.swagger.annotations.ApiOperation;
  11 +import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.Parameter;
  13 +import io.swagger.v3.oas.annotations.tags.Tag;
14 14 import org.springframework.security.access.prepost.PreAuthorize;
15 15 import org.springframework.validation.annotation.Validated;
16 16 import org.springframework.web.bind.annotation.*;
... ... @@ -20,7 +20,7 @@ import javax.validation.Valid;
20 20  
21 21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22 22  
23   -@Api(tags = "管理后台 - 公众号粉丝")
  23 +@Tag(name = "管理后台 - 公众号粉丝")
24 24 @RestController
25 25 @RequestMapping("/mp/user")
26 26 @Validated
... ... @@ -30,7 +30,7 @@ public class MpUserController {
30 30 private MpUserService mpUserService;
31 31  
32 32 @GetMapping("/page")
33   - @ApiOperation("获得公众号粉丝分页")
  33 + @Operation(summary = "获得公众号粉丝分页")
34 34 @PreAuthorize("@ss.hasPermission('mp:user:query')")
35 35 public CommonResult<PageResult<MpUserRespVO>> getUserPage(@Valid MpUserPageReqVO pageVO) {
36 36 PageResult<MpUserDO> pageResult = mpUserService.getUserPage(pageVO);
... ... @@ -38,15 +38,15 @@ public class MpUserController {
38 38 }
39 39  
40 40 @GetMapping("/get")
41   - @ApiOperation("获得公众号粉丝")
42   - @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  41 + @Operation(summary = "获得公众号粉丝")
  42 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
43 43 @PreAuthorize("@ss.hasPermission('mp:user:query')")
44 44 public CommonResult<MpUserRespVO> getUser(@RequestParam("id") Long id) {
45 45 return success(MpUserConvert.INSTANCE.convert(mpUserService.getUser(id)));
46 46 }
47 47  
48 48 @PutMapping("/update")
49   - @ApiOperation("更新公众号粉丝")
  49 + @Operation(summary = "更新公众号粉丝")
50 50 @PreAuthorize("@ss.hasPermission('mp:user:update')")
51 51 public CommonResult<Boolean> updateUser(@Valid @RequestBody MpUserUpdateReqVO updateReqVO) {
52 52 mpUserService.updateUser(updateReqVO);
... ... @@ -54,8 +54,8 @@ public class MpUserController {
54 54 }
55 55  
56 56 @PostMapping("/sync")
57   - @ApiOperation("同步公众号粉丝")
58   - @ApiImplicitParam(name = "accountId", value = "公众号账号的编号", required = true, dataTypeClass = Long.class)
  57 + @Operation(summary = "同步公众号粉丝")
  58 + @Parameter(name = "accountId", description = "公众号账号的编号", required = true)
59 59 @PreAuthorize("@ss.hasPermission('mp:user:sync')")
60 60 public CommonResult<Boolean> syncUser(@RequestParam("accountId") Long accountId) {
61 61 mpUserService.syncUser(accountId);
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/user/vo/MpUserPageReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.user.vo;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import io.swagger.annotations.ApiModel;
5   -import io.swagger.annotations.ApiModelProperty;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
6 5 import lombok.Data;
7 6 import lombok.EqualsAndHashCode;
8 7 import lombok.ToString;
9 8  
10 9 import javax.validation.constraints.NotNull;
11 10  
12   -@ApiModel("管理后台 - 公众号粉丝分页 Request VO")
  11 +@Schema(description = "管理后台 - 公众号粉丝分页 Request VO")
13 12 @Data
14 13 @EqualsAndHashCode(callSuper = true)
15 14 @ToString(callSuper = true)
16 15 public class MpUserPageReqVO extends PageParam {
17 16  
18   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  17 + @Schema(description = "公众号账号的编号", required = true, example = "2048")
19 18 @NotNull(message = "公众号账号的编号不能为空")
20 19 private Long accountId;
21 20  
22   - @ApiModelProperty(value = "公众号粉丝标识", example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", notes = "模糊匹配")
  21 + @Schema(description = "公众号粉丝标识 模糊匹配", example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M")
23 22 private String openid;
24 23  
25   - @ApiModelProperty(value = "公众号粉丝昵称", example = "芋艿", notes = "模糊匹配")
  24 + @Schema(description = "公众号粉丝昵称 模糊匹配", example = "芋艿")
26 25 private String nickname;
27 26  
28 27 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/user/vo/MpUserRespVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.user.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import java.time.LocalDateTime;
8 7 import java.util.Date;
9 8 import java.util.List;
10 9  
11   -@ApiModel("管理后台 - 公众号粉丝 Response VO")
  10 +@Schema(description = "管理后台 - 公众号粉丝 Response VO")
12 11 @Data
13 12 public class MpUserRespVO {
14 13  
15   - @ApiModelProperty(value = "编号", required = true, example = "1024")
  14 + @Schema(description = "编号", required = true, example = "1024")
16 15 private Long id;
17 16  
18   - @ApiModelProperty(value = "公众号粉丝标识", required = true, example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M")
  17 + @Schema(description = "公众号粉丝标识", required = true, example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M")
19 18 private String openid;
20 19  
21   - @ApiModelProperty(value = "关注状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举")
  20 + @Schema(description = "关注状态 参见 CommonStatusEnum 枚举", required = true, example = "1")
22 21 private Integer subscribeStatus;
23   - @ApiModelProperty(value = "关注时间", required = true)
  22 + @Schema(description = "关注时间", required = true)
24 23 private LocalDateTime subscribeTime;
25   - @ApiModelProperty(value = "取消关注时间")
  24 + @Schema(description = "取消关注时间")
26 25 private LocalDateTime unsubscribeTime;
27 26  
28   - @ApiModelProperty(value = "昵称", example = "芋道")
  27 + @Schema(description = "昵称", example = "芋道")
29 28 private String nickname;
30   - @ApiModelProperty(value = "头像地址", example = "https://www.iocoder.cn/1.png")
  29 + @Schema(description = "头像地址", example = "https://www.iocoder.cn/1.png")
31 30 private String headImageUrl;
32   - @ApiModelProperty(value = "语言", example = "zh_CN")
  31 + @Schema(description = "语言", example = "zh_CN")
33 32 private String language;
34   - @ApiModelProperty(value = "国家", example = "中国")
  33 + @Schema(description = "国家", example = "中国")
35 34 private String country;
36   - @ApiModelProperty(value = "省份", example = "广东省")
  35 + @Schema(description = "省份", example = "广东省")
37 36 private String province;
38   - @ApiModelProperty(value = "城市", example = "广州市")
  37 + @Schema(description = "城市", example = "广州市")
39 38 private String city;
40   - @ApiModelProperty(value = "备注", example = "你是一个芋头嘛")
  39 + @Schema(description = "备注", example = "你是一个芋头嘛")
41 40 private String remark;
42 41  
43   - @ApiModelProperty(value = "标签编号数组", example = "1,2,3")
  42 + @Schema(description = "标签编号数组", example = "1,2,3")
44 43 private List<Long> tagIds;
45 44  
46   - @ApiModelProperty(value = "公众号账号的编号", required = true, example = "1")
  45 + @Schema(description = "公众号账号的编号", required = true, example = "1")
47 46 private Long accountId;
48   - @ApiModelProperty(value = "公众号账号的 appId", required = true, example = "wx1234567890")
  47 + @Schema(description = "公众号账号的 appId", required = true, example = "wx1234567890")
49 48 private String appId;
50 49  
51   - @ApiModelProperty(value = "创建时间", required = true)
  50 + @Schema(description = "创建时间", required = true)
52 51 private Date createTime;
53 52  
54 53 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/user/vo/MpUserUpdateReqVO.java
1 1 package cn.iocoder.yudao.module.mp.controller.admin.user.vo;
2 2  
3   -import io.swagger.annotations.ApiModel;
4   -import io.swagger.annotations.ApiModelProperty;
  3 +import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import javax.validation.constraints.NotNull;
8 7 import java.util.List;
9 8  
10   -@ApiModel("管理后台 - 公众号粉丝更新 Request VO")
  9 +@Schema(description = "管理后台 - 公众号粉丝更新 Request VO")
11 10 @Data
12 11 public class MpUserUpdateReqVO {
13 12  
14   - @ApiModelProperty(value = "编号", required = true, example = "1024")
  13 + @Schema(description = "编号", required = true, example = "1024")
15 14 @NotNull(message = "编号不能为空")
16 15 private Long id;
17 16  
18   - @ApiModelProperty(value = "昵称", example = "芋道")
  17 + @Schema(description = "昵称", example = "芋道")
19 18 private String nickname;
20 19  
21   - @ApiModelProperty(value = "备注", example = "你是一个芋头嘛")
  20 + @Schema(description = "备注", example = "你是一个芋头嘛")
22 21 private String remark;
23 22  
24   - @ApiModelProperty(value = "标签编号数组", example = "1,2,3")
  23 + @Schema(description = "标签编号数组", example = "1,2,3")
25 24 private List<Long> tagIds;
26 25  
27 26 }
... ...
yudao-server/src/main/resources/application-local.yaml
... ... @@ -44,34 +44,34 @@ spring:
44 44 primary: master
45 45 datasource:
46 46 master:
47   - name: ruoyi-vue-pro
48   - url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
  47 + name: pro
  48 + url: jdbc:mysql://101.201.151.212:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
49 49 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
50 50 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
51 51 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
52 52 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
53   - username: root
54   - password: 123456
  53 + username: luoqi
  54 + password: luoqikeji
55 55 # username: sa
56 56 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
57 57 slave: # 模拟从库,可根据自己需要修改
58   - name: ruoyi-vue-pro
59   - url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
  58 + name: pro
  59 + url: jdbc:mysql://101.201.151.212:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
60 60 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
61 61 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
62 62 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
63 63 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
64   - username: root
65   - password: 123456
  64 + username: luoqi
  65 + password: luoqikeji
66 66 # username: sa
67 67 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
68 68  
69 69 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
70 70 redis:
71   - host: 127.0.0.1 # 地址
  71 + host: 39.107.87.6 # 地址
72 72 port: 6379 # 端口
73   - database: 0 # 数据库索引
74   -# password: 123456 # 密码,建议生产环境开启
  73 + database: 5 # 数据库索引
  74 + password: xingyu4j # 密码,建议生产环境开启
75 75  
76 76 --- #################### 定时任务相关配置 ####################
77 77  
... ...