From f7ea5773570beb5ad8c6efb5c1cf743294ee079b Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Sun, 24 Jan 2021 14:16:04 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/UniformMsgSentTask.java |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 120 insertions(+), 0 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/UniformMsgSentTask.java b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/UniformMsgSentTask.java
new file mode 100644
index 0000000..3549c4a
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/UniformMsgSentTask.java
@@ -0,0 +1,120 @@
+package com.matrix.system.wechart.templateMsg.Task;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.matrix.biz.bean.BizUser;
+import com.matrix.biz.service.BizUserService;
+import com.matrix.component.tools.HttpClientUtil;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.core.tools.rr.GlueFactory;
+import com.matrix.system.common.bean.BusParameterSettings;
+import com.matrix.system.common.constance.AppConstance;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.constance.Dictionary;
+import com.matrix.system.hive.bean.SysProjServices;
+import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.SysProjServicesDao;
+import com.matrix.system.hive.dao.SysShopInfoDao;
+import com.matrix.system.hive.dao.SysVipInfoDao;
+import com.matrix.system.shopXcx.api.WeChatGzhApiTools;
+import com.matrix.system.shopXcx.bean.ShopWxtemplateMsg;
+import com.matrix.system.shopXcx.dao.ShopWxtemplateMsgDao;
+import com.matrix.system.wechart.templateMsg.GzhTemplateMessagePojo;
+import com.matrix.system.wechart.templateMsg.UniformMsgPojo;
+import com.rabbitmq.client.DeliverCallback;
+import com.rabbitmq.client.Delivery;
+import io.swagger.models.auth.In;
+import org.apache.commons.collections.map.HashedMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 小程序统一消息模板消息发送提醒
+ * @author jyy
+ */
+@Component
+public class UniformMsgSentTask implements DeliverCallback {
+
+    @Autowired
+    private ShopWxtemplateMsgDao shopWxtemplateMsgDao;
+
+    @Autowired
+    private BusParameterSettingsDao busParameterSettingsDao;
+
+    /**
+     * 发送模板消息需要传JSONO字符串作为格式
+     * 例如:{"companyId":17}
+     * companyId 是必须属性
+     * @param consumerTag
+     * @param message
+     * @throws IOException
+     */
+    @Override
+    public void handle(String consumerTag, Delivery message) throws IOException {
+        try {
+
+
+            String messages = new String(message.getBody(), "UTF-8");
+            JSONObject messageJsonParam=JSONObject.parseObject(messages);
+
+            if(!messageJsonParam.containsKey("companyId")||(!messageJsonParam.containsKey("templateCode"))){
+                LogUtil.error("小程序消息推送参数格式异常发送模板消息需要传JSONO字符串作为格式 例如:{\"companyId\":17,\"templateCode\":10000} companyId 、templateCode 是必须属性");
+                return;
+            }
+            Long companyId = Long.parseLong( messageJsonParam.get("companyId").toString());
+            Integer templateCode = Integer.parseInt( messageJsonParam.get("templateCode").toString());
+
+            //获取公司微信配置参数
+            BusParameterSettings xcxAppId = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_APPID, companyId);
+            BusParameterSettings xcxSecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_SECRET, companyId);
+            BusParameterSettings gzhAppid = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.GZH_APPID, companyId);
+            //获取消息模板
+            ShopWxtemplateMsg template = shopWxtemplateMsgDao.selectByCode(templateCode,companyId);
+            //校验参数
+            if(xcxAppId==null||xcxSecret==null||gzhAppid==null||template==null){
+                LogUtil.error("小程序消息推送配置缺失xcxAppId="+xcxAppId+";xcxSecret="+xcxSecret+";gzhAppid="+gzhAppid+";template="+template);
+                return;
+            }
+            //获取模板动态构建类
+            TemplateMessageBulder templateMessageBulder = (TemplateMessageBulder) GlueFactory.getInstance().loadInstance(template.getTemplateClass());
+            //为模板动态类装备必要的参数
+            Map<String, Object> bulderParam = new HashedMap();
+            bulderParam.put("xcxAppId", xcxAppId.getParamValue());
+            bulderParam.put("gzhAppid", gzhAppid.getParamValue());
+            bulderParam.put("template_id", template.getUuid());
+            bulderParam.put("messageJsonParam", messageJsonParam);
+
+
+            //调用模板计算出消息体
+            Map msgResult = templateMessageBulder.buildMsg(bulderParam);
+
+            if(msgResult.containsKey("error")){
+                //错误消息处理
+                LogUtil.error("模板消息发送失败:"+msgResult.get("error"));
+                return;
+            }else{
+                //正常返回消息
+                List msgList = (List) msgResult.get("msgList");
+                //获取acceToken
+                String ACCESS_TOKEN = WeChatGzhApiTools.getAccessToken(xcxAppId.getParamValue(), xcxSecret.getParamValue());
+                String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN".replaceAll("ACCESS_TOKEN", ACCESS_TOKEN);
+                for (Object msg : msgList) {
+                    UniformMsgPojo uniformMsgPojo = (UniformMsgPojo) msg;
+                    //推送消息到微信
+                    JSONObject result = HttpClientUtil.sendPostWithJson(url, JSONObject.toJSON(uniformMsgPojo).toString());
+                    //微信返回值
+                    LogUtil.debug("微信小程序模板消息推送结果:" + result.toString());
+                }
+            }
+
+        } catch (Exception e) {
+            LogUtil.error("消费者执行异常", e);
+        }
+
+    }
+}

--
Gitblit v1.9.1