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<String> entity = new HttpEntity<String>(headers);
|
// ResponseEntity<String> 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<WxMaSubscribeMessage.MsgData> 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<String, String> params, LimsAppointmentAudit audit) {
|
System.err.println(params.toString());
|
//1.发送消息服务
|
WxMaMsgService msgService = wxMaService.getMsgService();
|
//2.组装消息
|
WxMaSubscribeMessage msg = new WxMaSubscribeMessage();
|
List<WxMaSubscribeMessage.MsgData> 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<SysUser> result = systemClient.minilist().getResult();
|
AtomicReference<String> 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<String, String> params, LimsAppointmentAudit audit) {
|
//1.发送消息服务
|
WxMaMsgService msgService = wxMaService.getMsgService();
|
//2.组装消息
|
WxMaSubscribeMessage msg = new WxMaSubscribeMessage();
|
List<WxMaSubscribeMessage.MsgData> 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<String> 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;
|
}
|
|
|
}
|