发送公众号模板消息测试

This commit is contained in:
gxwebsoft
2023-11-10 00:48:30 +08:00
parent f1e41ac4d1
commit 5b5ccad15f
3 changed files with 116 additions and 5 deletions

View File

@@ -14,10 +14,7 @@ import com.gxwebsoft.common.core.utils.CommonUtil;
import com.gxwebsoft.common.core.utils.RedisUtil; import com.gxwebsoft.common.core.utils.RedisUtil;
import com.gxwebsoft.common.core.web.ApiResult; import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.common.system.entity.Role; import com.gxwebsoft.common.system.entity.*;
import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.common.system.entity.UserOauth;
import com.gxwebsoft.common.system.entity.UserRole;
import com.gxwebsoft.common.system.param.RoleParam; import com.gxwebsoft.common.system.param.RoleParam;
import com.gxwebsoft.common.system.param.UserParam; import com.gxwebsoft.common.system.param.UserParam;
import com.gxwebsoft.common.system.service.RoleService; import com.gxwebsoft.common.system.service.RoleService;
@@ -113,6 +110,7 @@ public class WxOfficialController extends BaseController {
final String unionid = jsonObject.getString("unionid"); final String unionid = jsonObject.getString("unionid");
final String subscribe = jsonObject.getString("subscribe"); final String subscribe = jsonObject.getString("subscribe");
System.out.println("unionid = " + unionid); System.out.println("unionid = " + unionid);
sendTemplateMessage(openId);
// 关注操作 // 关注操作
if (subscribe != null &&subscribe.equals("1")) { if (subscribe != null &&subscribe.equals("1")) {
final int count = userOauthService.count(new LambdaQueryWrapper<UserOauth>().eq(UserOauth::getOauthType, MP_OFFICIAL).eq(UserOauth::getUnionid, unionid).eq(UserOauth::getTenantId,tenantId)); final int count = userOauthService.count(new LambdaQueryWrapper<UserOauth>().eq(UserOauth::getOauthType, MP_OFFICIAL).eq(UserOauth::getUnionid, unionid).eq(UserOauth::getTenantId,tenantId));
@@ -169,10 +167,39 @@ public class WxOfficialController extends BaseController {
System.out.println("关注微信公众号 = " + save); System.out.println("关注微信公众号 = " + save);
} }
} }
} }
return null; return null;
} }
private void sendTemplateMessage(String openId){
String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + getAccessToken();
TemplateMessage templateMessage = new TemplateMessage();
templateMessage.setToUser(openId);
templateMessage.setTemplateId("DSGpuDx1i7AWyRXejalnkq5AeslKnkm6T9omu6NPoLM"); // dVSbX2NRzAG7IuN4kkCQhgV-LjzxvApN3PgrGlon9JU
/*
您好,您已成功消费。
商品名:微信影城影票
消费时间2013年8月20日 20:38
备注:您可以回复文字或语音对该商品及商家进行评价哦~
{{productType.DATA}}{{name.DATA}} 消费时间:{{time.DATA}} {{remark.DATA}}
*/
HashMap<String, TemplateMessageDTO> data = new HashMap<>();
data.put("thing33",new TemplateMessageDTO("您的新的工单需要处理"));
data.put("phrase5",new TemplateMessageDTO("网站故障"));
data.put("time40",new TemplateMessageDTO("2023-11-11"));
System.out.println("data = " + data);
// 链式构建请求
String result = HttpRequest.post(url)
.body(JSONObject.toJSONString(data))//表单内容
.timeout(20000)//超时,毫秒
.execute().body();
System.out.println("result = " + result);
System.out.println("getAccessToken() = " + getAccessToken());
}
@ApiOperation("send发送订阅通知") @ApiOperation("send发送订阅通知")
@PostMapping("/send") @PostMapping("/send")
public ApiResult<?> send(UserParam param) { public ApiResult<?> send(UserParam param) {
@@ -256,6 +283,6 @@ public class WxOfficialController extends BaseController {
public ApiResult<?> count(){ public ApiResult<?> count(){
final int count = userOauthService.count(new LambdaQueryWrapper<UserOauth>().eq(UserOauth::getOauthType, MP_OFFICIAL).eq(UserOauth::getUnionid, "o0FaIuKa2UsVp6FCbvmZlrcaBRCM")); final int count = userOauthService.count(new LambdaQueryWrapper<UserOauth>().eq(UserOauth::getOauthType, MP_OFFICIAL).eq(UserOauth::getUnionid, "o0FaIuKa2UsVp6FCbvmZlrcaBRCM"));
System.out.println("count = " + count); System.out.println("count = " + count);
return success(count); return success(getAccessToken());
} }
} }

View File

@@ -0,0 +1,49 @@
package com.gxwebsoft.common.system.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 微信公众号模板消息对象
*
* @author WebSoft
* @since 2018-12-24 16:10:54
*/
@Data
@ApiModel(description = "微信公众号模板消息对象")
public class TemplateMessage implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("接收者openid")
@TableField(exist = false)
private String toUser;
@ApiModelProperty("模板ID")
@TableField(exist = false)
private String templateId;
@ApiModelProperty("模板跳转链接(海外账号没有跳转能力)")
@TableField(exist = false)
private String url;
@ApiModelProperty("跳小程序所需数据,不需跳小程序可不用传该数据")
@TableField(exist = false)
private String miniProgram;
@ApiModelProperty("所需跳转到的小程序appid该小程序appid必须与发模板消息的公众号是绑定关联关系暂不支持小游戏")
@TableField(exist = false)
private String appid;
@ApiModelProperty("所需跳转到小程序的具体页面路径,支持带参数,示例index?foo=bar要求该小程序已发布暂不支持小游戏")
@TableField(exist = false)
private String pagePath;
@ApiModelProperty("模板数据")
@TableField(exist = false)
private Object data;
}

View File

@@ -0,0 +1,35 @@
package com.gxwebsoft.common.system.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 微信公众号模板消息对象
*
* @author WebSoft
* @since 2018-12-24 16:10:54
*/
@Data
@ApiModel(description = "模板消息内容")
public class TemplateMessageDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("消息实参")
@TableField(exist = false)
private String value;
@ApiModelProperty("消息颜色")
private String color;
public TemplateMessageDTO(String value) {
this.value = value;
}
public TemplateMessageDTO(String value, String color) {
this.value = value;
this.color = color;
}
}