From c927efe5490eb43b75d5f6d65631951e891c3f8e Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Thu, 07 Jan 2021 23:42:07 +0800
Subject: [PATCH] 公众号模板消息demo

---
 zq-erp/src/main/resources/config/system.properties                                     |    6 +
 zq-erp/src/main/resources/config/dev/system.properties                                 |    6 +
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java              |  134 +++++++++++++++++++++++++++++++++
 zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java |   16 ----
 zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java                |   39 +++++++++
 5 files changed, 183 insertions(+), 18 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java
new file mode 100644
index 0000000..02d0c65
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java
@@ -0,0 +1,134 @@
+package com.matrix.system.shopXcx.api;
+
+import com.matrix.component.tools.HttpRequest;
+import com.matrix.component.tools.HttpResponse;
+import com.matrix.core.exception.GlobleException;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.core.tools.PropertiesUtil;
+import com.matrix.core.tools.StringUtils;
+import net.sf.json.JSONObject;
+
+import java.io.IOException;
+
+/***
+ * 公众号api工具
+ */
+public class WeChatGzhApiTools {
+	/**
+	 * 公众号秘钥
+	 */
+	private static final String GZH_SECRET = "gzh_secret";
+	/**
+	 * 公众号appid
+	 */
+	private static final String GZH_APPID = "gzh_appid";
+	/**
+	 * 微信登录url
+	 */
+	private static final String WECHAT_LOGIN_URL = "wechar_login_url";
+
+	/**
+	 * 上一次获取时间
+	 */
+	private static Long preTime;
+
+	/**
+	 * 当前有效的微信token
+	 */
+	private static String accessToken = "";
+
+	private static String appid = "";
+	private static String secret = "";
+
+
+
+
+	/**
+	 * 获取公众号APPId
+	 * @return
+	 */
+	public static String  getAppid(){
+		if(StringUtils.isBlank(appid)){
+			appid = PropertiesUtil.getString(GZH_APPID);
+		}
+		return  appid;
+	}
+
+	/**
+	 * 获取公众号秘钥
+	 * @return
+	 */
+	public static String  getSecret(){
+		if(StringUtils.isBlank(secret)){
+			secret = PropertiesUtil.getString(GZH_SECRET);
+		}
+		return  secret;
+	}
+
+
+
+	/**
+	 * 清空token
+	 */
+	public static void cleanAccessToken() {
+		preTime = null;
+		accessToken = "";
+	}
+
+	public static String getAccessToken(String gzhAppId, String gzhSecret) {
+
+		if (isTokenInvalid()) {
+			synchronized (accessToken) {
+				if (isTokenInvalid()) {
+					LogUtil.info("刷新微信accessToken");
+					HttpRequest reqObj = new HttpRequest();
+					HttpResponse result = null;
+					try {
+						result = reqObj
+								.sendHttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
+										+ gzhAppId+ "&secret=" + gzhSecret, null);
+					} catch (IOException e) {
+						LogUtil.error("获取公众号accessToken失败"+e.getMessage(),e);
+						throw new GlobleException(e.getMessage());
+					}
+					JSONObject json = JSONObject.fromObject(result.getDataString());
+					String errmsg=json.getString("errmsg");
+					if(StringUtils.isNotBlank(errmsg)){
+						throw new GlobleException("获取返回刷新的accessToken失败"+json.toString());
+					}else{
+						String access_token = json.getString("access_token");
+						accessToken = access_token;
+						preTime = System.currentTimeMillis();
+						LogUtil.info("返回刷新的accessToken={}", accessToken);
+						return access_token;
+					}
+
+				} else {
+					return accessToken;
+				}
+			}
+		} else {
+			LogUtil.info("返回现有accessToken={}", accessToken);
+			return accessToken;
+		}
+	}
+
+	/**
+	 * token是否无效
+	 *  TODO 由于现在有多个环境,为了防止冲突每次都获取新的token
+	 * @return
+	 */
+	private static boolean isTokenInvalid() {
+		/**		if (StringUtils.isNotBlank(accessToken) && preTime != null) {
+		 Long now = System.currentTimeMillis() / 1000;
+		 Long pre = preTime / 1000;
+		 boolean invalid = (now - pre) > 6200;
+		 return invalid;
+		 } else {
+		 return true;
+		 }*/
+		return true;
+	}
+
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java
index ab6742c..3ced9fb 100644
--- a/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java
+++ b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java
@@ -71,22 +71,6 @@
 
 
 
-    public static void main(String[] args) {
-
-        GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
-        messagePojo.setTouser("123");
-        messagePojo.setTemplate_id("543");
-        messagePojo.setUrl("231");
-        messagePojo.setMiniprogram("65475234","/123/234123412");
-        messagePojo.setFirst("1231","#453454");
-        messagePojo.setKeyWord("1231","#453454");
-        System.out.println(JSONObject.toJSON(messagePojo).toString());
-
-
-
-
-
-    }
 
     public void setMiniprogram(String appid,String url){
         this.setMiniprogram(new Miniprogram(appid,url));
diff --git a/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java
index 6a2b858..f0757e4 100644
--- a/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java
+++ b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java
@@ -1,5 +1,10 @@
 package com.matrix.system.wechart.templateMsg;
 
+import com.alibaba.fastjson.JSONObject;
+import com.matrix.component.tools.HttpClientUtil;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.system.shopXcx.api.WeChatGzhApiTools;
+import com.matrix.system.shopXcx.bean.ShopAdvertisType;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpException;
 import org.apache.commons.httpclient.NameValuePair;
@@ -8,13 +13,43 @@
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
 
+import javax.swing.text.html.HTML;
 import java.io.IOException;
-
+@Controller
+@RequestMapping(value = "test")
 public class MsgDemo {
 
+    @Value("${gzh_appid}")
+    String gzhAppId;
 
-    public static void main(String[] args) {
+    @Value("${gzh_secret}")
+    String gzhSecret;
+
+
+    @RequestMapping("/template")
+    @ResponseBody
+    public AjaxResult template() {
+        GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
+        messagePojo.setTouser("123");
+        messagePojo.setTemplate_id("543");
+        messagePojo.setUrl("231");
+        messagePojo.setMiniprogram("65475234","/123/234123412");
+        messagePojo.setFirst("1231","#453454");
+        messagePojo.setKeyWord("1231","#453454");
+        System.out.println(JSONObject.toJSON(messagePojo).toString());
+        String ACCESS_TOKEN=WeChatGzhApiTools.getAccessToken(gzhAppId,gzhSecret);
+        String url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+ACCESS_TOKEN;
+        JSONObject result= HttpClientUtil.sendPostWithJson(url,JSONObject.toJSON(messagePojo).toString());
+        System.out.println(result.toString());
+        return AjaxResult.buildSuccessInstance("1");
+
+
     }
 
 }
diff --git a/zq-erp/src/main/resources/config/dev/system.properties b/zq-erp/src/main/resources/config/dev/system.properties
index 78a6818..6baf382 100644
--- a/zq-erp/src/main/resources/config/dev/system.properties
+++ b/zq-erp/src/main/resources/config/dev/system.properties
@@ -58,6 +58,12 @@
 xcx_appid =wx3836ab3c1490ff29
 xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47
 
+#公众号
+gzh_appid=wx57e6335559bdbda6
+gzh_secret=123
+
+
+
 #微信支付调试开关
 wx_pay_debug_onoff = false
 
diff --git a/zq-erp/src/main/resources/config/system.properties b/zq-erp/src/main/resources/config/system.properties
index 9bf9768..bcf3910 100644
--- a/zq-erp/src/main/resources/config/system.properties
+++ b/zq-erp/src/main/resources/config/system.properties
@@ -51,6 +51,12 @@
 xcx_appid =wx3836ab3c1490ff29
 xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47
 
+#公众号
+gzh_appid=wx57e6335559bdbda6
+gzh_secret=123
+
+
+
 #微信支付调试开关
 wx_pay_debug_onoff = false
 

--
Gitblit v1.9.1