package com.cyksj.service.template.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.cyksj.common.EnvCommonService; import com.cyksj.common.constant.TemplateEnum; import com.cyksj.common.util.Jsons; import com.cyksj.config.WeChatConfig; import com.cyksj.mapper.gzh.UserGzhRelationMapper; import com.cyksj.model.dto.WxMpTemplateData; import com.cyksj.model.dto.WxMpTemplateMessage; import com.cyksj.model.entity.*; import com.cyksj.service.template.TemplateCommonService; import com.cyksj.service.wechat.WeChatService; import com.ejlchina.searcher.BeanSearcher; import com.ejlchina.searcher.util.MapBuilder; import com.ejlchina.searcher.util.MapUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.math.BigDecimal; /* *项目名: netflix *文件名: TemplateCommonServiceImpl *创建者: JavaZou *创建时间:2023/1/11 9:59 */ @Service @RequiredArgsConstructor @Slf4j public class TemplateCommonServiceImpl implements TemplateCommonService { private final EnvCommonService envCommonService; private final WeChatService weChatService; private final BeanSearcher beanSearcher; private final UserGzhRelationMapper userGzhRelationMapper; private final WeChatConfig weChatConfig; public void newOderSendMsgByType(OrderDon order, GoodsDon goodsDon, GoodsDonSku sku, User user, String toPeople) throws Exception { Long userId = order.getUserId(); WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(userId, TemplateEnum.NEW_ORDER_TEMPLATE.getDesc()); if (wxAppTemplateView != null) { WxMpTemplateMessage templateMessage = new WxMpTemplateMessage() .setToUser(toPeople) .setTemplateId(wxAppTemplateView.getTemplateId()) //TODO .setUrl(" "); WxMpTemplateMessage.TemplateData data = templateMessage.getData(); data.setFirst(new WxMpTemplateData("新订单通知!")); data.setKeyword1(new WxMpTemplateData(order.getOrderNo())); data.setKeyword2(new WxMpTemplateData(String.format("%s,%s", goodsDon.getTitle(), sku.getSpecVal()))); data.setKeyword3(new WxMpTemplateData(user == null ? "推广未登录用户" : user.getNickname())); data.setKeyword4(new WxMpTemplateData(order.getMoney().divide(BigDecimal.valueOf(100)).toString())); data.setKeyword5(new WxMpTemplateData(DateUtil.format(order.getCreatedTime(), "yyyy-MM-dd HH:mm:ss"))); data.setRemark(new WxMpTemplateData("点击查看详情")); weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage)); } } @Override public WxAppTemplateView getWxAppByUserId(Long userId, String templateMark) { UserGzhRelation userGzhRelation = userGzhRelationMapper.selectOne(Wrappers.lambdaQuery(UserGzhRelation.class) .eq(UserGzhRelation::getUserId, userId).last("limit 1")); MapBuilder builder = MapUtils.builder() .field(WxAppTemplateView::getRemark, templateMark); if (userGzhRelation == null) { builder.field(WxAppTemplateView::getAppId, weChatConfig.getAppid()); }else { builder.field(WxAppTemplateView::getWxAppId, userGzhRelation.getWxAppId()); } String type; if (EnvCommonService.active.equals(envCommonService.getEnv())) { type = EnvCommonService.active; } else { type = EnvCommonService.active_prd; } builder.field(WxAppTemplateView::getType, type); return beanSearcher.searchFirst(WxAppTemplateView.class, builder.build()); } @Override public void sendWxGzhQrCodeSuccessMsg(User user) throws Exception { Long userId = user.getId(); if (EnvCommonService.active.equals(envCommonService.getEnv())) { WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(userId, TemplateEnum.WX_GZH_QR_CODE_LOGIN.getDesc()); String url = String.format("%sauth/weChat?url=%s", envCommonService.getHost(), envCommonService.getDomain() + "yinhe/web/"); WxMpTemplateMessage templateMessage = new WxMpTemplateMessage() .setToUser(user.getOpenId()) .setTemplateId(wxAppTemplateView.getTemplateId()) .setUrl(url); WxMpTemplateMessage.TemplateData data = templateMessage.getData(); data.setFirst(new WxMpTemplateData("您已登录成功")); data.setKeyword1(new WxMpTemplateData("银河录像局")); data.setKeyword2(new WxMpTemplateData(DateUtil.format(DateTime.now(), "yyyy-MM-dd HH:mm:ss"))); data.setRemark(new WxMpTemplateData("欢迎使用银河录像局")); weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage)); } } }