1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 微信公众号消息推送 微信发送消息

java 微信公众号消息推送 微信发送消息

时间:2021-03-29 23:09:44

相关推荐

java 微信公众号消息推送 微信发送消息

WxMpProperties微信配置类:

package com.person.modules.wx;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.ponent;import java.util.List;/*** 微信配置类** @author zms* @date -03-22**/@Component@Data@ConfigurationProperties(prefix = "wx.mp")public class WxMpProperties {/*** 多个公众号配置信息*/private List<MpConfig> configs;@Datapublic static class MpConfig {/*** 设置微信公众号的appid*/private String appId;/*** 设置微信公众号的app secret*/private String secret;/*** 设置微信公众号的token*/private String token;/*** 设置微信公众号的EncodingAESKey*/private String aesKey;}}

WeChatTemplateYml 微信消息模板配置类

package com.person.modules.wx.demo;import io.swagger.annotations.ApiModelProperty;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.ponent;import java.io.Serializable;/*** 微信消息模板配置类** @author zms* @date -06-10**/@Component@Data@ConfigurationProperties(prefix = "information.template")public class WeChatTemplateYml implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "派车审核通知")private String review;@ApiModelProperty(value = "派车申请通知")private String apply;@ApiModelProperty(value = "派车消息提醒司机")private String driver;@ApiModelProperty(value = "考勤打卡提醒")private String attendance;@ApiModelProperty(value = "保险提醒")private String insurance;@ApiModelProperty(value = "车辆年检提醒")private String inspection;@ApiModelProperty(value = "车辆保养提醒")private String maintain;@ApiModelProperty(value = "驾驶证到期提醒")private String license;@ApiModelProperty(value = "域名")private String domain;}

配置类

wx:mp:configs:- appId: wxe15e8bf14b988f4c # 第一个公众号的appid 测试环境secret: 5e3b8566bdaf1549cf3f3b4bc52d8cb7 # 公众号的appsecrettoken: jyrhpcxt# 接口配置里的Token值aesKey: IOihv439BIS6Xhc8hIRFPcPnPtIOaDIY2guk4nX84rA # 接口配置里的EncodingAESKey值information:template:review: HUz2gc3ovirQZudcfF5DxhqFcSzD76uUzp-EXn_ysrQ #派车审核通知apply: UZ0kw8Qg0cSsHVXGw3lmbhcACVcYobT-CcWuvVvtn-I #派车申请通知driver: siWN4-XRfjE-jQ59OuRfYyyJWS2vr5JaT-JQtzzPHW0 #派车消息提醒司机attendance: Pfmj4ZDRrF_upukDZ8Ej9R5fJ3M-LELHa2I5FvvgCEY #考勤打卡提醒insurance: NUKs3FMZpbzjBPk3HkapOegPOZ9FUkx-uDv8zkkjYXA #保险提醒inspection: oCy66gBaWKb_HtoxYTxg61X0ZU7yW0t2l5Nx11VsHkE #车辆年检提醒maintain: sQgJ-zwY7m3_6EXSncIPXZVT07t76SUGrfAyd_gAU_s #车辆保养提醒license: Ja3KmGyVMvZuORFpi8YnpIaS2KUtml1KdkSw0As47xQ #驾驶证到期提醒domain: /wechat/dist/index.html?carUrl= #域名

WxChatConstant 微信公众号相关操作的链接

package com.person.modules.wx;public interface WxChatConstant {/*** 微信公众号相关操作的链接*/interface Url {/*** 1、获取 accessToken 的请求地址* 参数1: APPID* 参数2: APPSECRET*/String ACCESS_TOKEN_URL = "https://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";/*** 2、发送模版信息的url* 参数1: ACCESS_TOKEN*/String SEND_URL = "https://api./cgi-bin/message/template/send?access_token=ACCESS_TOKEN";}}

WxChatCache 微信 accessToken缓存

package com.person.modules.wx;public class WxChatCache {/*** 微信 accessToken缓存*/public static class AccessToken {public static String token = null; // accessTokenpublic static Long expiration = 0L; // accessToken 过期时间(获取的token 默认有效期2小时)}}

WeChetAccessToken 获取微信token工具类

package com.person.modules.wx;import cn.hutool.log.Log;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import mon.utils.Assert;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.http.ResponseEntity;import org.ponent;import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;/*** 获取微信token工具类*/@Componentpublic class WeChetAccessToken {private Logger logger = LoggerFactory.getLogger(getClass());/*** 微信配置*/@Resourceprivate WxMpProperties wxMpProperties;/*** RPC*/@Resourceprivate RestTemplate restTemplate;/*** 获取 accessToken (token有效期为2小时, 设置缓存, 过期并重新获取 accessToken)* <p>* 微信请求正确返回 {\"access_token\":\"37_B7bSN7N0VoqOVhf5rOk7NOHY6aMoxvE15VxNIcnD3f2kXvZkc0HOU-9rhfGZyWAoYkVfLrPzxTMhdcf86kgQeabfWSV-DH0hUYD8YMBF9vcbASzwRlEE3zJbKW2PuHJIl5Nu4BLouY4rUSFwTCBbAHAIRQ\",\"expires_in\":7200}* 微信请求错误返回 {"errcode":40013,"errmsg":"invalid appid"}* </p>* <P>*流程:*1、 判断token是否过期*2、 获取 url 并拼接参数 APPID + APPSECRET*3、 发起请求*4、 判断请求是否成功*5、 缓存accessToken + accessToken过期时间到jvm 内存中* </P>* @author wangsong* @date 6月19日 下午5:55:11* @return*/public String getToken() {if (WxChatCache.AccessToken.expiration <= System.currentTimeMillis()) {String url = WxChatConstant.Url.ACCESS_TOKEN_URL.replace("APPID", wxMpProperties.getConfigs().get(0).getAppId()).replace("APPSECRET", wxMpProperties.getConfigs().get(0).getSecret());//httpResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);JSONObject jsonObject = JSON.parseObject(forEntity.getBody());Object errcode = jsonObject.get("errcode");if (errcode != null && "40013".equals(errcode.toString())) {System.out.println("===============错误============");// throw new ErrorException(RType.WX_GET_ACCESS_TOKEN_ERROR);}// 设置为1小时59分钟有效期,防止空指针异常Object access_token = jsonObject.get("access_token");Assert.checkNull(access_token,"=======空access_token");WxChatCache.AccessToken.token = jsonObject.get("access_token").toString();System.out.println("========token============================");System.out.println("初始化Token======: "+jsonObject.get("access_token").toString());WxChatCache.AccessToken.expiration = ((Integer.parseInt(jsonObject.get("expires_in").toString()) - 1) * 1000) + System.currentTimeMillis();}else {logger.info("未过期Token==:"+WxChatCache.AccessToken.token);logger.info("expiration==:"+WxChatCache.AccessToken.expiration);}System.out.println("=AccessToken=:"+WxChatCache.AccessToken.token);return WxChatCache.AccessToken.token;}}

WeChatTemplateMsg推送的微信公众信息的每一个 {{}} 值的内容和颜色封装

package com.person.modules.wx;import lombok.Data;import lombok.ToString;/*** 推送的微信公众信息的每一个 {{}} 值的内容和颜色封装*/@Data@ToStringpublic class WeChatTemplateMsg {/*** 消息*/private String value;/*** 消息颜色*/private String color;public WeChatTemplateMsg(String value) {this.value = value;this.color = "#173177";}public WeChatTemplateMsg(String value, String color) {this.value = value;this.color = color;}}

BaseWeChatServiceImpl微信通用service层

package com.person.modules.wx;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.client.RestTemplate;/*** 微信通用service层*/public class BaseWeChatServiceImpl {/*** rpc*/@Autowiredprotected RestTemplate restTemplate;/*** 获取token*/@Autowiredprotected WeChetAccessToken weChetAccessToken;}

测试

WxChatController

package com.person.modules.wx.demo;import mon.utils.ResultData;import com.person.modules.apply.pojo.vo.CarApplyVo;import io.swagger.annotations.Api;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiImplicitParams;import io.swagger.annotations.ApiOperation;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import springfox.documentation.annotations.ApiIgnore;import javax.annotation.Resource;/*** 微信公众号测试接口* @author wangsong* @mail 1720696548@* @date /9/9 0009 14:41 * @version 1.0.0*/@RestController@RequestMapping("/wechat/template/msg")@Api(value = "WxChatController", tags = "WeChat --> 微信模板消息推送")public class WxChatController {@Resourceprivate WxChatService wxChatService;/*** 我的openId: o8nrg503tfKwepDE4zKeP2g9PujU* @return*/@RequestMapping(value = "/sendTest", method = RequestMethod.GET)@ApiOperation("推送测试信息")@ApiImplicitParams({@ApiImplicitParam(name = "openId", value = "微信openId", required = true, paramType = "query", defaultValue = "oQ9Sn5payywZj5IpEaU1UIJvqlfU"),@ApiImplicitParam(name = "title", value = "标题", required = true, paramType = "query" ),@ApiImplicitParam(name = "carUserName", value = "用车人", required = true, paramType = "query" ),@ApiImplicitParam(name = "carUserPhone", value = "用车人电话", required = true, paramType = "query" ),@ApiImplicitParam(name = "startingTime", value = "用车时间 yyyy-MM-dd HH:mm:SS", required = true, paramType = "query" ),@ApiImplicitParam(name = "endTime", value = "返回时间 yyyy-MM-dd HH:mm:SS", required = true, paramType = "query" ),@ApiImplicitParam(name = "passengersNumber", value = "乘车人数", required = true, paramType = "query" ),@ApiImplicitParam(name = "startingPoint", value = "出发地", required = true, paramType = "query"),@ApiImplicitParam(name = "destination", value = "目的地", required = true, paramType = "query" ),@ApiImplicitParam(name = "type", value = "类型:审批VehicleApproval 取消VehicleRecords 司机收车ReturnTheCar 用车人VehicleRecords", required = true, paramType = "query" )})public ResultData<?> sendTest(@ApiIgnore String openId, @ApiIgnore CarApplyVo carApplyVo,@ApiIgnore String title,@ApiIgnore String type) {wxChatService.sendTest(openId, carApplyVo,title,type);return ResultData.result();}}

openId: 要发送的openId

carApplyVo: 这是我传入数据的对象

title: 消息的头标题

type: 这是我用于区分是那种消息,区分点击消息链接URl 的跳转地址

WxChatService

package com.person.modules.wx.demo;import com.person.modules.apply.pojo.vo.CarApplyVo;import com.person.modules.attendance.pojo.Vo.UserAttendanceVo;import com.person.modules.vehicle.pojo.form.CarVehicleRemind;/*** 公众号派车消息提醒* @author zms* @date /3/24**/public interface WxChatService {/*** 审批 VehicleApproval* 取消 VehicleRecords* 司机收车 ReturnTheCar*用车人 VehicleRecords*考勤打卡 Attendance*/String TS_SP ="maytask/VehicleApproval";String TS_QX_YCR ="maytask/VehicleRecords";String TS_SC ="maytask/ReturnTheCar";String TS_PC="maytask/SendCar";String KQ_DK="maytask/Attendance";/*** 向一个用户推送消息(测试)* @param openId 微信id* @param type 类型* @param title 类型* @param vo 信息*/void sendTest(String openId, CarApplyVo vo, String title, String type);/*** 用车人提示的司机信息* @param openId 微信id* @param type 类型* @param title 类型* @param vo 信息*/void sendTestCar(String openId, CarApplyVo vo, String title, String type);/*** 派车审核通知* @param openId* @param vo* @param title* @param type*/void sendApproval(String openId, CarApplyVo vo, String title, String type);/*** 考勤打卡提醒* @param openId 微信id* @param vo 类型* @param title 类型* @param type 类型*/void attendancePunchReminder(String openId, UserAttendanceVo vo, String title, String type);/*** 保险提醒* @param openId 微信openId* @param vehicleRemind 类型* @param title 类型* @param type 类型*/void insuranceReminder(String openId, CarVehicleRemind vehicleRemind, String title, String type);/*** 车辆年检提醒* @param openId 微信openId* @param vehicleRemind 提示消息* @param title 标题* @param type 类型*/void checkReminder(String openId, CarVehicleRemind vehicleRemind, String title, String type);/*** 车辆保养提醒* @param openId 微信openId* @param vehicleRemind 提示消息* @param title 标题* @param type 类型*/void maintainReminder(String openId, CarVehicleRemind vehicleRemind, String title, String type);/*** 驾驶证到期 提醒* @param openId 微信openId* @param vehicleRemind 提示消息* @param title 标题* @param type 类型*/void licenseReminder(String openId, CarVehicleRemind vehicleRemind, String title, String type);}

WxChatServiceImpl

package com.person.modules.wx.demo;import mon.utils.Assert;import mon.utils.BaseException;import mon.utils.DateUtilS;import com.person.modules.apply.pojo.vo.CarApplyVo;import com.person.modules.attendance.pojo.Vo.UserAttendanceVo;import com.person.modules.vehicle.pojo.form.CarVehicleRemind;import com.person.modules.wx.BaseWeChatServiceImpl;import com.person.modules.wx.WeChatTemplateMsg;import com.person.modules.wx.WxChatConstant;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Service;import javax.annotation.Resource;import java.text.SimpleDateFormat;import java.util.HashMap;import java.util.Map;/*** 向微信公众号推送消息* @author zms* @date /5/11**/@Servicepublic class WxChatServiceImpl extends BaseWeChatServiceImpl implements WxChatService {@Resourceprivate WeChatTemplateYml weChatTemplateYml;/*** 派车审核通知* HUz2gc3ovirQZudcfF5DxhqFcSzD76uUzp-EXn_ysrQ 测试* r76nyhEIet6Cd58ROWsHh6w-PCaDeIpbox3YOohnIiE* {{first.DATA}}* 用车人:{{keyword1.DATA}}* 用车时间:{{keyword2.DATA}}* 行车路线:{{keyword3.DATA}}* {{remark.DATA}}* @param openId* @param vo* @param title* @param type*/@Overridepublic void sendApproval(String openId, CarApplyVo vo, String title, String type) {// 模板IdString templateId = weChatTemplateYml.getReview();// 模板参数Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>(5);sendMag.put("first", new WeChatTemplateMsg(title));sendMag.put("keyword1", new WeChatTemplateMsg(vo.getCarUserName()));sendMag.put("keyword2", new WeChatTemplateMsg(vo.getStartingTime().toString().replaceFirst("T", " ")+"—"+vo.getEndTime().toString().replaceFirst("T", " ")));sendMag.put("keyword3", new WeChatTemplateMsg(vo.getStartingPoint()+"—"+vo.getDestination()));sendMag.put("remark", new WeChatTemplateMsg("申请部门:"+vo.getDepartmentName()+"\n"+"用车人电话:"+vo.getCarUserPhone()+"\n"+"乘车人数:"+vo.getPassengersNumber()+"(人)"));// 发送this.send(openId, templateId, sendMag,type);}/**原来的ueFbjXIngyMaWUqPdDf4E1Vv7_BOVAaLKxpPk0mxFyY* UZ0kw8Qg0cSsHVXGw3lmbhcACVcYobT-CcWuvVvtn-I* 1、派车申请通知{{first.DATA}}申请人:{{keyword1.DATA}}用车时间:{{keyword2.DATA}}行车路线:{{keyword3.DATA}}车辆司机:{{keyword4.DATA}}用车事由:{{keyword5.DATA}}{{remark.DATA}}* @param openId 微信用户的openId* @param vo 发送的内容* @param title 小标题* @param type 类别*/@Overridepublic void sendTest(String openId, CarApplyVo vo, String title, String type) {// 模板Id 测试String templateId = weChatTemplateYml.getApply();// 模板参数Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>(7);sendMag.put("first", new WeChatTemplateMsg(title));sendMag.put("keyword1", new WeChatTemplateMsg(vo.getCarUserName()));sendMag.put("keyword2", new WeChatTemplateMsg(vo.getStartingTime().toString().replaceFirst("T", " ")+"—"+vo.getEndTime().toString().replaceFirst("T", " ")));sendMag.put("keyword3", new WeChatTemplateMsg(vo.getStartingPoint()+"—"+vo.getDestination()));sendMag.put("keyword4", new WeChatTemplateMsg(vo.getDriverName()));sendMag.put("keyword5", new WeChatTemplateMsg(vo.getReason()));sendMag.put("remark", new WeChatTemplateMsg("乘车人数:"+vo.getPassengersNumber()+"(人)"+"\n"+"车牌号:"+vo.getCarNumber()+"\n"+"司机电话:"+vo.getDriverPhone()));// 发送this.send(openId, templateId, sendMag,type);}/** 派车消息提醒司机* b_UFJAg0nGjWRoErBItzwXLYOrNPGOY3595Mk4fPj4o* siWN4-XRfjE-jQ59OuRfYyyJWS2vr5JaT-JQtzzPHW0* {{first.DATA}}* 申请部门:{{keyword1.DATA}}* 申请事由:{{keyword2.DATA}}* 用车时间:{{keyword3.DATA}}* 行程地址:{{keyword4.DATA}}* 客户信息:{{keyword5.DATA}}* @param openId 微信id* @param vo 信息* @param title 类型* @param type 类型*/@Overridepublic void sendTestCar(String openId, CarApplyVo vo, String title, String type) {// 模板Id ceshiString templateId = weChatTemplateYml.getDriver();// 模板参数Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>(7);sendMag.put("first", new WeChatTemplateMsg(title));sendMag.put("keyword1", new WeChatTemplateMsg(vo.getDepartmentName()));sendMag.put("keyword2", new WeChatTemplateMsg(vo.getReason()));sendMag.put("keyword3", new WeChatTemplateMsg(vo.getStartingTime().toString().replaceFirst("T", " ")+"—"+vo.getEndTime().toString().replaceFirst("T", " ")));sendMag.put("keyword4", new WeChatTemplateMsg(vo.getStartingPoint()+"—"+vo.getDestination()));sendMag.put("keyword5", new WeChatTemplateMsg(vo.getCarUserName()));sendMag.put("remark", new WeChatTemplateMsg("用车人电话:"+vo.getCarUserPhone()+"\n"+"乘车人数:"+vo.getPassengersNumber()+"(人)"));// 发送this.send(openId, templateId, sendMag,type);}/*** 考勤打卡提醒原来模板id:z5aA7bYarYcYrn3k_DIVlsEle6N2chgL6CrvfomtMgUPfmj4ZDRrF_upukDZ8Ej9R5fJ3M-LELHa2I5FvvgCEY{{first.DATA}} 考勤提醒姓名:{{keyword1.DATA}}时间:{{keyword2.DATA}} yyyy-MM-dd HH:mm:SS状态:{{keyword3.DATA}} 上班未打卡、下班未打卡{{remark.DATA}}* @param openId 微信id* @param vo 信息* @param title 类型 考勤提醒* @param type 类型 KQ_DK*/@Overridepublic void attendancePunchReminder(String openId, UserAttendanceVo vo, String title, String type) {// 模板Id 测试String templateId = weChatTemplateYml.getAttendance();// 模板参数Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>(5);sendMag.put("first", new WeChatTemplateMsg(title));sendMag.put("keyword1", new WeChatTemplateMsg(vo.getName()));sendMag.put("keyword2", new WeChatTemplateMsg(new SimpleDateFormat("HH:mm:ss").format(vo.getDateTime())));sendMag.put("keyword3", new WeChatTemplateMsg(vo.getType()));sendMag.put("remark", new WeChatTemplateMsg(vo.getRemark()));// 发送this.send(openId, templateId, sendMag,type);}/**保险提醒* NUKs3FMZpbzjBPk3HkapOegPOZ9FUkx-uDv8zkkjYXA 测试* Kx-q4JQr5JVay09TlWD7Jw2Upmy6WDbUOPgo8nMYHHo 正式* {{first.DATA}}* 车型:{{keyword1.DATA}}* 保险到期:{{keyword2.DATA}}* {{remark.DATA}}* @param openId 微信openId* @param v 类型* @param title 类型* @param type 类型*/@Overridepublic void insuranceReminder(String openId, CarVehicleRemind v, String title, String type) {// 模板IdString templateId = weChatTemplateYml.getInsurance();// 模板参数Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>(4);sendMag.put("first", new WeChatTemplateMsg(title));sendMag.put("keyword1", new WeChatTemplateMsg(v.getBrand()));sendMag.put("keyword2", new WeChatTemplateMsg(v.getNextInsuranceTime().toString()));sendMag.put("remark", new WeChatTemplateMsg("车牌号:"+v.getLicensePlateNumber()+"\n"+"如未办理,请及时办理,以免影响出行。"));// 发送this.send(openId, templateId, sendMag,type);}/**车辆年检提醒* oCy66gBaWKb_HtoxYTxg61X0ZU7yW0t2l5Nx11VsHkE 测试* j8OVibPZoHdhr2pNKTuPqYH9dnaUB9-f5p9n2FTwxp8 正式* {{first.DATA}}* 车牌号码:{{keyword1.DATA}}* 有效期止:{{keyword2.DATA}}* {{remark.DATA}}* @param openId 微信openId* @param v 提示消息* @param title 标题* @param type 类型*/@Overridepublic void checkReminder(String openId, CarVehicleRemind v, String title, String type) {// 模板IdString templateId =weChatTemplateYml.getInspection();// 模板参数Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>(4);sendMag.put("first", new WeChatTemplateMsg(title));sendMag.put("keyword1", new WeChatTemplateMsg(v.getLicensePlateNumber()));sendMag.put("keyword2", new WeChatTemplateMsg(v.getNextInspectionTime().toString()));sendMag.put("remark", new WeChatTemplateMsg("车型:"+v.getBrand()+"\n"+"如未办理,请及时办理,以免影响出行。"));// 发送this.send(openId, templateId, sendMag,type);}/**车辆保养提醒* sQgJ-zwY7m3_6EXSncIPXZVT07t76SUGrfAyd_gAU_s 测试* 1kecOZKza2uyNN7j-wfWxY3GB0U04cUg6lz-BW35b68 正式* {{first.DATA}}* 车型:{{keyword1.DATA}}* 上次保养时间:{{keyword2.DATA}}* 上次保养里程:{{keyword3.DATA}}* {{remark.DATA}}* @param openId 微信openId* @param v 提示消息* @param title 标题* @param type 类型*/@Overridepublic void maintainReminder(String openId, CarVehicleRemind v, String title, String type) {// 模板IdString templateId = weChatTemplateYml.getMaintain();// 模板参数Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>(5);sendMag.put("first", new WeChatTemplateMsg(title));sendMag.put("keyword1", new WeChatTemplateMsg(v.getBrand()));sendMag.put("keyword2", new WeChatTemplateMsg(DateUtilS.nowLLocalDate().plusDays(200).toString()));sendMag.put("keyword3", new WeChatTemplateMsg(v.getNowMileage().subtract(v.getFixedMileage()).toString()));sendMag.put("remark", new WeChatTemplateMsg("车牌号:"+v.getLicensePlateNumber()+"\n"+"如未办理,请及时办理,以免影响出行。"));// 发送this.send(openId, templateId, sendMag,type);}/**驾驶证到期提醒* 您的证件即将到期* Ja3KmGyVMvZuORFpi8YnpIaS2KUtml1KdkSw0As47xQ 测试* o1BwRJ_xEVL4BqxDr5rovLvAsXRJZPi6xIGQroWvLi0 正式* {{first.DATA}}* 证件类型:{{keyword1.DATA}}* 人员姓名:{{keyword2.DATA}}* 证件有效期至:{{keyword3.DATA}}* {{remark.DATA}}* @param openId 微信openId* @param v 提示消息* @param title 标题* @param type 类型*/@Overridepublic void licenseReminder(String openId, CarVehicleRemind v, String title, String type) {// 模板IdString templateId = weChatTemplateYml.getLicense();// 模板参数Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>(4);sendMag.put("first", new WeChatTemplateMsg(title));sendMag.put("keyword1", new WeChatTemplateMsg(v.getDrivingLicense()));sendMag.put("keyword2", new WeChatTemplateMsg(v.getDriverName()));sendMag.put("keyword3", new WeChatTemplateMsg(v.getNextTime().toString()));sendMag.put("remark", new WeChatTemplateMsg("司机电话:"+v.getPhone()+"\n"+"如未办理,请及时办理,以免影响出行。"));// 发送this.send(openId, templateId, sendMag,type);}/*** 发送模版消息工具类* openId用户Id* templateId 模板Id 测试: "ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY"* data 模板参数* @param data*/private String send(String openId, String templateId, Map<String, WeChatTemplateMsg> data,String type) {System.out.println("================消息推送开始===================");//微信域名配置 测试//String myUrl="/wechat/dist/index.html?carUrl=";//生产//String myUrl="http://497og49009.qicp.vip/wechat/dist/index.html?carUrl=";String myUrl=weChatTemplateYml.getDomain();if (TS_SC.equals(type)){myUrl+=TS_SC;}else if(TS_SP.equals(type)){myUrl+=TS_SP;}else if(TS_QX_YCR.equals(type)){myUrl+=TS_QX_YCR;}else if(TS_PC.equals(type)){myUrl+=TS_PC;}else if(KQ_DK.equals(type)){myUrl+=KQ_DK;}else {myUrl=null;}Assert.checkNull(weChetAccessToken,"weChetAccessToken空");String accessToken = weChetAccessToken.getToken();String url = WxChatConstant.Url.SEND_URL.replace("ACCESS_TOKEN", accessToken);//拼接base参数Map<String, Object> sendBody = new HashMap<>(5);// openIdsendBody.put("touser", openId);// 点击模板信息跳转地址sendBody.put("url", myUrl);// 顶色sendBody.put("topcolor", "#FF0000");// 模板参数sendBody.put("data", data);// 模板IdsendBody.put("template_id", templateId);ResponseEntity<String> forEntity = restTemplate.postForEntity(url, sendBody, String.class);System.out.println("===========消息已推送========");System.out.println("openId:"+openId);System.out.println("消息:"+data);System.out.println("url:"+myUrl);System.out.println("================消息推送結束===================");try {forEntity.getBody();} catch (Exception e) {e.printStackTrace();throw new BaseException("公众号消息推送失败,请查看网络!");}return forEntity.getBody();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。