wwl 3 жил өмнө
parent
commit
c6f8ba48d3

+ 0 - 2
twzd-admin/src/main/resources/application-dev.yml

@@ -119,5 +119,3 @@ wxgzh:
     materialUrl: https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=
     materialUrl: https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=
     # 上传临时素材
     # 上传临时素材
     mediaUpload: https://api.weixin.qq.com/cgi-bin/media/upload?access_token=
     mediaUpload: https://api.weixin.qq.com/cgi-bin/media/upload?access_token=
-    # 客服接口-发消息
-    messageCustomSend: https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=

+ 0 - 2
twzd-admin/src/main/resources/application-prod.yml

@@ -115,5 +115,3 @@ wxgzh:
     materialUrl: https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=
     materialUrl: https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=
     # 上传临时素材
     # 上传临时素材
     mediaUpload: https://api.weixin.qq.com/cgi-bin/media/upload?access_token=
     mediaUpload: https://api.weixin.qq.com/cgi-bin/media/upload?access_token=
-    # 客服接口-发消息
-    messageCustomSend: https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=

+ 0 - 58
twzd-common/src/main/java/com/miaxis/common/utils/http/HttpUtils.java

@@ -1,6 +1,5 @@
 package com.miaxis.common.utils.http;
 package com.miaxis.common.utils.http;
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.constant.Constants;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -321,63 +320,6 @@ public class HttpUtils
     }
     }
 
 
 
 
-    /**
-     * 描述:  发起https请求并获取结果
-     * @param requestUrl 请求地址
-     * @param requestMethod 请求方式(GET、POST)
-     * @param outputStr 提交的数据
-     * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
-     */
-    public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {
-        JSONObject jsonObject = null;
-        StringBuffer buffer = new StringBuffer();
-        try {
-            URL url = new URL(requestUrl);
-            HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
-
-            httpUrlConn.setDoOutput(true);
-            httpUrlConn.setDoInput(true);
-            httpUrlConn.setUseCaches(false);
-
-            // 设置请求方式(GET/POST)
-            httpUrlConn.setRequestMethod(requestMethod);
-
-            if ("GET".equalsIgnoreCase(requestMethod)){
-                httpUrlConn.connect();
-            }
-
-            // 当有数据需要提交时
-            if (null != outputStr) {
-                OutputStream outputStream = httpUrlConn.getOutputStream();
-                // 注意编码格式,防止中文乱码
-                outputStream.write(outputStr.getBytes("UTF-8"));
-                outputStream.close();
-            }
-
-            // 将返回的输入流转换成字符串
-            InputStream inputStream = httpUrlConn.getInputStream();
-            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
-            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
-
-            String str = null;
-            while ((str = bufferedReader.readLine()) != null) {
-                buffer.append(str);
-            }
-            bufferedReader.close();
-            inputStreamReader.close();
-            // 释放资源
-            inputStream.close();
-            inputStream = null;
-            httpUrlConn.disconnect();
-            jsonObject = JSONObject.parseObject(buffer.toString());
-        } catch (ConnectException ce) {
-            log.error("Weixin server connection timed out.");
-        } catch (Exception e) {
-            log.error("https request error:{}", e);
-        }
-        return jsonObject;
-    }
-
 
 
 
 
 }
 }

+ 11 - 0
twzd-service/src/main/java/com/miaxis/feign/dto/WxGzhMini.java

@@ -0,0 +1,11 @@
+package com.miaxis.feign.dto;
+
+import lombok.Data;
+
+@Data
+public class WxGzhMini {
+
+    private String appid; //是 所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)
+    private String pagepath; // 否	所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏
+
+}

+ 22 - 0
twzd-service/src/main/java/com/miaxis/feign/dto/WxMessageCusom.java

@@ -0,0 +1,22 @@
+package com.miaxis.feign.dto;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author wwl
+ * @version 1.0
+ * @date 2021/11/29 14:00
+ */
+@Data
+public class WxMessageCusom {
+
+    private String touser; //是	接收者(用户)的 openid
+    private String msgtype; //消息类型(text、image、voice、video、music)
+    private Map text; //文本
+    private Map image; //图片
+    private Map voice; //语音
+    private Map video; //视频
+
+}

+ 19 - 0
twzd-service/src/main/java/com/miaxis/feign/dto/WxMessageTemplate.java

@@ -0,0 +1,19 @@
+package com.miaxis.feign.dto;
+
+import lombok.Data;
+
+/**
+ * @author wwl
+ * @version 1.0
+ * @date 2021/11/29 13:29
+ */
+@Data
+public class WxMessageTemplate {
+
+    private String touser; //是	接收者(用户)的 openid
+    private String template_id;  // 是	所需下发的订阅模板id
+    private String url; // 否 模板跳转链接(海外帐号没有跳转能力)
+    private WxGzhMini miniprogram; //否	跳小程序所需数据,不需跳小程序可不用传该数据
+    private Object data; //是 模板数据
+
+}

+ 23 - 0
twzd-service/src/main/java/com/miaxis/feign/service/IWxSendService.java

@@ -2,6 +2,8 @@ package com.miaxis.feign.service;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.miaxis.common.config.FeignConfig;
 import com.miaxis.common.config.FeignConfig;
+import com.miaxis.feign.dto.WxMessageCusom;
+import com.miaxis.feign.dto.WxMessageTemplate;
 import com.miaxis.feign.dto.WxQrTicket;
 import com.miaxis.feign.dto.WxQrTicket;
 import feign.Headers;
 import feign.Headers;
 
 
@@ -95,5 +97,26 @@ public interface IWxSendService {
                     @RequestParam("openid") String openid,
                     @RequestParam("openid") String openid,
                     @RequestParam("lang") String lang);
                     @RequestParam("lang") String lang);
 
 
+    /**
+     * 发送客服消息
+     * @param accessToken
+     * @param messageCusom
+     * @return
+     */
+    @PostMapping(value = "/message/custom/send")
+    String messageCustomSend(@RequestParam("access_token")String accessToken,
+                             WxMessageCusom messageCusom);
+
+    /**
+     * 发送模板消息
+     * @param accessToken
+     * @param messageTemplate
+     * @return
+     */
+    @PostMapping(value = "/message/template/send")
+    String messageTemplateSend(@RequestParam("access_token")String accessToken,
+                          WxMessageTemplate messageTemplate);
+
+
 
 
 }
 }

+ 68 - 15
twzd-service/src/main/java/com/miaxis/wx/service/impl/WxMessageEvenServiceImpl.java

@@ -12,6 +12,9 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.utils.http.HttpUtils;
 import com.miaxis.common.utils.http.HttpUtils;
+import com.miaxis.feign.dto.WxGzhMini;
+import com.miaxis.feign.dto.WxMessageCusom;
+import com.miaxis.feign.dto.WxMessageTemplate;
 import com.miaxis.feign.dto.WxQrTicket;
 import com.miaxis.feign.dto.WxQrTicket;
 import com.miaxis.feign.service.IWxSendService;
 import com.miaxis.feign.service.IWxSendService;
 import com.miaxis.spread.domain.WxSpreadRelation;
 import com.miaxis.spread.domain.WxSpreadRelation;
@@ -55,9 +58,6 @@ public class WxMessageEvenServiceImpl implements IWxMessageEvenService {
     @Value("${wxgzh.mediaUpload}")
     @Value("${wxgzh.mediaUpload}")
     private String mediaUpload;
     private String mediaUpload;
 
 
-    @Value("${wxgzh.messageCustomSend}")
-    private String messageCustomSend;
-
     @Value("${cos.bucketName}")
     @Value("${cos.bucketName}")
     private String bucketName;
     private String bucketName;
 
 
@@ -92,18 +92,8 @@ public class WxMessageEvenServiceImpl implements IWxMessageEvenService {
             wxSpreadRelation.setParentOpenid(openid);
             wxSpreadRelation.setParentOpenid(openid);
             wxSpreadRelationService.save(wxSpreadRelation);
             wxSpreadRelationService.save(wxSpreadRelation);
 
 
-            //推送绑定信息到上级
-            HashMap<String, Object> map = new HashMap<>();
-            map.put("touser",openid);
-            map.put("msgtype","text");
-            HashMap<String, Object> contentMap = new HashMap<>();
-            contentMap.put("content","用户: "+userName+"\n内容: 已成功绑定到您的下级"+"\n备注: 无");
-//            contentMap.put("content","用户openid:"+fromUserName);
-            map.put("text",contentMap);
-            String jsonString = JSON.toJSONString(map);
-            String path = messageCustomSend + token;
-            JSONObject jsonObject = HttpUtils.httpRequest(path, "POST", jsonString);
-            log.info("回复客服消息:[{}],响应信息:[{}]",jsonString,jsonObject);
+            //推送绑定模板信息到上级
+            messageTemplateSend(openid,token,userName);
 
 
             message = "已成功绑定推广关系!";
             message = "已成功绑定推广关系!";
         }else if (!spreads.isEmpty()){
         }else if (!spreads.isEmpty()){
@@ -124,6 +114,9 @@ public class WxMessageEvenServiceImpl implements IWxMessageEvenService {
     @Override
     @Override
     public String gainTicketEvent(String fromUserName,String token) {
     public String gainTicketEvent(String fromUserName,String token) {
 
 
+        //发送客服信息
+        messageCustomSend(fromUserName,token);
+
         // 根据fromUserName查询缓存 判断用户推广码是否过期
         // 根据fromUserName查询缓存 判断用户推广码是否过期
         if (redisTemplate.hasKey(Constants.GZH_MATERIAL_KEY + fromUserName)){
         if (redisTemplate.hasKey(Constants.GZH_MATERIAL_KEY + fromUserName)){
             String mediaId = (String) redisTemplate.opsForValue().get(Constants.GZH_MATERIAL_KEY + fromUserName);
             String mediaId = (String) redisTemplate.opsForValue().get(Constants.GZH_MATERIAL_KEY + fromUserName);
@@ -237,4 +230,64 @@ public class WxMessageEvenServiceImpl implements IWxMessageEvenService {
     }
     }
 
 
 
 
+    /**
+     * 发送客服消息
+     * @param fromUserName
+     * @param token
+     */
+    private void messageCustomSend(String fromUserName,String token){
+
+        WxMessageCusom wxMessageCusom = new WxMessageCusom();
+        wxMessageCusom.setTouser(fromUserName);
+        wxMessageCusom.setMsgtype("text");
+        HashMap<String, Object> contentMap = new HashMap<>();
+        contentMap.put("content","正在努力生成推广码请稍等...");
+        wxMessageCusom.setText(contentMap);
+        String send = wxSendService.messageCustomSend(token, wxMessageCusom);
+        JSONObject jsonObject = JSONObject.parseObject(send);
+        log.info("回复客服消息:[{}],响应信息:[{}]",contentMap,jsonObject);
+    }
+
+    /**
+     * 发送模板信息
+     * @param openid
+     * @param token
+     * @param nickName
+     */
+    private void messageTemplateSend(String openid,String token,String nickName){
+
+        WxMessageTemplate messageTemplate = new WxMessageTemplate();
+        messageTemplate.setTouser(openid);
+        messageTemplate.setTemplate_id("P4nKRB6L3dmhBjEj1VeE0gr9yC11Z0uBTAuu-XKmIjs");
+        messageTemplate.setUrl("http://weixin.qq.com/download");
+        WxGzhMini wxGzhMini = new WxGzhMini();
+        messageTemplate.setMiniprogram(wxGzhMini);
+
+        JSONObject jsonObject = new JSONObject();
+        JSONObject first = new JSONObject();
+        JSONObject keyword1 = new JSONObject();
+        JSONObject keyword2 = new JSONObject();
+        JSONObject keyword3 = new JSONObject();
+        first.put("value","您好,已成功绑定您的账号!");
+        first.put("color","#173177");
+        keyword1.put("value",nickName);
+        keyword1.put("color","#173177");
+        keyword2.put("value", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm"));
+        keyword2.put("color","#173177");
+        keyword3.put("value","此用户下单后您将获得对应抽成,"+"\n点击 我的->我要提现,即可提现到余额!"+"\n点击查看已绑定信息!");
+        keyword3.put("color","#173177");
+        jsonObject.put("first",first);
+        jsonObject.put("keyword1",keyword1);
+        jsonObject.put("keyword2",keyword2);
+        jsonObject.put("keyword3",keyword3);
+        messageTemplate.setData(jsonObject);
+        String result = wxSendService.messageTemplateSend(token,messageTemplate);
+        JSONObject parseObject = JSONObject.parseObject(result);
+        log.info("模板消息:[{}],响应信息:[{}]",messageTemplate,parseObject);
+
+    }
+
+
+
+
 }
 }