微信小程序订阅消息通过服务通知发送
代码实现:
-
核心代码
-
传输实体类
package com.minapp.management.entity.dto;
import lombok.Data;
import java.io.Serializable;
//小程序模板消息发送模板
@Data
public class AppletTemplateMessageSendDTO implements Serializable {
//接收者(用户)的 openid
private String touser;
//所需下发的订阅模板id
private String template_id;
//所跳转的页面
private String page;
//模板消息内容
private Object data;
}
-
本地缓存类
package com.minapp.management.utils;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
// 本地缓存类
public class CacheManager {
private static Map<String, CacheData> CACHE_DATA = new ConcurrentHashMap<>();
public static <T> T getData(String key, Load<T> load, int expire) {
T data = getData(key);
if (data == null && load != null) {
data = load.load();
if (data != null) {
setData(key, data, expire);
}
}
return data;
}
// 根据key获取数据
public static <T> T getData(String key) {
CacheData<T> data = CACHE_DATA.get(key);
if (data != null && (data.getExpire() <= 0 || data.getSaveTime() >= System.currentTimeMillis())) {
return data.getData();
}
return null;
}
// 存入数据并设置过期时间
public static <T> void setData(String key, T data, int expire) {
CACHE_DATA.put(key, new CacheData(data, expire));
}
// 根据key清除数据
public static void clear(String key) {
CACHE_DATA.remove(key);
}
// 清除所有缓存数据
public static void clearAll() {
CACHE_DATA.clear();
}
public interface Load<T> {
T load();
}
private static class CacheData<T> {
CacheData(T t, int expire) {
this.data = t;
this.expire = expire <= 0 ? 0 : expire * 1000;
this.saveTime = System.currentTimeMillis() + this.expire;
}
private T data;
private long saveTime; // 存活时间
private long expire; // 过期时间 小于等于0标识永久存活
public T getData() {
return data;
}
public long getExpire() {
return expire;
}
public long getSaveTime() {
return saveTime;
}
}
}
测试:
AppletTemplateMessageSendDTO appletTemplateMessageSendDTO = new AppletTemplateMessageSendDTO();
appletTemplateMessageSendDTO.setTouser("openid");
appletTemplateMessageSendDTO.setTemplate_id("模板id");
appletTemplateMessageSendDTO.setPage("跳转的页面");
Map<String,Object> map = new HashMap<>();
Map<String,Object> thing6 = new HashMap<>();
Map<String,Object> time8 = new HashMap<>();
Map<String,Object> phone_number7 = new HashMap<>();
Map<String,Object> thing10 = new HashMap<>();
thing6.put("value","xqd");
time8.put("value","2020-12-29");
phone_number7.put("value", "17600026666");
thing10.put("value","测试一下订阅消息");
map.put("thing6",thing6);
map.put("time8",time8);
map.put("phone_number7",phone_number7);
map.put("thing10",thing10);
appletTemplateMessageSendDTO.setData(map);
wxAppletRemoteService.uniformMessageSend(appletTemplateMessageSendDTO);
发送成功
上一篇:
uniapp开发微信小程序-2.页面制作
