/** 删除永久素材 */ public static WcResult deleteAbidingMedia(String tenantId, String mediaId) { WcResult rs = getClient(tenantId).deleteMaterial(WcCache.getAccessToken(tenantId), mediaId); if (rs != null && rs.isSuccess()) { WcMedia.me.delete(tenantId, mediaId); } return rs; }
/** 给用户发送客服消息。 */ private static void preSentMsg(WcEvent event, SentMsg sentMsg, String tenantId) { switch (WcMaterialType.get(event.getStr("reply_type"))) { // 文字 case TEXT: sentMsg.setContent(event.getStr("content")); break; // 图文,若果是图文就直接发送,jfianl 发送的 case NEWS: List<NewsArticle> list = NewsArticleService.getArticles(event.getInt("content")); NewsMsg newsMsg = (NewsMsg) sentMsg; String domain = WcCache.getWxBase(tenantId).getDomain(); for (NewsArticle detail : list) { newsMsg.addNews( detail.getStr("title"), detail.getStr("digest"), detail.getStr("cover_pic_url"), domain.concat("/msg/index?newsId=") + detail.getInt("id")); } break; default: } }
/** 上传文件到upyun和微信服务器 */ public static String upload(String tenantId, MediaType type, File file, boolean isForever) { Media media = null; // 上传到upyun TODO String url = ""; // 上传到微信服务器 String accessToken = WcCache.getAccessToken(tenantId); if (isForever) { media = getClient(tenantId).uploadAbidingMedia(type, file, accessToken); } else { media = getClient(tenantId).uploadTempMedia(type, file, accessToken); } // 删除临时文件 file.delete(); // 回调校验accessToken是否有效 WcCache.refreshAccessTokenIfInvalid(media, tenantId); Assert.isTrue(media != null && media.isSuccess(), "media upload to wechat fail"); // 将信息存库 WcMedia wm = new WcMedia(); wm.set("tenant_id", tenantId); wm.set("media_id", media.getMedia_id()); wm.set("type", type.getFlag()); wm.set("url", url); if (!isForever) { // 临时素材 3 * 24 * 60 * 60 * 1000 wm.set("expires_time", new Date(media.getCreated_at() + 3 * 24 * 60 * 60 * 1000L - 5L)); } wm.set("create_time", new Date(media.getCreated_at())); Assert.isTrue(wm.save(), "save wxmedia"); return media.getMedia_id(); }
private static MaterialClient getClient(String tenantId) { return WcClientFactory.getClient(MaterialClient.class, WcCache.getWxBase(tenantId)); }