ad5081d3
孙向锦
初始化项目
|
1
2
3
|
package com.fh.controller.system.login;
import java.util.ArrayList;
|
9f161055
孙向锦
修改高斯客户反馈
|
4
|
import java.util.Date;
|
ad5081d3
孙向锦
初始化项目
|
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.fh.controller.base.BaseController;
|
9f161055
孙向锦
修改高斯客户反馈
|
25
26
27
|
import com.fh.entity.system.Menu;
import com.fh.entity.system.Role;
import com.fh.entity.system.User;
|
338594c8
孙向锦
添加教师端页面
|
28
|
import com.fh.service.api.V1Manager;
|
ad5081d3
孙向锦
初始化项目
|
29
|
import com.fh.service.fhoa.datajur.DatajurManager;
|
9f161055
孙向锦
修改高斯客户反馈
|
30
|
import com.fh.service.sunvote.event.EventManager;
|
338594c8
孙向锦
添加教师端页面
|
31
|
import com.fh.service.sunvote.school.SchoolManager;
|
6b3a5ad0
孙向锦
添加管理员界面
|
32
33
|
import com.fh.service.sunvote.schooladmin.SchoolAdminManager;
import com.fh.service.sunvote.sclass.SClassManager;
|
338594c8
孙向锦
添加教师端页面
|
34
|
import com.fh.service.sunvote.teacher.TeacherManager;
|
ad5081d3
孙向锦
初始化项目
|
35
36
37
38
39
40
|
import com.fh.service.system.appuser.AppuserManager;
import com.fh.service.system.buttonrights.ButtonrightsManager;
import com.fh.service.system.fhbutton.FhbuttonManager;
import com.fh.service.system.fhlog.FHlogManager;
import com.fh.service.system.loginimg.LogInImgManager;
import com.fh.service.system.menu.MenuManager;
|
ad5081d3
孙向锦
初始化项目
|
41
42
43
44
45
46
47
48
49
|
import com.fh.service.system.role.RoleManager;
import com.fh.service.system.user.UserManager;
import com.fh.util.AppUtil;
import com.fh.util.Const;
import com.fh.util.DateUtil;
import com.fh.util.Jurisdiction;
import com.fh.util.PageData;
import com.fh.util.RightsHelper;
import com.fh.util.Tools;
|
bed6e1fc
孙向锦
添加其他功能
|
50
|
|
ad5081d3
孙向锦
初始化项目
|
51
52
|
/**
* 总入口
|
ad5081d3
孙向锦
初始化项目
|
53
54
55
|
* 修改日期:2015/11/2
*/
/**
|
ad5081d3
孙向锦
初始化项目
|
56
57
58
59
60
|
*
*/
@Controller
public class LoginController extends BaseController {
|
bed6e1fc
孙向锦
添加其他功能
|
61
|
@Resource(name = "userService")
|
ad5081d3
孙向锦
初始化项目
|
62
|
private UserManager userService;
|
bed6e1fc
孙向锦
添加其他功能
|
63
|
@Resource(name = "menuService")
|
ad5081d3
孙向锦
初始化项目
|
64
|
private MenuManager menuService;
|
bed6e1fc
孙向锦
添加其他功能
|
65
|
@Resource(name = "roleService")
|
ad5081d3
孙向锦
初始化项目
|
66
|
private RoleManager roleService;
|
bed6e1fc
孙向锦
添加其他功能
|
67
|
@Resource(name = "buttonrightsService")
|
ad5081d3
孙向锦
初始化项目
|
68
|
private ButtonrightsManager buttonrightsService;
|
bed6e1fc
孙向锦
添加其他功能
|
69
|
@Resource(name = "fhbuttonService")
|
ad5081d3
孙向锦
初始化项目
|
70
|
private FhbuttonManager fhbuttonService;
|
bed6e1fc
孙向锦
添加其他功能
|
71
|
@Resource(name = "appuserService")
|
ad5081d3
孙向锦
初始化项目
|
72
|
private AppuserManager appuserService;
|
bed6e1fc
孙向锦
添加其他功能
|
73
|
@Resource(name = "datajurService")
|
ad5081d3
孙向锦
初始化项目
|
74
|
private DatajurManager datajurService;
|
bed6e1fc
孙向锦
添加其他功能
|
75
|
@Resource(name = "fhlogService")
|
ad5081d3
孙向锦
初始化项目
|
76
|
private FHlogManager FHLOG;
|
bed6e1fc
孙向锦
添加其他功能
|
77
|
@Resource(name = "loginimgService")
|
ad5081d3
孙向锦
初始化项目
|
78
|
private LogInImgManager loginimgService;
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
79
|
@Resource(name = "teacherService")
|
338594c8
孙向锦
添加教师端页面
|
80
|
private TeacherManager teacherService;
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
81
|
@Resource(name = "schoolService")
|
338594c8
孙向锦
添加教师端页面
|
82
|
private SchoolManager schoolService;
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
83
|
|
338594c8
孙向锦
添加教师端页面
|
84
|
@Resource(name = "v1Service")
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
85
|
private V1Manager v1Service;
|
6b3a5ad0
孙向锦
添加管理员界面
|
86
87
88
|
@Resource(name="schooladminService")
private SchoolAdminManager schooladminService;
|
bed6e1fc
孙向锦
添加其他功能
|
89
|
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
90
|
@Resource(name = "eventService")
|
9f161055
孙向锦
修改高斯客户反馈
|
91
|
private EventManager eventService;
|
6b3a5ad0
孙向锦
添加管理员界面
|
92
93
94
95
|
@Resource(name="sclassService")
private SClassManager sclassService;
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
96
|
|
bed6e1fc
孙向锦
添加其他功能
|
97
98
99
|
/**
* 访问登录页
*
|
ad5081d3
孙向锦
初始化项目
|
100
101
102
|
* @return
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
103
104
|
@RequestMapping(value = "/login_toLogin")
public ModelAndView toLogin() throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
105
106
107
|
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
|
bed6e1fc
孙向锦
添加其他功能
|
108
|
pd = this.setLoginPd(pd); // 设置登录页面的配置参数
|
ad5081d3
孙向锦
初始化项目
|
109
|
mv.setViewName("system/index/login");
|
bed6e1fc
孙向锦
添加其他功能
|
110
|
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
111
112
|
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
113
114
115
116
|
/**
* 请求登录,验证用户
*
|
ad5081d3
孙向锦
初始化项目
|
117
118
119
|
* @return
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
120
|
@RequestMapping(value = "/login_login", produces = "application/json;charset=UTF-8")
|
ad5081d3
孙向锦
初始化项目
|
121
|
@ResponseBody
|
bed6e1fc
孙向锦
添加其他功能
|
122
123
|
public Object login() throws Exception {
Map<String, String> map = new HashMap<String, String>();
|
ad5081d3
孙向锦
初始化项目
|
124
125
126
|
PageData pd = new PageData();
pd = this.getPageData();
String errInfo = "";
|
81df8ce6
孙向锦
去掉多余的信息
|
127
|
String KEYDATA[] = pd.getString("KEYDATA").split(";;;");
|
bed6e1fc
孙向锦
添加其他功能
|
128
|
if (null != KEYDATA && KEYDATA.length >= 2) {
|
ad5081d3
孙向锦
初始化项目
|
129
|
Session session = Jurisdiction.getSession();
|
bed6e1fc
孙向锦
添加其他功能
|
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
String sessionCode = (String) session
.getAttribute(Const.SESSION_SECURITY_CODE); // 获取session中的验证码
String USERNAME = KEYDATA[0]; // 登录过来的用户名
String PASSWORD = KEYDATA[1]; // 登录过来的密码
pd.put("USERNAME", USERNAME);
String passwd = new SimpleHash("SHA-1", USERNAME, PASSWORD)
.toString(); // 密码加密
pd.put("PASSWORD", passwd);
pd = userService.getUserByNameAndPwd(pd); // 根据用户名和密码去读取用户信息
if (pd != null) {
this.removeSession(USERNAME);// 请缓存
pd.put("LAST_LOGIN", DateUtil.getTime().toString());
userService.updateLastLogin(pd);
User user = new User();
user.setUSER_ID(pd.getString("USER_ID"));
user.setUSERNAME(pd.getString("USERNAME"));
user.setPASSWORD(pd.getString("PASSWORD"));
user.setNAME(pd.getString("NAME"));
user.setRIGHTS(pd.getString("RIGHTS"));
user.setROLE_ID(pd.getString("ROLE_ID"));
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
150
|
|
9f161055
孙向锦
修改高斯客户反馈
|
151
152
153
154
155
|
PageData eventPd = new PageData();
eventPd.put("EVENT_ID", get32UUID());
eventPd.put("EVENT_NAME", "login");
eventPd.put("EVENT_USER", pd.getString("USER_ID"));
eventPd.put("EVENT_TYPE", "0");
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
156
|
eventPd.put("EVENT_START_TIME", Tools.date2Str(new Date()));
|
9f161055
孙向锦
修改高斯客户反馈
|
157
|
eventPd.put("CLIENT_ID", "SERVER");
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
158
|
eventPd.put("EVENT_IP", pd.getString("IP"));
|
9f161055
孙向锦
修改高斯客户反馈
|
159
|
eventService.save(eventPd);
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
160
161
162
|
if ("57bb1e6f138247a0b05cc721a5da1b64".equals(pd
.getString("ROLE_ID"))) {
|
338594c8
孙向锦
添加教师端页面
|
163
|
map.put("teacher", pd.getString("RIGHTS"));
|
c617106f
孙向锦
添加即时测功能
|
164
165
166
167
168
169
170
|
PageData tpd = new PageData();
tpd.put("ACCOUT", pd.get("USERNAME"));
tpd.put("PASSWORD", PASSWORD);
PageData pageData = teacherService.getUserInfo(tpd);
if(pageData != null){
user.setTeacherID(pageData.getString("ID"));
}
|
338594c8
孙向锦
添加教师端页面
|
171
|
}
|
6b3a5ad0
孙向锦
添加管理员界面
|
172
173
174
175
176
177
178
179
180
181
182
183
|
if("51824b61dd6941f19c673996374781e5".equals(pd
.getString("ROLE_ID"))){
map.put("admin", pd.getString("RIGHTS"));
PageData tpd = new PageData();
tpd.put("ACCOUT", pd.get("USERNAME"));
tpd.put("PASSWORD", passwd);
PageData pageData = schooladminService.findByusername(tpd);
if(pageData != null){
user.setTeacherID(pageData.getString("SCHOOLADMIN_ID"));
user.setUSER_ID(pageData.getString("SCHOOLADMIN_ID"));
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
184
185
186
187
188
189
190
191
192
193
194
195
196
|
user.setLAST_LOGIN(pd.getString("LAST_LOGIN"));
user.setIP(pd.getString("IP"));
user.setSTATUS(pd.getString("STATUS"));
session.setAttribute(Const.SESSION_USER, user); // 把用户信息放session中
session.removeAttribute(Const.SESSION_SECURITY_CODE); // 清除登录验证码的session
// shiro加入身份验证
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(
USERNAME, PASSWORD);
try {
subject.login(token);
} catch (AuthenticationException e) {
errInfo = "身份验证失败!";
|
ad5081d3
孙向锦
初始化项目
|
197
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
198
199
200
201
202
203
204
205
206
|
} else {
errInfo = "usererror"; // 用户名或密码有误
logBefore(logger, USERNAME + "登录系统密码或用户名错误");
FHLOG.save(USERNAME, "登录系统密码或用户名错误");
}
if (Tools.isEmpty(errInfo)) {
errInfo = "success"; // 验证成功
logBefore(logger, USERNAME + "登录系统");
FHLOG.save(USERNAME, "登录系统");
|
ad5081d3
孙向锦
初始化项目
|
207
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
208
|
}
|
ad5081d3
孙向锦
初始化项目
|
209
210
211
|
map.put("result", errInfo);
return AppUtil.returnObject(new PageData(), map);
}
|
bed6e1fc
孙向锦
添加其他功能
|
212
213
214
215
216
217
|
/**
* 访问系统首页
*
* @param changeMenu
* :切换菜单参数
|
ad5081d3
孙向锦
初始化项目
|
218
219
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
220
221
222
|
@RequestMapping(value = "/main/{changeMenu}")
public ModelAndView login_index(
@PathVariable("changeMenu") String changeMenu) {
|
ad5081d3
孙向锦
初始化项目
|
223
224
225
|
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
|
bed6e1fc
孙向锦
添加其他功能
|
226
|
try {
|
ad5081d3
孙向锦
初始化项目
|
227
|
Session session = Jurisdiction.getSession();
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
228
|
|
f143f558
孙向锦
修改管理员登录白屏问题
|
229
|
User user = (User)session.getAttribute(Const.SESSION_USER); //读取session中的用户信息(单独用户信息)
|
ad5081d3
孙向锦
初始化项目
|
230
|
if (user != null) {
|
f143f558
孙向锦
修改管理员登录白屏问题
|
231
232
233
234
235
236
237
|
User userr = (User)session.getAttribute(Const.SESSION_USERROL); //读取session中的用户信息(含角色信息)
if(null == userr){
user = userService.getUserAndRoleById(user.getUSER_ID()); //通过用户ID读取用户信息和角色信息
session.setAttribute(Const.SESSION_USERROL, user); //存入session
}else{
user = userr;
}
|
ad5081d3
孙向锦
初始化项目
|
238
|
String USERNAME = user.getUSERNAME();
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
239
|
if ("teacher".equals(changeMenu)) {
|
338594c8
孙向锦
添加教师端页面
|
240
241
242
243
|
PageData tpd = new PageData();
tpd.put("ID", user.getUSER_ID());
List<PageData> teacherInfos = v1Service.getTeacherInfo(tpd);
pd.put("TEACHER", teacherInfos);
|
a51b67cf
孙向锦
交互第一个版本
|
244
|
if (teacherInfos != null && teacherInfos.size() > 0) {
|
f143f558
孙向锦
修改管理员登录白屏问题
|
245
|
PageData sData = teacherInfos.get(0);
|
a51b67cf
孙向锦
交互第一个版本
|
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
session.setAttribute(USERNAME + Const.SCHOOL_ID,
sData.get("SCHOOL_ID"));
session.setAttribute(USERNAME + Const.SCHOOL_NAME,
sData.get("SCHOOL_NAME"));
session.setAttribute(USERNAME + Const.GRADE_ID,
sData.get("GRADE_ID"));
session.setAttribute(USERNAME + Const.GRADE_NAME,
sData.get("GRADE_NAME"));
session.setAttribute(USERNAME + Const.CLASS_ID,
sData.get("CLASS_ID"));
session.setAttribute(USERNAME + Const.CLASS_NAME,
sData.get("CLASS_NAME"));
session.setAttribute(USERNAME + Const.SUBJECT_ID,
sData.get("SUBJECT_ID"));
session.setAttribute(USERNAME + Const.SUBJECT_NAME,
sData.get("SUBJECT_NAME"));
|
7d60b75e
孙向锦
添加班级-1
|
262
263
|
session.setAttribute(USERNAME + Const.TERM_ID,
sData.get("TERM_ID"));
|
a51b67cf
孙向锦
交互第一个版本
|
264
|
}
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
265
|
session.setAttribute(Const.SESSION_USERNAME, USERNAME); // 放入用户名到session
|
338594c8
孙向锦
添加教师端页面
|
266
|
mv.setViewName("sunvote/teacher/teacher_main");
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
267
268
|
mv.addObject("user", user);
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
|
6b3a5ad0
孙向锦
添加管理员界面
|
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
|
mv.addObject("pd", pd);
return mv;
}else if("admin".equals(changeMenu)){
PageData tpd = new PageData();
tpd.put("ID", user.getUSER_ID());
List<PageData> adminInfos = v1Service.getAdminInfo(tpd);
List<PageData> gradeInfos = new ArrayList<PageData>();
List<PageData> subjectInfos = new ArrayList<PageData>();
// 查询学校信息
for(PageData pad : adminInfos){
PageData tmpd = new PageData();
Object gradeId = pad.get("GRADE_ID");
tmpd.put("SNAME", pad.get("SNAME"));// 学校名称
tmpd.put("SCHOOL_ID", pad.get("SCHOOL_ID"));//学校ID
tmpd.put("GRADE_ID", pad.get("GRADE_ID"));//年级id
tmpd.put("GNAME", pad.get("GNAME"));//年级名称
tmpd.put("SUBJECT_ID", pad.get("SUBJECT_ID"));// 科目id
tmpd.put("SCNAME", pad.get("SCNAME"));// 科目名称
if(gradeId != null && !"".equals(gradeId)){
List<PageData> classInfos = sclassService.listAll(tmpd);
tmpd.put("classInfos", classInfos);
gradeInfos.add(tmpd);
}else{
subjectInfos.add(tmpd);
}
mv.addObject("SNAME", pad.get("SNAME"));
mv.addObject("SCHOOL_ID", pad.get("SCHOOL_ID"));
}
mv.addObject("gradeInfos", gradeInfos);
mv.addObject("subjectInfos", subjectInfos);
session.setAttribute(Const.SESSION_USERNAME, USERNAME); // 放入用户名到session
mv.setViewName("sunvote/admin/admin_main");
mv.addObject("user", user);
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
304
305
|
mv.addObject("pd", pd);
return mv;
|
338594c8
孙向锦
添加教师端页面
|
306
|
}
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
|
Role role = user.getRole(); // 获取用户角色
String roleRights = role != null ? role.getRIGHTS() : ""; // 角色权限(菜单权限)
String ROLE_IDS = user.getROLE_IDS();
session.setAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS,
roleRights); // 将角色权限存入session
session.setAttribute(Const.SESSION_USERNAME, USERNAME); // 放入用户名到session
this.setAttributeToAllDEPARTMENT_ID(session, USERNAME); // 把用户的组织机构权限放到session里面
List<Menu> allmenuList = new ArrayList<Menu>();
allmenuList = this.getAttributeMenu(session, USERNAME,
roleRights, getArrayRoleRights(ROLE_IDS)); // 菜单缓存
List<Menu> menuList = new ArrayList<Menu>();
if (null == session.getAttribute(USERNAME + Const.SESSION_QX)) {
session.setAttribute(USERNAME + Const.SESSION_QX,
this.getUQX(USERNAME)); // 主职角色按钮权限放到session中
session.setAttribute(USERNAME + Const.SESSION_QX2,
this.getUQX2(USERNAME)); // 副职角色按钮权限放到session中
}
this.getRemortIP(USERNAME); // 更新登录IP
menuList = this.changeMenuF(allmenuList, session, USERNAME,
changeMenu); // 切换菜单
mv.setViewName("system/index/main");
|
ad5081d3
孙向锦
初始化项目
|
330
331
|
mv.addObject("user", user);
mv.addObject("menuList", menuList);
|
bed6e1fc
孙向锦
添加其他功能
|
332
333
|
} else {
mv.setViewName("system/index/login");// session失效后跳转登录页面
|
ad5081d3
孙向锦
初始化项目
|
334
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
335
|
} catch (Exception e) {
|
ad5081d3
孙向锦
初始化项目
|
336
337
338
|
mv.setViewName("system/index/login");
logger.error(e.getMessage(), e);
}
|
bed6e1fc
孙向锦
添加其他功能
|
339
340
|
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
341
342
|
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
343
344
345
346
|
/**
* 获取副职角色权限List
*
|
ad5081d3
孙向锦
初始化项目
|
347
348
349
350
|
* @param ROLE_IDS
* @return
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
351
352
|
public List<String> getArrayRoleRights(String ROLE_IDS) throws Exception {
if (Tools.notEmpty(ROLE_IDS)) {
|
ad5081d3
孙向锦
初始化项目
|
353
354
|
List<String> list = new ArrayList<String>();
String arryROLE_ID[] = ROLE_IDS.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
355
|
for (int i = 0; i < arryROLE_ID.length; i++) {
|
ad5081d3
孙向锦
初始化项目
|
356
357
358
|
PageData pd = new PageData();
pd.put("ROLE_ID", arryROLE_ID[i]);
pd = roleService.findObjectById(pd);
|
bed6e1fc
孙向锦
添加其他功能
|
359
|
if (null != pd) {
|
ad5081d3
孙向锦
初始化项目
|
360
|
String RIGHTS = pd.getString("RIGHTS");
|
bed6e1fc
孙向锦
添加其他功能
|
361
|
if (Tools.notEmpty(RIGHTS)) {
|
ad5081d3
孙向锦
初始化项目
|
362
363
364
365
366
|
list.add(RIGHTS);
}
}
}
return list.size() == 0 ? null : list;
|
bed6e1fc
孙向锦
添加其他功能
|
367
|
} else {
|
ad5081d3
孙向锦
初始化项目
|
368
369
370
|
return null;
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
371
372
373
374
|
/**
* 菜单缓存
*
|
ad5081d3
孙向锦
初始化项目
|
375
376
377
378
379
380
381
|
* @param session
* @param USERNAME
* @param roleRights
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
|
bed6e1fc
孙向锦
添加其他功能
|
382
383
|
public List<Menu> getAttributeMenu(Session session, String USERNAME,
String roleRights, List<String> arrayRoleRights) throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
384
|
List<Menu> allmenuList = new ArrayList<Menu>();
|
bed6e1fc
孙向锦
添加其他功能
|
385
386
387
388
389
|
if (null == session.getAttribute(USERNAME + Const.SESSION_allmenuList)) {
allmenuList = menuService.listAllMenuQx("0"); // 获取所有菜单
if (Tools.notEmpty(roleRights)) {
allmenuList = this.readMenu(allmenuList, roleRights,
arrayRoleRights); // 根据角色权限获取本权限的菜单列表
|
ad5081d3
孙向锦
初始化项目
|
390
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
391
392
393
394
395
|
session.setAttribute(USERNAME + Const.SESSION_allmenuList,
allmenuList);// 菜单权限放入session中
} else {
allmenuList = (List<Menu>) session.getAttribute(USERNAME
+ Const.SESSION_allmenuList);
|
ad5081d3
孙向锦
初始化项目
|
396
397
398
|
}
return allmenuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
399
400
401
402
403
404
405
406
|
/**
* 根据角色权限获取本权限的菜单列表(递归处理)
*
* @param menuList
* :传入的总菜单
* @param roleRights
* :加密的权限字符串
|
ad5081d3
孙向锦
初始化项目
|
407
408
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
409
410
411
412
413
414
415
416
417
418
|
public List<Menu> readMenu(List<Menu> menuList, String roleRights,
List<String> arrayRoleRights) {
for (int i = 0; i < menuList.size(); i++) {
Boolean b1 = RightsHelper.testRights(roleRights, menuList.get(i)
.getMENU_ID());
menuList.get(i).setHasMenu(b1); // 赋予主职角色菜单权限
if (!b1 && null != arrayRoleRights) {
for (int n = 0; n < arrayRoleRights.size(); n++) {
if (RightsHelper.testRights(arrayRoleRights.get(n),
menuList.get(i).getMENU_ID())) {
|
ad5081d3
孙向锦
初始化项目
|
419
420
421
422
423
|
menuList.get(i).setHasMenu(true);
break;
}
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
424
425
426
|
if (menuList.get(i).isHasMenu()) { // 判断是否有此菜单权限
this.readMenu(menuList.get(i).getSubMenu(), roleRights,
arrayRoleRights);// 是:继续排查其子菜单
|
ad5081d3
孙向锦
初始化项目
|
427
428
429
430
|
}
}
return menuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
431
432
433
434
|
/**
* 切换菜单处理
*
|
ad5081d3
孙向锦
初始化项目
|
435
436
437
438
439
440
441
|
* @param allmenuList
* @param session
* @param USERNAME
* @param changeMenu
* @return
*/
@SuppressWarnings("unchecked")
|
bed6e1fc
孙向锦
添加其他功能
|
442
443
|
public List<Menu> changeMenuF(List<Menu> allmenuList, Session session,
String USERNAME, String changeMenu) {
|
ad5081d3
孙向锦
初始化项目
|
444
445
|
List<Menu> menuList = new ArrayList<Menu>();
/** 菜单缓存为空 或者 传入的菜单类型和当前不一样的时候,条件成立,重新拆分菜单,把选择的菜单类型放入缓存 */
|
bed6e1fc
孙向锦
添加其他功能
|
446
447
|
if (null == session.getAttribute(USERNAME + Const.SESSION_menuList)
|| (!changeMenu.equals(session.getAttribute("changeMenu")))) {
|
ad5081d3
孙向锦
初始化项目
|
448
449
450
451
|
List<Menu> menuList1 = new ArrayList<Menu>();
List<Menu> menuList2 = new ArrayList<Menu>();
List<Menu> menuList3 = new ArrayList<Menu>();
List<Menu> menuList4 = new ArrayList<Menu>();
|
bed6e1fc
孙向锦
添加其他功能
|
452
|
for (int i = 0; i < allmenuList.size(); i++) {// 拆分菜单
|
ad5081d3
孙向锦
初始化项目
|
453
|
Menu menu = allmenuList.get(i);
|
bed6e1fc
孙向锦
添加其他功能
|
454
455
456
457
458
459
460
461
|
if ("1".equals(menu.getMENU_TYPE())) {
menuList1.add(menu); // 系统菜单
} else if ("2".equals(menu.getMENU_TYPE())) {
menuList2.add(menu); // 业务菜单
} else if ("3".equals(menu.getMENU_TYPE())) {
menuList3.add(menu); // 菜单类型三
} else if ("4".equals(menu.getMENU_TYPE())) {
menuList4.add(menu); // 菜单类型四
|
ad5081d3
孙向锦
初始化项目
|
462
463
464
|
}
}
session.removeAttribute(USERNAME + Const.SESSION_menuList);
|
bed6e1fc
孙向锦
添加其他功能
|
465
466
467
|
if ("index".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList2);
|
ad5081d3
孙向锦
初始化项目
|
468
469
470
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "index");
menuList = menuList2;
|
bed6e1fc
孙向锦
添加其他功能
|
471
472
473
|
} else if ("2".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList1);
|
ad5081d3
孙向锦
初始化项目
|
474
475
476
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "2");
menuList = menuList1;
|
bed6e1fc
孙向锦
添加其他功能
|
477
478
479
|
} else if ("3".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList3);
|
ad5081d3
孙向锦
初始化项目
|
480
481
482
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "3");
menuList = menuList3;
|
bed6e1fc
孙向锦
添加其他功能
|
483
484
485
|
} else if ("4".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList4);
|
ad5081d3
孙向锦
初始化项目
|
486
487
488
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "4");
menuList = menuList4;
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
489
|
} else if ("teacher".equals(changeMenu)) {
|
338594c8
孙向锦
添加教师端页面
|
490
491
492
493
|
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList2);
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "index");
|
ad5081d3
孙向锦
初始化项目
|
494
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
495
496
497
|
} else {
menuList = (List<Menu>) session.getAttribute(USERNAME
+ Const.SESSION_menuList);
|
ad5081d3
孙向锦
初始化项目
|
498
499
500
|
}
return menuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
501
502
503
504
|
/**
* 把用户的组织机构权限放到session里面
*
|
ad5081d3
孙向锦
初始化项目
|
505
506
507
|
* @param session
* @param USERNAME
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
508
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
509
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
510
511
512
513
|
public void setAttributeToAllDEPARTMENT_ID(Session session, String USERNAME)
throws Exception {
String DEPARTMENT_IDS = "0", DEPARTMENT_ID = "0";
if (!"admin".equals(USERNAME)) {
|
ad5081d3
孙向锦
初始化项目
|
514
|
PageData pd = datajurService.getDEPARTMENT_IDS(USERNAME);
|
bed6e1fc
孙向锦
添加其他功能
|
515
516
|
DEPARTMENT_IDS = null == pd ? "无权" : pd.getString("DEPARTMENT_IDS");
DEPARTMENT_ID = null == pd ? "无权" : pd.getString("DEPARTMENT_ID");
|
ad5081d3
孙向锦
初始化项目
|
517
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
518
519
|
session.setAttribute(Const.DEPARTMENT_IDS, DEPARTMENT_IDS); // 把用户的组织机构权限集合放到session里面
session.setAttribute(Const.DEPARTMENT_ID, DEPARTMENT_ID); // 把用户的最高组织机构权限放到session里面
|
ad5081d3
孙向锦
初始化项目
|
520
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
521
|
|
ad5081d3
孙向锦
初始化项目
|
522
523
|
/**
* 进入tab标签
|
bed6e1fc
孙向锦
添加其他功能
|
524
|
*
|
ad5081d3
孙向锦
初始化项目
|
525
526
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
527
528
|
@RequestMapping(value = "/tab")
public String tab() {
|
ad5081d3
孙向锦
初始化项目
|
529
530
|
return "system/index/tab";
}
|
bed6e1fc
孙向锦
添加其他功能
|
531
|
|
ad5081d3
孙向锦
初始化项目
|
532
533
|
/**
* 进入首页后的默认页面
|
bed6e1fc
孙向锦
添加其他功能
|
534
|
*
|
ad5081d3
孙向锦
初始化项目
|
535
|
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
536
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
537
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
538
539
|
@RequestMapping(value = "/login_default")
public ModelAndView defaultPage() throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
540
541
|
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
542
543
544
545
546
547
548
|
pd.put("userCount",
Integer.parseInt(userService.getUserCount("").get("userCount")
.toString()) - 1); // 系统用户数
pd.put("appUserCount",
Integer.parseInt(appuserService.getAppUserCount("")
.get("appUserCount").toString())); // 会员数
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
549
550
551
|
mv.setViewName("system/index/default");
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
552
|
|
ad5081d3
孙向锦
初始化项目
|
553
554
|
/**
* 用户注销
|
bed6e1fc
孙向锦
添加其他功能
|
555
|
*
|
ad5081d3
孙向锦
初始化项目
|
556
557
|
* @param session
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
558
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
559
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
560
561
562
563
|
@RequestMapping(value = "/logout")
public ModelAndView logout() throws Exception {
String USERNAME = Jurisdiction.getUsername(); // 当前登录的用户名
logBefore(logger, USERNAME + "退出系统");
|
ad5081d3
孙向锦
初始化项目
|
564
565
566
|
FHLOG.save(USERNAME, "退出");
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
567
568
569
|
this.removeSession(USERNAME);// 请缓存
// shiro销毁登录
Subject subject = SecurityUtils.getSubject();
|
ad5081d3
孙向锦
初始化项目
|
570
571
572
|
subject.logout();
pd = this.getPageData();
pd.put("msg", pd.getString("msg"));
|
bed6e1fc
孙向锦
添加其他功能
|
573
|
pd = this.setLoginPd(pd); // 设置登录页面的配置参数
|
ad5081d3
孙向锦
初始化项目
|
574
|
mv.setViewName("system/index/login");
|
bed6e1fc
孙向锦
添加其他功能
|
575
|
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
576
577
|
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
578
|
|
ad5081d3
孙向锦
初始化项目
|
579
580
581
|
/**
* 清理session
*/
|
bed6e1fc
孙向锦
添加其他功能
|
582
583
|
public void removeSession(String USERNAME) {
Session session = Jurisdiction.getSession(); // 以下清除session缓存
|
ad5081d3
孙向锦
初始化项目
|
584
585
586
587
588
589
590
591
592
593
594
595
596
|
session.removeAttribute(Const.SESSION_USER);
session.removeAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS);
session.removeAttribute(USERNAME + Const.SESSION_allmenuList);
session.removeAttribute(USERNAME + Const.SESSION_menuList);
session.removeAttribute(USERNAME + Const.SESSION_QX);
session.removeAttribute(USERNAME + Const.SESSION_QX2);
session.removeAttribute(Const.SESSION_userpds);
session.removeAttribute(Const.SESSION_USERNAME);
session.removeAttribute(Const.SESSION_USERROL);
session.removeAttribute("changeMenu");
session.removeAttribute("DEPARTMENT_IDS");
session.removeAttribute("DEPARTMENT_ID");
}
|
bed6e1fc
孙向锦
添加其他功能
|
597
598
599
600
|
/**
* 设置登录页面的配置参数
*
|
ad5081d3
孙向锦
初始化项目
|
601
602
603
|
* @param pd
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
604
605
606
607
|
public PageData setLoginPd(PageData pd) {
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
String strLOGINEDIT = Tools.readTxtFile(Const.LOGINEDIT); // 读取登录页面配置
if (null != strLOGINEDIT && !"".equals(strLOGINEDIT)) {
|
ad5081d3
孙向锦
初始化项目
|
608
|
String strLo[] = strLOGINEDIT.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
609
|
if (strLo.length == 2) {
|
ad5081d3
孙向锦
初始化项目
|
610
611
612
613
614
|
pd.put("isZhuce", strLo[0]);
pd.put("isMusic", strLo[1]);
}
}
try {
|
bed6e1fc
孙向锦
添加其他功能
|
615
|
List<PageData> listImg = loginimgService.listAll(pd); // 登录背景图片
|
ad5081d3
孙向锦
初始化项目
|
616
617
618
619
620
621
|
pd.put("listImg", listImg);
} catch (Exception e) {
e.printStackTrace();
}
return pd;
}
|
bed6e1fc
孙向锦
添加其他功能
|
622
623
624
625
|
/**
* 获取用户权限
*
|
ad5081d3
孙向锦
初始化项目
|
626
627
628
|
* @param session
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
629
|
public Map<String, String> getUQX(String USERNAME) {
|
ad5081d3
孙向锦
初始化项目
|
630
631
632
633
|
PageData pd = new PageData();
Map<String, String> map = new HashMap<String, String>();
try {
pd.put(Const.SESSION_USERNAME, USERNAME);
|
bed6e1fc
孙向锦
添加其他功能
|
634
|
|
ad5081d3
孙向锦
初始化项目
|
635
|
PageData userpd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
636
|
userpd = userService.findByUsername(pd); // 通过用户名获取用户信息
|
ad5081d3
孙向锦
初始化项目
|
637
638
|
String ROLE_ID = userpd.get("ROLE_ID").toString();
String ROLE_IDS = userpd.getString("ROLE_IDS");
|
bed6e1fc
孙向锦
添加其他功能
|
639
640
641
642
643
644
|
pd.put("ROLE_ID", ROLE_ID); // 获取角色ID
pd = roleService.findObjectById(pd); // 获取角色信息
map.put("adds", pd.getString("ADD_QX")); // 增
map.put("dels", pd.getString("DEL_QX")); // 删
map.put("edits", pd.getString("EDIT_QX")); // 改
map.put("chas", pd.getString("CHA_QX")); // 查
|
ad5081d3
孙向锦
初始化项目
|
645
|
List<PageData> buttonQXnamelist = new ArrayList<PageData>();
|
bed6e1fc
孙向锦
添加其他功能
|
646
647
648
649
|
if ("admin".equals(USERNAME)) {
buttonQXnamelist = fhbuttonService.listAll(pd); // admin用户拥有所有按钮权限
} else {
if (Tools.notEmpty(ROLE_IDS)) {// (主副职角色综合按钮权限)
|
ad5081d3
孙向锦
初始化项目
|
650
651
|
ROLE_IDS = ROLE_IDS + ROLE_ID;
String arryROLE_ID[] = ROLE_IDS.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
652
653
654
655
656
|
buttonQXnamelist = buttonrightsService
.listAllBrAndQxnameByZF(arryROLE_ID);
} else { // (主职角色按钮权限)
buttonQXnamelist = buttonrightsService
.listAllBrAndQxname(pd); // 此角色拥有的按钮权限标识列表
|
ad5081d3
孙向锦
初始化项目
|
657
658
|
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
659
660
|
for (int i = 0; i < buttonQXnamelist.size(); i++) {
map.put(buttonQXnamelist.get(i).getString("QX_NAME"), "1"); // 按钮权限
|
ad5081d3
孙向锦
初始化项目
|
661
662
663
|
}
} catch (Exception e) {
logger.error(e.toString(), e);
|
bed6e1fc
孙向锦
添加其他功能
|
664
|
}
|
ad5081d3
孙向锦
初始化项目
|
665
666
|
return map;
}
|
bed6e1fc
孙向锦
添加其他功能
|
667
668
669
670
|
/**
* 获取用户权限(处理副职角色)
*
|
ad5081d3
孙向锦
初始化项目
|
671
672
673
|
* @param session
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
674
|
public Map<String, List<String>> getUQX2(String USERNAME) {
|
ad5081d3
孙向锦
初始化项目
|
675
676
677
678
679
|
PageData pd = new PageData();
Map<String, List<String>> maps = new HashMap<String, List<String>>();
try {
pd.put(Const.SESSION_USERNAME, USERNAME);
PageData userpd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
680
|
userpd = userService.findByUsername(pd); // 通过用户名获取用户信息
|
ad5081d3
孙向锦
初始化项目
|
681
|
String ROLE_IDS = userpd.getString("ROLE_IDS");
|
bed6e1fc
孙向锦
添加其他功能
|
682
|
if (Tools.notEmpty(ROLE_IDS)) {
|
ad5081d3
孙向锦
初始化项目
|
683
684
685
686
687
688
|
String arryROLE_ID[] = ROLE_IDS.split(",fh,");
PageData rolePd = new PageData();
List<String> addsList = new ArrayList<String>();
List<String> delsList = new ArrayList<String>();
List<String> editsList = new ArrayList<String>();
List<String> chasList = new ArrayList<String>();
|
bed6e1fc
孙向锦
添加其他功能
|
689
|
for (int i = 0; i < arryROLE_ID.length; i++) {
|
ad5081d3
孙向锦
初始化项目
|
690
691
692
693
694
695
696
|
rolePd.put("ROLE_ID", arryROLE_ID[i]);
rolePd = roleService.findObjectById(rolePd);
addsList.add(rolePd.getString("ADD_QX"));
delsList.add(rolePd.getString("DEL_QX"));
editsList.add(rolePd.getString("EDIT_QX"));
chasList.add(rolePd.getString("CHA_QX"));
}
|
bed6e1fc
孙向锦
添加其他功能
|
697
698
699
700
|
maps.put("addsList", addsList); // 增
maps.put("delsList", delsList); // 删
maps.put("editsList", editsList); // 改
maps.put("chasList", chasList); // 查
|
ad5081d3
孙向锦
初始化项目
|
701
702
703
|
}
} catch (Exception e) {
logger.error(e.toString(), e);
|
bed6e1fc
孙向锦
添加其他功能
|
704
|
}
|
ad5081d3
孙向锦
初始化项目
|
705
706
|
return maps;
}
|
bed6e1fc
孙向锦
添加其他功能
|
707
708
709
710
|
/**
* 更新登录用户的IP
*
|
ad5081d3
孙向锦
初始化项目
|
711
712
713
|
* @param USERNAME
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
714
|
public void getRemortIP(String USERNAME) throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
715
716
717
|
PageData pd = new PageData();
HttpServletRequest request = this.getRequest();
String ip = "";
|
bed6e1fc
孙向锦
添加其他功能
|
718
719
720
721
722
|
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
|
ad5081d3
孙向锦
初始化项目
|
723
724
725
|
pd.put("USERNAME", USERNAME);
pd.put("IP", ip);
userService.saveIP(pd);
|
bed6e1fc
孙向锦
添加其他功能
|
726
727
|
}
|
ad5081d3
孙向锦
初始化项目
|
728
|
}
|