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 recordParams = new ArrayList(); 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(), 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 recordParams = new ArrayList(); 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 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 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; } }