package cn.ksource.web.facade.uc.login; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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.ConvertUtil; import cn.ksource.core.util.DateUtil; import cn.ksource.core.util.HttpCharset; import cn.ksource.core.util.HttpUtil; import cn.ksource.core.util.JsonUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.PasswordEncoder; import cn.ksource.core.web.WebUtil; import cn.ksource.core.weixin.service.WeiXinCoreService; import cn.ksource.web.Constants; import cn.ksource.web.controller.wechat.util.WechatConstants; import cn.ksource.web.facade.message.MessageFacade; @Service("ucFacade") public class UcFacadeImpl implements UcFacade { @Autowired private BaseDao baseDao; @Autowired private MessageFacade messageFacade; @Autowired private WeiXinCoreService weiXinCoreService; @Override public String updateUserPwd(String userId, String newPassword) { Map map = new HashMap(); if(!(StringUtil.notEmpty(newPassword)&&StringUtil.isPasswordReg(newPassword))) { map.put("status", "0"); map.put("msg", "密码由6-18位的字母,数字,下划线组成"); return JsonUtil.map2Json(map); } newPassword = newPassword.trim(); String sql = "SELECT * FROM CUSTOMER_CONTACTS WHERE ID = :userId "; Map userMap = baseDao.queryForMap(sql,new SqlParameter("userId",userId)); if(PasswordEncoder.encode(newPassword).equals(userMap.get("PASSWORD"))) { map.put("status", "0"); map.put("msg", "新密码和原密码一样!"); return JsonUtil.map2Json(map); } String updateSql = "UPDATE CUSTOMER_CONTACTS SET PASSWORD = :newPassword WHERE ID = :userId"; baseDao.execute(updateSql, new SqlParameter("newPassword",PasswordEncoder.encode(newPassword)).addValue("userId", userId)); map.put("status", "1"); return JsonUtil.map2Json(map); } @Override public String updateUserMobile(String userId, String mobile) { String sql = "UPDATE CUSTOMER_CONTACTS SET MOBILE = :phone,ISPHONE = 2 WHERE ID = :userId"; baseDao.execute(sql, new SqlParameter("phone",mobile).addValue("userId", userId)); return "1"; } @Override public boolean isPhone(String userId, String mobile) { String selectSql = "SELECT COUNT(1) FROM CUSTOMER_CONTACTS WHERE ID = :userId AND MOBILE = :phone AND ISPHONE = 2"; Integer count = baseDao.queryForInteger(selectSql,new SqlParameter("userId",userId).addValue("phone", mobile)); if(count>0){ return false; }else{ return true; } } @Override public boolean isEmail(String userId, String email) { String selectSql = "SELECT COUNT(1) FROM CUSTOMER_CONTACTS WHERE EMAIL = :email AND ISEMAIL = 2"; Integer count = baseDao.queryForInteger(selectSql,new SqlParameter("email", email)); if(count>0){ return false; }else{ return true; } } @Override public String updateUserEmail(String userId, String email) { String sql = "UPDATE CUSTOMER_CONTACTS SET EMAIL = :email,ISEMAIL = 2 WHERE ID = :userId"; baseDao.execute(sql, new SqlParameter("email",email).addValue("userId", userId)); return "1"; } @Override public String updateUserOldPwd(String userId, String oldPassword,String newPassword) { Map map = new HashMap(); if(!(StringUtil.notEmpty(newPassword)&&StringUtil.isPasswordReg(newPassword)&&StringUtil.notEmpty(oldPassword)&&StringUtil.isPasswordReg(oldPassword))) { map.put("status", "0"); map.put("msg", "密码由6-18位的字母,数字,下划线组成"); return JsonUtil.map2Json(map); } oldPassword = oldPassword.trim(); newPassword = newPassword.trim(); String sql = "SELECT COUNT(ID) FROM CUSTOMER_CONTACTS WHERE ID = :userId AND PASSWORD = :password"; int count = baseDao.queryForInteger(sql,new SqlParameter("userId",userId).addValue("password", PasswordEncoder.encode(oldPassword))); if(count == 0) { map.put("status", "0"); map.put("msg", "原密码输入错误!"); return JsonUtil.map2Json(map); } String updateSql = "UPDATE CUSTOMER_CONTACTS SET PASSWORD = :newPassword WHERE ID = :userId"; baseDao.execute(updateSql, new SqlParameter("newPassword",PasswordEncoder.encode(newPassword)).addValue("userId", userId)); map.put("status", "1"); return JsonUtil.map2Json(map); } @Override public Map getCusMsgByCusId(String customer_Id) { String sql = "SELECT A.CUSTOMER_NAME,A.YWJL_NAME,A.VALID_BEGIN_DATE,A.VALID_END_DATE,A.YWJL_ID FROM SC_PARTNER_CUSTOMER_INFO A,CUSTOMER_CONTACTS B WHERE B.CUSTOMER_ID = A.ID AND A.ID = :id "; Map proMap = baseDao.queryForMap(sql, new SqlParameter("id",customer_Id)); proMap.put("VALID_BEGIN_DATE", DateUtil.format("yyyy-MM-dd", proMap.get("VALID_BEGIN_DATE"))); proMap.put("VALID_END_DATE", DateUtil.format("yyyy-MM-dd", proMap.get("VALID_END_DATE"))); String id=ConvertUtil.obj2StrBlank(proMap.get("YWJL_ID")); if(StringUtil.notEmpty(id)){ GG_USER user=new GG_USER(id).getInstanceById(); proMap.put("PHONE", user.getSjhm()); } return proMap; } @Override public String getCusSatisByCusId(String customer_Id) { String sql = "SELECT ALL_SCORE FROM TOTLE_SATIS_INFO WHERE CUSTOMER_ID = :customer_Id AND MONTH = :month "; Map param = new HashMap(); param.put("customer_Id", customer_Id); param.put("month", DateUtil.getMonthAdd("yyyyMM", -1)); return baseDao.queryForString(sql, param); } @Override public int getZcUserByCusId(String customer_Id) { Map param = new HashMap(); param.put("customer_Id", customer_Id); String sqluser="SELECT COUNT(a.ID) FROM SC_CUSTOMER_ZC_UESR a,GG_USER b,AC_ROLE c,AC_USER_REF_ROLE d WHERE a.CUSTOMER_ID = :customer_Id and a.USER_ID=b.ID and b.ID=D.YHBH and c.ID=D.JSBH and c.IDENTIFY='LOCATION' and b.ZT=1 "; String sqlSubuser="SELECT COUNT(e.ID) FROM SC_PARTNER_CUSTOMER_SUB e,SC_CUSTOMER_ZC_UESR a,GG_USER b,AC_ROLE c,AC_USER_REF_ROLE d WHERE e.CUSTOMER_ID = :customer_Id AND a.ID = e.CUSTOMER_ID and a.USER_ID=b.ID and b.ID=D.YHBH and c.ID=D.JSBH and c.IDENTIFY='LOCATION' and b.ZT=1 "; int usernum = baseDao.queryForInteger(sqluser, param); int usersubnum = baseDao.queryForInteger(sqlSubuser, param); return usernum+usersubnum; } @Override public List getOrderNumByCusId(String customer_Id) { String sql = "SELECT BUSINESSTYPE ,COUNT(ID) AS NUM FROM WORKFLOW_BASE WHERE CUSTOMER_ID = :customer_Id GROUP BY BUSINESSTYPE "; return baseDao.queryForList(sql, new SqlParameter("customer_Id",customer_Id)); } @Override public List getOrderListByCusId(String customer_Id, int i) { String sql = "SELECT * FROM WORKFLOW_BASE WHERE WFSTATE != :ysc AND CUSTOMER_ID = :customer_Id ORDER BY CREATETIME DESC LIMIT 0,:size "; Map param = new HashMap(); param.put("customer_Id", customer_Id); param.put("size", i); param.put("ysc", Constants.WORKFLOW_BASE_WFSTATE_DELETE); return baseDao.queryForList(sql, param); } @Override public int getZcxjCount(String customer_Id) { StringBuilder sql = new StringBuilder(); sql.append(" select count(ID) from CI_DAILY_PATROL where CUS_ID=:customer_Id "); return baseDao.queryForInteger(sql.toString(), new SqlParameter("customer_Id",customer_Id)); } @Override public int getUserByRole(String rolemark) { String sql = "SELECT COUNT(C.ID) FROM AC_ROLE A,AC_USER_REF_ROLE B,GG_USER C WHERE A.ID = B.JSBH AND B.YHBH = C.ID AND A.IDENTIFY = :rolemark AND C.ZT = 1 "; return baseDao.queryForInteger(sql, new SqlParameter("rolemark",rolemark)); } @Override public int getUserByPwd(String userId, String pwd) { String sql = "SELECT COUNT(ID) FROM CUSTOMER_CONTACTS WHERE ID = :userId AND PASSWORD = :password"; int count = baseDao.queryForInteger(sql,new SqlParameter("userId",userId).addValue("password", PasswordEncoder.encode(pwd))); return count; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void doSubRepair(Map params) { StringBuilder sql = new StringBuilder(); sql.append(" insert into repair_record (id,create_id,create_name,status,create_time,cus_id,bx_title,bx_content,lx_phone) "); sql.append(" values (:id,:userId,:userName,:status,:create_time,:cusId,:bx_title,:bx_content,:lx_phone) "); params.put("id", StringUtil.getUUID()); params.put("create_time", DateUtil.getCurrentDate14().toString()); params.put("status", Constants.REPAIR_STATE_DXY.toString()); baseDao.execute(sql.toString(), params); params.put("SERVICE", "SERVICE"); String sqla="SELECT id FROM AC_ROLE where IDENTIFY=:SERVICE"; String id=baseDao.queryForString(sqla, params); sqla="select OPEN_ID from gg_user a,AC_USER_REF_ROLE b where a.id=b.yhbh and a.zt=1 and b.jsbh=:id"; params.put("id", id); List list=baseDao.queryForList(sqla, params); String openIds=""; if(list!=null && list.size()>0){ for(Map map:list){ if(StringUtil.notEmpty(ConvertUtil.obj2Str(map.get("OPEN_ID")))){ openIds+=ConvertUtil.obj2Str(map.get("OPEN_ID"))+","; } } } String[] openId=openIds.split(","); //发送微信消息 String token = weiXinCoreService.getAccess_token(); System.out.println("token---------------------->"+token); String url = WechatConstants.SEND_TEMPLATE_MSG + token; String title=""; String userName=""; if(StringUtil.notEmpty(ConvertUtil.obj2Str(params.get("userName")))){ userName="报修人-"+ConvertUtil.obj2Str(params.get("userName")); }else{ userName="报修人-"+ConvertUtil.obj2Str(params.get("lxr")); } String content=params.get("bx_content"); // if(null!=openId && openId.length>0) { // Map result = new HashMap(); // result.put("template_id", WechatConstants.REMINDER_TEMP_ID); // result.put("topcolor", "#FF0000"); // if(!StringUtil.notEmpty(title)) { // title = "您有新的报修事件"; // } // String content=params.get("bx_content"); // 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",userName).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","请及时处理").put("color", "#173177")); // for(String str : openId) { // result.put("url", ""); // result.put("touser", str); // String json = JsonUtil.map2Json(result); // HttpUtil.doPost(url, json, HttpCharset.UTF8); // } // } if(null!=openId && openId.length>0) { Map result = new HashMap(); result.put("template_id", WechatConstants.NEW_ORDER_TEMP_ID); String orderDetailUrl = ""; if(!StringUtil.notEmpty(title)) { title = "您有新的报修事件"; } 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",userName).put("color", "#173177")); data.put("keyword3", new CascadeMap("value",DateUtil.format("yyyy-MM-dd HH:mm:ss", DateUtil.getCurrentDate14())).put("color", "#173177")); data.put("remark", new CascadeMap("value","").put("color", "#173177")); String baseWxUrl = ""; for(String str : openId) { result.put("touser", str); result.put("url", WechatConstants.BASE_ADDRESS+"/ewyw/ewrepair/ewrepairPool.html"+"?openId="+str); String json = JsonUtil.map2Json(result); //开始发送数据信息 System.out.println("url------------------->"+url); System.out.println("json------------------->"+json); HttpUtil.doPost(url, json, HttpCharset.UTF8); } } } }