From ebeb41f94fdf23cc5e5d74cfbdc0a076fb747052 Mon Sep 17 00:00:00 2001 From: jyy <935090232@qq.com> Date: Mon, 08 Mar 2021 13:57:32 +0800 Subject: [PATCH] 修改微商城产品bug --- zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java | 17 --- zq-erp/src/main/java/com/matrix/component/tools/WxTempLateMsgUtil.java | 108 -------------------------- zq-erp/pom.xml | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/api/WxUserAction.java | 7 + zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java | 50 +++++------ 5 files changed, 31 insertions(+), 153 deletions(-) diff --git a/zq-erp/pom.xml b/zq-erp/pom.xml index ca46822..a1baf69 100644 --- a/zq-erp/pom.xml +++ b/zq-erp/pom.xml @@ -390,7 +390,7 @@ <exclude>config/test/*</exclude> <exclude>config/xcx/*</exclude> - <!----> + <!-- --> <exclude>config/config.json</exclude> <exclude>config/application.properties</exclude> <exclude>config/system.properties</exclude> diff --git a/zq-erp/src/main/java/com/matrix/component/tools/WxTempLateMsgUtil.java b/zq-erp/src/main/java/com/matrix/component/tools/WxTempLateMsgUtil.java index 35f2685..160f8b4 100644 --- a/zq-erp/src/main/java/com/matrix/component/tools/WxTempLateMsgUtil.java +++ b/zq-erp/src/main/java/com/matrix/component/tools/WxTempLateMsgUtil.java @@ -1,15 +1,7 @@ package com.matrix.component.tools; -import com.matrix.core.tools.LogUtil; -import com.matrix.core.tools.StringUtils; -import com.matrix.system.shopXcx.api.WeChatApiTools; -import net.sf.json.JSONObject; - -import java.io.IOException; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * 小程序消息模板 @@ -141,87 +133,7 @@ public static int sendWxTemplateMsg(List<String> valueList, String openId, String page, String tempId, String formId) { - if (StringUtils.isBlank(openId)) { - return 0; - } - String access_token = ""; - try { - access_token = WeChatApiTools.getAccessToken(); - } catch (IOException e1) { - LogUtil.error("获取accesstoken失败", e1.getMessage()); - } - // 发送模板URL - String url = WxApiConstants.XCX_TEMPLATEMSG_SEN.replace("ACCESS_TOKEN", access_token); - WxTemplate temp = new WxTemplate(); - // 跳转地址 - if (StringUtils.isNotBlank(page)) { - temp.setPage(page); - } - temp.setTouser(openId); - // 消息模版ID - temp.setTemplateId(tempId); - - Map<String, Object> tempLateMsgMap = new HashMap<String, Object>(); - // 设置模板消息的值 - for (int i = 0; i < valueList.size(); i++) { - TemplateData keyword = new TemplateData(); - keyword.setValue(valueList.get(i)); - tempLateMsgMap.put(TEMP_KEYWORD + (i + 1), keyword); - } - temp.setData(tempLateMsgMap); - String jsonString = JSONObject.fromObject(temp).toString(); - - LogUtil.info("组装模板消息={}", jsonString); - HttpRequest reqObj = new HttpRequest(); - HttpResponse result = null; - try { - result = reqObj.sendHttpsPost(url, null, jsonString); - } catch (IOException e) { - LogUtil.error("发送模板通知出错了", e); - } - JSONObject json = JSONObject.fromObject(result.getDataString()); - LogUtil.info("发送模板消息结果={}", json); - int res = 0; - if (json == null) { - return res; - } else { - res = json.getInt(ERRCODE); - if (res == Integer.parseInt(SEND_ERROR_40001)) { - String new_access_token = ""; - try { - new_access_token = WeChatApiTools.getAccessToken(); - } catch (IOException e1) { - LogUtil.error("获取new_access_token失败", e1.getMessage()); - } - url = WxApiConstants.XCX_TEMPLATEMSG_SEN.replace("ACCESS_TOKEN", new_access_token); - try { - result = reqObj.sendHttpsPost(url, null, jsonString); - } catch (IOException e) { - LogUtil.error("发送new_access_token模板通知出错了", e); - } - json = JSONObject.fromObject(result.getDataString()); - if (json == null) { - return res; - } else { - res = json.getInt(ERRCODE); - if (res != 0) { - // 添加发送失败 信息 - LogUtil.info("发送new_access_token模板消息错误错误 errcode:{} errmsg:{}" + "," + json.getInt("errcode") - + "," + json.getString("errmsg")); - } else { - return 1; - } - } - } else if (res != 0) { - // 添加发送失败 信息 - LogUtil.info("发送模板消息错误错误 errcode:{} errmsg:{}" + "," + json.getInt("errcode") + "," - + json.getString("errmsg")); - } else { - return 1; - } - } - LogUtil.info("模板消息发送结果:" + res); return 0; } @@ -231,25 +143,7 @@ * @param temp {temp} */ public static void sendSubscribeMsg(WxSubscribeDto temp) { - String access_token = ""; - try { - access_token = WeChatApiTools.getAccessToken(); - } catch (IOException e1) { - LogUtil.error("获取accesstoken失败", e1.getMessage()); - } - // 发送模板URL - String url = WxApiConstants.XCX_TEMPLATEMSG_SEN.replace("ACCESS_TOKEN", access_token); - String jsonString = JSONObject.fromObject(temp).toString(); - LogUtil.info("组装模板消息={}", jsonString); - HttpRequest reqObj = new HttpRequest(); - HttpResponse result = null; - try { - result = reqObj.sendHttpsPost(url, null, jsonString); - } catch (IOException e) { - LogUtil.error("发送模板通知出错了", e); - } - JSONObject json = JSONObject.fromObject(result.getDataString()); - LogUtil.info("发送模板消息结果={}", json); + } diff --git a/zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java b/zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java index 505c871..7c441ef 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java +++ b/zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java @@ -1,13 +1,9 @@ package com.matrix.system.common.interceptor; -import com.matrix.core.constance.MatrixConstance; import com.matrix.core.tools.LogUtil; -import com.matrix.core.tools.StringUtils; import com.matrix.core.tools.WebUtil; - import com.matrix.system.common.bean.SysCompany; import org.springframework.stereotype.Component; -import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; @@ -45,17 +41,8 @@ LogUtil.debug("匹配到公司{}", company.getComName()); return true; } else { - // 获得请求的域名 - String host = WebUtil.getRequest().getServerName(); - //判断是否为debug模式 - if(MatrixConstance.DEBUG){ - String debugHost=request.getHeader("debugHost"); - if(StringUtils.isNotBlank(debugHost)){ - host=debugHost; - WebUtil.getSession().removeAttribute(ATTR_COMPANY); - LogUtil.debug("debugHost={}",host); - } - } + // 获得请求的域名--由小程序直接传过来companyCode参数对应公司的网址 + String host = request.getHeader("companyCode"); LogUtil.debug("当前请求域名{}", host); @SuppressWarnings("unchecked") Map<String, SysCompany> companyMap = (Map<String, SysCompany>) WebUtil.getServletContext() diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java index 7f5344c..2b1bfb8 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatApiTools.java @@ -1,23 +1,25 @@ package com.matrix.system.shopXcx.api; -import com.matrix.core.tools.LogUtil; -import com.matrix.core.tools.PropertiesUtil; -import com.matrix.core.tools.StringUtils; import com.matrix.component.tools.HttpRequest; import com.matrix.component.tools.HttpResponse; +import com.matrix.core.tools.LogUtil; +import com.matrix.core.tools.PropertiesUtil; +import com.matrix.system.common.bean.BusParameterSettings; +import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.common.dao.BusParameterSettingsDao; import net.sf.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import java.io.IOException; +@Service public class WeChatApiTools { - /** - * 小程序秘钥 - */ - private static final String XCX_SECRET = "xcx_secret"; - /** - * 小程序appid - */ - private static final String XCX_APPID = "xcx_appid"; + + + @Autowired + private BusParameterSettingsDao busParameterSettingsDao; + /** * 微信登录url */ @@ -33,8 +35,6 @@ */ private static String accessToken = ""; - private static String appid = ""; - private static String secret = ""; /** @@ -46,31 +46,27 @@ * @param code * @return */ - public static String getXcxLoginUrl(String code) { + public String getXcxLoginUrl(String code,Long companyId) { String wechatLoginUrl = PropertiesUtil.getString(WECHAT_LOGIN_URL); - return String.format(wechatLoginUrl, getAppid(), getSecret(), code); + return String.format(wechatLoginUrl, getAppid(companyId), getSecret(companyId), code); } /** * 获取小程序APPId * @return */ - public static String getAppid(){ - if(StringUtils.isBlank(appid)){ - appid = PropertiesUtil.getString(XCX_APPID); - } - return appid; + public String getAppid(Long companyId){ + BusParameterSettings appId = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_APPID, companyId); + return appId.getParamValue(); } /** * 获取小程序秘钥 * @return */ - public static String getSecret(){ - if(StringUtils.isBlank(secret)){ - secret = PropertiesUtil.getString(XCX_SECRET); - } - return secret; + public String getSecret(Long companyId){ + BusParameterSettings secret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_SECRET, companyId); + return secret.getParamValue(); } @@ -83,7 +79,7 @@ accessToken = ""; } - public static String getAccessToken() throws IOException { + public String getAccessToken(Long companyId) throws IOException { if (isTokenInvalid()) { synchronized (accessToken) { @@ -93,7 +89,7 @@ HttpResponse result = null; result = reqObj .sendHttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" - + getAppid() + "&secret=" + getSecret(), null); + + getAppid(companyId) + "&secret=" + getSecret(companyId), null); JSONObject json = JSONObject.fromObject(result.getDataString()); String access_token = json.getString("access_token"); accessToken = access_token; diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WxUserAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WxUserAction.java index 81ddb1d..90ab0c2 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WxUserAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WxUserAction.java @@ -1,6 +1,5 @@ package com.matrix.system.shopXcx.api; -import com.alibaba.fastjson.JSON; import com.matrix.biz.bean.BizUser; import com.matrix.biz.dao.BizUserDao; import com.matrix.biz.service.BizUserService; @@ -12,6 +11,7 @@ import com.matrix.core.tools.StringUtils; import com.matrix.core.web.BaseAction; import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.common.interceptor.HostInterceptor; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -42,7 +42,8 @@ @Autowired private BizUserDao bizUserDao; - + @Autowired + WeChatApiTools weChatApiTools; @@ -68,7 +69,7 @@ AjaxResult res = new AjaxResult(); LogUtil.info("code:{}" + code); if (StringUtils.isNotBlank(code)) { - String requrl = WeChatApiTools.getXcxLoginUrl(code); + String requrl = weChatApiTools.getXcxLoginUrl(code, HostInterceptor.getCompanyId()); String reslutData = HttpCurlUtil.sendGetHttp(requrl, null); JSONObject json = JSONObject.fromObject(reslutData); LogUtil.debug("微信登录获取到登录信息={}", json); -- Gitblit v1.9.1