SpotifySendMsgServiceImpl.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package com.cyksj.service.mange.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.cyksj.common.EnvCommonService;
  5. import com.cyksj.common.constant.TemplateEnum;
  6. import com.cyksj.common.util.Jsons;
  7. import com.cyksj.mapper.SpotifyUnLimitRecordMapper;
  8. import com.cyksj.mapper.UserMapper;
  9. import com.cyksj.model.dto.WxMpTemplateData;
  10. import com.cyksj.model.dto.WxMpTemplateMessage;
  11. import com.cyksj.model.entity.SpotifyUnLimitRecord;
  12. import com.cyksj.model.entity.User;
  13. import com.cyksj.model.views.WxAppTemplateView;
  14. import com.cyksj.service.mange.SpotifySendMsgService;
  15. import com.cyksj.service.template.TemplateCommonService;
  16. import com.cyksj.service.wechat.WeChatService;
  17. import lombok.RequiredArgsConstructor;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.springframework.stereotype.Service;
  20. import javax.annotation.PostConstruct;
  21. /*
  22. *项目名: netflix
  23. *文件名: SpotifySendMsgServiceImpl
  24. *创建者: JavaZou
  25. *创建时间:2022/12/21 16:01
  26. */
  27. @Service
  28. @Slf4j
  29. @RequiredArgsConstructor
  30. public class SpotifySendMsgServiceImpl implements SpotifySendMsgService {
  31. private final EnvCommonService envCommonService;
  32. private final WeChatService weChatService;
  33. private final UserMapper userMapper;
  34. private final SpotifyUnLimitRecordMapper spotifyUnLimitRecordMapper;
  35. private static String spotifyUnLimitSuccessUrl;
  36. private final TemplateCommonService templateCommonService;
  37. @PostConstruct
  38. public void init() {
  39. String host = envCommonService.getHost();
  40. String domain = envCommonService.getDomain();
  41. String redirectUrl = String.format("%s%s", domain, "yinhe/web/?temp=couponId?1?goodsId?4?skuId?14");
  42. spotifyUnLimitSuccessUrl = String.format("%sauth/weChat?url=%s", host, redirectUrl);
  43. }
  44. @Override
  45. public void sendSpotifyUnLimitSuccessMsg(SpotifyUnLimitRecord record) throws Exception {
  46. if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
  47. SpotifyUnLimitRecord unLimitRecord = spotifyUnLimitRecordMapper.selectById(record.getId());
  48. if (unLimitRecord != null && !unLimitRecord.getIsSend()) {
  49. User user = userMapper.selectById(unLimitRecord.getUserId());
  50. if (user != null && StrUtil.isNotBlank(user.getOpenId())) {
  51. String openId = user.getOpenId();
  52. WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(openId, TemplateEnum.SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_TEMPLATE.getDesc());
  53. if (wxAppTemplateView != null) {
  54. WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
  55. .setToUser(openId)
  56. .setTemplateId(wxAppTemplateView.getTemplateId())
  57. .setUrl(spotifyUnLimitSuccessUrl);
  58. WxMpTemplateMessage.TemplateData data = templateMessage.getData();
  59. data.setFirst(new WxMpTemplateData("您的Spotify账号登录限制解除成功"));
  60. data.setKeyword1(new WxMpTemplateData(user.getNickname()));
  61. data.setKeyword2(new WxMpTemplateData(DateUtil.format(unLimitRecord.getUpdateTime(), "yyyy-MM-dd HH:mm:ss")));
  62. data.setRemark(new WxMpTemplateData("建议您购买Spotify年付会员,无需每过14天解除限制,点击了解"));
  63. weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
  64. unLimitRecord.setIsSend(true);
  65. spotifyUnLimitRecordMapper.updateById(unLimitRecord);
  66. }
  67. }
  68. }
  69. }
  70. }
  71. }