package org.jeecg.modules.lims.service.impl; import cn.binarywang.wx.miniapp.api.WxMaMsgService; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaUserService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.lims.api.JeecgSystemClient; import org.jeecg.modules.lims.entity.LimsAppointmentAudit; import org.jeecg.modules.lims.entity.SysUser; import org.jeecg.modules.lims.entity.WxAccessToken; import org.jeecg.modules.lims.service.IWxService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; @Service public class WxServiceImpl implements IWxService { @Autowired private WxMaService wxMaService; @Autowired private JeecgSystemClient systemClient; @Autowired private LimsAppointmentAuditServiceImpl auditService; @Override public WxAccessToken getWxAccessToken() { // RestTemplate restTemplate = new RestTemplate(); // String uri = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+wxMaConfig.getAppid()+"&secret="+wxMaConfig.getSecret(); // HttpHeaders headers = new HttpHeaders(); // headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8")); // HttpEntity entity = new HttpEntity(headers); // ResponseEntity response = restTemplate.exchange(uri, HttpMethod.GET, entity, String.class); // System.err.println("1212121212"); // System.err.println(uri); // System.out.println(response); // System.out.println(response.getBody()); try { String accessToken = wxMaService.getAccessToken(); WxMaMsgService msgService = wxMaService.getMsgService(); WxMaSubscribeMessage msg = new WxMaSubscribeMessage(); List data = new ArrayList<>(); WxMaSubscribeMessage.MsgData d1 = new WxMaSubscribeMessage.MsgData("thing1", "朱桂飞"); WxMaSubscribeMessage.MsgData d2 = new WxMaSubscribeMessage.MsgData("thing2", "软件开发部"); WxMaSubscribeMessage.MsgData d3 = new WxMaSubscribeMessage.MsgData("thing3", "高温测试仪"); WxMaSubscribeMessage.MsgData d4 = new WxMaSubscribeMessage.MsgData("short_thing4", "4小时"); data.add(d1); data.add(d2); data.add(d3); data.add(d4); msg.setMiniprogramState("developer"); msg.setTemplateId("B_o0wim0Y0logboa6uuu3dYurdW9uHiVHOGAEAd1sOw"); msg.setPage("pages/appo/appoAudit"); msg.setToUser("ogmOE5B2uxDwMhuWkkOsq885p_hQ"); msg.setData(data); msgService.sendSubscribeMsg(msg); System.err.println(accessToken); } catch (WxErrorException e) { e.printStackTrace(); } return null; } @Override public void sendMessage(Map params, LimsAppointmentAudit audit) { System.err.println(params.toString()); //1.发送消息服务 WxMaMsgService msgService = wxMaService.getMsgService(); //2.组装消息 WxMaSubscribeMessage msg = new WxMaSubscribeMessage(); List data = new ArrayList<>(); WxMaSubscribeMessage.MsgData d1 = new WxMaSubscribeMessage.MsgData("thing1", params.get("realname")); WxMaSubscribeMessage.MsgData d2 = new WxMaSubscribeMessage.MsgData("thing2", params.get("depart")); WxMaSubscribeMessage.MsgData d3 = new WxMaSubscribeMessage.MsgData("thing3", params.get("equ")); WxMaSubscribeMessage.MsgData d4 = new WxMaSubscribeMessage.MsgData("short_thing4", params.get("time")); data.add(d1); data.add(d2); data.add(d3); data.add(d4); msg.setMiniprogramState("formal"); msg.setTemplateId("B_o0wim0Y0logboa6uuu3dYurdW9uHiVHOGAEAd1sOw"); msg.setPage("pages/appo/appoAudit"); msg.setData(data); //3.查询需要推送的用户 List result = systemClient.minilist().getResult(); AtomicReference errMessage = new AtomicReference<>(); errMessage.set(""); AtomicBoolean success = new AtomicBoolean(false); if (result.size()>0) { result.forEach(item -> { //4.发送消息 try { if (!StringUtils.isEmpty(item.getOpenid())) { msg.setToUser(item.getOpenid()); msgService.sendSubscribeMsg(msg); success.set(true); errMessage.set(""); } else { System.err.println("微信推送消息:审批管理员openid为空!"); if (!success.get()) { errMessage.set("微信推送消息:审批管理员openid为空!"); } } } catch (WxErrorException e) { e.printStackTrace(); if (!success.get()) { errMessage.set("微信推送消息:消息推送异常!"); } } }); } else { errMessage.set("微信推送消息:没有审批用户,推送消息失败!"); } audit.setRemark(StringUtils.isEmpty(errMessage.get()) ? "推送成功" : errMessage.get()); audit.setPush(StringUtils.isEmpty(errMessage.get()) ? 1 : 0); auditService.updateById(audit); } @Override public void sendMessageToUser(Map params, LimsAppointmentAudit audit) { //1.发送消息服务 WxMaMsgService msgService = wxMaService.getMsgService(); //2.组装消息 WxMaSubscribeMessage msg = new WxMaSubscribeMessage(); List data = new ArrayList<>(); WxMaSubscribeMessage.MsgData d1 = new WxMaSubscribeMessage.MsgData("thing7", params.get("equ")); WxMaSubscribeMessage.MsgData d2 = new WxMaSubscribeMessage.MsgData("thing2", params.get("realname")); WxMaSubscribeMessage.MsgData d3 = new WxMaSubscribeMessage.MsgData("time3", params.get("date")); WxMaSubscribeMessage.MsgData d4 = new WxMaSubscribeMessage.MsgData("thing10", params.get("result")); WxMaSubscribeMessage.MsgData d5 = new WxMaSubscribeMessage.MsgData("thing6", params.get("remark")); data.add(d1); data.add(d2); data.add(d3); data.add(d4); data.add(d5); msg.setMiniprogramState("formal"); msg.setTemplateId("ZDDaS7ujKRQJuFbNbVCRCbEYlOGF9_lf_xV1GQzeOvg"); msg.setPage("pages/appo/appoAudit"); msg.setData(data); //3.查询需要推送的用户 SysUser user = systemClient.queryByUserName(params.get("username")).getResult(); AtomicReference errMessage = new AtomicReference<>(); errMessage.set(""); AtomicBoolean success = new AtomicBoolean(false); if (user!=null) { //4.发送消息 try { if (!StringUtils.isEmpty(user.getOpenid())) { msg.setToUser(user.getOpenid()); msgService.sendSubscribeMsg(msg); success.set(true); errMessage.set(""); } else { System.err.println("微信推送消息:被通知用户openid为空!"); if (!success.get()) { errMessage.set("微信推送消息:被通知用户openid为空!"); } } } catch (WxErrorException e) { e.printStackTrace(); if (!success.get()) { errMessage.set("微信推送消息:消息推送异常!"); } } } } @Override public String getOpenId(String js_code) { WxMaUserService userService = wxMaService.getUserService(); String openid = null; try { WxMaJscode2SessionResult sessionInfo = userService.getSessionInfo(js_code); openid = sessionInfo.getOpenid(); System.err.println(openid); } catch (WxErrorException e) { e.printStackTrace(); } return openid; } }