【代码评审】SYSTEM:微信小程序的订阅消息

This commit is contained in:
YunaiV
2024-07-24 19:30:28 +08:00
parent b917d92af5
commit 7f87f26f3a
9 changed files with 31 additions and 14 deletions

View File

@ -57,7 +57,7 @@ public interface SocialClientApi {
List<SocialWxSubscribeTemplateRespDTO> getSubscribeTemplate();
/**
* 发送订阅消息
* 发送微信小程序订阅消息
*
* @param reqDTO 请求
*/

View File

@ -6,6 +6,7 @@ import lombok.Data;
import java.util.ArrayList;
import java.util.List;
// TODO @puhui991参考 SocialWxQrcodeReqDTO可以 @see 文档。这样注释会更见见一点。2是不是少了 SendSocialWxSubscribeMessageSendReqDTO
/**
* 微信小程序订阅消息 Request DTO
*
@ -14,6 +15,7 @@ import java.util.List;
@Data
public class SocialWxSubscribeMessageReqDTO {
// TODO @puhui999参数校验
/**
* 接收者(用户)的 openid.
* <pre>
@ -58,6 +60,7 @@ public class SocialWxSubscribeMessageReqDTO {
*/
private String lang;
// TODO @puhui999是必须 List<KeyValue<String, String>>,还是 Map<String, String 即可)
/**
* 模板内容,不填则下发空模板.
* <pre>

View File

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

View File

@ -72,6 +72,7 @@ public class SocialClientController {
//======================= TODO 测试发送订阅消息 =======================
// TODO @puhui999这个接口其实可以留着。然后把参数挪到 .http 文件。先直接用 SocialWxSubscribeMessageReqDTO 接参数
@PostMapping("/send-subscribe-message")
public void testSendSubscribeMessage() {
SocialWxSubscribeMessageReqDTO reqDTO = new SocialWxSubscribeMessageReqDTO().setLang("zh_CN")

View File

@ -81,7 +81,7 @@ public interface SocialClientService {
List<TemplateInfo> getSubscribeTemplate();
/**
* 发送订阅消息
* 发送微信小程序订阅消息
*
* @param reqDTO 请求
*/

View File

@ -236,6 +236,7 @@ public class SocialClientServiceImpl implements SocialClientService {
try {
return service.getUserService().getPhoneNoInfo(phoneCode);
} catch (WxErrorException e) {
// TODO @puhui999这里的日志reqDTO 要打进去
log.error("[getPhoneNoInfo][userType({}) phoneCode({}) 获得手机号失败]", userType, phoneCode, e);
throw exception(SOCIAL_CLIENT_WEIXIN_MINI_APP_PHONE_CODE_ERROR);
}
@ -262,11 +263,12 @@ public class SocialClientServiceImpl implements SocialClientService {
@Override
public List<TemplateInfo> getSubscribeTemplate() {
// TODO @puhui999这个 userType 最好通过参数,传递过来;然后这个方法名,貌似叫 getSubscribeTemplateList 更合适哈;
WxMaService service = getWxMaService(UserTypeEnum.MEMBER.getValue());
try {
WxMaSubscribeService subscribeService = service.getSubscribeService();
return subscribeService.getTemplateList();
}catch (WxErrorException e) {
} catch (WxErrorException e) {
log.error("[getSubscribeTemplate][获得小程序订阅消息模版]", e);
throw exception(SOCIAL_CLIENT_WEIXIN_MINI_APP_SUBSCRIBE_TEMPLATE_ERROR);
}
@ -274,13 +276,15 @@ public class SocialClientServiceImpl implements SocialClientService {
@Override
public void sendSubscribeMessage(SocialWxSubscribeMessageReqDTO reqDTO) {
// TODO @puhui999这个 userType 最好通过参数,
WxMaService service = getWxMaService(UserTypeEnum.MEMBER.getValue());
try {
WxMaSubscribeService subscribeService = service.getSubscribeService();
WxMaSubscribeMessage message = BeanUtils.toBean(reqDTO, WxMaSubscribeMessage.class);
reqDTO.getMessages().forEach(item-> message.addData(new WxMaSubscribeMessage.MsgData(item.getKey(), item.getValue())));
subscribeService.sendSubscribeMsg(message);
}catch (WxErrorException e) {
} catch (WxErrorException e) {
// TODO @puhui999这里的日志reqDTO 要打进去
log.error("[sendSubscribeMessage][发送小程序订阅消息]", e);
throw exception(SOCIAL_CLIENT_WEIXIN_MINI_APP_SUBSCRIBE_MESSAGE_ERROR);
}