From 7ba5730956fab5327b95110a8a70ff5ee025e35d Mon Sep 17 00:00:00 2001
From: fengjin <1435304038@qq.com>
Date: 星期一, 24 十月 2022 16:03:08 +0800
Subject: [PATCH] 放开短信测试
---
flower_city/src/main/java/com/dg/core/util/WxUtil.java | 181 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 175 insertions(+), 6 deletions(-)
diff --git a/flower_city/src/main/java/com/dg/core/util/WxUtil.java b/flower_city/src/main/java/com/dg/core/util/WxUtil.java
index f0d524f..1632219 100644
--- a/flower_city/src/main/java/com/dg/core/util/WxUtil.java
+++ b/flower_city/src/main/java/com/dg/core/util/WxUtil.java
@@ -1,35 +1,47 @@
package com.dg.core.util;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.dg.core.db.gen.entity.GuideEvolveEntity;
+import com.dg.core.db.gen.entity.GuideRepairOrder;
+import com.dg.core.db.gen.entity.SysUser;
import com.dg.core.db.manual.mapper.util.ConstantPropertiesUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
+import org.springframework.stereotype.Component;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+@Slf4j
+@Component
public class WxUtil {
private static String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
+
+ private static String miniprogramState="trial";//trial 为测试版 formal 为正式版 切记发布版本时候改为正式版
/**
* 获取花城token,(ps:0=token获取失败)
*
* @return
*/
- public String getBatteryCarAccessToken() throws Exception {
+ public String getBatteryCarAccessToken() throws Exception {
String accessToken = "0";
try {
// 此处APP_ID APP_SECRET 在微信小程序后端可见
// String accessTokenUrl = String.format(TEMP_URL, APP_ID, APP_SECRET);
String accessTokenUrl = ACCESS_TOKEN_URL + "&appid=" + ConstantPropertiesUtil.WX_OPEN_APP_ID
- + "&secret=" + ConstantPropertiesUtil.WX_OPEN_APP_SECRET;
- String result = this.httpGet(accessTokenUrl, null, null);
+ + "&secret=" +ConstantPropertiesUtil.WX_OPEN_APP_SECRET;
+ String result = httpGet(accessTokenUrl, null, null);
Map<String, Object> resultMap = JSON.parseObject(result, Map.class);
if (resultMap.containsKey("access_token")) {
accessToken = resultMap.get("access_token").toString();
@@ -105,6 +117,163 @@
}
}
+ /**
+ * http请求工具类,post请求
+ *
+ * @param url url
+ * @param param 参数值 仅支持String
+ * @return
+ * @throws Exception
+ */
+ public static String httpPost(String url, String param) throws Exception {
+ DefaultHttpClient defaultHttpClient = null;
+ BufferedReader bufferedReader = null;
+ try {
+ defaultHttpClient = new DefaultHttpClient();
+ HttpPost httpPost = new HttpPost(url);
+ httpPost.setHeader("Content-Type", "application/json;charset=ut-8");
+ if (StringUtils.isNotBlank(param)) {
+ HttpEntity httpEntity = new StringEntity(param, "utf-8");
+ httpPost.setEntity(httpEntity);
+ }
+ HttpResponse httpResponse = defaultHttpClient.execute(httpPost);
+ if (httpResponse.getStatusLine().getStatusCode() != 200) {
+ String errorLog = "请求失败,errorCode:" + httpResponse.getStatusLine().getStatusCode();
+ throw new Exception(url + errorLog);
+ }
+ // 读取返回信息
+ String output;
+ bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "utf-8"));
+ StringBuilder stringBuilder = new StringBuilder();
+ while ((output = bufferedReader.readLine()) != null) {
+ stringBuilder.append(output);
+ }
+ return stringBuilder.toString();
+ } catch (IOException e) {
+ e.printStackTrace();
+ throw e;
+ } finally {
+ if (defaultHttpClient != null)
+ defaultHttpClient.getConnectionManager().shutdown();
+ if (bufferedReader != null)
+ bufferedReader.close();
+ }
+ }
+
+
+
+ public static String wxMessageModeSendUrl(String token, WxSubscribeDTO subscribeDTO) throws Exception {
+ String tmpurl = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN";
+ String url = tmpurl.replace("ACCESS_TOKEN", token);
+ return httpPost(url, subscribeDTO.toJSON());
+ }
+
+ /**
+ * 订阅消息推送
+ *
+ * @param accessToken
+ * 获取会话token
+ * @return 消息推送结果
+ */
+ static void sendSubscribe(String accessToken, WxSubscribeDTO subscribeDTO) throws Exception {
+ String resultString = wxMessageModeSendUrl(accessToken, subscribeDTO);
+ JSONObject jsonResult = JSON.parseObject(resultString);
+ if (jsonResult != null) {
+ int errorCode = jsonResult.getIntValue("errcode");
+ String errorMessage = jsonResult.getString("errmsg");
+ if (errorCode == 0) {
+ System.out.println("订阅消息推送成功,openId:" + subscribeDTO.getTouser());
+ } else {
+ System.out.println(
+ "订阅消息发送失败,错误码:" + errorCode + ",错误信息:" + errorMessage + "用户openid:" + subscribeDTO.getTouser());
+ }
+ }
+ }
+
+ /**
+ * 工单完成推送
+ *
+ * @param openId
+ * 用户openid
+ * @param accessToken
+ * token会话标识
+ */
+ public void sendGuideRepairOrderComplete(String openId, String accessToken, String templateId, GuideEvolveEntity guideRepairOrder){
+ WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
+ subscribeDTO.setTouser(openId);
+ subscribeDTO.setTemplate_id(templateId);
+ subscribeDTO.setMiniprogram_state(miniprogramState);
+ subscribeDTO.setPage("packageE/pages/myApply/myApply");
+ List<TemplateParam> paras=new ArrayList<TemplateParam>();
+ Calendar calendar = Calendar.getInstance();
+ paras.add(new TemplateParam("thing1","导办申请"));//业务办理类型
+ paras.add(new TemplateParam("thing3",guideRepairOrder.getRemark()));
+ paras.add(new TemplateParam("phrase8","已完成"));
+ calendar.setTime(new Date());
+ paras.add(new TemplateParam("time4",calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DATE)+"日"));//结束日期
+ subscribeDTO.setTemplateParamList(paras);
+ try {
+ sendSubscribe(accessToken,subscribeDTO);
+ }catch (Exception e){
+ System.out.println(e.getMessage());
+ }
+ }
+
+
+ /**
+ * 工单提交推送
+ *
+ * @param openId
+ * 用户openid
+ * @param accessToken
+ * token会话标识
+ */
+ public void sendGuideRepairOrderSubmit(String openId, String accessToken, String templateId, GuideRepairOrder guideRepairOrder){
+ WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
+ subscribeDTO.setTouser(openId);
+ subscribeDTO.setTemplate_id(templateId);
+ subscribeDTO.setMiniprogram_state(miniprogramState);
+ subscribeDTO.setPage("packageE/pages/applyHandle/index/index");
+ List<TemplateParam> paras=new ArrayList<TemplateParam>();
+ paras.add(new TemplateParam("thing4","您有一个新的导办工单需要处理"));//工单新增提示内容
+ paras.add(new TemplateParam("thing2",guideRepairOrder.getConsultUserName()));//咨询人
+ paras.add(new TemplateParam("thing3",guideRepairOrder.getConsultContent()));//咨询内容
+ subscribeDTO.setTemplateParamList(paras);
+ try {
+ sendSubscribe(accessToken,subscribeDTO);
+ }catch (Exception e){
+ System.out.println(e.getMessage());
+ }
+ }
+
+
+ /**
+ * 工单超时推送
+ *
+ * @param openId
+ * 用户openid
+ * @param accessToken
+ * token会话标识
+ */
+ public void sendGuideRepairOrderOvertime(String openId, String accessToken, String templateId, SysUser sysUser){
+ WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
+ subscribeDTO.setTouser(openId);
+ subscribeDTO.setTemplate_id(templateId);
+ subscribeDTO.setMiniprogram_state(miniprogramState);
+ subscribeDTO.setPage("packageE/pages/applyHandle/index/index");
+ List<TemplateParam> paras=new ArrayList<TemplateParam>();
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(new Date());
+ paras.add(new TemplateParam("time1",calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DATE)+"日"));//超时时间
+ paras.add(new TemplateParam("thing2",sysUser.getUserName()+"导办人员有个工单已超时"));//咨询人
+ subscribeDTO.setTemplateParamList(paras);
+ try {
+ sendSubscribe(accessToken,subscribeDTO);
+ }catch (Exception e){
+ System.out.println(e.getMessage());
+ }
+ }
+
}
--
Gitblit v1.7.1