From e3ccb13fdd386d41ea2f721924861f6bb64e6708 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 09 Jan 2021 14:46:09 +0800
Subject: [PATCH] Merge branch 'api' of https://gitee.com/jyyforjava/zq-erp into api
---
zq-erp/src/main/resources/config/system.properties | 10
zq-erp/src/main/resources/config/test/system.properties | 6
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo2.java | 69 +++++++
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 | 134 ++++++++++++++
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java | 77 ++++++++
zq-erp/src/main/java/com/matrix/component/tools/HttpClientUtil.java | 55 ++++++
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/UniformMsgPojo.java | 32 +++
9 files changed, 519 insertions(+), 4 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/component/tools/HttpClientUtil.java b/zq-erp/src/main/java/com/matrix/component/tools/HttpClientUtil.java
new file mode 100644
index 0000000..cbc64d4
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/component/tools/HttpClientUtil.java
@@ -0,0 +1,55 @@
+package com.matrix.component.tools;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.matrix.core.exception.GlobleException;
+import com.matrix.core.tools.LogUtil;
+import org.apache.http.client.ResponseHandler;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.BasicResponseHandler;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+
+import java.io.IOException;
+
+/**
+ * POST 请求工具
+ */
+public class HttpClientUtil {
+
+ public static JSONObject sendPostWithJson(String url, String json) {
+
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ ResponseHandler<String> responseHandler = new BasicResponseHandler();
+ try {
+ //第一步:创建HttpClient对象
+ httpClient = HttpClients.createDefault();
+
+ //第二步:创建httpPost对象
+ HttpPost httpPost = new HttpPost(url);
+
+ //第三步:给httpPost设置JSON格式的参数
+ StringEntity requestEntity = new StringEntity(json, "utf-8");
+ requestEntity.setContentEncoding("UTF-8");
+ httpPost.setHeader("Content-type", "application/json");
+ httpPost.setEntity(requestEntity);
+ //第四步:发送HttpPost请求,获取返回值
+ String returnValue = httpClient.execute(httpPost, responseHandler); //调接口获取返回值时,必须用此方法
+ return JSON.parseObject(returnValue);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ httpClient.close();
+ } catch (IOException e) {
+ LogUtil.error("http请求发送失败", e);
+ throw new GlobleException(e.getMessage());
+ }
+ }
+ //第五步:处理返回值
+ return null;
+ }
+
+
+}
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..7c74df6
--- /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());
+
+ if(json.has("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
new file mode 100644
index 0000000..d6c6517
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java
@@ -0,0 +1,134 @@
+package com.matrix.system.wechart.templateMsg;
+
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.utils.HttpsUtils;
+import org.apache.commons.collections.map.HashedMap;
+
+import java.util.Map;
+
+/**
+ * 公众号模板消息对象
+ */
+public class GzhTemplateMessagePojo {
+
+ private String appid;
+ private String touser;
+ private String template_id;
+ private String url;
+ private Miniprogram miniprogram;
+ public static class Miniprogram{
+ private String appid;
+ private String pagepath;
+
+ public Miniprogram(String appid, String pagepath) {
+ this.appid = appid;
+ this.pagepath = pagepath;
+ }
+
+ public String getAppid() {
+ return appid;
+ }
+
+ public void setAppid(String appid) {
+ this.appid = appid;
+ }
+
+ public String getPagepath() {
+ return pagepath;
+ }
+
+ public void setPagepath(String pagepath) {
+ this.pagepath = pagepath;
+ }
+ }
+ public Map<String ,Item> data=new HashedMap();
+ public static class Item{
+ private String value;
+ private String color;
+
+ public Item(String value, String color) {
+ this.value = value;
+ this.color = color;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color;
+ }
+ }
+
+
+ public String getAppid() {
+ return appid;
+ }
+
+ public void setAppid(String appid) {
+ this.appid = appid;
+ }
+
+ public void setMiniprogram(String appid, String url){
+ this.setMiniprogram(new Miniprogram(appid,url));
+ }
+ public void setFirst(String value, String color){
+ this.data.put("first",new Item(value,color));
+ }
+
+ public void setKeyWord(String value, String color){
+ this.data.put("keyword"+(this.data.size()),new Item(value,color));
+ }
+ public void setRemark(String value, String color){
+ this.data.put("remark",new Item(value,color));
+ }
+
+ public Miniprogram getMiniprogram() {
+ return miniprogram;
+ }
+
+ public void setMiniprogram(Miniprogram miniprogram) {
+ this.miniprogram = miniprogram;
+ }
+
+ public Map<String, Item> getData() {
+ return data;
+ }
+
+ public void setData(Map<String, Item> data) {
+ this.data = data;
+ }
+
+ public String getTouser() {
+ return touser;
+ }
+
+ public void setTouser(String touser) {
+ this.touser = touser;
+ }
+
+ public String getTemplate_id() {
+ return template_id;
+ }
+
+ public void setTemplate_id(String template_id) {
+ this.template_id = template_id;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = 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
new file mode 100644
index 0000000..e5c650d
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java
@@ -0,0 +1,77 @@
+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.hive.plugin.util.HttpUtils;
+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;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.dom4j.Document;
+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;
+
+ @Value("${gzh_secret}")
+ String gzhSecret;
+
+
+ @RequestMapping("/template")
+ @ResponseBody
+ public AjaxResult template() {
+ GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
+ messagePojo.setTouser("o8EB656NQYwhUuKPMhVVwP_wtLJI");
+ messagePojo.setTemplate_id("Mqu9xPYj_JFhXNj7nLJS7LESQUy6Z7FoCOmVO66Oxe8");
+ //messagePojo.setUrl("www.baidu.com");
+ // messagePojo.setMiniprogram(gzhAppId,"/123/234123412");
+ messagePojo.setFirst("尊敬的谭娅:","#453454");
+ messagePojo.setKeyWord("活细胞肩部护理","#453454");
+ messagePojo.setKeyWord("2014年7月21日 18:36","#453454");
+ messagePojo.setRemark("您的护理课程剩余3次。","#453454");
+
+ String ACCESS_TOKEN=WeChatGzhApiTools.getAccessToken(gzhAppId,gzhSecret);
+ String url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+ACCESS_TOKEN;
+
+ System.out.println(JSONObject.toJSON(messagePojo).toString());
+ JSONObject result= HttpClientUtil.sendPostWithJson(url,JSONObject.toJSON(messagePojo).toString());
+ System.out.println(result.toString());
+ return AjaxResult.buildSuccessInstance("1");
+
+
+ }
+
+
+ @RequestMapping("/getUserList")
+ @ResponseBody
+ public AjaxResult getUserList() {
+
+ String ACCESS_TOKEN=WeChatGzhApiTools.getAccessToken(gzhAppId,gzhSecret);
+
+ String url="https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID".replaceAll("ACCESS_TOKEN",ACCESS_TOKEN);
+
+
+ String result= HttpUtils.sendGet(url,"");
+ System.out.println(result.toString());
+ return AjaxResult.buildSuccessInstance("1");
+
+
+ }
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo2.java b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo2.java
new file mode 100644
index 0000000..b50626a
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo2.java
@@ -0,0 +1,69 @@
+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.hive.plugin.util.HttpUtils;
+import com.matrix.system.shopXcx.api.WeChatGzhApiTools;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping(value = "test2")
+public class MsgDemo2 {
+
+
+ String xcxAppId="wx5cc58f796224af61";
+
+
+ String xcxSecret="facea088aae414e5c2ee86b459887721";
+
+
+ @RequestMapping("/template")
+ @ResponseBody
+ public AjaxResult template() {
+ UniformMsgPojo uniformMsgPojo=new UniformMsgPojo();
+ GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
+ uniformMsgPojo.setTouser("oJkRK4yelehsY4S7I6Ee1ydWtQMI");
+ messagePojo.setTemplate_id("Mqu9xPYj_JFhXNj7nLJS7LESQUy6Z7FoCOmVO66Oxe8");
+ //messagePojo.setUrl("www.baidu.com");
+ // messagePojo.setMiniprogram(gzhAppId,"/123/234123412");
+ messagePojo.setAppid("wx57e6335559bdbda6");
+ messagePojo.setFirst("尊敬的谭娅:","#453454");
+ messagePojo.setKeyWord("活细胞肩部护理","#453454");
+ messagePojo.setKeyWord("2014年7月21日 18:36","#453454");
+ messagePojo.setRemark("您的护理课程剩余3次。","#453454");
+
+ String ACCESS_TOKEN=WeChatGzhApiTools.getAccessToken(xcxAppId,xcxSecret);
+ String url="https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN".replaceAll("ACCESS_TOKEN",ACCESS_TOKEN);
+
+ uniformMsgPojo.setMp_template_msg(messagePojo);
+
+ System.out.println(JSONObject.toJSON(uniformMsgPojo).toString());
+ JSONObject result= HttpClientUtil.sendPostWithJson(url,JSONObject.toJSON(uniformMsgPojo).toString());
+ System.out.println(result.toString());
+ return AjaxResult.buildSuccessInstance("1");
+
+
+ }
+
+
+ @RequestMapping("/getUserList")
+ @ResponseBody
+ public AjaxResult getUserList() {
+
+ String ACCESS_TOKEN=WeChatGzhApiTools.getAccessToken(xcxAppId,xcxSecret);
+
+ String url="https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID".replaceAll("ACCESS_TOKEN",ACCESS_TOKEN);
+
+
+ String result= HttpUtils.sendGet(url,"");
+ System.out.println(result.toString());
+ return AjaxResult.buildSuccessInstance("1");
+
+
+ }
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/UniformMsgPojo.java b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/UniformMsgPojo.java
new file mode 100644
index 0000000..63678fc
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/UniformMsgPojo.java
@@ -0,0 +1,32 @@
+package com.matrix.system.wechart.templateMsg;
+
+public class UniformMsgPojo {
+
+ private String touser;
+ private GzhTemplateMessagePojo mp_template_msg;
+ private String weapp_template_msg;
+
+ public String getTouser() {
+ return touser;
+ }
+
+ public void setTouser(String touser) {
+ this.touser = touser;
+ }
+
+ public GzhTemplateMessagePojo getMp_template_msg() {
+ return mp_template_msg;
+ }
+
+ public void setMp_template_msg(GzhTemplateMessagePojo mp_template_msg) {
+ this.mp_template_msg = mp_template_msg;
+ }
+
+ public String getWeapp_template_msg() {
+ return weapp_template_msg;
+ }
+
+ public void setWeapp_template_msg(String weapp_template_msg) {
+ this.weapp_template_msg = weapp_template_msg;
+ }
+}
diff --git a/zq-erp/src/main/resources/config/dev/system.properties b/zq-erp/src/main/resources/config/dev/system.properties
index 78a6818..015c690 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=ecb408af170e3890e6544290cad33760
+
+
+
#微信支付调试开关
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..8a17d20 100644
--- a/zq-erp/src/main/resources/config/system.properties
+++ b/zq-erp/src/main/resources/config/system.properties
@@ -48,8 +48,14 @@
wechar_login_url =https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
-xcx_appid =wx3836ab3c1490ff29
-xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47
+xcx_appid =wx5cc58f796224af61
+xcx_secret =facea088aae414e5c2ee86b459887721
+
+#公众号
+gzh_appid=wx57e6335559bdbda6
+gzh_secret=ecb408af170e3890e6544290cad33760
+
+
#微信支付调试开关
wx_pay_debug_onoff = false
diff --git a/zq-erp/src/main/resources/config/test/system.properties b/zq-erp/src/main/resources/config/test/system.properties
index 0bf1388..a6ae4c0 100644
--- a/zq-erp/src/main/resources/config/test/system.properties
+++ b/zq-erp/src/main/resources/config/test/system.properties
@@ -46,8 +46,10 @@
wechar_login_url =https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
-xcx_appid =wx3836ab3c1490ff29
-xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47
+xcx_appid =wx5cc58f796224af61
+xcx_secret =facea088aae414e5c2ee86b459887721
+gzh_appid=wx57e6335559bdbda6
+gzh_secret=ecb408af170e3890e6544290cad33760
#微信支付调试开关
wx_pay_debug_onoff = false
--
Gitblit v1.9.1