From 7382e7200e447b0fc3764ba2efd49f05bf227039 Mon Sep 17 00:00:00 2001 From: luozukai Date: Fri, 8 Mar 2019 15:00:43 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=B6=88=E6=81=AF=E7=BB=84=E4=BB=B6][?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0][=E6=B7=BB=E5=8A=A0=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E9=80=9A=E7=9F=A5]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/domain/po/SmartAppMsg.java | 28 +++- .../impl/SendSmartAppMsgServiceImpl.java | 16 ++- .../impl/WxCouponOrderServiceImpl.java | 123 ++++++------------ 3 files changed, 76 insertions(+), 91 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/SmartAppMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/SmartAppMsg.java index d13301b6f..14e938ba9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/SmartAppMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/SmartAppMsg.java @@ -10,20 +10,38 @@ import java.util.List; public class SmartAppMsg extends BaseMsg { private static final long serialVersionUID = 223232132183760321L; + //小程序的appId + private String appId; private String tenantId; private String to; private String from; - private String templateId; private Integer templateType; + private String gotopage; + private String emphasisKeyword; private List templateDataList; + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getEmphasisKeyword() { + return emphasisKeyword; + } + + public void setEmphasisKeyword(String emphasisKeyword) { + this.emphasisKeyword = emphasisKeyword; + } - public String getTemplateId() { - return templateId; + public String getGotopage() { + return gotopage; } - public void setTemplateId(String templateId) { - this.templateId = templateId; + public void setGotopage(String gotopage) { + this.gotopage = gotopage; } public String getTenantId() { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/SendSmartAppMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/SendSmartAppMsgServiceImpl.java index f77b3e117..6c22ef120 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/SendSmartAppMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/SendSmartAppMsgServiceImpl.java @@ -7,6 +7,8 @@ import com.iformall.domain.po.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxTemplateMsgMapper; import com.iformall.service.MsgSendService; +import com.iformall.service.WxAppinfoService; +import com.iformall.utils.MaUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -24,14 +26,18 @@ public class SendSmartAppMsgServiceImpl implements MsgSendService { @Autowired private WxTemplateMsgMapper wxTemplateMsgMapper; @Autowired - private WxMaService wxMaService; + private WxAppinfoService wxAppinfoService; @Override public void send(BaseMsg baseMsg) throws Exception{ SmartAppMsg smartAppMsg = (SmartAppMsg)baseMsg; WxTemplateMsg msg = null; - WxMaTemplateMessage templateMessage = null; + WxMaTemplateMessage templateMessage; + WxAppinfo appInfo = wxAppinfoService.getByAppId(smartAppMsg.getAppId()); + WxMaService wxMaService = MaUtil.getWeappService(appInfo); + + //查询信息模板 WxTemplateMsg msgQ = new WxTemplateMsg(); msgQ.setTenantId(smartAppMsg.getTenantId()); msgQ.setType(smartAppMsg.getTemplateType()); @@ -53,10 +59,10 @@ public class SendSmartAppMsgServiceImpl implements MsgSendService { templateMessage = WxMaTemplateMessage.builder() .toUser(smartAppMsg.getTo()) .formId(smartAppMsg.getFrom()) // 微信支付的formId是prepayId - .page("pages/index/index") + .page(smartAppMsg.getGotopage()) .data(smartAppMsg.getTemplateDataList()) - .templateId(smartAppMsg.getTemplateId()) - .emphasisKeyword("keyword1.DATA") + .templateId(msg.getTemplateId()) + .emphasisKeyword(smartAppMsg.getEmphasisKeyword()) .build(); wxMaService.getMsgService().sendTemplateMsg(templateMessage); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index 2e629385b..54cb42a71 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -19,6 +19,7 @@ import com.iformall.domain.vo.*; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; +import com.iformall.mq.MqBaseProducer; import com.iformall.service.*; import com.iformall.utils.Constant; import com.iformall.utils.DateUtils; @@ -100,6 +101,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Autowired WxCouponChannelMapper wxCouponChannelMapper; + @Autowired + MqBaseProducer mqBaseProducer; + @Override public PageInfo listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record)); @@ -287,11 +291,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } catch (Exception e) { e.printStackTrace(); } - - } - public void downFile(String filePath, String filename, HttpServletResponse response, HttpServletRequest req) throws IOException { try { @@ -547,7 +548,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } // 5. get app info - WxAppinfo appInfo = wxAppinfoService.getByAppId(user.getAppId()); +// WxAppinfo appInfo = wxAppinfoService.getByAppId(user.getAppId()); // 6. get payOrder info WxPayOrder payOrder = null; @@ -568,7 +569,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { throw new MallinkException(ErrorCode.PREPAY_ID_IS_EMPTY); } - WxMaService wxMaService = MaUtil.getWeappService(appInfo); +// WxMaService wxMaService = MaUtil.getWeappService(appInfo); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); String couponDetail = ""; @@ -576,91 +577,51 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { couponDetail = "满" + coupon.getUsePriceStr() + "减" + coupon.getPriceStr(); } - WxTemplateMsg msg = null; - WxMaTemplateMessage templateMessage = null; + SmartAppMsg smartAppMsg; if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { - WxTemplateMsg msgQ = new WxTemplateMsg(); - msgQ.setTenantId(couponOrder.getTenantId()); - msgQ.setType(EnumTemplateType.VERIFY_SUCCESS.getCode()); - List list = wxTemplateMsgMapper.select(msgQ); - if (list.size() > 0) { - msg = list.get(0); - } - if (msg == null) { - logger.error("找不到模板Id"); - throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); - } String gotopage = "pages/index/index"; String notes = ""; if (hadSentCoupon) { gotopage = "pages/couponorder/index/index"; notes = "您有新的券"; } - /** - * 核销成功 - * 核销金额 {{keyword1.DATA}} - * 商家名称 {{keyword2.DATA}} - * 商品 {{keyword3.DATA}} - * 商品描述 {{keyword4.DATA}} - * 订单金额 {{keyword5.DATA}} - * 核销时间 {{keyword6.DATA}} - * 温馨提示 {{keyword7.DATA}} - * - */ - templateMessage = WxMaTemplateMessage.builder() - .toUser(user.getOpenId()) - .formId(payOrder.getPrepayId()) // 微信支付的formId是prepayId - .page(gotopage) - .data(Lists.newArrayList( - new WxMaTemplateData("keyword1", coupon.getPriceStr() + "元", "#173177"), - new WxMaTemplateData("keyword2", merchant.getName(), "#173177"), - new WxMaTemplateData("keyword3", coupon.getTitle(), "#173177"), - new WxMaTemplateData("keyword4", couponDetail, "#173177"), - new WxMaTemplateData("keyword5", coupon.getSalePriceStr() + "元", "#173177"), - new WxMaTemplateData("keyword6", dateFormat.format(new Date()), "#173177"), - new WxMaTemplateData("keyword7", notes, "#173177")) - ) - .templateId(msg.getTemplateId()) - .emphasisKeyword("keyword1.DATA") - .build(); + //mq发送小程序消息 + smartAppMsg = new SmartAppMsg(); + smartAppMsg.setAppId(user.getAppId()); + smartAppMsg.setTenantId(couponOrder.getTenantId()); + smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_SUCCESS.getCode()); + smartAppMsg.setGotopage(gotopage); + smartAppMsg.setTo(user.getOpenId()); + smartAppMsg.setFrom(payOrder.getPrepayId()); + smartAppMsg.setTemplateDataList(Lists.newArrayList( + new WxMaTemplateData("keyword1", coupon.getPriceStr() + "元", "#173177"), + new WxMaTemplateData("keyword2", merchant.getName(), "#173177"), + new WxMaTemplateData("keyword3", coupon.getTitle(), "#173177"), + new WxMaTemplateData("keyword4", couponDetail, "#173177"), + new WxMaTemplateData("keyword5", coupon.getSalePriceStr() + "元", "#173177"), + new WxMaTemplateData("keyword6", dateFormat.format(new Date()), "#173177"), + new WxMaTemplateData("keyword7", notes, "#173177"))); + smartAppMsg.setEmphasisKeyword("keyword1.DATA"); } else { - WxTemplateMsg msgQ = new WxTemplateMsg(); - msgQ.setTenantId(couponOrder.getTenantId()); - msgQ.setType(EnumTemplateType.VERIFY_FAIL.getCode()); - List list = wxTemplateMsgMapper.select(msgQ); - if (list.size() > 0) { - msg = list.get(0); - } - if (msg == null) { - logger.error("找不到模板Id"); - throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); - } - /** - * 核销失败 - * 商品名称 {{keyword1.DATA}} - * 核销时间 {{keyword2.DATA}} - * 失败原因 {{keyword3.DATA}} - * 备注 {{keyword4.DATA}} - */ - templateMessage = WxMaTemplateMessage.builder() - .toUser(user.getOpenId()) - .formId(payOrder.getPrepayId()) // 微信支付的formId是prepayId - .page("pages/index/index") - .data(Lists.newArrayList( - new WxMaTemplateData("keyword1", coupon.getTitle(), "#173177"), - new WxMaTemplateData("keyword2", dateFormat.format(new Date()), "#173177"), - new WxMaTemplateData("keyword3", "未知"), - new WxMaTemplateData("keyword4", couponDetail)) - ) - .templateId(msg.getTemplateId()) - .emphasisKeyword("keyword1.DATA") - .build(); - } - - //templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177")); + //mq发送小程序消息 + smartAppMsg = new SmartAppMsg(); + smartAppMsg.setAppId(user.getAppId()); + smartAppMsg.setTenantId(couponOrder.getTenantId()); + smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_FAIL.getCode()); + smartAppMsg.setGotopage("pages/index/index"); + smartAppMsg.setTo(user.getOpenId()); + smartAppMsg.setFrom(payOrder.getPrepayId()); + smartAppMsg.setTemplateDataList(Lists.newArrayList( + new WxMaTemplateData("keyword1", coupon.getTitle(), "#173177"), + new WxMaTemplateData("keyword2", dateFormat.format(new Date()), "#173177"), + new WxMaTemplateData("keyword3", "未知"), + new WxMaTemplateData("keyword4", couponDetail))); + smartAppMsg.setEmphasisKeyword("keyword1.DATA"); + } + try { - wxMaService.getMsgService().sendTemplateMsg(templateMessage); - } catch (WxErrorException e) { + mqBaseProducer.sendMessage(smartAppMsg, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); + } catch (Exception e) { logger.error("支付通知发送失败: " + e.getMessage()); throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED); }