package cn.ksource.web.service.wechat;
|
|
import cn.ksource.beans.GG_MESSAGE;
|
import cn.ksource.beans.GG_USER;
|
import cn.ksource.core.CascadeMap;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.util.*;
|
import cn.ksource.core.weixin.service.WeiXinCoreService;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.controller.wechat.util.WechatConstants;
|
import cn.ksource.web.exception.ExceptionHandler;
|
|
import org.apache.log4j.Logger;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
|
@Service("wechatService")
|
public class WechatServiceImpl implements WechatService {
|
|
@Autowired
|
private WeiXinCoreService weiXinCoreService;
|
|
@Autowired
|
private BaseDao baseDao;
|
|
|
private static Logger logger = org.apache.log4j.Logger.getLogger(WechatServiceImpl.class);
|
@Override
|
public boolean sendTemplateMsg(String[] openId, String orderId,String orderType,String sendPeople,String content,String remark) {
|
String token = weiXinCoreService.getAccess_token();
|
System.out.println("token---------------------->"+token);
|
String url = WechatConstants.SEND_TEMPLATE_MSG + weiXinCoreService.getAccess_token();
|
if(!StringUtil.notEmpty(sendPeople)) {
|
sendPeople = Constants.company_name+"服务台";
|
}
|
|
if(null!=openId && openId.length>0) {
|
Map result = new HashMap();
|
result.put("template_id", WechatConstants.NEW_ORDER_TEMP_ID);
|
|
String orderDetailUrl = new String();
|
String title = "您好,您有新的工单到达";
|
/*if(orderType.equals(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REPAIR.toString())) {
|
orderDetailUrl = WechatConstants.ORDER_REPAIR_DETAIL_ADDRESS + orderId;
|
title = "您好,您有新的报障工单到达";
|
} else if(orderType.equals(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_ADD.toString())) {
|
orderDetailUrl = WechatConstants.ORDER_ADD_DETAIL_ADDRESS + orderId;
|
title = "您好,您有新的新增工单到达";
|
}else if(orderType.equals(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_HEALTH.toString())){
|
orderDetailUrl = WechatConstants.ORDER_HEALTH_DETAIL_ADDRESS + orderId;
|
title = "您好,您有新的月度巡检工单到达";
|
}else if(orderType.equals(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND.toString())){
|
orderDetailUrl = WechatConstants.ORDER_REMIND_DETAIL_ADDRESS + orderId;
|
title = "您好,您有新的例行维保工单到达";
|
}*/
|
|
result.put("url", orderDetailUrl);
|
result.put("topcolor", "#FF0000");
|
|
Map data = new HashMap();
|
result.put("data", data);
|
data.put("first", new CascadeMap("value",title).put("color", "#173177"));
|
data.put("keyword1", new CascadeMap("value",content).put("color", "#173177"));
|
data.put("keyword2", new CascadeMap("value",sendPeople).put("color", "#173177"));
|
data.put("keyword3", new CascadeMap("value",DateUtil.getToday("yyyy-MM-dd HH:mm:ss")).put("color", "#173177"));
|
data.put("remark", new CascadeMap("value",remark).put("color", "#173177"));
|
|
List<SqlParameter> recordParams = new ArrayList<SqlParameter>();
|
|
long sendTime = DateUtil.getCurrentDate14();
|
|
for(String str : openId) {
|
result.put("touser", str);
|
String json = JsonUtil.map2Json(result);
|
HttpUtil.doPost(url, json, HttpCharset.UTF8);
|
|
GG_USER user = new GG_USER().setOpen_id(str).queryForBean();
|
|
SqlParameter sqlParameter = new SqlParameter();
|
sqlParameter.put("orderId", orderId);
|
sqlParameter.put("openId", str);
|
sqlParameter.put("sendPeople", sendPeople);
|
sqlParameter.put("sendTime", sendTime);
|
sqlParameter.put("title", title);
|
sqlParameter.put("content", content);
|
sqlParameter.put("remark", remark);
|
sqlParameter.put("infoType", Constants.GG_MSG_RECORD_INFO_TYPE_TX);
|
sqlParameter.put("id", StringUtil.getUUID());
|
sqlParameter.put("receive_user_name", user.getZsxm());
|
sqlParameter.put("receive_time", sendTime);
|
sqlParameter.put("sendType", Constants.GG_MSG_RECORD_SEND_TYPE_WECHAT);
|
//保存发送记录
|
recordParams.add(sqlParameter);
|
}
|
this.saveSendRecord(recordParams);
|
}
|
return true;
|
}
|
|
|
@Override
|
public boolean sendSysMsg(String[] openId, GG_MESSAGE message) {
|
String token = weiXinCoreService.getAccess_token();
|
System.out.println("token---------------------->"+token);
|
String url = WechatConstants.SEND_TEMPLATE_MSG + token;
|
if(null!=openId && openId.length>0) {
|
Map result = new HashMap();
|
result.put("template_id", WechatConstants.NEW_ORDER_TEMP_ID);
|
|
String orderDetailUrl = message.getWx_url();
|
String title = "["+message.getOrder_code()+"]" + message.getTitle();
|
|
result.put("topcolor", "#FF0000");
|
|
Map data = new HashMap();
|
result.put("data", data);
|
data.put("first", new CascadeMap("value",title).put("color", "#173177"));
|
data.put("keyword1", new CascadeMap("value",message.getContent()).put("color", "#173177"));
|
data.put("keyword2", new CascadeMap("value",message.getSender_name()).put("color", "#173177"));
|
data.put("keyword3", new CascadeMap("value",DateUtil.format("yyyy-MM-dd HH:mm:ss", message.getSend_time())).put("color", "#173177"));
|
data.put("remark", new CascadeMap("value","").put("color", "#173177"));
|
|
String baseWxUrl = message.getWx_url();
|
for(String str : openId) {
|
result.put("touser", str);
|
result.put("url", baseWxUrl+"&openId="+str);
|
String json = JsonUtil.map2Json(result);
|
//开始发送数据信息
|
System.out.println("url------------------->"+url);
|
System.out.println("json------------------->"+json);
|
|
|
HttpUtil.doPost(url, json, HttpCharset.UTF8);
|
}
|
}
|
return true;
|
}
|
|
|
|
|
|
|
@Override
|
public boolean bindingNotice(String openId, String unBindUrl,String wxId,String username, String function,String remark) {
|
String token = weiXinCoreService.getAccess_token();
|
System.out.println("token---------------------->"+token);
|
logger.info("token---------------------->"+token);
|
String url = WechatConstants.SEND_TEMPLATE_MSG + token;
|
System.out.println(url);
|
logger.info("url---------------------->"+url);
|
Map result = new HashMap();
|
result.put("touser", openId);
|
result.put("template_id", WechatConstants.BIND_SUCCESS_TEMP_ID);
|
//result.put("url", unBindUrl);
|
result.put("topcolor", "#FF0000");
|
|
Map data = new HashMap();
|
result.put("data", data);
|
// data.put("first", new CascadeMap("value","您好,您的账号已成功绑定此微信").put("color", "#173177"));
|
data.put("first", new CascadeMap("value","您已成功绑定"+Constants.company_name).put("color", "#173177"));
|
// data.put("keyword1", new CascadeMap("value",wxId).put("color", "#173177"));
|
data.put("keyword1", new CascadeMap("value",username).put("color", "#173177"));
|
data.put("keyword2", new CascadeMap("value",DateUtil.getToday("yyyy年MM月dd日 HH:mm")).put("color", "#173177"));
|
data.put("remark", new CascadeMap("value",remark).put("color", "#173177"));
|
String json = JsonUtil.map2Json(result);
|
System.out.println(json);
|
HttpUtil.doPost(url, json, HttpCharset.UTF8);
|
return true;
|
}
|
|
/**
|
* 通过openId获取用户基本信息
|
*/
|
@Override
|
public Map queryUserBaseMsgByOpenId(String openId) {
|
System.out.println("openId-------------"+openId);
|
System.out.println(WechatConstants.GET_USER_BASE_MSG+"---------");
|
String token=weiXinCoreService.getAccess_token();
|
System.out.println("token----------"+token);
|
String baseMsgUrl = WechatConstants.GET_USER_BASE_MSG.replace("ACCESS_TOKEN", token).replace("OPENID", openId);
|
String returnMsg = HttpUtil.doGet(baseMsgUrl, new HashMap<String, String>(), HttpCharset.UTF8);
|
Map resultMap = JsonUtil.json2Map(returnMsg);
|
return resultMap;
|
}
|
|
|
@Override
|
public boolean sendReminderTemplateMsg(String[] openId,String orderId,String title,String orderType,String content, String reminderPeople, String remark) {
|
String token = weiXinCoreService.getAccess_token();
|
System.out.println("token---------------------->"+token);
|
String url = WechatConstants.SEND_TEMPLATE_MSG + token;
|
if(null!=openId && openId.length>0) {
|
Map result = new HashMap();
|
result.put("template_id", WechatConstants.REMINDER_TEMP_ID);
|
result.put("topcolor", "#FF0000");
|
|
|
/*String orderDetailUrl = new String();
|
if(orderType.equals(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REPAIR.toString())) {
|
orderDetailUrl = WechatConstants.ORDER_REPAIR_DETAIL_ADDRESS + orderId;
|
}*/
|
|
if(!StringUtil.notEmpty(title)) {
|
title = "您有新的催办事项";
|
}
|
|
List<SqlParameter> recordParams = new ArrayList<SqlParameter>();
|
|
long sendTime = DateUtil.getCurrentDate14();
|
|
Map data = new HashMap();
|
result.put("data", data);
|
data.put("first", new CascadeMap("value",title).put("color", "#173177"));
|
data.put("keyword1", new CascadeMap("value",content).put("color", "#173177"));
|
data.put("keyword2", new CascadeMap("value",reminderPeople).put("color", "#173177"));
|
data.put("keyword3", new CascadeMap("value",DateUtil.getToday("yyyy-MM-dd HH:mm:ss")).put("color", "#173177"));
|
data.put("remark", new CascadeMap("value",remark).put("color", "#173177"));
|
for(String str : openId) {
|
// result.put("url", orderDetailUrl + "&openId="+str);
|
result.put("url", "");
|
result.put("touser", str);
|
String json = JsonUtil.map2Json(result);
|
HttpUtil.doPost(url, json, HttpCharset.UTF8);
|
|
|
|
GG_USER user = new GG_USER().setOpen_id(str).queryForBean();
|
|
SqlParameter sqlParameter = new SqlParameter();
|
sqlParameter.put("orderId", orderId);
|
sqlParameter.put("openId", str);
|
sqlParameter.put("sendPeople", reminderPeople);
|
sqlParameter.put("sendTime", sendTime);
|
sqlParameter.put("title", title);
|
sqlParameter.put("content", content);
|
sqlParameter.put("remark", remark);
|
sqlParameter.put("infoType", Constants.GG_MSG_RECORD_INFO_TYPE_CB);
|
sqlParameter.put("id", StringUtil.getUUID());
|
sqlParameter.put("receive_user_name", user.getZsxm());
|
sqlParameter.put("receive_time", sendTime);
|
sqlParameter.put("sendType", Constants.GG_MSG_RECORD_SEND_TYPE_WECHAT);
|
//保存发送记录
|
recordParams.add(sqlParameter);
|
}
|
this.saveSendRecord(recordParams);
|
}
|
return true;
|
}
|
|
|
/**
|
* 微信解绑通知
|
*/
|
@Override
|
public boolean unbindingNotice(String openId,String bindUrl,String wxName, String remark) {
|
String token = weiXinCoreService.getAccess_token();
|
System.out.println("token---------------------->"+token);
|
String url = WechatConstants.SEND_TEMPLATE_MSG + token;
|
System.out.println(url);
|
Map result = new HashMap();
|
result.put("touser", openId);
|
result.put("template_id", WechatConstants.UNBIND_SUCCESS_TEMP_ID);
|
result.put("url", bindUrl);
|
result.put("topcolor", "#FF0000");
|
|
Map data = new HashMap();
|
result.put("data", data);
|
data.put("first", new CascadeMap("value","您已成功与"+Constants.company_name+"解除绑定").put("color", "#173177"));
|
data.put("keyword1", new CascadeMap("value",wxName).put("color", "#173177"));
|
data.put("keyword2", new CascadeMap("value","该微信已不能接收"+Constants.company_name+"消息").put("color", "#173177"));
|
data.put("remark", new CascadeMap("value",remark).put("color", "#173177"));
|
String json = JsonUtil.map2Json(result);
|
System.out.println(json);
|
HttpUtil.doPost(url, json, HttpCharset.UTF8);
|
return true;
|
}
|
|
/**
|
* 保存发送记录
|
*/
|
private void saveSendRecord(List<SqlParameter> paramList) {
|
String insertSql = "INSERT INTO GG_MSG_RECORD(ID,SEND_USER_NAME,SEND_TIME,RECEIVE_USER_NAME,RECEIVE_TIME,SEND_TYPE,TITLE,CONTENT,REMARK,BUSINESS_ID,INFO_TYPE) VALUES " +
|
"(:id,:sendPeople,:sendTime,:receive_user_name,:receive_time,:sendType,:title,:content,:remark,:orderId,:infoType)";
|
baseDao.executeBatch(insertSql,paramList);
|
}
|
|
|
@Override
|
public boolean sendWxMsg(List<Map> openIds, GG_MESSAGE message) {
|
String token = weiXinCoreService.getAccess_token();
|
System.out.println("token---------------------->"+token);
|
String url = WechatConstants.SEND_TEMPLATE_MSG + token;
|
if(null!=openIds && openIds.size()>0) {
|
Map result = new HashMap();
|
result.put("template_id", WechatConstants.NEW_ORDER_TEMP_ID);
|
|
String orderDetailUrl = message.getWx_url();
|
String title = "["+message.getOrder_code()+"]" + message.getTitle();
|
|
result.put("topcolor", "#FF0000");
|
|
Map data = new HashMap();
|
result.put("data", data);
|
data.put("first", new CascadeMap("value",title).put("color", "#173177"));
|
data.put("keyword1", new CascadeMap("value",message.getContent()).put("color", "#173177"));
|
data.put("keyword2", new CascadeMap("value",message.getSender_name()).put("color", "#173177"));
|
data.put("keyword3", new CascadeMap("value",DateUtil.format("yyyy-MM-dd HH:mm:ss", message.getSend_time())).put("color", "#173177"));
|
data.put("remark", new CascadeMap("value","").put("color", "#173177"));
|
|
for(Map map : openIds) {
|
String openId = ConvertUtil.obj2StrBlank(map.get("openId"));
|
result.put("touser", openId);
|
result.put("url", ConvertUtil.obj2StrBlank(map.get("wxUrl"))+"&openId="+openId);
|
String json = JsonUtil.map2Json(result);
|
HttpUtil.doPost(url, json, HttpCharset.UTF8);
|
}
|
}
|
return true;
|
|
}
|
|
|
}
|