mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	【代码优化】SYSTEM:微信小程序的订阅
This commit is contained in:
		@@ -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));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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字段里)
 | 
				
			||||||
@@ -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")
 | 
				
			||||||
@@ -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());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user