【代码评审】SYSTEM:订阅消息

This commit is contained in:
YunaiV 2024-07-29 19:03:18 +08:00
parent 008b544f03
commit 512d68f793
6 changed files with 27 additions and 42 deletions

View File

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.trade.enums; package cn.iocoder.yudao.module.trade.enums;
// TODO @芋艿枚举
/** /**
* 通知模板枚举类 * 通知模板枚举类
* *
@ -8,6 +7,8 @@ package cn.iocoder.yudao.module.trade.enums;
*/ */
public interface MessageTemplateConstants { public interface MessageTemplateConstants {
//======================= 短信消息模版 =======================
String ORDER_DELIVERY = "order_delivery"; // 短信模版编号 String ORDER_DELIVERY = "order_delivery"; // 短信模版编号
String BROKERAGE_WITHDRAW_AUDIT_APPROVE = "brokerage_withdraw_audit_approve"; // 佣金提现审核通过 String BROKERAGE_WITHDRAW_AUDIT_APPROVE = "brokerage_withdraw_audit_approve"; // 佣金提现审核通过

View File

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.pay.enums; package cn.iocoder.yudao.module.pay.enums;
// TODO @芋艿枚举
/** /**
* 通知模板枚举类 * 通知模板枚举类
* *

View File

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.api.social.dto;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
@ -15,6 +14,7 @@ import java.util.Map;
@Data @Data
public class SocialWxSubscribeMessageSendReqDTO { public class SocialWxSubscribeMessageSendReqDTO {
// TODO @puhui999貌似使用 userId + userType 会不会更合理哈这样后端进行查询三方用户的绑定表~
/** /**
* 接收者用户 openid. * 接收者用户 openid.
* <pre> * <pre>
@ -27,58 +27,43 @@ public class SocialWxSubscribeMessageSendReqDTO {
private String toUser; private String toUser;
/** /**
* 所需下发的模板消息的id. * 模版消息编号
* <pre>
* 参数template_id
* 是否必填
* 描述 所需下发的模板消息的id
* </pre>
*/ */
@NotNull(message = "板消息的id不能为空") @NotNull(message = "模版消息编号不能为空")
private String templateId; private String templateId;
/** /**
* 点击模板卡片后的跳转页面仅限本小程序内的页面. * 点击模板卡片后的跳转页面仅限本小程序内的页面
* <pre> *
* 参数page * 支持带参数示例 index?foo=bar 该字段不填则模板无跳转
* 是否必填
* 描述 点击模板卡片后的跳转页面仅限本小程序内的页面支持带参数,示例index?foo=bar该字段不填则模板无跳转
* </pre>
*/ */
private String page; private String page;
/** /**
* 跳转小程序类型developer为开发版trial为体验版formal为正式版默认为正式版 * 跳转小程序类型
*
* developer 为开发版trial 为体验版formal 为正式版默认
* *
* 枚举 WxMaConstants.MiniProgramState * 枚举 WxMaConstants.MiniProgramState
*/ */
// TODO @puhui999这个非必填如果没有代码里去默认下
@NotNull(message = "跳转小程序类型不能为空") @NotNull(message = "跳转小程序类型不能为空")
private String miniprogramState; private String miniprogramState;
/** /**
* 进入小程序查看的语言类型支持zh_CN(简体中文)en_US(英文)zh_HK(繁体中文)zh_TW(繁体中文)默认为zh_CN * 进入小程序查看的语言类型
*
* zh_CN(简体中文)默认en_US(英文)zh_HK(繁体中文)zh_TW(繁体中文)
* *
* 枚举 WxMaConstants.MiniProgramLang * 枚举 WxMaConstants.MiniProgramLang
*/ */
// TODO @puhui999这个非必填如果没有代码里去默认下
@NotNull(message = "进入小程序查看的语言类型不能为空") @NotNull(message = "进入小程序查看的语言类型不能为空")
private String lang; private String lang;
/** /**
* 模板内容不填则下发空模板. * 模板内容的参数
* <pre>
* 参数data
* 是否必填
* 描述 模板内容不填则下发空模板
* </pre>
*/ */
private Map<String, String> messages; private Map<String, String> messages;
public SocialWxSubscribeMessageSendReqDTO addData(String key, String value) {
if (messages == null) {
messages = new HashMap<>();
}
messages.put(key, value);
return this;
}
} }

View File

@ -12,7 +12,7 @@ import lombok.Data;
public class SocialWxSubscribeTemplateRespDTO { public class SocialWxSubscribeTemplateRespDTO {
/** /**
* 添加至账号下的模板 id发送小程序订阅消息时所需 * 模版编号
*/ */
private String id; private String id;
@ -31,12 +31,11 @@ public class SocialWxSubscribeTemplateRespDTO {
*/ */
private String example; private String example;
// TODO @puhui999这个在 wxjava 里面有枚举字段么没得🤣
/** /**
* 模版类型 * 模版类型
* *
* 2 为一次性订阅 * 2为一次性订阅
* 3 为长期订阅 * 3为长期订阅
*/ */
private Integer type; private Integer type;

View File

@ -71,10 +71,10 @@ public class SocialClientController {
return success(BeanUtils.toBean(pageResult, SocialClientRespVO.class)); return success(BeanUtils.toBean(pageResult, SocialClientRespVO.class));
} }
//======================= TODO 测试发送订阅消息 =======================
@PostMapping("/send-subscribe-message") @PostMapping("/send-subscribe-message")
public void testSendSubscribeMessage(@RequestBody SocialWxSubscribeMessageSendReqDTO reqDTO) { @Operation(summary = "发送订阅消息") // 用于测试
@PreAuthorize("@ss.hasPermission('system:social-client:query')")
public void sendSubscribeMessage(@RequestBody SocialWxSubscribeMessageSendReqDTO reqDTO) {
socialClientService.sendSubscribeMessage(reqDTO, UserTypeEnum.MEMBER.getValue()); socialClientService.sendSubscribeMessage(reqDTO, UserTypeEnum.MEMBER.getValue());
} }

View File

@ -26,20 +26,21 @@ public interface SocialUserConvert {
@Mapping(source = "reqVO.type", target = "socialType") @Mapping(source = "reqVO.type", target = "socialType")
SocialUserBindReqDTO convert(Long userId, Integer userType, SocialUserBindReqVO reqVO); SocialUserBindReqDTO convert(Long userId, Integer userType, SocialUserBindReqVO reqVO);
// TODO @puhui999要不 convert 直接放到 service
default WxMaSubscribeMessage convert(SocialWxSubscribeMessageSendReqDTO reqDTO) { default WxMaSubscribeMessage convert(SocialWxSubscribeMessageSendReqDTO reqDTO) {
WxMaSubscribeMessage message = BeanUtils.toBean(reqDTO, WxMaSubscribeMessage.class); WxMaSubscribeMessage message = BeanUtils.toBean(reqDTO, WxMaSubscribeMessage.class);
Map<String, String> messages = reqDTO.getMessages(); Map<String, String> messages = reqDTO.getMessages();
if (CollUtil.isNotEmpty(messages)) { if (CollUtil.isNotEmpty(messages)) {
messages.keySet().forEach(key -> { messages.keySet().forEach(key -> findAndThen(messages, key, value -> message.addData(new WxMaSubscribeMessage.MsgData(key, value))));
findAndThen(messages, key, value -> message.addData(new WxMaSubscribeMessage.MsgData(key, value)));
});
} }
return message; return message;
} }
// TODO @puhui999要不 convert 直接放到 service 其实可以 BeanUtils.toBean(reqDTO, WxMaSubscribeMessage.class) 来搞的呀
@Mapping(target = "id", source = "priTmplId") @Mapping(target = "id", source = "priTmplId")
SocialWxSubscribeTemplateRespDTO convert(TemplateInfo templateInfo); SocialWxSubscribeTemplateRespDTO convert(TemplateInfo templateInfo);
// TODO @puhui999是不是用 CollectionUtils.convertList ok
default List<SocialWxSubscribeTemplateRespDTO> convertList(List<TemplateInfo> subscribeTemplate) { default List<SocialWxSubscribeTemplateRespDTO> convertList(List<TemplateInfo> subscribeTemplate) {
List<SocialWxSubscribeTemplateRespDTO> list = new ArrayList<>(); List<SocialWxSubscribeTemplateRespDTO> list = new ArrayList<>();
subscribeTemplate.forEach(templateInfo -> list.add(convert(templateInfo))); subscribeTemplate.forEach(templateInfo -> list.add(convert(templateInfo)));