微信小程序订阅消息通过服务通知发送
代码实现:
-
核心代码
-
传输实体类
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.页面制作