LoginController.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  1. package com.zhcs.dt.controller.system.login;
  2. import java.util.ArrayList;
  3. import java.util.Calendar;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import javax.annotation.Resource;
  8. import javax.servlet.http.HttpServletRequest;
  9. import net.sf.json.JSONObject;
  10. import org.apache.shiro.SecurityUtils;
  11. import org.apache.shiro.authc.AuthenticationException;
  12. import org.apache.shiro.authc.UsernamePasswordToken;
  13. import org.apache.shiro.crypto.hash.SimpleHash;
  14. import org.apache.shiro.session.Session;
  15. import org.apache.shiro.subject.Subject;
  16. import org.springframework.stereotype.Controller;
  17. import org.springframework.web.bind.annotation.PathVariable;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import org.springframework.web.bind.annotation.ResponseBody;
  20. import org.springframework.web.servlet.ModelAndView;
  21. import com.alibaba.fastjson.JSONArray;
  22. import com.zhcs.dt.controller.base.BaseController;
  23. import com.zhcs.dt.entity.system.Menu;
  24. import com.zhcs.dt.entity.system.Role;
  25. import com.zhcs.dt.entity.system.User;
  26. import com.zhcs.dt.service.fhoa.datajur.DatajurManager;
  27. import com.zhcs.dt.service.information.annualPlan.MapManager;
  28. import com.zhcs.dt.service.system.appuser.AppuserManager;
  29. //import com.zhcs.dt.service.system.buttonrights.ButtonrightsManager;
  30. import com.zhcs.dt.service.system.fhbutton.FhbuttonManager;
  31. import com.zhcs.dt.service.system.fhlog.FHlogManager;
  32. import com.zhcs.dt.service.system.loginimg.LogInImgManager;
  33. import com.zhcs.dt.service.system.menu.MenuManager;
  34. import com.zhcs.dt.service.system.role.RoleManager;
  35. import com.zhcs.dt.service.system.user.UserManager;
  36. import com.zhcs.dt.util.AppUtil;
  37. import com.zhcs.dt.util.Const;
  38. import com.zhcs.dt.util.DateUtil;
  39. import com.zhcs.dt.util.Jurisdiction;
  40. import com.zhcs.dt.util.PageData;
  41. import com.zhcs.dt.util.RightsHelper;
  42. import com.zhcs.dt.util.Tools;
  43. /**
  44. * 总入口
  45. * @author fh QQ 3 1 3 5 9 6 7 9 0[青苔]
  46. * 修改日期:2015/11/2
  47. */
  48. @Controller
  49. public class LoginController extends BaseController {
  50. @Resource(name="userService")
  51. private UserManager userService;
  52. @Resource(name="menuService")
  53. private MenuManager menuService;
  54. @Resource(name="roleService")
  55. private RoleManager roleService;
  56. // @Resource(name="buttonrightsService")
  57. // private ButtonrightsManager buttonrightsService;
  58. @Resource(name="fhbuttonService")
  59. private FhbuttonManager fhbuttonService;
  60. @Resource(name="appuserService")
  61. private AppuserManager appuserService;
  62. @Resource(name="datajurService")
  63. private DatajurManager datajurService;
  64. @Resource(name="fhlogService")
  65. private FHlogManager FHLOG;
  66. @Resource(name="loginimgService")
  67. private LogInImgManager loginimgService;
  68. @Resource(name="mapService")
  69. private MapManager mapService;
  70. /**访问登录页
  71. * @return
  72. * @throws Exception
  73. */
  74. @RequestMapping(value="/login_toLogin")
  75. public ModelAndView toLogin()throws Exception{
  76. ModelAndView mv = this.getModelAndView();
  77. PageData pd = new PageData();
  78. pd = this.getPageData();
  79. pd = this.setLoginPd(pd); //设置登录页面的配置参数
  80. mv.setViewName("system/index/login");
  81. mv.addObject("pd",pd);
  82. return mv;
  83. }
  84. /**请求登录,验证用户
  85. * @return
  86. * @throws Exception
  87. */
  88. @RequestMapping(value="/login_login" ,produces="application/json;charset=UTF-8")
  89. @ResponseBody
  90. public Object login()throws Exception{
  91. Map<String,String> map = new HashMap<String,String>();
  92. PageData pd = new PageData();
  93. pd = this.getPageData();
  94. String errInfo = "";
  95. String KEYDATA[] = pd.getString("KEYDATA").replaceAll("qq313596790fh", "").replaceAll("QQ978336446fh", "").split(",fh,");
  96. if(null != KEYDATA && KEYDATA.length == 3){
  97. Session session = Jurisdiction.getSession();
  98. String sessionCode = (String)session.getAttribute(Const.SESSION_SECURITY_CODE); //获取session中的验证码
  99. String code = KEYDATA[2];
  100. if(null == code || "".equals(code)){//判断效验码
  101. errInfo = "nullcode"; //效验码为空
  102. }else{
  103. String USERNAME = KEYDATA[0]; //登录过来的用户名
  104. String PASSWORD = KEYDATA[1]; //登录过来的密码
  105. pd.put("USERNAME", USERNAME);
  106. if(Tools.notEmpty(sessionCode) && sessionCode.equalsIgnoreCase(code)){ //判断登录验证码
  107. String passwd = new SimpleHash("SHA-1", USERNAME, PASSWORD).toString(); //密码加密
  108. pd.put("PASSWORD", passwd);
  109. pd = userService.getUserByNameAndPwd(pd); //根据用户名和密码去读取用户信息
  110. if(pd != null){
  111. this.removeSession(USERNAME);//请缓存
  112. pd.put("LAST_LOGIN",DateUtil.getTime().toString());
  113. userService.updateLastLogin(pd);
  114. User user = new User();
  115. user.setUSER_ID(pd.getString("USER_ID"));
  116. user.setUSERNAME(pd.getString("USERNAME"));
  117. user.setPASSWORD(pd.getString("PASSWORD"));
  118. user.setNAME(pd.getString("NAME"));
  119. user.setRIGHTS(pd.getString("RIGHTS"));
  120. user.setROLE_ID(pd.getString("ROLE_ID"));
  121. user.setLAST_LOGIN(pd.getString("LAST_LOGIN"));
  122. user.setIP(pd.getString("IP"));
  123. user.setSTATUS(pd.getString("STATUS"));
  124. session.setAttribute(Const.SESSION_USER, user); //把用户信息放session中
  125. session.removeAttribute(Const.SESSION_SECURITY_CODE); //清除登录验证码的session
  126. //shiro加入身份验证
  127. Subject subject = SecurityUtils.getSubject();
  128. UsernamePasswordToken token = new UsernamePasswordToken(USERNAME, PASSWORD);
  129. try {
  130. subject.login(token);
  131. } catch (AuthenticationException e) {
  132. errInfo = "身份验证失败!";
  133. }
  134. }else{
  135. errInfo = "usererror"; //用户名或密码有误
  136. logBefore(logger, USERNAME+"登录系统密码或用户名错误");
  137. FHLOG.save(USERNAME, "登录系统密码或用户名错误");
  138. }
  139. }else{
  140. errInfo = "codeerror"; //验证码输入有误
  141. }
  142. if(Tools.isEmpty(errInfo)){
  143. errInfo = "success"; //验证成功
  144. logBefore(logger, USERNAME+"登录系统");
  145. FHLOG.save(USERNAME, "登录系统");
  146. }
  147. }
  148. }else{
  149. errInfo = "error"; //缺少参数
  150. }
  151. map.put("result", errInfo);
  152. return AppUtil.returnObject(new PageData(), map);
  153. }
  154. /**请求登录,验证用户
  155. * @return
  156. * @throws Exception
  157. */
  158. @RequestMapping(value="/login_point" ,produces="application/json;charset=UTF-8")
  159. public ModelAndView loginPoint()throws Exception{
  160. ModelAndView mv = this.getModelAndView();
  161. Map<String,String> map = new HashMap<String,String>();
  162. PageData pd = new PageData();
  163. pd = this.getPageData();
  164. String errInfo = "";
  165. String[] login = pd.get("loginInfo").toString().split(",");
  166. String userName = login[0].toString();
  167. String passWord = login[1].toString();
  168. pd.put("USERNAME", login[0]);
  169. Des desObj = new Des();
  170. //解密
  171. String newPassword=desObj.strDec(passWord,"www","jsyhzx","com");
  172. String passwd = new SimpleHash("SHA-1", userName, newPassword).toString(); //密码加密
  173. pd.put("PASSWORD", passwd);
  174. pd = userService.getUserByNameAndPwd(pd); //根据用户名和密码去读取用户信息
  175. Session session = Jurisdiction.getSession();
  176. if(pd != null){
  177. this.removeSession(userName);//请缓存
  178. pd.put("LAST_LOGIN",DateUtil.getTime().toString());
  179. userService.updateLastLogin(pd);
  180. User user = new User();
  181. user.setUSER_ID(pd.getString("USER_ID"));
  182. user.setUSERNAME(pd.getString("USERNAME"));
  183. user.setPASSWORD(pd.getString("PASSWORD"));
  184. user.setNAME(pd.getString("NAME"));
  185. user.setRIGHTS(pd.getString("RIGHTS"));
  186. user.setROLE_ID(pd.getString("ROLE_ID"));
  187. user.setLAST_LOGIN(pd.getString("LAST_LOGIN"));
  188. user.setIP(pd.getString("IP"));
  189. user.setSTATUS(pd.getString("STATUS"));
  190. session.setAttribute(Const.SESSION_USER, user); //把用户信息放session中
  191. //shiro加入身份验证
  192. Subject subject = SecurityUtils.getSubject();
  193. UsernamePasswordToken token = new UsernamePasswordToken(userName, passWord);
  194. try {
  195. subject.login(token);
  196. } catch (AuthenticationException e) {
  197. errInfo = "身份验证失败!";
  198. mv.setViewName("404");
  199. }
  200. }else{
  201. errInfo = "usererror"; //用户名或密码有误
  202. logBefore(logger, userName+"登录系统密码或用户名错误");
  203. FHLOG.save(userName, "登录系统密码或用户名错误");
  204. mv.setViewName("404");
  205. }
  206. if(Tools.isEmpty(errInfo)){
  207. errInfo = "success"; //验证成功
  208. logBefore(logger, userName+"登录系统");
  209. FHLOG.save(userName, "登录系统");
  210. mv.setViewName("system/index/point_login");
  211. }
  212. mv.addObject("pd",pd);
  213. return mv;
  214. }
  215. /**访问系统首页
  216. * @param changeMenu:切换菜单参数
  217. * @return
  218. */
  219. @RequestMapping(value="/main/{changeMenu}")
  220. public ModelAndView login_index(@PathVariable("changeMenu") String changeMenu){
  221. ModelAndView mv = this.getModelAndView();
  222. PageData pd = new PageData();
  223. pd = this.getPageData();
  224. try{
  225. Session session = Jurisdiction.getSession();
  226. User user = (User)session.getAttribute(Const.SESSION_USER); //读取session中的用户信息(单独用户信息)
  227. if (user != null) {
  228. User userr = (User)session.getAttribute(Const.SESSION_USERROL); //读取session中的用户信息(含角色信息)
  229. if(null == userr){
  230. user = userService.getUserAndRoleById(user.getUSER_ID()); //通过用户ID读取用户信息和角色信息
  231. session.setAttribute(Const.SESSION_USERROL, user); //存入session
  232. }else{
  233. user = userr;
  234. }
  235. String USERNAME = user.getUSERNAME();
  236. Role role = user.getRole(); //获取用户角色
  237. String roleRights = role!=null ? role.getRIGHTS() : ""; //角色权限(菜单权限)
  238. String ROLE_IDS = user.getROLE_IDS();
  239. session.setAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS, roleRights); //将角色权限存入session
  240. session.setAttribute(Const.SESSION_USERNAME, USERNAME); //放入用户名到session
  241. session.setAttribute(Const.SESSION_U_NAME, user.getNAME()); //放入用户姓名到session
  242. this.setAttributeToAllDEPARTMENT_ID(session, USERNAME); //把用户的组织机构权限放到session里面
  243. List<Menu> allmenuList = new ArrayList<Menu>();
  244. allmenuList = this.getAttributeMenu(session, USERNAME, roleRights, getArrayRoleRights(ROLE_IDS)); //菜单缓存
  245. List<Menu> menuList = new ArrayList<Menu>();
  246. menuList = this.changeMenuF(allmenuList, session, USERNAME, changeMenu); //切换菜单
  247. if(null == session.getAttribute(USERNAME + Const.SESSION_QX)){
  248. session.setAttribute(USERNAME + Const.SESSION_QX, this.getUQX(USERNAME)); //主职角色按钮权限放到session中
  249. session.setAttribute(USERNAME + Const.SESSION_QX2, this.getUQX2(USERNAME)); //副职角色按钮权限放到session中
  250. }
  251. this.getRemortIP(USERNAME); //更新登录IP
  252. mv.setViewName("system/index/main");
  253. mv.addObject("user", user);
  254. mv.addObject("SKIN", null == session.getAttribute(Const.SKIN)?user.getSKIN():session.getAttribute(Const.SKIN)); //用户皮肤
  255. mv.addObject("menuList", menuList);
  256. }else {
  257. mv.setViewName("system/index/login"); //session失效后跳转登录页面
  258. }
  259. } catch(Exception e){
  260. mv.setViewName("system/index/login");
  261. logger.error(e.getMessage(), e);
  262. }
  263. pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); //读取系统名称
  264. mv.addObject("pd",pd);
  265. return mv;
  266. }
  267. /**获取副职角色权限List
  268. * @param ROLE_IDS
  269. * @return
  270. * @throws Exception
  271. */
  272. public List<String> getArrayRoleRights(String ROLE_IDS) throws Exception{
  273. if(Tools.notEmpty(ROLE_IDS)){
  274. List<String> list = new ArrayList<String>();
  275. String arryROLE_ID[] = ROLE_IDS.split(",fh,");
  276. for(int i=0;i<arryROLE_ID.length;i++){
  277. PageData pd = new PageData();
  278. pd.put("ROLE_ID", arryROLE_ID[i]);
  279. pd = roleService.findObjectById(pd);
  280. if(null != pd){
  281. String RIGHTS = pd.getString("RIGHTS");
  282. if(Tools.notEmpty(RIGHTS)){
  283. list.add(RIGHTS);
  284. }
  285. }
  286. }
  287. return list.size() == 0 ? null : list;
  288. }else{
  289. return null;
  290. }
  291. }
  292. /**菜单缓存
  293. * @param session
  294. * @param USERNAME
  295. * @param roleRights
  296. * @return
  297. * @throws Exception
  298. */
  299. @SuppressWarnings("unchecked")
  300. public List<Menu> getAttributeMenu(Session session, String USERNAME, String roleRights, List<String> arrayRoleRights) throws Exception{
  301. List<Menu> allmenuList = new ArrayList<Menu>();
  302. if(null == session.getAttribute(USERNAME + Const.SESSION_allmenuList)){
  303. allmenuList = menuService.listAllMenuQx("0"); //获取所有菜单
  304. if(Tools.notEmpty(roleRights)){
  305. allmenuList = this.readMenu(allmenuList, roleRights, arrayRoleRights); //根据角色权限获取本权限的菜单列表
  306. }
  307. session.setAttribute(USERNAME + Const.SESSION_allmenuList, allmenuList);//菜单权限放入session中
  308. }else{
  309. allmenuList = (List<Menu>)session.getAttribute(USERNAME + Const.SESSION_allmenuList);
  310. }
  311. return allmenuList;
  312. }
  313. /**根据角色权限获取本权限的菜单列表(递归处理)
  314. * @param menuList:传入的总菜单
  315. * @param roleRights:加密的权限字符串
  316. * @return
  317. */
  318. public List<Menu> readMenu(List<Menu> menuList,String roleRights, List<String> arrayRoleRights){
  319. for(int i=0;i<menuList.size();i++){
  320. Boolean b1 = RightsHelper.testRights(roleRights, menuList.get(i).getMENU_ID());
  321. menuList.get(i).setHasMenu(b1); //赋予主职角色菜单权限
  322. if(!b1 && null != arrayRoleRights){
  323. for(int n=0;n<arrayRoleRights.size();n++){
  324. if(RightsHelper.testRights(arrayRoleRights.get(n), menuList.get(i).getMENU_ID())){
  325. menuList.get(i).setHasMenu(true);
  326. break;
  327. }
  328. }
  329. }
  330. if(menuList.get(i).isHasMenu()){ //判断是否有此菜单权限
  331. this.readMenu(menuList.get(i).getSubMenu(), roleRights, arrayRoleRights);//是:继续排查其子菜单
  332. }
  333. }
  334. return menuList;
  335. }
  336. /**切换菜单处理
  337. * @param allmenuList
  338. * @param session
  339. * @param USERNAME
  340. * @param changeMenu
  341. * @return
  342. */
  343. @SuppressWarnings("unchecked")
  344. public List<Menu> changeMenuF(List<Menu> allmenuList, Session session, String USERNAME, String changeMenu){
  345. List<Menu> menuList = new ArrayList<Menu>();
  346. /** 菜单缓存为空 或者 传入的菜单类型和当前不一样的时候,条件成立,重新拆分菜单,把选择的菜单类型放入缓存 */
  347. if(null == session.getAttribute(USERNAME + Const.SESSION_menuList) || (!changeMenu.equals(session.getAttribute("changeMenu")))){
  348. List<Menu> menuList1 = new ArrayList<Menu>();
  349. List<Menu> menuList2 = new ArrayList<Menu>();
  350. List<Menu> menuList3 = new ArrayList<Menu>();
  351. List<Menu> menuList4 = new ArrayList<Menu>();
  352. for(int i=0;i<allmenuList.size();i++){//拆分菜单
  353. Menu menu = allmenuList.get(i);
  354. if("1".equals(menu.getMENU_TYPE())){
  355. menuList1.add(menu); //系统菜单
  356. }else if("2".equals(menu.getMENU_TYPE())){
  357. menuList2.add(menu); //业务菜单
  358. }else if("3".equals(menu.getMENU_TYPE())){
  359. menuList3.add(menu); //菜单类型三
  360. }else if("4".equals(menu.getMENU_TYPE())){
  361. menuList4.add(menu); //菜单类型四
  362. }
  363. }
  364. session.removeAttribute(USERNAME + Const.SESSION_menuList);
  365. if("index".equals(changeMenu)){
  366. session.setAttribute(USERNAME + Const.SESSION_menuList, menuList2);
  367. session.removeAttribute("changeMenu");
  368. session.setAttribute("changeMenu", "index");
  369. menuList = menuList2;
  370. }else if("2".equals(changeMenu)){
  371. session.setAttribute(USERNAME + Const.SESSION_menuList, menuList1);
  372. session.removeAttribute("changeMenu");
  373. session.setAttribute("changeMenu", "2");
  374. menuList = menuList1;
  375. }else if("3".equals(changeMenu)){
  376. session.setAttribute(USERNAME + Const.SESSION_menuList, menuList3);
  377. session.removeAttribute("changeMenu");
  378. session.setAttribute("changeMenu", "3");
  379. menuList = menuList3;
  380. }else if("4".equals(changeMenu)){
  381. session.setAttribute(USERNAME + Const.SESSION_menuList, menuList4);
  382. session.removeAttribute("changeMenu");
  383. session.setAttribute("changeMenu", "4");
  384. menuList = menuList4;
  385. }
  386. }else{
  387. menuList = (List<Menu>)session.getAttribute(USERNAME + Const.SESSION_menuList);
  388. }
  389. return menuList;
  390. }
  391. /**把用户的组织机构权限放到session里面
  392. * @param session
  393. * @param USERNAME
  394. * @return
  395. * @throws Exception
  396. */
  397. public void setAttributeToAllDEPARTMENT_ID(Session session, String USERNAME) throws Exception{
  398. String DEPARTMENT_IDS = "0",DEPARTMENT_ID = "0";
  399. if(!"admin".equals(USERNAME)){
  400. PageData pd = datajurService.getDEPARTMENT_IDS(USERNAME);
  401. DEPARTMENT_IDS = null == pd?"无权":pd.getString("DEPARTMENT_IDS");
  402. DEPARTMENT_ID = null == pd?"无权":pd.getString("DEPARTMENT_ID");
  403. }
  404. session.setAttribute(Const.DEPARTMENT_IDS, DEPARTMENT_IDS); //把用户的组织机构权限集合放到session里面
  405. session.setAttribute(Const.DEPARTMENT_ID, DEPARTMENT_ID); //把用户的最高组织机构权限放到session里面
  406. }
  407. /**
  408. * 进入tab标签
  409. * @return
  410. */
  411. @RequestMapping(value="/tab")
  412. public String tab(){
  413. return "system/index/tab";
  414. }
  415. /**
  416. * 进入首页后的默认页面
  417. * @return
  418. * @throws Exception
  419. */
  420. @RequestMapping(value="/login_default")
  421. public ModelAndView defaultPage() throws Exception{
  422. ModelAndView mv = this.getModelAndView();
  423. PageData pd = new PageData();
  424. pd.put("userCount", Integer.parseInt(userService.getUserCount("").get("userCount").toString())-1); //系统用户数
  425. pd.put("appUserCount", Integer.parseInt(appuserService.getAppUserCount("").get("appUserCount").toString())); //会员数
  426. mv.addObject("pd",pd);
  427. mv.setViewName("system/index/default");
  428. return mv;
  429. }
  430. /**
  431. * 用户注销
  432. * @param session
  433. * @return
  434. * @throws Exception
  435. */
  436. @RequestMapping(value="/logout")
  437. public ModelAndView logout() throws Exception{
  438. String USERNAME = Jurisdiction.getUsername(); //当前登录的用户名
  439. logBefore(logger, USERNAME+"退出系统");
  440. FHLOG.save(USERNAME, "退出");
  441. ModelAndView mv = this.getModelAndView();
  442. PageData pd = new PageData();
  443. this.removeSession(USERNAME); //清缓存
  444. //shiro销毁登录
  445. Subject subject = SecurityUtils.getSubject();
  446. subject.logout();
  447. pd = this.getPageData();
  448. pd.put("msg", pd.getString("msg"));
  449. pd = this.setLoginPd(pd); //设置登录页面的配置参数
  450. mv.setViewName("system/index/login");
  451. mv.addObject("pd",pd);
  452. return mv;
  453. }
  454. /**
  455. * 清理session
  456. */
  457. public void removeSession(String USERNAME){
  458. Session session = Jurisdiction.getSession(); //以下清除session缓存
  459. session.removeAttribute(Const.SESSION_USER);
  460. session.removeAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS);
  461. session.removeAttribute(USERNAME + Const.SESSION_allmenuList);
  462. session.removeAttribute(USERNAME + Const.SESSION_menuList);
  463. session.removeAttribute(USERNAME + Const.SESSION_QX);
  464. session.removeAttribute(USERNAME + Const.SESSION_QX2);
  465. session.removeAttribute(Const.SESSION_userpds);
  466. session.removeAttribute(Const.SESSION_USERNAME);
  467. session.removeAttribute(Const.SESSION_U_NAME);
  468. session.removeAttribute(Const.SESSION_USERROL);
  469. session.removeAttribute(Const.SESSION_RNUMBERS);
  470. session.removeAttribute("changeMenu");
  471. session.removeAttribute("DEPARTMENT_IDS");
  472. session.removeAttribute("DEPARTMENT_ID");
  473. }
  474. /**设置登录页面的配置参数
  475. * @param pd
  476. * @return
  477. */
  478. public PageData setLoginPd(PageData pd){
  479. pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); //读取系统名称
  480. String strLOGINEDIT = Tools.readTxtFile(Const.LOGINEDIT); //读取登录页面配置
  481. if(null != strLOGINEDIT && !"".equals(strLOGINEDIT)){
  482. String strLo[] = strLOGINEDIT.split(",fh,");
  483. if(strLo.length == 2){
  484. pd.put("isZhuce", strLo[0]);
  485. pd.put("isMusic", strLo[1]);
  486. }
  487. }
  488. try {
  489. List<PageData> listImg = loginimgService.listAll(pd); //登录背景图片
  490. pd.put("listImg", listImg);
  491. } catch (Exception e) {
  492. e.printStackTrace();
  493. }
  494. return pd;
  495. }
  496. /**获取用户权限
  497. * @param session
  498. * @return
  499. */
  500. public Map<String, String> getUQX(String USERNAME){
  501. PageData pd = new PageData();
  502. Map<String, String> map = new HashMap<String, String>();
  503. try {
  504. pd.put(Const.SESSION_USERNAME, USERNAME);
  505. PageData userpd = new PageData();
  506. userpd = userService.findByUsername(pd); //通过用户名获取用户信息
  507. String ROLE_ID = userpd.get("ROLE_ID").toString();
  508. String ROLE_IDS = userpd.getString("ROLE_IDS");
  509. pd.put("ROLE_ID", ROLE_ID); //获取角色ID
  510. pd = roleService.findObjectById(pd); //获取角色信息
  511. map.put("adds", pd.getString("ADD_QX")); //增
  512. map.put("dels", pd.getString("DEL_QX")); //删
  513. map.put("edits", pd.getString("EDIT_QX")); //改
  514. map.put("chas", pd.getString("CHA_QX")); //查
  515. List<PageData> buttonQXnamelist = new ArrayList<PageData>();
  516. if("admin".equals(USERNAME)){
  517. buttonQXnamelist = fhbuttonService.listAll(pd); //admin用户拥有所有按钮权限
  518. }else{
  519. // if(Tools.notEmpty(ROLE_IDS)){//(主副职角色综合按钮权限)
  520. // ROLE_IDS = ROLE_IDS + ROLE_ID;
  521. // String arryROLE_ID[] = ROLE_IDS.split(",fh,");
  522. // buttonQXnamelist = buttonrightsService.listAllBrAndQxnameByZF(arryROLE_ID);
  523. // }else{ //(主职角色按钮权限)
  524. // buttonQXnamelist = buttonrightsService.listAllBrAndQxname(pd); //此角色拥有的按钮权限标识列表
  525. // }
  526. }
  527. for(int i=0;i<buttonQXnamelist.size();i++){
  528. map.put(buttonQXnamelist.get(i).getString("QX_NAME"),"1"); //按钮权限
  529. }
  530. } catch (Exception e) {
  531. logger.error(e.toString(), e);
  532. }
  533. return map;
  534. }
  535. /**获取用户权限(处理副职角色)
  536. * @param session
  537. * @return
  538. */
  539. public Map<String, List<String>> getUQX2(String USERNAME){
  540. PageData pd = new PageData();
  541. Map<String, List<String>> maps = new HashMap<String, List<String>>();
  542. try {
  543. pd.put(Const.SESSION_USERNAME, USERNAME);
  544. PageData userpd = new PageData();
  545. userpd = userService.findByUsername(pd); //通过用户名获取用户信息
  546. String ROLE_IDS = userpd.getString("ROLE_IDS");
  547. if(Tools.notEmpty(ROLE_IDS)){
  548. String arryROLE_ID[] = ROLE_IDS.split(",fh,");
  549. PageData rolePd = new PageData();
  550. List<String> addsList = new ArrayList<String>();
  551. List<String> delsList = new ArrayList<String>();
  552. List<String> editsList = new ArrayList<String>();
  553. List<String> chasList = new ArrayList<String>();
  554. for(int i=0;i<arryROLE_ID.length;i++){
  555. rolePd.put("ROLE_ID", arryROLE_ID[i]);
  556. rolePd = roleService.findObjectById(rolePd);
  557. addsList.add(rolePd.getString("ADD_QX"));
  558. delsList.add(rolePd.getString("DEL_QX"));
  559. editsList.add(rolePd.getString("EDIT_QX"));
  560. chasList.add(rolePd.getString("CHA_QX"));
  561. }
  562. maps.put("addsList", addsList); //增
  563. maps.put("delsList", delsList); //删
  564. maps.put("editsList", editsList); //改
  565. maps.put("chasList", chasList); //查
  566. }
  567. } catch (Exception e) {
  568. logger.error(e.toString(), e);
  569. }
  570. return maps;
  571. }
  572. /** 更新登录用户的IP
  573. * @param USERNAME
  574. * @throws Exception
  575. */
  576. public void getRemortIP(String USERNAME) throws Exception {
  577. PageData pd = new PageData();
  578. HttpServletRequest request = this.getRequest();
  579. String ip = "";
  580. if (request.getHeader("x-forwarded-for") == null) {
  581. ip = request.getRemoteAddr();
  582. }else{
  583. ip = request.getHeader("x-forwarded-for");
  584. }
  585. pd.put("USERNAME", USERNAME);
  586. pd.put("IP", ip);
  587. userService.saveIP(pd);
  588. }
  589. @RequestMapping(value="/main/getMapData")
  590. @ResponseBody
  591. public Object getMapData() throws Exception{
  592. String username = Jurisdiction.getUsername();
  593. String company = mapService.getCompanyByUserName(username);
  594. Calendar date = Calendar.getInstance();
  595. String table = "oa_department_"+String.valueOf(date.get(Calendar.YEAR));
  596. PageData pd = new PageData();
  597. pd.put("table", table);
  598. pd.put("company", company);
  599. List<PageData> mapData = mapService.getMapData(pd);
  600. return JSONArray.toJSON(mapData);
  601. }
  602. }