TemplateCommonServiceImpl.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.cyksj.service.template.impl;
  2. import cn.hutool.core.date.DateTime;
  3. import cn.hutool.core.date.DateUtil;
  4. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5. import com.cyksj.common.EnvCommonService;
  6. import com.cyksj.common.constant.TemplateEnum;
  7. import com.cyksj.common.util.Jsons;
  8. import com.cyksj.config.WeChatConfig;
  9. import com.cyksj.mapper.gzh.UserGzhRelationMapper;
  10. import com.cyksj.model.dto.WxMpTemplateData;
  11. import com.cyksj.model.dto.WxMpTemplateMessage;
  12. import com.cyksj.model.entity.*;
  13. import com.cyksj.service.template.TemplateCommonService;
  14. import com.cyksj.service.wechat.WeChatService;
  15. import com.ejlchina.searcher.BeanSearcher;
  16. import com.ejlchina.searcher.util.MapBuilder;
  17. import com.ejlchina.searcher.util.MapUtils;
  18. import lombok.RequiredArgsConstructor;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.springframework.stereotype.Service;
  21. import java.math.BigDecimal;
  22. /*
  23. *项目名: netflix
  24. *文件名: TemplateCommonServiceImpl
  25. *创建者: JavaZou
  26. *创建时间:2023/1/11 9:59
  27. */
  28. @Service
  29. @RequiredArgsConstructor
  30. @Slf4j
  31. public class TemplateCommonServiceImpl implements TemplateCommonService {
  32. private final EnvCommonService envCommonService;
  33. private final WeChatService weChatService;
  34. private final BeanSearcher beanSearcher;
  35. private final UserGzhRelationMapper userGzhRelationMapper;
  36. private final WeChatConfig weChatConfig;
  37. public void newOderSendMsgByType(OrderDon order, GoodsDon goodsDon, GoodsDonSku sku, User user, String toPeople) throws Exception {
  38. Long userId = order.getUserId();
  39. WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(userId, TemplateEnum.NEW_ORDER_TEMPLATE.getDesc());
  40. if (wxAppTemplateView != null) {
  41. WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
  42. .setToUser(toPeople)
  43. .setTemplateId(wxAppTemplateView.getTemplateId())
  44. //TODO
  45. .setUrl(" ");
  46. WxMpTemplateMessage.TemplateData data = templateMessage.getData();
  47. data.setFirst(new WxMpTemplateData("新订单通知!"));
  48. data.setKeyword1(new WxMpTemplateData(order.getOrderNo()));
  49. data.setKeyword2(new WxMpTemplateData(String.format("%s,%s", goodsDon.getTitle(), sku.getSpecVal())));
  50. data.setKeyword3(new WxMpTemplateData(user == null ? "推广未登录用户" : user.getNickname()));
  51. data.setKeyword4(new WxMpTemplateData(order.getMoney().divide(BigDecimal.valueOf(100)).toString()));
  52. data.setKeyword5(new WxMpTemplateData(DateUtil.format(order.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
  53. data.setRemark(new WxMpTemplateData("点击查看详情"));
  54. weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
  55. }
  56. }
  57. @Override
  58. public WxAppTemplateView getWxAppByUserId(Long userId, String templateMark) {
  59. UserGzhRelation userGzhRelation = userGzhRelationMapper.selectOne(Wrappers.lambdaQuery(UserGzhRelation.class)
  60. .eq(UserGzhRelation::getUserId, userId).last("limit 1"));
  61. MapBuilder builder = MapUtils.builder()
  62. .field(WxAppTemplateView::getRemark, templateMark);
  63. if (userGzhRelation == null) {
  64. builder.field(WxAppTemplateView::getAppId, weChatConfig.getAppid());
  65. }else {
  66. builder.field(WxAppTemplateView::getWxAppId, userGzhRelation.getWxAppId());
  67. }
  68. String type;
  69. if (EnvCommonService.active.equals(envCommonService.getEnv())) {
  70. type = EnvCommonService.active;
  71. } else {
  72. type = EnvCommonService.active_prd;
  73. }
  74. builder.field(WxAppTemplateView::getType, type);
  75. return beanSearcher.searchFirst(WxAppTemplateView.class, builder.build());
  76. }
  77. @Override
  78. public void sendWxGzhQrCodeSuccessMsg(User user) throws Exception {
  79. Long userId = user.getId();
  80. if (EnvCommonService.active.equals(envCommonService.getEnv())) {
  81. WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(userId, TemplateEnum.WX_GZH_QR_CODE_LOGIN.getDesc());
  82. String url = String.format("%sauth/weChat?url=%s", envCommonService.getHost(), envCommonService.getDomain() + "yinhe/web/");
  83. WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
  84. .setToUser(user.getOpenId())
  85. .setTemplateId(wxAppTemplateView.getTemplateId())
  86. .setUrl(url);
  87. WxMpTemplateMessage.TemplateData data = templateMessage.getData();
  88. data.setFirst(new WxMpTemplateData("您已登录成功"));
  89. data.setKeyword1(new WxMpTemplateData("银河录像局"));
  90. data.setKeyword2(new WxMpTemplateData(DateUtil.format(DateTime.now(), "yyyy-MM-dd HH:mm:ss")));
  91. data.setRemark(new WxMpTemplateData("欢迎使用银河录像局"));
  92. weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
  93. }
  94. }
  95. }