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<Map> gnList = baseDao.queryForList(qxsql,new SqlParameter().addValue("yhbh", userid));
|
|
List<Map> yjgnList = new LinkedList<Map>();
|
Map yjCacheMap = new HashMap();
|
Map qxMap = new LinkedHashMap();
|
Map ejCacheMap = new HashMap();
|
Map sjCacheMap = new HashMap();
|
|
|
//存放所有能访问的链接
|
Map<String,Map> linkMap = new HashMap<String,Map>();
|
|
|
|
|
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>();
|
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<Map> list = (List<Map>)((Map)yjCacheMap.get(sjbh)).get("MENULIST");
|
list.add(map);
|
List ls = new LinkedList<Map>();
|
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<Map> list = (List<Map>)((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) {
|
}
|
|
|
|
}
|