Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

# Conflicts:
#	business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java
#	svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/XzzxCotroller.java
wangzhinan 4 years ago
parent
commit
5002d36a55

+ 10 - 4
common/common-util/src/main/java/com/yihu/jw/util/wechat/WeixinMessagePushUtils.java

@ -1,15 +1,16 @@
package com.yihu.jw.util.wechat;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.base.wx.*;
import com.yihu.jw.entity.base.wx.Miniprogram;
import com.yihu.jw.entity.base.wx.WechatTemplateDO;
import com.yihu.jw.entity.base.wx.WechatTemplateDataDO;
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.utils.network.HttpUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@ -86,7 +87,12 @@ public class WeixinMessagePushUtils {
        //发送微信模板地址
        String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token;
        //微信消息参数
        String params = getWxParam(mes);
        String params = null;
        if(StringUtils.isNoneBlank(wxtemp.getFirst())){
            params = getWxParam(mes);
        }else {
            params = wxtemp.getRemark();
        }
        if(StringUtils.isBlank(params)){
            logger.info("wechat params is null");
            return false;

+ 1 - 1
gateway/ag-basic/pom.xml

@ -12,7 +12,7 @@
    <artifactId>ag-basic</artifactId>
    <version>${parent.version}</version>
    <packaging>war</packaging>
    <packaging>jar</packaging>
    <dependencies>
        <!-- 支持Tomcat启动 -->

+ 2 - 1
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java

@ -103,7 +103,8 @@ public class BasicZuulFilter extends ZuulFilter {
                || url.contains("/sms_gateway/send")//发送短信
                || url.contains("/accountAppeal/create")
                || url.contains("/open/")//开放接口
                || url.contains("/image/")) {//获取默认图片
                || url.contains("/image/")//获取默认图片
                ||url.contains("/weixin")) {
            return true;
        }
        System.out.println("进入token验证");

+ 60 - 37
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/wechat/WechatCoreController.java

@ -1,12 +1,16 @@
package com.yihu.jw.hospital.endpoint.wechat;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.hospital.service.wechat.WeiXinCoreService;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
import com.yihu.jw.wechat.dao.WxPushLogDao;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -41,6 +45,8 @@ public class WechatCoreController extends EnvelopRestEndpoint {
    @Value("${wechat.id}")
    private String wechatId;
    private static String wechat_token ="xAeQrX7uOD0OusIZ5JUQzrLPYIQBlqbS" ;
    @Autowired
    private WxPushLogDao wxPushLogDao;
    /**
     * 微信接口验证
@ -56,7 +62,7 @@ public class WechatCoreController extends EnvelopRestEndpoint {
            String timestamp = request.getParameter("timestamp").toString();
            String nonce = request.getParameter("nonce").toString();
            String echostr = request.getParameter("echostr").toString();
            logger.info("echostr"+echostr+"===nonce"+nonce+"====signature"+signature+"====timestamp"+timestamp);
            if (validate(signature, timestamp, nonce)) {
                // 验证成功,返回验证码
                response.getWriter().print(echostr);
@ -70,39 +76,7 @@ public class WechatCoreController extends EnvelopRestEndpoint {
        }
    }
    /**
     * 微信推送消息验证
     *
     * @param signature
     * @param timestamp
     * @param nonce
     * @return
     * @throws NoSuchAlgorithmException
     */
    private boolean validate(String signature, String timestamp, String nonce) throws NoSuchAlgorithmException {
        String token = this.wechat_token;
        // 字典序排序
        String[] array = new String[]{token, timestamp, nonce};
        Arrays.sort(array);
        //连接字典序排序后字符串
        String content = "";
        for (String str : array) {
            content += str;
        }
        // 解析
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        String decodeStr = "";
        byte[] bytes = md.digest(content.getBytes());
        decodeStr = byteToStr(bytes);
        if (StringUtils.isNotEmpty(decodeStr) && decodeStr.equals(signature.toUpperCase())) {
            return true;
        } else {
            return false;
        }
    }
  /* *//*
     * 接收居民微信回复的消息
     *
@ -153,6 +127,56 @@ public class WechatCoreController extends EnvelopRestEndpoint {
                    response.setHeader("Content-type", "text/html;charset=UTF-8");
                    //这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
                    response.setCharacterEncoding("UTF-8");
                    response.getWriter().print(null);
                }
            } else {
                // 验证失败
                response.setStatus(401);
            }
        } catch (Exception e) {
            e.printStackTrace();
            // 服务器错误
            response.setStatus(500);
        }
    }*/
    /**
     * 接收居民微信回复的消息
     *
     * @return
     */
    @RequestMapping(method = RequestMethod.POST)
    @ResponseBody
    public void receiveMessages(HttpServletRequest request, HttpServletResponse response) {
        try {
            String signature = request.getParameter("signature").toString();
            String timestamp = request.getParameter("timestamp").toString();
            String nonce = request.getParameter("nonce").toString();
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
            if (validate(signature, timestamp, nonce)) {
                String xmlStr = weiXinCoreService.messageProcess(request, wxAccessTokenDO.getAccessToken());
                // 判断返回值是xml、json格式(取关是空串)
                Boolean flag = weiXinCoreService.isXML(xmlStr);
                if (xmlStr == "error") {
                    // 服务器错误
                    response.setStatus(500);
                } else if (!flag && StringUtils.isNotEmpty(xmlStr)) {
                    JSONObject json = new JSONObject(xmlStr);
                    if (json.has("openId")) {
                        if (StringUtils.isNotEmpty(json.getString("openId")) && !("undefined".equals(json.getString("openId")))) {
                            logger.info("调用眼科微信模板消息接口的入参:AccessToken="+wxAccessTokenDO.getAccessToken()+"---Openid="+json.getString(""));
                            WxTemplateConfigDO wxTemplateConfigDO = new WxTemplateConfigDO();
                            wxTemplateConfigDO.setRemark(json.toString());
                            weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), json.getString("openId"), wxTemplateConfigDO);
                            logger.info("发送成功");
                        }
                    }
                } else {
                    // 返回消息(图文消息)
                    response.setHeader("Content-type", "text/html;charset=UTF-8");
                    //这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
                    response.setCharacterEncoding("UTF-8");
                    logger.info(xmlStr);
@ -169,8 +193,7 @@ public class WechatCoreController extends EnvelopRestEndpoint {
            response.setStatus(500);
        }
    }
     *//*
     /*
     * 微信推送消息验证
     *
     * @param signature
@ -178,7 +201,7 @@ public class WechatCoreController extends EnvelopRestEndpoint {
     * @param nonce
     * @return
     * @throws NoSuchAlgorithmException
     *//*
     */
    private boolean validate(String signature, String timestamp, String nonce) throws NoSuchAlgorithmException {
        String token = this.wechat_token;
        // 字典序排序
@ -204,7 +227,7 @@ public class WechatCoreController extends EnvelopRestEndpoint {
        }
    }
    *//*
    /*
     * 将字节数组转换为字符串
     *
     * @param byteArray