Helius
2021-01-09 02651c072281f68c4119116ad36c5bb06ec8c637
Merge branch 'api' into order_reform
6 files added
4 files modified
527 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/component/tools/HttpClientUtil.java 55 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java 134 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java 134 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java 77 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo2.java 69 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/UniformMsgPojo.java 32 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/dev/system.properties 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/system.properties 10 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/test/system.properties 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/component/tools/HttpClientUtil.java
New file
@@ -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;
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java
New file
@@ -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;
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java
New file
@@ -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;
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java
New file
@@ -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");
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo2.java
New file
@@ -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");
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/UniformMsgPojo.java
New file
@@ -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;
    }
}
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
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
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
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
@@ -460,7 +460,7 @@
                                        <el-button matrix:btn="serviceClub-paidan" type="text" size="small" v-if="scope.row.state=='预约成功待处理'" @click="giveServiceOrder(scope.$index, scope.row)">派单</el-button>
                                        <el-button matrix:btn="serviceClub-edit" type="text" size="small" v-if="scope.row.state=='预约成功待处理'" @click="modifyServiceOrder(scope.$index, scope.row)">修改</el-button>
                                        <el-button matrix:btn="serviceClub-peiliao" type="text" size="small" v-if="scope.row.state=='需配料'" @click="peiliao(scope.$index, scope.row)">配料</el-button>
                                        <el-button matrix:btn="serviceClub-huakou" type="text" size="small" v-if="scope.row.state=='服务完成'" @click="openHKService(scope.$index, scope.row)">划扣</el-button>
                                        <el-button matrix:btn="serviceClub-huakou" type="text" size="small" v-if="scope.row.state=='服务完成'" @click="hkService(scope.$index, scope.row)">划扣</el-button>
                                        <el-button matrix:btn="serviceClub-edit" type="text" size="small" @click="modifyTime(scope.$index, scope.row)">修改时间</el-button>
                                        <el-button matrix:btn="serviceClub-del" type="text" size="small" v-if="scope.row.state!='预约取消'" @click="cancelServiceOrder(scope.$index, scope.row)">取消</el-button>
                                    </template>
@@ -1096,7 +1096,7 @@
                }));
            },
            // 划扣
            openHkService(index, row) {
            hkService(index, row) {
                openHkServcie(row.id);
            },
            // 取消