package cn.ksource.web.facade.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; 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.EqualUtil; import cn.ksource.core.util.JsonUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.OnlineUserListener; import cn.ksource.web.entity.LoginEntity; import cn.ksource.web.entity.PermissionEntity; import cn.ksource.web.facade.BusinessFacade; import cn.ksource.web.service.UserService; @Service("businessFacade") public class BusinessFacadeImpl implements BusinessFacade { @Resource(name="baseDao") private BaseDao baseDao; @Autowired private UserService userService; @SuppressWarnings("rawtypes") @Override public LoginEntity doUserLogin(String loginname, String password,String client_ip) { Map userMap = userService.getUserByLoginName(loginname); LoginEntity entity = new LoginEntity(); entity.setUser(userMap); //用户名不存在 if (userMap == null || userMap.isEmpty()) { entity.setResult(LoginEntity.Login_Result_UserNameNotExists); return entity; } //用户名或密码错误 if(!EqualUtil.isStringEqual(userMap.get("PASSWORD"), userService.getEncodedPassword(password))){ entity.setResult(LoginEntity.Login_Result_PassowrdError); return entity; } //用户被禁用 if (EqualUtil.isStringEqual(userMap.get("ZT"), "2")) { entity.setResult(LoginEntity.Login_Result_LoginForbid); return entity; } Map info = baseDao.queryForMap("SELECT * FROM SC_PARTNER_INFO "); //判断用户是否过期 if (ConvertUtil.obj2Long(info.get("VALID_END_DATE")) < DateUtil.getCurrentDate8()) { entity.setResult(LoginEntity.Login_Result_LoginTimeOut); return entity; } //用户已经登录 if (OnlineUserListener.container.containsKey(userMap.get("ID").toString())) { entity.setAlreadyLogined(true); return entity; } //于默认密码一致 if (password.equalsIgnoreCase(userService.getDefaultPwd())) { entity.setDefaultPassword(true); return entity; } PermissionEntity permissionEntity = userService.getAccessPermission(userMap.get("ID").toString()); entity.setPermissionEntity(permissionEntity); entity.setLoginSuccess(true); return entity; } public LoginEntity doChangePwdSubmit(String loginname,String newPwd){ userService.updatePwd(loginname, newPwd); Map userMap = userService.getUserByLoginName(loginname); LoginEntity entity = new LoginEntity(); entity.setUser(userMap); //用户已经登录 if (OnlineUserListener.container.containsKey(userMap.get("ID").toString())) { entity.setAlreadyLogined(true); return entity; } PermissionEntity permissionEntity = userService.getAccessPermission(userMap.get("ID").toString()); entity.setPermissionEntity(permissionEntity); entity.setLoginSuccess(true); return entity; } public LoginEntity doKickedOutSubmit(String loginname,String client_ip){ Map userMap = userService.getUserByLoginName(loginname); OnlineUserListener.container.get(userMap.get("ID")).invalidate(); LoginEntity entity = new LoginEntity(); entity.setUser(userMap); PermissionEntity permissionEntity = userService.getAccessPermission(userMap.get("ID").toString()); entity.setPermissionEntity(permissionEntity); entity.setLoginSuccess(true); return entity; } public boolean updateUserPwd(String userid,String oldPwd,String newPwd){ String sql = "SELECT LOGINNAME FROM GG_USER WHERE PASSWORD=:password AND ID=:id"; String loginname = baseDao.queryForString(sql,new SqlParameter("password", userService.getEncodedPassword(oldPwd)).addValue("id", userid)); if (StringUtils.isBlank(loginname)) { return false; } else { userService.updatePwd(loginname, newPwd); return true; } } @Override public Map getRoleMapByUserId(String userId) { StringBuilder sql = new StringBuilder(); sql.append("select r.id,r.rolename "); sql.append("from ac_role r "); sql.append("where exists (select id from ac_user_ref_role u where u.yhbh=:yhbh and u.jsbh=r.id) "); Map param = new HashMap(); param.put("yhbh", userId); List list = baseDao.queryForList(sql.toString(), param); Map tMap = new HashMap(); if (list != null && list.size() > 0) { for (Map map : list) { tMap.put(map.get("id"), map.get("rolename")); } } return tMap; } @Override public Map queryUserMsgByQQ(String openId) { String selectSql = "SELECT LOGINNAME FROM GG_USER WHERE QQ_OPEN_ID = :openId"; Map msg = baseDao.queryForMap(selectSql,new SqlParameter("openId",openId)); return msg; } @Override public LoginEntity doQQUserLogin(String loginname,String client_ip) { Map userMap = userService.getUserByLoginName(loginname); LoginEntity entity = new LoginEntity(); entity.setUser(userMap); //用户被禁用 if (EqualUtil.isStringEqual(userMap.get("ZT"), "2")) { entity.setResult(LoginEntity.Login_Result_LoginForbid); return entity; } Map info = baseDao.queryForMap("SELECT * FROM SC_PARTNER_INFO "); //判断用户是否过期 if (ConvertUtil.obj2Long(info.get("VALID_END_DATE")) < DateUtil.getCurrentDate8()) { entity.setResult(LoginEntity.Login_Result_LoginTimeOut); return entity; } //用户已经登录 if (OnlineUserListener.container.containsKey(userMap.get("ID").toString())) { entity.setAlreadyLogined(true); return entity; } PermissionEntity permissionEntity = userService.getAccessPermission(userMap.get("ID").toString()); entity.setPermissionEntity(permissionEntity); entity.setLoginSuccess(true); return entity; } @Override public boolean doResetPwd(String username, String email, String password) { if(StringUtil.notEmpty(password)) { Map paramMap = new HashMap(); paramMap.put("username", username); paramMap.put("email", email); String sql = "SELECT ID,LOGINNAME,EMAIL,SJHM FROM GG_USER WHERE LOGINNAME = :username AND (EMAIL = :email OR SJHM = :email)"; List list = baseDao.queryForList(sql, paramMap); if(null!=list && list.size() == 1) { userService.updatePwd(username, password); return true; } } return false; } @Override public Map queryUserByName(String loginname){ Map userMap = userService.getUserByLoginName(loginname); return userMap; } @Override public boolean saveData(String relations, String nodes) { baseDao.execute("DELETE FROM LARKS_NODES_RELATION",null); baseDao.execute("DELETE FROM LARKS_NODES",null); if(StringUtil.notEmpty(relations)) { String[] rs = relations.split(";"); String insertSql = "INSERT INTO LARKS_NODES_RELATION(ID,NAME,FROM_ID,TO_ID,EDGE_TYPE) VALUES (:id,:name,:from_id,:to_id,:edge_type)"; if(null!=rs && rs.length>0) { List paramsList = new ArrayList(); for(String relation : rs) { Map map = JsonUtil.json2Map(relation); SqlParameter sqlParameter = new SqlParameter(); String name = ConvertUtil.obj2StrBlank(map.get("name")); String from = ConvertUtil.obj2StrBlank(map.get("fromNode")); String to = ConvertUtil.obj2StrBlank(map.get("toNode")); String edgeType = ConvertUtil.obj2StrBlank(map.get("edgeType")); sqlParameter.addValue("id", StringUtil.getUUID()).addValue("name", name).addValue("from_id", from).addValue("to_id", to).addValue("edge_type", edgeType); paramsList.add(sqlParameter); } baseDao.executeBatch(insertSql, paramsList); } } if(StringUtil.notEmpty(nodes)) { String insertSql = "INSERT INTO LARKS_NODES(ID,NAME,IMAGE,XLOT,YLOT) VALUES (:id,:name,:image,:xlot,:ylot)"; String[] ns = nodes.split(";"); if(null!=ns && ns.length>0) { List paramsList = new ArrayList(); for(String node : ns) { Map map = JsonUtil.json2Map(node); SqlParameter sqlParameter = new SqlParameter(); String id = ConvertUtil.obj2StrBlank(map.get("id")); String name = ConvertUtil.obj2StrBlank(map.get("name")); String image = ConvertUtil.obj2StrBlank(map.get("imageType")); String xlot = ConvertUtil.obj2StrBlank(map.get("xlot")); String ylot = ConvertUtil.obj2StrBlank(map.get("ylot")); sqlParameter.addValue("id", id).addValue("name", name).addValue("image", image).addValue("xlot", xlot).addValue("ylot", ylot); paramsList.add(sqlParameter); } baseDao.executeBatch(insertSql, paramsList); } } return true; } @Override public String getJsonData() { Map result = new HashMap(); String nodeSql = "SELECT id,name,image,xlot as x,ylot as y FROM LARKS_NODES "; List nodes = baseDao.queryForList(nodeSql); result.put("nodes", nodes); String relationSql = "SELECT id,name,from_id,to_id,edge_type FROM LARKS_NODES_RELATION"; List relations = baseDao.queryForList(relationSql); result.put("relations", relations); String json = JsonUtil.map2Json(result); return json; } @Override public Map queryUserMsgByWechat(String openId) { String selectSql = "SELECT LOGINNAME FROM GG_USER WHERE WECHAT_LOGIN_OPEN_ID = :openId"; Map msg = baseDao.queryForMap(selectSql,new SqlParameter("openId",openId)); return msg; } private static int a = 1; @Override @Cacheable(value="WeiXinCache") public String testEhache() { a++; return String.valueOf(a); } @Override public void updatePartnerInfo(String endDate, Long curDate) { SqlParameter param = new SqlParameter(); param.addValue("endDate", endDate); param.addValue("curDate", curDate); String sql = " update sc_partner_info set valid_end_date=:endDate,lc_up_time=:curDate "; baseDao.execute(sql, param); } @Override public String getV() { String sql="select VERSION_CODE from LARKS_PLATFORM_VERSION where STATUS=1"; String VERSION_CODE=baseDao.queryForString(sql); return VERSION_CODE; } }