Commit 47f071560fdcf1456cffe348229d0eb0bb88ffbb

Authored by YunaiV
1 parent 69e653cd

mp:menu 菜单的修改,移除多余的类

Showing 24 changed files with 302 additions and 633 deletions
http-client.env.json
... ... @@ -2,7 +2,7 @@
2 2 "local": {
3 3 "baseUrl": "http://127.0.0.1:48080/admin-api",
4 4 "token": "test1",
5   - "appTenantId": "1",
  5 + "adminTenentId": "1",
6 6  
7 7 "appApi": "http://127.0.0.1:48080/app-api",
8 8 "appToken": "test247",
... ...
yudao-module-mp/yudao-module-mp-api/src/main/java/cn/iocoder/yudao/module/mp/enums/ErrorCodeConstants.java
... ... @@ -3,15 +3,15 @@ package cn.iocoder.yudao.module.mp.enums;
3 3 import cn.iocoder.yudao.framework.common.exception.ErrorCode;
4 4  
5 5 /**
6   - * Member 错误码枚举类
  6 + * Mp 错误码枚举类
7 7 *
8   - * wechatMp 系统,使用 1-004-000-000 段
  8 + * mp 系统,使用 1-006-000-000 段
9 9 */
10 10 public interface ErrorCodeConstants {
11 11  
12 12 // ========== 用户相关 1004001000============
13   - ErrorCode WX_ACCOUNT_NOT_EXISTS = new ErrorCode(1004001000, "公众号账户不存在");
14   - ErrorCode WX_ACCOUNT_FANS_NOT_EXISTS = new ErrorCode(1004001001, "粉丝账号不存在");
15   - ErrorCode COMMON_NOT_EXISTS = new ErrorCode(1004001002, "用户不存在");
  13 + ErrorCode WX_ACCOUNT_NOT_EXISTS = new ErrorCode(1006001000, "公众号账户不存在");
  14 + ErrorCode WX_ACCOUNT_FANS_NOT_EXISTS = new ErrorCode(1006001001, "粉丝账号不存在");
  15 + ErrorCode COMMON_NOT_EXISTS = new ErrorCode(1006001002, "用户不存在");
16 16  
17 17 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/account/vo/MpAccountBaseVO.java
... ... @@ -22,8 +22,8 @@ public class MpAccountBaseVO {
22 22 @NotNull(message = "公众号账户不能为空")
23 23 private String account;
24 24  
25   - @ApiModelProperty(value = "公众号 appid", required = true)
26   - @NotNull(message = "公众号 appid 不能为空")
  25 + @ApiModelProperty(value = "公众号 appId", required = true, example = "wx5b23ba7a5589ecbb")
  26 + @NotNull(message = "公众号 appId 不能为空")
27 27 private String appId;
28 28  
29 29 @ApiModelProperty(value = "公众号密钥", required = true)
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/accountfanstag/WxAccountFansTagController.java
... ... @@ -88,16 +88,4 @@ public class WxAccountFansTagController {
88 88 return success(WxAccountFansTagConvert.INSTANCE.convertPage(pageResult));
89 89 }
90 90  
91   - @GetMapping("/export-excel")
92   - @ApiOperation("导出粉丝标签关联 Excel")
93   - @PreAuthorize("@ss.hasPermission('wechatMp:wx-account-fans-tag:export')")
94   - @OperateLog(type = EXPORT)
95   - public void exportWxAccountFansTagExcel(@Valid WxAccountFansTagExportReqVO exportReqVO,
96   - HttpServletResponse response) throws IOException {
97   - List<WxAccountFansTagDO> list = wxAccountFansTagService.getWxAccountFansTagList(exportReqVO);
98   - // 导出 Excel
99   - List<WxAccountFansTagExcelVO> datas = WxAccountFansTagConvert.INSTANCE.convertList02(list);
100   - ExcelUtils.write(response, "粉丝标签关联.xls", "数据", WxAccountFansTagExcelVO.class, datas);
101   - }
102   -
103 91 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/MpMenuController.http 0 → 100644
  1 +### 请求 /login 接口 => 成功
  2 +POST {{baseUrl}}/mp/menu/save
  3 +Content-Type: application/json
  4 +Authorization: Bearer {{token}}
  5 +tenant-id: {{adminTenentId}}
  6 +
  7 +{
  8 + "accountId": "1",
  9 + "buttons": [
  10 + {
  11 + "type":"click",
  12 + "name":"今日歌曲",
  13 + "key":"V1001_TODAY_MUSIC"
  14 + },
  15 + {
  16 + "name":"搜索",
  17 + "type":"view",
  18 + "url":"http://www.soso.com/"
  19 + }]
  20 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/MpMenuController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.controller.admin.menu;
  2 +
  3 +import cn.iocoder.yudao.module.mp.convert.menu.MpMenuConvert;
  4 +import cn.iocoder.yudao.module.mp.dal.dataobject.menu.MpMenuDO;
  5 +import org.springframework.web.bind.annotation.*;
  6 +
  7 +import javax.annotation.Resource;
  8 +
  9 +import org.springframework.validation.annotation.Validated;
  10 +import org.springframework.security.access.prepost.PreAuthorize;
  11 +import io.swagger.annotations.*;
  12 +
  13 +import javax.validation.*;
  14 +
  15 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  16 +
  17 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  18 +
  19 +import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.*;
  20 +import cn.iocoder.yudao.module.mp.service.menu.MpMenuService;
  21 +
  22 +@Api(tags = "管理后台 - 微信菜单")
  23 +@RestController
  24 +@RequestMapping("/mp/menu")
  25 +@Validated
  26 +public class MpMenuController {
  27 +
  28 + @Resource
  29 + private MpMenuService mpMenuService;
  30 +
  31 + @PostMapping("/save")
  32 + @ApiOperation("保存微信菜单")
  33 + @PreAuthorize("@ss.hasPermission('mp:menu:save')")
  34 + public CommonResult<Long> saveMenu(@Valid @RequestBody MpMenuSaveReqVO createReqVO) {
  35 + return success(mpMenuService.saveMenu(createReqVO));
  36 + }
  37 +
  38 + @DeleteMapping("/delete")
  39 + @ApiOperation("删除微信菜单")
  40 + @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
  41 + @PreAuthorize("@ss.hasPermission('mp:menu:delete')")
  42 + public CommonResult<Boolean> deleteMenu(@RequestParam("id") Long id) {
  43 + mpMenuService.deleteMenu(id);
  44 + return success(true);
  45 + }
  46 +
  47 + @GetMapping("/get")
  48 + @ApiOperation("获得微信菜单")
  49 + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  50 + @PreAuthorize("@ss.hasPermission('mp:menu:query')")
  51 + public CommonResult<MpMenuRespVO> getMenu(@RequestParam("id") Long id) {
  52 + MpMenuDO menu = mpMenuService.getMenu(id);
  53 + return success(MpMenuConvert.INSTANCE.convert(menu));
  54 + }
  55 +
  56 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/WxMenuController.java deleted
1   -package cn.iocoder.yudao.module.mp.controller.admin.menu;
2   -
3   -import org.springframework.web.bind.annotation.*;
4   -
5   -import javax.annotation.Resource;
6   -
7   -import org.springframework.validation.annotation.Validated;
8   -import org.springframework.security.access.prepost.PreAuthorize;
9   -import io.swagger.annotations.*;
10   -
11   -import javax.validation.*;
12   -import javax.servlet.http.*;
13   -import java.util.*;
14   -import java.io.IOException;
15   -
16   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
17   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
18   -
19   -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
20   -
21   -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
22   -
23   -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
24   -
25   -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
26   -
27   -import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.*;
28   -import cn.iocoder.yudao.module.mp.dal.dataobject.menu.WxMenuDO;
29   -import cn.iocoder.yudao.module.mp.convert.menu.WxMenuConvert;
30   -import cn.iocoder.yudao.module.mp.service.menu.WxMenuService;
31   -
32   -@Api(tags = "管理后台 - 微信菜单")
33   -@RestController
34   -@RequestMapping("/wechatMp/wx-menu")
35   -@Validated
36   -public class WxMenuController {
37   -
38   - @Resource
39   - private WxMenuService wxMenuService;
40   -
41   - @PostMapping("/create")
42   - @ApiOperation("创建微信菜单")
43   - @PreAuthorize("@ss.hasPermission('wechatMp:wx-menu:create')")
44   - public CommonResult<Integer> createWxMenu(@Valid @RequestBody WxMenuCreateReqVO createReqVO) {
45   - return success(wxMenuService.createWxMenu(createReqVO));
46   - }
47   -
48   - @PutMapping("/update")
49   - @ApiOperation("更新微信菜单")
50   - @PreAuthorize("@ss.hasPermission('wechatMp:wx-menu:update')")
51   - public CommonResult<Boolean> updateWxMenu(@Valid @RequestBody WxMenuUpdateReqVO updateReqVO) {
52   - wxMenuService.updateWxMenu(updateReqVO);
53   - return success(true);
54   - }
55   -
56   - @DeleteMapping("/delete")
57   - @ApiOperation("删除微信菜单")
58   - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Integer.class)
59   - @PreAuthorize("@ss.hasPermission('wechatMp:wx-menu:delete')")
60   - public CommonResult<Boolean> deleteWxMenu(@RequestParam("id") Integer id) {
61   - wxMenuService.deleteWxMenu(id);
62   - return success(true);
63   - }
64   -
65   - @GetMapping("/get")
66   - @ApiOperation("获得微信菜单")
67   - @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Integer.class)
68   - @PreAuthorize("@ss.hasPermission('wechatMp:wx-menu:query')")
69   - public CommonResult<WxMenuRespVO> getWxMenu(@RequestParam("id") Integer id) {
70   - WxMenuDO wxMenu = wxMenuService.getWxMenu(id);
71   - return success(WxMenuConvert.INSTANCE.convert(wxMenu));
72   - }
73   -
74   - @GetMapping("/list")
75   - @ApiOperation("获得微信菜单列表")
76   - @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
77   - @PreAuthorize("@ss.hasPermission('wechatMp:wx-menu:query')")
78   - public CommonResult<List<WxMenuRespVO>> getWxMenuList(@RequestParam("ids") Collection<Integer> ids) {
79   - List<WxMenuDO> list = wxMenuService.getWxMenuList(ids);
80   - return success(WxMenuConvert.INSTANCE.convertList(list));
81   - }
82   -
83   - @GetMapping("/page")
84   - @ApiOperation("获得微信菜单分页")
85   - @PreAuthorize("@ss.hasPermission('wechatMp:wx-menu:query')")
86   - public CommonResult<PageResult<WxMenuRespVO>> getWxMenuPage(@Valid WxMenuPageReqVO pageVO) {
87   - PageResult<WxMenuDO> pageResult = wxMenuService.getWxMenuPage(pageVO);
88   - return success(WxMenuConvert.INSTANCE.convertPage(pageResult));
89   - }
90   -
91   - @GetMapping("/export-excel")
92   - @ApiOperation("导出微信菜单 Excel")
93   - @PreAuthorize("@ss.hasPermission('wechatMp:wx-menu:export')")
94   - @OperateLog(type = EXPORT)
95   - public void exportWxMenuExcel(@Valid WxMenuExportReqVO exportReqVO,
96   - HttpServletResponse response) throws IOException {
97   - List<WxMenuDO> list = wxMenuService.getWxMenuList(exportReqVO);
98   - // 导出 Excel
99   - List<WxMenuExcelVO> datas = WxMenuConvert.INSTANCE.convertList02(list);
100   - ExcelUtils.write(response, "微信菜单.xls", "数据", WxMenuExcelVO.class, datas);
101   - }
102   -
103   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/MpMenuBaseVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.*;
  5 +import me.chanjar.weixin.common.bean.menu.WxMenuButton;
  6 +
  7 +import javax.validation.constraints.NotNull;
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * 微信菜单 Base VO,提供给添加、修改、详细的子 VO 使用
  12 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
  13 + */
  14 +@Data
  15 +public class MpMenuBaseVO {
  16 +
  17 + @ApiModelProperty(value = "公众号账号的编号", required = true, example = "2048")
  18 + @NotNull(message = "公众号账号的编号不能为空")
  19 + private Long accountId;
  20 +
  21 + @NotNull(message = "按钮不能为空")
  22 + private List<WxMenuButton> buttons;
  23 +
  24 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/WxMenuRespVO.java renamed to yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/MpMenuRespVO.java
... ... @@ -10,10 +10,10 @@ import io.swagger.annotations.*;
10 10 @Data
11 11 @EqualsAndHashCode(callSuper = true)
12 12 @ToString(callSuper = true)
13   -public class WxMenuRespVO extends WxMenuBaseVO {
  13 +public class MpMenuRespVO extends MpMenuBaseVO {
14 14  
15 15 @ApiModelProperty(value = "主键", required = true)
16   - private Integer id;
  16 + private Long id;
17 17  
18 18 @ApiModelProperty(value = "创建时间", required = true)
19 19 private Date createTime;
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/WxMenuCreateReqVO.java renamed to yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/MpMenuSaveReqVO.java
... ... @@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
3 3 import lombok.*;
4 4 import io.swagger.annotations.*;
5 5  
6   -@ApiModel("管理后台 - 微信菜单创建 Request VO")
  6 +@ApiModel("管理后台 - 微信菜单保存 Request VO")
7 7 @Data
8 8 @EqualsAndHashCode(callSuper = true)
9 9 @ToString(callSuper = true)
10   -public class WxMenuCreateReqVO extends WxMenuBaseVO {
  10 +public class MpMenuSaveReqVO extends MpMenuBaseVO {
11 11  
12 12 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/WxMenuBaseVO.java deleted
1   -package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
2   -
3   -import lombok.*;
4   -import io.swagger.annotations.*;
5   -
6   -/**
7   - * 微信菜单 Base VO,提供给添加、修改、详细的子 VO 使用
8   - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
9   - */
10   -@Data
11   -public class WxMenuBaseVO {
12   -
13   - @ApiModelProperty(value = "父ID")
14   - private String parentId;
15   -
16   - @ApiModelProperty(value = "菜单名称")
17   - private String menuName;
18   -
19   - @ApiModelProperty(value = "菜单类型 1文本消息;2图文消息;3网址链接;4小程序")
20   - private String menuType;
21   -
22   - @ApiModelProperty(value = "菜单等级")
23   - private String menuLevel;
24   -
25   - @ApiModelProperty(value = "模板ID")
26   - private String tplId;
27   -
28   - @ApiModelProperty(value = "菜单URL")
29   - private String menuUrl;
30   -
31   - @ApiModelProperty(value = "排序")
32   - private String menuSort;
33   -
34   - @ApiModelProperty(value = "微信账号ID")
35   - private String wxAccountId;
36   -
37   - @ApiModelProperty(value = "小程序appid")
38   - private String miniprogramAppid;
39   -
40   - @ApiModelProperty(value = "小程序页面路径")
41   - private String miniprogramPagepath;
42   -
43   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/WxMenuExcelVO.java deleted
1   -package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
2   -
3   -import lombok.*;
4   -
5   -import java.util.*;
6   -
7   -import com.alibaba.excel.annotation.ExcelProperty;
8   -
9   -/**
10   - * 微信菜单 Excel VO
11   - *
12   - * @author 芋道源码
13   - */
14   -@Data
15   -public class WxMenuExcelVO {
16   -
17   - @ExcelProperty("主键")
18   - private Integer id;
19   -
20   - @ExcelProperty("父ID")
21   - private String parentId;
22   -
23   - @ExcelProperty("菜单名称")
24   - private String menuName;
25   -
26   - @ExcelProperty("菜单类型 1文本消息;2图文消息;3网址链接;4小程序")
27   - private String menuType;
28   -
29   - @ExcelProperty("菜单等级")
30   - private String menuLevel;
31   -
32   - @ExcelProperty("模板ID")
33   - private String tplId;
34   -
35   - @ExcelProperty("菜单URL")
36   - private String menuUrl;
37   -
38   - @ExcelProperty("排序")
39   - private String menuSort;
40   -
41   - @ExcelProperty("微信账号ID")
42   - private String wxAccountId;
43   -
44   - @ExcelProperty("小程序appid")
45   - private String miniprogramAppid;
46   -
47   - @ExcelProperty("小程序页面路径")
48   - private String miniprogramPagepath;
49   -
50   - @ExcelProperty("创建时间")
51   - private Date createTime;
52   -
53   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/WxMenuExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
2   -
3   -import lombok.*;
4   -
5   -import java.util.*;
6   -
7   -import io.swagger.annotations.*;
8   -import org.springframework.format.annotation.DateTimeFormat;
9   -
10   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11   -
12   -@ApiModel(value = "管理后台 - 微信菜单 Excel 导出 Request VO", description = "参数和 WxMenuPageReqVO 是一致的")
13   -@Data
14   -public class WxMenuExportReqVO {
15   -
16   - @ApiModelProperty(value = "父ID")
17   - private String parentId;
18   -
19   - @ApiModelProperty(value = "菜单名称")
20   - private String menuName;
21   -
22   - @ApiModelProperty(value = "菜单类型 1文本消息;2图文消息;3网址链接;4小程序")
23   - private String menuType;
24   -
25   - @ApiModelProperty(value = "菜单等级")
26   - private String menuLevel;
27   -
28   - @ApiModelProperty(value = "模板ID")
29   - private String tplId;
30   -
31   - @ApiModelProperty(value = "菜单URL")
32   - private String menuUrl;
33   -
34   - @ApiModelProperty(value = "排序")
35   - private String menuSort;
36   -
37   - @ApiModelProperty(value = "微信账号ID")
38   - private String wxAccountId;
39   -
40   - @ApiModelProperty(value = "小程序appid")
41   - private String miniprogramAppid;
42   -
43   - @ApiModelProperty(value = "小程序页面路径")
44   - private String miniprogramPagepath;
45   -
46   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
47   - @ApiModelProperty(value = "开始创建时间")
48   - private Date beginCreateTime;
49   -
50   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
51   - @ApiModelProperty(value = "结束创建时间")
52   - private Date endCreateTime;
53   -
54   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/WxMenuPageReqVO.java deleted
1   -package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
2   -
3   -import lombok.*;
4   -
5   -import java.util.*;
6   -
7   -import io.swagger.annotations.*;
8   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
9   -import org.springframework.format.annotation.DateTimeFormat;
10   -
11   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
12   -
13   -@ApiModel("管理后台 - 微信菜单分页 Request VO")
14   -@Data
15   -@EqualsAndHashCode(callSuper = true)
16   -@ToString(callSuper = true)
17   -public class WxMenuPageReqVO extends PageParam {
18   -
19   - @ApiModelProperty(value = "父ID")
20   - private String parentId;
21   -
22   - @ApiModelProperty(value = "菜单名称")
23   - private String menuName;
24   -
25   - @ApiModelProperty(value = "菜单类型 1文本消息;2图文消息;3网址链接;4小程序")
26   - private String menuType;
27   -
28   - @ApiModelProperty(value = "菜单等级")
29   - private String menuLevel;
30   -
31   - @ApiModelProperty(value = "模板ID")
32   - private String tplId;
33   -
34   - @ApiModelProperty(value = "菜单URL")
35   - private String menuUrl;
36   -
37   - @ApiModelProperty(value = "排序")
38   - private String menuSort;
39   -
40   - @ApiModelProperty(value = "微信账号ID")
41   - private String wxAccountId;
42   -
43   - @ApiModelProperty(value = "小程序appid")
44   - private String miniprogramAppid;
45   -
46   - @ApiModelProperty(value = "小程序页面路径")
47   - private String miniprogramPagepath;
48   -
49   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
50   - @ApiModelProperty(value = "开始创建时间")
51   - private Date beginCreateTime;
52   -
53   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
54   - @ApiModelProperty(value = "结束创建时间")
55   - private Date endCreateTime;
56   -
57   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/menu/vo/WxMenuUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.mp.controller.admin.menu.vo;
2   -
3   -import lombok.*;
4   -import io.swagger.annotations.*;
5   -
6   -import javax.validation.constraints.*;
7   -
8   -@ApiModel("管理后台 - 微信菜单更新 Request VO")
9   -@Data
10   -@EqualsAndHashCode(callSuper = true)
11   -@ToString(callSuper = true)
12   -public class WxMenuUpdateReqVO extends WxMenuBaseVO {
13   -
14   - @ApiModelProperty(value = "主键", required = true)
15   - @NotNull(message = "主键不能为空")
16   - private Integer id;
17   -
18   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/menu/MpMenuConvert.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.convert.menu;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +
  5 +import org.mapstruct.Mapper;
  6 +import org.mapstruct.factory.Mappers;
  7 +import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.*;
  8 +import cn.iocoder.yudao.module.mp.dal.dataobject.menu.MpMenuDO;
  9 +
  10 +@Mapper
  11 +public interface MpMenuConvert {
  12 +
  13 + MpMenuConvert INSTANCE = Mappers.getMapper(MpMenuConvert.class);
  14 +
  15 + MpMenuDO convert(MpMenuSaveReqVO bean);
  16 +
  17 + MpMenuRespVO convert(MpMenuDO bean);
  18 +
  19 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/convert/menu/WxMenuConvert.java deleted
1   -package cn.iocoder.yudao.module.mp.convert.menu;
2   -
3   -import java.util.*;
4   -
5   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -
7   -import org.mapstruct.Mapper;
8   -import org.mapstruct.factory.Mappers;
9   -import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.*;
10   -import cn.iocoder.yudao.module.mp.dal.dataobject.menu.WxMenuDO;
11   -
12   -/**
13   - * 微信菜单 Convert
14   - *
15   - * @author 芋道源码
16   - */
17   -@Mapper
18   -public interface WxMenuConvert {
19   -
20   - WxMenuConvert INSTANCE = Mappers.getMapper(WxMenuConvert.class);
21   -
22   - WxMenuDO convert(WxMenuCreateReqVO bean);
23   -
24   - WxMenuDO convert(WxMenuUpdateReqVO bean);
25   -
26   - WxMenuRespVO convert(WxMenuDO bean);
27   -
28   - List<WxMenuRespVO> convertList(List<WxMenuDO> list);
29   -
30   - PageResult<WxMenuRespVO> convertPage(PageResult<WxMenuDO> page);
31   -
32   - List<WxMenuExcelVO> convertList02(List<WxMenuDO> list);
33   -
34   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/menu/MpMenuDO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.dal.dataobject.menu;
  2 +
  3 +import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
  4 +import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO;
  5 +import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO;
  6 +import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;
  7 +import lombok.*;
  8 +
  9 +import com.baomidou.mybatisplus.annotation.*;
  10 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  11 +import me.chanjar.weixin.common.bean.menu.WxMenu;
  12 +import me.chanjar.weixin.common.bean.menu.WxMenuButton;
  13 +
  14 +import java.util.List;
  15 +
  16 +/**
  17 + * 微信菜单 DO
  18 + *
  19 + * 一个公众号,只有一个 MpMenuDO 记录。一个公众号的多个菜单,对应到就是 {@link #buttons} 多个按钮
  20 + *
  21 + * @author 芋道源码
  22 + */
  23 +@TableName(value = "mp_menu", autoResultMap = true)
  24 +@KeySequence("mp_menu_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
  25 +@Data
  26 +@EqualsAndHashCode(callSuper = true)
  27 +@ToString(callSuper = true)
  28 +public class MpMenuDO extends BaseDO {
  29 +
  30 + /**
  31 + * 主键
  32 + */
  33 + @TableId
  34 + private Long id;
  35 + /**
  36 + * 微信公众号 ID
  37 + *
  38 + * 关联 {@link MpAccountDO#getId()}
  39 + */
  40 + private Long accountId;
  41 + /**
  42 + * 微信公众号 appid
  43 + *
  44 + * 冗余 {@link MpAccountDO#getAppId()}
  45 + */
  46 + private String appId;
  47 +
  48 + /**
  49 + * 按钮列表
  50 + */
  51 + @TableField(typeHandler = WxMenuButtonTypeHandler.class)
  52 + private List<WxMenuButton> buttons;
  53 + /**
  54 + * 同步状态
  55 + *
  56 + * true - 已同步
  57 + * false - 未同步
  58 + */
  59 + private Boolean syncStatus;
  60 +
  61 + // TODO @芋艿:可以找一些新的思路
  62 + public static class WxMenuButtonTypeHandler extends AbstractJsonTypeHandler<List<WxMenuButton>> {
  63 +
  64 + @Override
  65 + protected List<WxMenuButton> parse(String json) {
  66 + return JsonUtils.parseArray(json, WxMenuButton.class);
  67 + }
  68 +
  69 + @Override
  70 + protected String toJson(List<WxMenuButton> obj) {
  71 + return JsonUtils.toJsonString(obj);
  72 + }
  73 +
  74 + }
  75 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/menu/WxMenuDO.java deleted
1   -package cn.iocoder.yudao.module.mp.dal.dataobject.menu;
2   -
3   -import lombok.*;
4   -
5   -import java.util.*;
6   -
7   -import com.baomidou.mybatisplus.annotation.*;
8   -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
9   -
10   -/**
11   - * 微信菜单 DO
12   - *
13   - * @author 芋道源码
14   - */
15   -@TableName("wx_menu")
16   -@KeySequence("wx_menu_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
17   -@Data
18   -@EqualsAndHashCode(callSuper = true)
19   -@ToString(callSuper = true)
20   -@Builder
21   -@NoArgsConstructor
22   -@AllArgsConstructor
23   -public class WxMenuDO extends BaseDO {
24   -
25   - /**
26   - * 主键
27   - */
28   - @TableId
29   - private Integer id;
30   - /**
31   - * 父ID
32   - */
33   - private String parentId;
34   - /**
35   - * 菜单名称
36   - */
37   - private String menuName;
38   - /**
39   - * 菜单类型 1文本消息;2图文消息;3网址链接;4小程序
40   - */
41   - private String menuType;
42   - /**
43   - * 菜单等级
44   - */
45   - private String menuLevel;
46   - /**
47   - * 模板ID
48   - */
49   - private String tplId;
50   - /**
51   - * 菜单URL
52   - */
53   - private String menuUrl;
54   - /**
55   - * 排序
56   - */
57   - private String menuSort;
58   - /**
59   - * 微信账号ID
60   - */
61   - private String wxAccountId;
62   - /**
63   - * 小程序appid
64   - */
65   - private String miniprogramAppid;
66   - /**
67   - * 小程序页面路径
68   - */
69   - private String miniprogramPagepath;
70   -
71   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/menu/MpMenuMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.dal.mysql.menu;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  4 +import cn.iocoder.yudao.module.mp.dal.dataobject.menu.MpMenuDO;
  5 +import org.apache.ibatis.annotations.Mapper;
  6 +
  7 +@Mapper
  8 +public interface MpMenuMapper extends BaseMapperX<MpMenuDO> {
  9 +
  10 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/menu/WxMenuMapper.java deleted
1   -package cn.iocoder.yudao.module.mp.dal.mysql.menu;
2   -
3   -import java.util.*;
4   -
5   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
7   -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
8   -import cn.iocoder.yudao.module.mp.dal.dataobject.menu.WxMenuDO;
9   -import org.apache.ibatis.annotations.Mapper;
10   -import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.*;
11   -
12   -/**
13   - * 微信菜单 Mapper
14   - *
15   - * @author 芋道源码
16   - */
17   -@Mapper
18   -public interface WxMenuMapper extends BaseMapperX<WxMenuDO> {
19   -
20   - default PageResult<WxMenuDO> selectPage(WxMenuPageReqVO reqVO) {
21   - return selectPage(reqVO, new LambdaQueryWrapperX<WxMenuDO>()
22   - .eqIfPresent(WxMenuDO::getParentId, reqVO.getParentId())
23   - .likeIfPresent(WxMenuDO::getMenuName, reqVO.getMenuName())
24   - .eqIfPresent(WxMenuDO::getMenuType, reqVO.getMenuType())
25   - .eqIfPresent(WxMenuDO::getMenuLevel, reqVO.getMenuLevel())
26   - .eqIfPresent(WxMenuDO::getTplId, reqVO.getTplId())
27   - .eqIfPresent(WxMenuDO::getMenuUrl, reqVO.getMenuUrl())
28   - .eqIfPresent(WxMenuDO::getMenuSort, reqVO.getMenuSort())
29   - .eqIfPresent(WxMenuDO::getWxAccountId, reqVO.getWxAccountId())
30   - .eqIfPresent(WxMenuDO::getMiniprogramAppid, reqVO.getMiniprogramAppid())
31   - .eqIfPresent(WxMenuDO::getMiniprogramPagepath, reqVO.getMiniprogramPagepath())
32   - .betweenIfPresent(WxMenuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
33   - .orderByDesc(WxMenuDO::getId));
34   - }
35   -
36   - default List<WxMenuDO> selectList(WxMenuExportReqVO reqVO) {
37   - return selectList(new LambdaQueryWrapperX<WxMenuDO>()
38   - .eqIfPresent(WxMenuDO::getParentId, reqVO.getParentId())
39   - .likeIfPresent(WxMenuDO::getMenuName, reqVO.getMenuName())
40   - .eqIfPresent(WxMenuDO::getMenuType, reqVO.getMenuType())
41   - .eqIfPresent(WxMenuDO::getMenuLevel, reqVO.getMenuLevel())
42   - .eqIfPresent(WxMenuDO::getTplId, reqVO.getTplId())
43   - .eqIfPresent(WxMenuDO::getMenuUrl, reqVO.getMenuUrl())
44   - .eqIfPresent(WxMenuDO::getMenuSort, reqVO.getMenuSort())
45   - .eqIfPresent(WxMenuDO::getWxAccountId, reqVO.getWxAccountId())
46   - .eqIfPresent(WxMenuDO::getMiniprogramAppid, reqVO.getMiniprogramAppid())
47   - .eqIfPresent(WxMenuDO::getMiniprogramPagepath, reqVO.getMiniprogramPagepath())
48   - .betweenIfPresent(WxMenuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
49   - .orderByDesc(WxMenuDO::getId));
50   - }
51   -
52   -}
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/menu/WxMenuService.java renamed to yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/menu/MpMenuService.java
1 1 package cn.iocoder.yudao.module.mp.service.menu;
2 2  
3   -import java.util.*;
4 3 import javax.validation.*;
5 4  
6 5 import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.*;
7   -import cn.iocoder.yudao.module.mp.dal.dataobject.menu.WxMenuDO;
8   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.module.mp.dal.dataobject.menu.MpMenuDO;
9 7  
10 8 /**
11 9 * 微信菜单 Service 接口
12 10 *
13 11 * @author 芋道源码
14 12 */
15   -public interface WxMenuService {
  13 +public interface MpMenuService {
16 14  
17 15 /**
18   - * 创建微信菜单
  16 + * 保存微信菜单
19 17 *
20 18 * @param createReqVO 创建信息
21 19 * @return 编号
22 20 */
23   - Integer createWxMenu(@Valid WxMenuCreateReqVO createReqVO);
24   -
25   - /**
26   - * 更新微信菜单
27   - *
28   - * @param updateReqVO 更新信息
29   - */
30   - void updateWxMenu(@Valid WxMenuUpdateReqVO updateReqVO);
  21 + Long saveMenu(@Valid MpMenuSaveReqVO createReqVO);
31 22  
32 23 /**
33 24 * 删除微信菜单
34 25 *
35 26 * @param id 编号
36 27 */
37   - void deleteWxMenu(Integer id);
  28 + void deleteMenu(Long id);
38 29  
39 30 /**
40 31 * 获得微信菜单
... ... @@ -42,30 +33,6 @@ public interface WxMenuService {
42 33 * @param id 编号
43 34 * @return 微信菜单
44 35 */
45   - WxMenuDO getWxMenu(Integer id);
46   -
47   - /**
48   - * 获得微信菜单列表
49   - *
50   - * @param ids 编号
51   - * @return 微信菜单列表
52   - */
53   - List<WxMenuDO> getWxMenuList(Collection<Integer> ids);
54   -
55   - /**
56   - * 获得微信菜单分页
57   - *
58   - * @param pageReqVO 分页查询
59   - * @return 微信菜单分页
60   - */
61   - PageResult<WxMenuDO> getWxMenuPage(WxMenuPageReqVO pageReqVO);
62   -
63   - /**
64   - * 获得微信菜单列表, 用于 Excel 导出
65   - *
66   - * @param exportReqVO 查询条件
67   - * @return 微信菜单列表
68   - */
69   - List<WxMenuDO> getWxMenuList(WxMenuExportReqVO exportReqVO);
  36 + MpMenuDO getMenu(Long id);
70 37  
71 38 }
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/menu/MpMenuServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mp.service.menu;
  2 +
  3 +import cn.iocoder.yudao.module.mp.convert.menu.MpMenuConvert;
  4 +import cn.iocoder.yudao.module.mp.dal.dataobject.menu.MpMenuDO;
  5 +import cn.iocoder.yudao.module.mp.framework.mp.core.MpServiceFactory;
  6 +import me.chanjar.weixin.common.bean.menu.WxMenu;
  7 +import me.chanjar.weixin.common.error.WxErrorException;
  8 +import me.chanjar.weixin.mp.api.WxMpService;
  9 +import org.springframework.context.annotation.Lazy;
  10 +import org.springframework.stereotype.Service;
  11 +
  12 +import javax.annotation.Resource;
  13 +
  14 +import org.springframework.validation.annotation.Validated;
  15 +
  16 +import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.*;
  17 +
  18 +import cn.iocoder.yudao.module.mp.dal.mysql.menu.MpMenuMapper;
  19 +
  20 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  21 +import static cn.iocoder.yudao.module.mp.enums.ErrorCodeConstants.*;
  22 +
  23 +/**
  24 + * 微信菜单 Service 实现类
  25 + *
  26 + * @author 芋道源码
  27 + */
  28 +@Service
  29 +@Validated
  30 +public class MpMenuServiceImpl implements MpMenuService {
  31 +
  32 + @Resource
  33 + @Lazy // 延迟加载,避免循环引用报错
  34 + private MpServiceFactory mpServiceFactory;
  35 +
  36 + @Resource
  37 + private MpMenuMapper mpMenuMapper;
  38 +
  39 + @Override
  40 + public Long saveMenu(MpMenuSaveReqVO createReqVO) {
  41 + String appId = "wx5b23ba7a5589ecbb";
  42 + // 插入
  43 + MpMenuDO menu = MpMenuConvert.INSTANCE.convert(createReqVO);
  44 +// mpMenuMapper.insert(menu);
  45 +
  46 + // TODO 同步菜单
  47 + WxMpService mpService = mpServiceFactory.getRequiredMpService(appId);
  48 + WxMenu wxMenu = new WxMenu();
  49 + wxMenu.setButtons(createReqVO.getButtons());
  50 + try {
  51 + mpService.getMenuService().menuCreate(wxMenu);
  52 + } catch (WxErrorException e) {
  53 + throw new RuntimeException(e);
  54 + }
  55 +
  56 + // 返回
  57 + return menu.getId();
  58 + }
  59 +
  60 + @Override
  61 + public void deleteMenu(Long id) {
  62 + // 校验存在
  63 + validateMenuExists(id);
  64 + // 删除
  65 + mpMenuMapper.deleteById(id);
  66 + }
  67 +
  68 + private void validateMenuExists(Long id) {
  69 + if (mpMenuMapper.selectById(id) == null) {
  70 + // TODO 芋艿:错误码不太对
  71 + throw exception(COMMON_NOT_EXISTS);
  72 + }
  73 + }
  74 +
  75 + @Override
  76 + public MpMenuDO getMenu(Long id) {
  77 + return mpMenuMapper.selectById(id);
  78 + }
  79 +
  80 +}
... ...
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/menu/WxMenuServiceImpl.java deleted
1   -package cn.iocoder.yudao.module.mp.service.menu;
2   -
3   -import org.springframework.stereotype.Service;
4   -
5   -import javax.annotation.Resource;
6   -
7   -import org.springframework.validation.annotation.Validated;
8   -
9   -import java.util.*;
10   -
11   -import cn.iocoder.yudao.module.mp.controller.admin.menu.vo.*;
12   -import cn.iocoder.yudao.module.mp.dal.dataobject.menu.WxMenuDO;
13   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
14   -
15   -import cn.iocoder.yudao.module.mp.convert.menu.WxMenuConvert;
16   -import cn.iocoder.yudao.module.mp.dal.mysql.menu.WxMenuMapper;
17   -
18   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
19   -import static cn.iocoder.yudao.module.mp.enums.ErrorCodeConstants.*;
20   -
21   -/**
22   - * 微信菜单 Service 实现类
23   - *
24   - * @author 芋道源码
25   - */
26   -@Service
27   -@Validated
28   -public class WxMenuServiceImpl implements WxMenuService {
29   -
30   - @Resource
31   - private WxMenuMapper wxMenuMapper;
32   -
33   - @Override
34   - public Integer createWxMenu(WxMenuCreateReqVO createReqVO) {
35   - // 插入
36   - WxMenuDO wxMenu = WxMenuConvert.INSTANCE.convert(createReqVO);
37   - wxMenuMapper.insert(wxMenu);
38   - // 返回
39   - return wxMenu.getId();
40   - }
41   -
42   - @Override
43   - public void updateWxMenu(WxMenuUpdateReqVO updateReqVO) {
44   - // 校验存在
45   - this.validateWxMenuExists(updateReqVO.getId());
46   - // 更新
47   - WxMenuDO updateObj = WxMenuConvert.INSTANCE.convert(updateReqVO);
48   - wxMenuMapper.updateById(updateObj);
49   - }
50   -
51   - @Override
52   - public void deleteWxMenu(Integer id) {
53   - // 校验存在
54   - this.validateWxMenuExists(id);
55   - // 删除
56   - wxMenuMapper.deleteById(id);
57   - }
58   -
59   - private void validateWxMenuExists(Integer id) {
60   - if (wxMenuMapper.selectById(id) == null) {
61   - throw exception(COMMON_NOT_EXISTS);
62   - }
63   - }
64   -
65   - @Override
66   - public WxMenuDO getWxMenu(Integer id) {
67   - return wxMenuMapper.selectById(id);
68   - }
69   -
70   - @Override
71   - public List<WxMenuDO> getWxMenuList(Collection<Integer> ids) {
72   - return wxMenuMapper.selectBatchIds(ids);
73   - }
74   -
75   - @Override
76   - public PageResult<WxMenuDO> getWxMenuPage(WxMenuPageReqVO pageReqVO) {
77   - return wxMenuMapper.selectPage(pageReqVO);
78   - }
79   -
80   - @Override
81   - public List<WxMenuDO> getWxMenuList(WxMenuExportReqVO exportReqVO) {
82   - return wxMenuMapper.selectList(exportReqVO);
83   - }
84   -
85   -}