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
|
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"));
|
6b3a5ad0
孙向锦
添加管理员界面
|
181
182
|
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
183
184
185
186
187
188
189
190
191
192
193
194
195
|
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
孙向锦
初始化项目
|
196
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
197
198
199
200
201
202
203
204
205
|
} else {
errInfo = "usererror"; // 用户名或密码有误
logBefore(logger, USERNAME + "登录系统密码或用户名错误");
FHLOG.save(USERNAME, "登录系统密码或用户名错误");
}
if (Tools.isEmpty(errInfo)) {
errInfo = "success"; // 验证成功
logBefore(logger, USERNAME + "登录系统");
FHLOG.save(USERNAME, "登录系统");
|
ad5081d3
孙向锦
初始化项目
|
206
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
207
|
}
|
ad5081d3
孙向锦
初始化项目
|
208
209
210
|
map.put("result", errInfo);
return AppUtil.returnObject(new PageData(), map);
}
|
bed6e1fc
孙向锦
添加其他功能
|
211
212
213
214
215
216
|
/**
* 访问系统首页
*
* @param changeMenu
* :切换菜单参数
|
ad5081d3
孙向锦
初始化项目
|
217
218
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
219
220
221
|
@RequestMapping(value = "/main/{changeMenu}")
public ModelAndView login_index(
@PathVariable("changeMenu") String changeMenu) {
|
ad5081d3
孙向锦
初始化项目
|
222
223
224
|
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
|
bed6e1fc
孙向锦
添加其他功能
|
225
|
try {
|
ad5081d3
孙向锦
初始化项目
|
226
|
Session session = Jurisdiction.getSession();
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
227
|
|
f143f558
孙向锦
修改管理员登录白屏问题
|
228
|
User user = (User)session.getAttribute(Const.SESSION_USER); //读取session中的用户信息(单独用户信息)
|
ad5081d3
孙向锦
初始化项目
|
229
|
if (user != null) {
|
f143f558
孙向锦
修改管理员登录白屏问题
|
230
231
232
233
234
235
236
|
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
孙向锦
初始化项目
|
237
|
String USERNAME = user.getUSERNAME();
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
238
|
if ("teacher".equals(changeMenu)) {
|
338594c8
孙向锦
添加教师端页面
|
239
240
241
242
|
PageData tpd = new PageData();
tpd.put("ID", user.getUSER_ID());
List<PageData> teacherInfos = v1Service.getTeacherInfo(tpd);
pd.put("TEACHER", teacherInfos);
|
a51b67cf
孙向锦
交互第一个版本
|
243
|
if (teacherInfos != null && teacherInfos.size() > 0) {
|
f143f558
孙向锦
修改管理员登录白屏问题
|
244
|
PageData sData = teacherInfos.get(0);
|
a51b67cf
孙向锦
交互第一个版本
|
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
|
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
|
261
262
|
session.setAttribute(USERNAME + Const.TERM_ID,
sData.get("TERM_ID"));
|
a51b67cf
孙向锦
交互第一个版本
|
263
|
}
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
264
|
session.setAttribute(Const.SESSION_USERNAME, USERNAME); // 放入用户名到session
|
338594c8
孙向锦
添加教师端页面
|
265
|
mv.setViewName("sunvote/teacher/teacher_main");
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
266
267
|
mv.addObject("user", user);
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
|
6b3a5ad0
孙向锦
添加管理员界面
|
268
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
|
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
孙向锦
更新新东方服务界面维护文档
|
303
304
|
mv.addObject("pd", pd);
return mv;
|
338594c8
孙向锦
添加教师端页面
|
305
|
}
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
|
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
孙向锦
初始化项目
|
329
330
|
mv.addObject("user", user);
mv.addObject("menuList", menuList);
|
bed6e1fc
孙向锦
添加其他功能
|
331
332
|
} else {
mv.setViewName("system/index/login");// session失效后跳转登录页面
|
ad5081d3
孙向锦
初始化项目
|
333
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
334
|
} catch (Exception e) {
|
ad5081d3
孙向锦
初始化项目
|
335
336
337
|
mv.setViewName("system/index/login");
logger.error(e.getMessage(), e);
}
|
bed6e1fc
孙向锦
添加其他功能
|
338
339
|
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
340
341
|
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
342
343
344
345
|
/**
* 获取副职角色权限List
*
|
ad5081d3
孙向锦
初始化项目
|
346
347
348
349
|
* @param ROLE_IDS
* @return
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
350
351
|
public List<String> getArrayRoleRights(String ROLE_IDS) throws Exception {
if (Tools.notEmpty(ROLE_IDS)) {
|
ad5081d3
孙向锦
初始化项目
|
352
353
|
List<String> list = new ArrayList<String>();
String arryROLE_ID[] = ROLE_IDS.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
354
|
for (int i = 0; i < arryROLE_ID.length; i++) {
|
ad5081d3
孙向锦
初始化项目
|
355
356
357
|
PageData pd = new PageData();
pd.put("ROLE_ID", arryROLE_ID[i]);
pd = roleService.findObjectById(pd);
|
bed6e1fc
孙向锦
添加其他功能
|
358
|
if (null != pd) {
|
ad5081d3
孙向锦
初始化项目
|
359
|
String RIGHTS = pd.getString("RIGHTS");
|
bed6e1fc
孙向锦
添加其他功能
|
360
|
if (Tools.notEmpty(RIGHTS)) {
|
ad5081d3
孙向锦
初始化项目
|
361
362
363
364
365
|
list.add(RIGHTS);
}
}
}
return list.size() == 0 ? null : list;
|
bed6e1fc
孙向锦
添加其他功能
|
366
|
} else {
|
ad5081d3
孙向锦
初始化项目
|
367
368
369
|
return null;
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
370
371
372
373
|
/**
* 菜单缓存
*
|
ad5081d3
孙向锦
初始化项目
|
374
375
376
377
378
379
380
|
* @param session
* @param USERNAME
* @param roleRights
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
|
bed6e1fc
孙向锦
添加其他功能
|
381
382
|
public List<Menu> getAttributeMenu(Session session, String USERNAME,
String roleRights, List<String> arrayRoleRights) throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
383
|
List<Menu> allmenuList = new ArrayList<Menu>();
|
bed6e1fc
孙向锦
添加其他功能
|
384
385
386
387
388
|
if (null == session.getAttribute(USERNAME + Const.SESSION_allmenuList)) {
allmenuList = menuService.listAllMenuQx("0"); // 获取所有菜单
if (Tools.notEmpty(roleRights)) {
allmenuList = this.readMenu(allmenuList, roleRights,
arrayRoleRights); // 根据角色权限获取本权限的菜单列表
|
ad5081d3
孙向锦
初始化项目
|
389
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
390
391
392
393
394
|
session.setAttribute(USERNAME + Const.SESSION_allmenuList,
allmenuList);// 菜单权限放入session中
} else {
allmenuList = (List<Menu>) session.getAttribute(USERNAME
+ Const.SESSION_allmenuList);
|
ad5081d3
孙向锦
初始化项目
|
395
396
397
|
}
return allmenuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
398
399
400
401
402
403
404
405
|
/**
* 根据角色权限获取本权限的菜单列表(递归处理)
*
* @param menuList
* :传入的总菜单
* @param roleRights
* :加密的权限字符串
|
ad5081d3
孙向锦
初始化项目
|
406
407
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
408
409
410
411
412
413
414
415
416
417
|
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
孙向锦
初始化项目
|
418
419
420
421
422
|
menuList.get(i).setHasMenu(true);
break;
}
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
423
424
425
|
if (menuList.get(i).isHasMenu()) { // 判断是否有此菜单权限
this.readMenu(menuList.get(i).getSubMenu(), roleRights,
arrayRoleRights);// 是:继续排查其子菜单
|
ad5081d3
孙向锦
初始化项目
|
426
427
428
429
|
}
}
return menuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
430
431
432
433
|
/**
* 切换菜单处理
*
|
ad5081d3
孙向锦
初始化项目
|
434
435
436
437
438
439
440
|
* @param allmenuList
* @param session
* @param USERNAME
* @param changeMenu
* @return
*/
@SuppressWarnings("unchecked")
|
bed6e1fc
孙向锦
添加其他功能
|
441
442
|
public List<Menu> changeMenuF(List<Menu> allmenuList, Session session,
String USERNAME, String changeMenu) {
|
ad5081d3
孙向锦
初始化项目
|
443
444
|
List<Menu> menuList = new ArrayList<Menu>();
/** 菜单缓存为空 或者 传入的菜单类型和当前不一样的时候,条件成立,重新拆分菜单,把选择的菜单类型放入缓存 */
|
bed6e1fc
孙向锦
添加其他功能
|
445
446
|
if (null == session.getAttribute(USERNAME + Const.SESSION_menuList)
|| (!changeMenu.equals(session.getAttribute("changeMenu")))) {
|
ad5081d3
孙向锦
初始化项目
|
447
448
449
450
|
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
孙向锦
添加其他功能
|
451
|
for (int i = 0; i < allmenuList.size(); i++) {// 拆分菜单
|
ad5081d3
孙向锦
初始化项目
|
452
|
Menu menu = allmenuList.get(i);
|
bed6e1fc
孙向锦
添加其他功能
|
453
454
455
456
457
458
459
460
|
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
孙向锦
初始化项目
|
461
462
463
|
}
}
session.removeAttribute(USERNAME + Const.SESSION_menuList);
|
bed6e1fc
孙向锦
添加其他功能
|
464
465
466
|
if ("index".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList2);
|
ad5081d3
孙向锦
初始化项目
|
467
468
469
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "index");
menuList = menuList2;
|
bed6e1fc
孙向锦
添加其他功能
|
470
471
472
|
} else if ("2".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList1);
|
ad5081d3
孙向锦
初始化项目
|
473
474
475
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "2");
menuList = menuList1;
|
bed6e1fc
孙向锦
添加其他功能
|
476
477
478
|
} else if ("3".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList3);
|
ad5081d3
孙向锦
初始化项目
|
479
480
481
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "3");
menuList = menuList3;
|
bed6e1fc
孙向锦
添加其他功能
|
482
483
484
|
} else if ("4".equals(changeMenu)) {
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList4);
|
ad5081d3
孙向锦
初始化项目
|
485
486
487
|
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "4");
menuList = menuList4;
|
4f32cbf7
孙向锦
更新新东方服务界面维护文档
|
488
|
} else if ("teacher".equals(changeMenu)) {
|
338594c8
孙向锦
添加教师端页面
|
489
490
491
492
|
session.setAttribute(USERNAME + Const.SESSION_menuList,
menuList2);
session.removeAttribute("changeMenu");
session.setAttribute("changeMenu", "index");
|
ad5081d3
孙向锦
初始化项目
|
493
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
494
495
496
|
} else {
menuList = (List<Menu>) session.getAttribute(USERNAME
+ Const.SESSION_menuList);
|
ad5081d3
孙向锦
初始化项目
|
497
498
499
|
}
return menuList;
}
|
bed6e1fc
孙向锦
添加其他功能
|
500
501
502
503
|
/**
* 把用户的组织机构权限放到session里面
*
|
ad5081d3
孙向锦
初始化项目
|
504
505
506
|
* @param session
* @param USERNAME
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
507
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
508
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
509
510
511
512
|
public void setAttributeToAllDEPARTMENT_ID(Session session, String USERNAME)
throws Exception {
String DEPARTMENT_IDS = "0", DEPARTMENT_ID = "0";
if (!"admin".equals(USERNAME)) {
|
ad5081d3
孙向锦
初始化项目
|
513
|
PageData pd = datajurService.getDEPARTMENT_IDS(USERNAME);
|
bed6e1fc
孙向锦
添加其他功能
|
514
515
|
DEPARTMENT_IDS = null == pd ? "无权" : pd.getString("DEPARTMENT_IDS");
DEPARTMENT_ID = null == pd ? "无权" : pd.getString("DEPARTMENT_ID");
|
ad5081d3
孙向锦
初始化项目
|
516
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
517
518
|
session.setAttribute(Const.DEPARTMENT_IDS, DEPARTMENT_IDS); // 把用户的组织机构权限集合放到session里面
session.setAttribute(Const.DEPARTMENT_ID, DEPARTMENT_ID); // 把用户的最高组织机构权限放到session里面
|
ad5081d3
孙向锦
初始化项目
|
519
|
}
|
bed6e1fc
孙向锦
添加其他功能
|
520
|
|
ad5081d3
孙向锦
初始化项目
|
521
522
|
/**
* 进入tab标签
|
bed6e1fc
孙向锦
添加其他功能
|
523
|
*
|
ad5081d3
孙向锦
初始化项目
|
524
525
|
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
526
527
|
@RequestMapping(value = "/tab")
public String tab() {
|
ad5081d3
孙向锦
初始化项目
|
528
529
|
return "system/index/tab";
}
|
bed6e1fc
孙向锦
添加其他功能
|
530
|
|
ad5081d3
孙向锦
初始化项目
|
531
532
|
/**
* 进入首页后的默认页面
|
bed6e1fc
孙向锦
添加其他功能
|
533
|
*
|
ad5081d3
孙向锦
初始化项目
|
534
|
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
535
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
536
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
537
538
|
@RequestMapping(value = "/login_default")
public ModelAndView defaultPage() throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
539
540
|
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
541
542
543
544
545
546
547
|
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
孙向锦
初始化项目
|
548
549
550
|
mv.setViewName("system/index/default");
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
551
|
|
ad5081d3
孙向锦
初始化项目
|
552
553
|
/**
* 用户注销
|
bed6e1fc
孙向锦
添加其他功能
|
554
|
*
|
ad5081d3
孙向锦
初始化项目
|
555
556
|
* @param session
* @return
|
bed6e1fc
孙向锦
添加其他功能
|
557
|
* @throws Exception
|
ad5081d3
孙向锦
初始化项目
|
558
|
*/
|
bed6e1fc
孙向锦
添加其他功能
|
559
560
561
562
|
@RequestMapping(value = "/logout")
public ModelAndView logout() throws Exception {
String USERNAME = Jurisdiction.getUsername(); // 当前登录的用户名
logBefore(logger, USERNAME + "退出系统");
|
ad5081d3
孙向锦
初始化项目
|
563
564
565
|
FHLOG.save(USERNAME, "退出");
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
566
567
568
|
this.removeSession(USERNAME);// 请缓存
// shiro销毁登录
Subject subject = SecurityUtils.getSubject();
|
ad5081d3
孙向锦
初始化项目
|
569
570
571
|
subject.logout();
pd = this.getPageData();
pd.put("msg", pd.getString("msg"));
|
bed6e1fc
孙向锦
添加其他功能
|
572
|
pd = this.setLoginPd(pd); // 设置登录页面的配置参数
|
ad5081d3
孙向锦
初始化项目
|
573
|
mv.setViewName("system/index/login");
|
bed6e1fc
孙向锦
添加其他功能
|
574
|
mv.addObject("pd", pd);
|
ad5081d3
孙向锦
初始化项目
|
575
576
|
return mv;
}
|
bed6e1fc
孙向锦
添加其他功能
|
577
|
|
ad5081d3
孙向锦
初始化项目
|
578
579
580
|
/**
* 清理session
*/
|
bed6e1fc
孙向锦
添加其他功能
|
581
582
|
public void removeSession(String USERNAME) {
Session session = Jurisdiction.getSession(); // 以下清除session缓存
|
ad5081d3
孙向锦
初始化项目
|
583
584
585
586
587
588
589
590
591
592
593
594
595
|
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
孙向锦
添加其他功能
|
596
597
598
599
|
/**
* 设置登录页面的配置参数
*
|
ad5081d3
孙向锦
初始化项目
|
600
601
602
|
* @param pd
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
603
604
605
606
|
public PageData setLoginPd(PageData pd) {
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); // 读取系统名称
String strLOGINEDIT = Tools.readTxtFile(Const.LOGINEDIT); // 读取登录页面配置
if (null != strLOGINEDIT && !"".equals(strLOGINEDIT)) {
|
ad5081d3
孙向锦
初始化项目
|
607
|
String strLo[] = strLOGINEDIT.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
608
|
if (strLo.length == 2) {
|
ad5081d3
孙向锦
初始化项目
|
609
610
611
612
613
|
pd.put("isZhuce", strLo[0]);
pd.put("isMusic", strLo[1]);
}
}
try {
|
bed6e1fc
孙向锦
添加其他功能
|
614
|
List<PageData> listImg = loginimgService.listAll(pd); // 登录背景图片
|
ad5081d3
孙向锦
初始化项目
|
615
616
617
618
619
620
|
pd.put("listImg", listImg);
} catch (Exception e) {
e.printStackTrace();
}
return pd;
}
|
bed6e1fc
孙向锦
添加其他功能
|
621
622
623
624
|
/**
* 获取用户权限
*
|
ad5081d3
孙向锦
初始化项目
|
625
626
627
|
* @param session
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
628
|
public Map<String, String> getUQX(String USERNAME) {
|
ad5081d3
孙向锦
初始化项目
|
629
630
631
632
|
PageData pd = new PageData();
Map<String, String> map = new HashMap<String, String>();
try {
pd.put(Const.SESSION_USERNAME, USERNAME);
|
bed6e1fc
孙向锦
添加其他功能
|
633
|
|
ad5081d3
孙向锦
初始化项目
|
634
|
PageData userpd = new PageData();
|
bed6e1fc
孙向锦
添加其他功能
|
635
|
userpd = userService.findByUsername(pd); // 通过用户名获取用户信息
|
ad5081d3
孙向锦
初始化项目
|
636
637
|
String ROLE_ID = userpd.get("ROLE_ID").toString();
String ROLE_IDS = userpd.getString("ROLE_IDS");
|
bed6e1fc
孙向锦
添加其他功能
|
638
639
640
641
642
643
|
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
孙向锦
初始化项目
|
644
|
List<PageData> buttonQXnamelist = new ArrayList<PageData>();
|
bed6e1fc
孙向锦
添加其他功能
|
645
646
647
648
|
if ("admin".equals(USERNAME)) {
buttonQXnamelist = fhbuttonService.listAll(pd); // admin用户拥有所有按钮权限
} else {
if (Tools.notEmpty(ROLE_IDS)) {// (主副职角色综合按钮权限)
|
ad5081d3
孙向锦
初始化项目
|
649
650
|
ROLE_IDS = ROLE_IDS + ROLE_ID;
String arryROLE_ID[] = ROLE_IDS.split(",fh,");
|
bed6e1fc
孙向锦
添加其他功能
|
651
652
653
654
655
|
buttonQXnamelist = buttonrightsService
.listAllBrAndQxnameByZF(arryROLE_ID);
} else { // (主职角色按钮权限)
buttonQXnamelist = buttonrightsService
.listAllBrAndQxname(pd); // 此角色拥有的按钮权限标识列表
|
ad5081d3
孙向锦
初始化项目
|
656
657
|
}
}
|
bed6e1fc
孙向锦
添加其他功能
|
658
659
|
for (int i = 0; i < buttonQXnamelist.size(); i++) {
map.put(buttonQXnamelist.get(i).getString("QX_NAME"), "1"); // 按钮权限
|
ad5081d3
孙向锦
初始化项目
|
660
661
662
|
}
} catch (Exception e) {
logger.error(e.toString(), e);
|
bed6e1fc
孙向锦
添加其他功能
|
663
|
}
|
ad5081d3
孙向锦
初始化项目
|
664
665
|
return map;
}
|
bed6e1fc
孙向锦
添加其他功能
|
666
667
668
669
|
/**
* 获取用户权限(处理副职角色)
*
|
ad5081d3
孙向锦
初始化项目
|
670
671
672
|
* @param session
* @return
*/
|
bed6e1fc
孙向锦
添加其他功能
|
673
|
public Map<String, List<String>> getUQX2(String USERNAME) {
|
ad5081d3
孙向锦
初始化项目
|
674
675
676
677
678
|
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
孙向锦
添加其他功能
|
679
|
userpd = userService.findByUsername(pd); // 通过用户名获取用户信息
|
ad5081d3
孙向锦
初始化项目
|
680
|
String ROLE_IDS = userpd.getString("ROLE_IDS");
|
bed6e1fc
孙向锦
添加其他功能
|
681
|
if (Tools.notEmpty(ROLE_IDS)) {
|
ad5081d3
孙向锦
初始化项目
|
682
683
684
685
686
687
|
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
孙向锦
添加其他功能
|
688
|
for (int i = 0; i < arryROLE_ID.length; i++) {
|
ad5081d3
孙向锦
初始化项目
|
689
690
691
692
693
694
695
|
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
孙向锦
添加其他功能
|
696
697
698
699
|
maps.put("addsList", addsList); // 增
maps.put("delsList", delsList); // 删
maps.put("editsList", editsList); // 改
maps.put("chasList", chasList); // 查
|
ad5081d3
孙向锦
初始化项目
|
700
701
702
|
}
} catch (Exception e) {
logger.error(e.toString(), e);
|
bed6e1fc
孙向锦
添加其他功能
|
703
|
}
|
ad5081d3
孙向锦
初始化项目
|
704
705
|
return maps;
}
|
bed6e1fc
孙向锦
添加其他功能
|
706
707
708
709
|
/**
* 更新登录用户的IP
*
|
ad5081d3
孙向锦
初始化项目
|
710
711
712
|
* @param USERNAME
* @throws Exception
*/
|
bed6e1fc
孙向锦
添加其他功能
|
713
|
public void getRemortIP(String USERNAME) throws Exception {
|
ad5081d3
孙向锦
初始化项目
|
714
715
716
|
PageData pd = new PageData();
HttpServletRequest request = this.getRequest();
String ip = "";
|
bed6e1fc
孙向锦
添加其他功能
|
717
718
719
720
721
|
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
|
ad5081d3
孙向锦
初始化项目
|
722
723
724
|
pd.put("USERNAME", USERNAME);
pd.put("IP", ip);
userService.saveIP(pd);
|
bed6e1fc
孙向锦
添加其他功能
|
725
726
|
}
|
ad5081d3
孙向锦
初始化项目
|
727
|
}
|