【代码优化】SYSTEM:微信小程序的订阅

This commit is contained in:
YunaiV 2024-08-01 23:21:14 +08:00
parent abe2f8580b
commit 7de546385a
4 changed files with 13 additions and 12 deletions

View File

@ -63,16 +63,16 @@ public class AppSocialUserController {
@PostMapping("/wxa-qrcode") @PostMapping("/wxa-qrcode")
@Operation(summary = "获得微信小程序码(base64 image)") @Operation(summary = "获得微信小程序码(base64 image)")
public CommonResult<String> getWxaQrcode(@RequestBody @Valid AppSocialWxQrcodeReqVO reqVO) { public CommonResult<String> getWxaQrcode(@RequestBody @Valid AppSocialWxaQrcodeReqVO reqVO) {
byte[] wxQrcode = socialClientApi.getWxaQrcode(BeanUtils.toBean(reqVO, SocialWxQrcodeReqDTO.class)); byte[] wxQrcode = socialClientApi.getWxaQrcode(BeanUtils.toBean(reqVO, SocialWxQrcodeReqDTO.class));
return success(Base64.encode(wxQrcode)); return success(Base64.encode(wxQrcode));
} }
@GetMapping("/get-subscribe-template-list") @GetMapping("/get-subscribe-template-list")
@Operation(summary = "获得微信小程订阅模板列表") @Operation(summary = "获得微信小程订阅模板列表")
public CommonResult<List<AppSocialWxSubscribeTemplateRespVO>> getSubscribeTemplateList() { public CommonResult<List<AppSocialWxaSubscribeTemplateRespVO>> getSubscribeTemplateList() {
List<SocialWxaSubscribeTemplateRespDTO> template = socialClientApi.getWxaSubscribeTemplateList(UserTypeEnum.MEMBER.getValue()); List<SocialWxaSubscribeTemplateRespDTO> template = socialClientApi.getWxaSubscribeTemplateList(UserTypeEnum.MEMBER.getValue());
return success(BeanUtils.toBean(template, AppSocialWxSubscribeTemplateRespVO.class)); return success(BeanUtils.toBean(template, AppSocialWxaSubscribeTemplateRespVO.class));
} }
} }

View File

@ -7,7 +7,7 @@ import lombok.Data;
@Schema(description = "用户 APP - 获得获取小程序码 Request VO") @Schema(description = "用户 APP - 获得获取小程序码 Request VO")
@Data @Data
public class AppSocialWxQrcodeReqVO { public class AppSocialWxaQrcodeReqVO {
/** /**
* 页面路径不能携带参数参数请放在scene字段里 * 页面路径不能携带参数参数请放在scene字段里

View File

@ -5,7 +5,7 @@ import lombok.Data;
@Schema(description = "用户 APP - 获得小程序订阅模版 Response VO") @Schema(description = "用户 APP - 获得小程序订阅模版 Response VO")
@Data @Data
public class AppSocialWxSubscribeTemplateRespVO { public class AppSocialWxaSubscribeTemplateRespVO {
@Schema(description = "模版编号", requiredMode = Schema.RequiredMode.REQUIRED, @Schema(description = "模版编号", requiredMode = Schema.RequiredMode.REQUIRED,
example = "9Aw5ZV1j9xdWTFEkqCpZ7mIBbSC34khK55OtzUPl0rU") example = "9Aw5ZV1j9xdWTFEkqCpZ7mIBbSC34khK55OtzUPl0rU")

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.api.social.dto.*; import cn.iocoder.yudao.module.system.api.social.dto.*;
import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum;
import cn.iocoder.yudao.module.system.service.social.SocialClientService; import cn.iocoder.yudao.module.system.service.social.SocialClientService;
import cn.iocoder.yudao.module.system.service.social.SocialUserService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxJsapiSignature; import me.chanjar.weixin.common.bean.WxJsapiSignature;
@ -33,7 +34,7 @@ public class SocialClientApiImpl implements SocialClientApi {
@Resource @Resource
private SocialClientService socialClientService; private SocialClientService socialClientService;
@Resource @Resource
public SocialUserApi socialUserApi; private SocialUserService socialUserService;
@Override @Override
public String getAuthorizeUrl(Integer socialType, Integer userType, String redirectUri) { public String getAuthorizeUrl(Integer socialType, Integer userType, String redirectUri) {
@ -68,29 +69,29 @@ public class SocialClientApiImpl implements SocialClientApi {
@Override @Override
public void sendWxaSubscribeMessage(SocialWxaSubscribeMessageSendReqDTO reqDTO) { public void sendWxaSubscribeMessage(SocialWxaSubscribeMessageSendReqDTO reqDTO) {
// 1.1 获得订阅模版列表 // 1.1 获得订阅模版列表
List<SocialWxaSubscribeTemplateRespDTO> templateList = getWxaSubscribeTemplateList(reqDTO.getUserType()); List<TemplateInfo> templateList = socialClientService.getSubscribeTemplateList(reqDTO.getUserType());
if (CollUtil.isEmpty(templateList)) { if (CollUtil.isEmpty(templateList)) {
log.warn("[sendSubscribeMessage][reqDTO({}) 发送订阅消息失败,原因:没有找到订阅模板]", reqDTO); log.warn("[sendSubscribeMessage][reqDTO({}) 发送订阅消息失败,原因:没有找到订阅模板]", reqDTO);
return; return;
} }
// 1.2 获得需要使用的模版 // 1.2 获得需要使用的模版
SocialWxaSubscribeTemplateRespDTO template = findOne(templateList, item -> TemplateInfo template = findOne(templateList, item ->
ObjUtil.equal(item.getTitle(), reqDTO.getTemplateTitle())); ObjUtil.equal(item.getTitle(), reqDTO.getTemplateTitle()));
if (template == null) { if (template == null) {
log.warn("[sendSubscribeMessage][reqDTO({}) 发送订阅消息失败,原因:没有找到订阅模板]", reqDTO); log.warn("[sendWxaSubscribeMessage][reqDTO({}) 发送订阅消息失败,原因:没有找到订阅模板]", reqDTO);
return; return;
} }
// 2. 获得社交用户 // 2. 获得社交用户
SocialUserRespDTO socialUser = socialUserApi.getSocialUserByUserId(reqDTO.getUserType(), reqDTO.getUserId(), SocialUserRespDTO socialUser = socialUserService.getSocialUserByUserId(reqDTO.getUserType(), reqDTO.getUserId(),
SocialTypeEnum.WECHAT_MINI_APP.getType()); SocialTypeEnum.WECHAT_MINI_APP.getType());
if (StrUtil.isBlankIfStr(socialUser.getOpenid())) { if (StrUtil.isBlankIfStr(socialUser.getOpenid())) {
log.warn("[sendSubscribeMessage][reqDTO({}) 发送订阅消息失败,原因:会员 openid 缺失]", reqDTO); log.warn("[sendWxaSubscribeMessage][reqDTO({}) 发送订阅消息失败,原因:会员 openid 缺失]", reqDTO);
return; return;
} }
// 3. 发送订阅消息 // 3. 发送订阅消息
socialClientService.sendSubscribeMessage(reqDTO, template.getId(), socialUser.getOpenid()); socialClientService.sendSubscribeMessage(reqDTO, template.getPriTmplId(), socialUser.getOpenid());
} }
} }