Blame view

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