package cn.ksource.web.service.impl; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.JsonUtil; import cn.ksource.web.entity.PermissionEntity; import cn.ksource.web.service.UserCache; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @Service("userCache") public class UserCacheImpl implements UserCache { @Autowired private BaseDao baseDao; /** * 获取缓存标识 * @param key * @return * @version V1.0.0 * @author 杨凯 * @date Apr 22, 2014 2:15:22 PM */ private String getUserInfoCacheKey(String key){ return "YSY_USER_"+key; } /** * 获取缓存标识 * @param key * @return * @version V1.0.0 * @author 杨凯 * @date Apr 22, 2014 2:15:22 PM */ private String getUserPermissionCacheKey(String key){ return "YSY_Permission_"+key; } @Override public PermissionEntity getAccessPermission(String userid) { Object object = null; if (object != null) { return (PermissionEntity)object; } else { PermissionEntity entity = getUserPermission(userid); return entity; } } private PermissionEntity getUserPermission(String userid) { String qxsql="select *\n" + " from GG_XTGN\n" + " where exists (select 1\n" + " from AC_ROLE_QX\n" + " where exists (select 1\n" + " from AC_USER_REF_ROLE\n" + " where AC_ROLE_QX.JSBH = JSBH and YHBH = :yhbh) and\n" + " GG_XTGN.ID = GNBH) order by TYPE ,SXH "; List gnList = baseDao.queryForList(qxsql,new SqlParameter().addValue("yhbh", userid)); List yjgnList = new LinkedList(); Map yjCacheMap = new HashMap(); Map qxMap = new LinkedHashMap(); Map ejCacheMap = new HashMap(); Map sjCacheMap = new HashMap(); //存放所有能访问的链接 Map linkMap = new HashMap(); for (Map map : gnList) { String gnId = ConvertUtil.obj2StrBlank(map.get("ID")); String linkId = ConvertUtil.obj2StrBlank(map.get("ADDRESS")); String type = ConvertUtil.obj2StrBlank(map.get("TYPE")); qxMap.put(map.get("ID"), ""); //一级菜单 if (type.equals("1")) { List ls = new LinkedList(); map.put("MENULIST", ls); yjgnList.add(map); yjCacheMap.put(gnId, map); String gnmc = ConvertUtil.obj2StrBlank(map.get("GNMC")); } if (type.equals("2")) { String sjbh = ConvertUtil.obj2StrBlank(map.get("SJBH")); if(yjCacheMap.get(sjbh)!=null){ List list = (List)((Map)yjCacheMap.get(sjbh)).get("MENULIST"); list.add(map); List ls = new LinkedList(); map.put("MENULIST", ls); ejCacheMap.put(gnId, map); } } if (type.toString().equals("3")) { String sjbh = ConvertUtil.obj2StrBlank(map.get("SJBH")); if(ejCacheMap.get(sjbh)!=null){ List list = (List)((Map)ejCacheMap.get(sjbh)).get("MENULIST"); list.add(map); sjCacheMap.put(gnId, map); Map m = new HashMap(); m.put("gnId", gnId); m.put("pId", sjbh); linkMap.put(linkId,m); } } } PermissionEntity entity = new PermissionEntity(); entity.setYjgnList(yjgnList); entity.setGnMap(yjCacheMap); System.out.println("yjCacheMap-------------->"+JsonUtil.map2Json(yjCacheMap)); entity.setQxMap(qxMap); entity.setLinkMap(linkMap); entity.setEjgnMap(ejCacheMap); return entity; } @Override public Map getUserInfoByLoginName(String loginName) { Object object = null; if (null != object) { return (Map)object; } else { String selectsql = "SELECT A.*,B.ID AS deptid,B.JGMC AS deptName FROM GG_USER A LEFT JOIN GG_ZZJG B ON A.SSBMBH = B.ID WHERE A.LOGINNAME=:loginname "; Map userMap = baseDao.queryForMap(selectsql,new SqlParameter().addValue("loginname", loginName)); return userMap; } } @Override public void updateUserInfoCacheByLoginName(String loginName) { } @Override public void updateUserPermission(String userid) { } }