Commit 512d68f79317290ba565b0a15080201823c7f73c
1 parent
008b544f
【代码评审】SYSTEM:订阅消息
Showing
6 changed files
with
27 additions
and
42 deletions
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/MessageTemplateConstants.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.enums; |
| 2 | 2 | |
| 3 | -// TODO @芋艿:枚举 | |
| 4 | 3 | /** |
| 5 | 4 | * 通知模板枚举类 |
| 6 | 5 | * |
| ... | ... | @@ -8,6 +7,8 @@ package cn.iocoder.yudao.module.trade.enums; |
| 8 | 7 | */ |
| 9 | 8 | public interface MessageTemplateConstants { |
| 10 | 9 | |
| 10 | + //======================= 短信消息模版 ======================= | |
| 11 | + | |
| 11 | 12 | String ORDER_DELIVERY = "order_delivery"; // 短信模版编号 |
| 12 | 13 | |
| 13 | 14 | String BROKERAGE_WITHDRAW_AUDIT_APPROVE = "brokerage_withdraw_audit_approve"; // 佣金提现(审核通过) | ... | ... |
yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/enums/MessageTemplateConstants.java
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/social/dto/SocialWxSubscribeMessageSendReqDTO.java
| ... | ... | @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.api.social.dto; |
| 3 | 3 | import jakarta.validation.constraints.NotNull; |
| 4 | 4 | import lombok.Data; |
| 5 | 5 | |
| 6 | -import java.util.HashMap; | |
| 7 | 6 | import java.util.Map; |
| 8 | 7 | |
| 9 | 8 | /** |
| ... | ... | @@ -15,6 +14,7 @@ import java.util.Map; |
| 15 | 14 | @Data |
| 16 | 15 | public class SocialWxSubscribeMessageSendReqDTO { |
| 17 | 16 | |
| 17 | + // TODO @puhui999:貌似使用 userId + userType 会不会更合理哈。这样,后端进行查询三方用户的绑定表~ | |
| 18 | 18 | /** |
| 19 | 19 | * 接收者(用户)的 openid. |
| 20 | 20 | * <pre> |
| ... | ... | @@ -27,58 +27,43 @@ public class SocialWxSubscribeMessageSendReqDTO { |
| 27 | 27 | private String toUser; |
| 28 | 28 | |
| 29 | 29 | /** |
| 30 | - * 所需下发的模板消息的id. | |
| 31 | - * <pre> | |
| 32 | - * 参数:template_id | |
| 33 | - * 是否必填: 是 | |
| 34 | - * 描述: 所需下发的模板消息的id | |
| 35 | - * </pre> | |
| 30 | + * 模版消息编号 | |
| 36 | 31 | */ |
| 37 | - @NotNull(message = "模板消息的id不能为空") | |
| 32 | + @NotNull(message = "模版消息编号不能为空") | |
| 38 | 33 | private String templateId; |
| 39 | 34 | |
| 40 | 35 | /** |
| 41 | - * 点击模板卡片后的跳转页面,仅限本小程序内的页面. | |
| 42 | - * <pre> | |
| 43 | - * 参数:page | |
| 44 | - * 是否必填: 否 | |
| 45 | - * 描述: 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 | |
| 46 | - * </pre> | |
| 36 | + * 点击模板卡片后的跳转页面,仅限本小程序内的页面 | |
| 37 | + * | |
| 38 | + * 支持带参数,(示例 index?foo=bar )。该字段不填则模板无跳转。 | |
| 47 | 39 | */ |
| 48 | 40 | private String page; |
| 49 | 41 | |
| 50 | 42 | /** |
| 51 | - * 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 | |
| 43 | + * 跳转小程序类型 | |
| 44 | + * | |
| 45 | + * developer 为开发版;trial 为体验版;formal 为正式版【默认】 | |
| 52 | 46 | * |
| 53 | 47 | * 枚举 WxMaConstants.MiniProgramState |
| 54 | 48 | */ |
| 49 | + // TODO @puhui999:这个非必填。如果没有,代码里去默认下; | |
| 55 | 50 | @NotNull(message = "跳转小程序类型不能为空") |
| 56 | 51 | private String miniprogramState; |
| 57 | 52 | |
| 58 | 53 | /** |
| 59 | - * 进入小程序查看的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN | |
| 54 | + * 进入小程序查看的语言类型 | |
| 55 | + * | |
| 56 | + * zh_CN(简体中文)【默认】、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文) | |
| 60 | 57 | * |
| 61 | 58 | * 枚举 WxMaConstants.MiniProgramLang |
| 62 | 59 | */ |
| 60 | + // TODO @puhui999:这个非必填。如果没有,代码里去默认下; | |
| 63 | 61 | @NotNull(message = "进入小程序查看的语言类型不能为空") |
| 64 | 62 | private String lang; |
| 65 | 63 | |
| 66 | 64 | /** |
| 67 | - * 模板内容,不填则下发空模板. | |
| 68 | - * <pre> | |
| 69 | - * 参数:data | |
| 70 | - * 是否必填: 是 | |
| 71 | - * 描述: 模板内容,不填则下发空模板 | |
| 72 | - * </pre> | |
| 65 | + * 模板内容的参数 | |
| 73 | 66 | */ |
| 74 | 67 | private Map<String, String> messages; |
| 75 | 68 | |
| 76 | - public SocialWxSubscribeMessageSendReqDTO addData(String key, String value) { | |
| 77 | - if (messages == null) { | |
| 78 | - messages = new HashMap<>(); | |
| 79 | - } | |
| 80 | - messages.put(key, value); | |
| 81 | - return this; | |
| 82 | - } | |
| 83 | - | |
| 84 | 69 | } | ... | ... |
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/social/dto/SocialWxSubscribeTemplateRespDTO.java
| ... | ... | @@ -12,7 +12,7 @@ import lombok.Data; |
| 12 | 12 | public class SocialWxSubscribeTemplateRespDTO { |
| 13 | 13 | |
| 14 | 14 | /** |
| 15 | - * 添加至账号下的模板 id,发送小程序订阅消息时所需 | |
| 15 | + * 模版编号 | |
| 16 | 16 | */ |
| 17 | 17 | private String id; |
| 18 | 18 | |
| ... | ... | @@ -31,12 +31,11 @@ public class SocialWxSubscribeTemplateRespDTO { |
| 31 | 31 | */ |
| 32 | 32 | private String example; |
| 33 | 33 | |
| 34 | - // TODO @puhui999:这个在 wxjava 里面,有枚举字段么?没得🤣 | |
| 35 | 34 | /** |
| 36 | 35 | * 模版类型 |
| 37 | 36 | * |
| 38 | - * 2 为一次性订阅 | |
| 39 | - * 3 为长期订阅 | |
| 37 | + * 2:为一次性订阅 | |
| 38 | + * 3:为长期订阅 | |
| 40 | 39 | */ |
| 41 | 40 | private Integer type; |
| 42 | 41 | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/socail/SocialClientController.java
| ... | ... | @@ -71,10 +71,10 @@ public class SocialClientController { |
| 71 | 71 | return success(BeanUtils.toBean(pageResult, SocialClientRespVO.class)); |
| 72 | 72 | } |
| 73 | 73 | |
| 74 | - //======================= TODO 测试发送订阅消息 ======================= | |
| 75 | - | |
| 76 | 74 | @PostMapping("/send-subscribe-message") |
| 77 | - public void testSendSubscribeMessage(@RequestBody SocialWxSubscribeMessageSendReqDTO reqDTO) { | |
| 75 | + @Operation(summary = "发送订阅消息") // 用于测试 | |
| 76 | + @PreAuthorize("@ss.hasPermission('system:social-client:query')") | |
| 77 | + public void sendSubscribeMessage(@RequestBody SocialWxSubscribeMessageSendReqDTO reqDTO) { | |
| 78 | 78 | socialClientService.sendSubscribeMessage(reqDTO, UserTypeEnum.MEMBER.getValue()); |
| 79 | 79 | } |
| 80 | 80 | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/social/SocialUserConvert.java
| ... | ... | @@ -26,20 +26,21 @@ public interface SocialUserConvert { |
| 26 | 26 | @Mapping(source = "reqVO.type", target = "socialType") |
| 27 | 27 | SocialUserBindReqDTO convert(Long userId, Integer userType, SocialUserBindReqVO reqVO); |
| 28 | 28 | |
| 29 | + // TODO @puhui999:要不 convert 直接放到 service 里。 | |
| 29 | 30 | default WxMaSubscribeMessage convert(SocialWxSubscribeMessageSendReqDTO reqDTO) { |
| 30 | 31 | WxMaSubscribeMessage message = BeanUtils.toBean(reqDTO, WxMaSubscribeMessage.class); |
| 31 | 32 | Map<String, String> messages = reqDTO.getMessages(); |
| 32 | 33 | if (CollUtil.isNotEmpty(messages)) { |
| 33 | - messages.keySet().forEach(key -> { | |
| 34 | - findAndThen(messages, key, value -> message.addData(new WxMaSubscribeMessage.MsgData(key, value))); | |
| 35 | - }); | |
| 34 | + messages.keySet().forEach(key -> findAndThen(messages, key, value -> message.addData(new WxMaSubscribeMessage.MsgData(key, value)))); | |
| 36 | 35 | } |
| 37 | 36 | return message; |
| 38 | 37 | } |
| 39 | 38 | |
| 39 | + // TODO @puhui999:要不 convert 直接放到 service 里。其实可以 BeanUtils.toBean(reqDTO, WxMaSubscribeMessage.class) 来搞的呀。 | |
| 40 | 40 | @Mapping(target = "id", source = "priTmplId") |
| 41 | 41 | SocialWxSubscribeTemplateRespDTO convert(TemplateInfo templateInfo); |
| 42 | 42 | |
| 43 | + // TODO @puhui999:是不是用 CollectionUtils.convertList 就 ok 啦。 | |
| 43 | 44 | default List<SocialWxSubscribeTemplateRespDTO> convertList(List<TemplateInfo> subscribeTemplate) { |
| 44 | 45 | List<SocialWxSubscribeTemplateRespDTO> list = new ArrayList<>(); |
| 45 | 46 | subscribeTemplate.forEach(templateInfo -> list.add(convert(templateInfo))); | ... | ... |