校内直通车

package com.moofen.school.ume.controller.sys.um;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.lang.NonNull;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.moofen.core.constant.AuthConstant;
import com.moofen.core.constant.SessionConstant;
import com.moofen.core.entity.sys.um.RoleBase;
import com.moofen.core.mvc.controller.BaseController;
import com.moofen.school.ume.service.sys.um.RoleBaseService;
import com.moofen.school.ume.service.sys.um.UserAuthorizationService;

@Controller
@RequestMapping("/ume/sys/um/roles")
public class RoleController extends BaseController{
	
	@Resource(name = "roleBaseService")
	private RoleBaseService roleBaseService;
	
	@Resource(name = "userAuthorizationService")
	private UserAuthorizationService userAuthorizationService;
	
	@ResponseBody
	@GetMapping("/list")
	public JSONObject listRoles(HttpServletRequest request) {
		String userCode = (String)request.getSession().getAttribute(SessionConstant.USER_CODE);
		return roleBaseService.listRoles(userCode);
	}

	@ResponseBody
	@GetMapping("/select")
	public JSONObject select(HttpServletRequest request) {
		String roleId = request.getParameter("roleId");
		JSONObject obj = roleBaseService.getRole(roleId);
		JSONObject result = obj.getJSONObject("data");
		// RoleBase roleBase =
		// JSON.parseObject(result.toJSONString(),RoleBase.class);
		request.getSession().setAttribute(SessionConstant.CURR_USER_ROLE, result);

		// begin add by chaixin at 2018-11-26 当前角色权限
		RoleBase roleBase = JSON.parseObject(result.toJSONString(), RoleBase.class);
		roleBaseService.changeRole(roleBase, getRequest());
		// end add by chaixin at 2018-11-26 当前角色权限
		return obj;
	}
	
	@ResponseBody
	@GetMapping("/directCarRoles/{schCode}/{roleBaseCode}")
	public JSONObject directCarRoles(@NonNull @PathVariable Long schCode,
			@NonNull @PathVariable Long roleBaseCode) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("schCode", schCode);
		params.put("roleBaseCode", roleBaseCode);
		return roleBaseService.directCarRoles(params);
	}
	
	
	@ResponseBody
	@GetMapping("/getRoles/{roleCode}/{roleId}")
	public JSONObject getRoles(@NonNull @PathVariable String roleCode,
			@NonNull @PathVariable String roleId) {
		JSONObject obj = new JSONObject();
		List<String> roles = AuthConstant.directCarMap().get(roleCode);
		JSONArray arr = new JSONArray();
		for(String role: roles){
			JSONObject object = new JSONObject();
			if(role.endsWith("32")){
				object.put("roleCode", 32);
				object.put("name", "教务");
				object.put("iconfont", "icon-kefuyouxian");
			}else if(role.endsWith("33")){
				object.put("roleCode", 33);
				object.put("name", "年级组长");
				object.put("iconfont", "icon-zuzhiguanli");
			}else if(role.endsWith("34")){
				object.put("roleCode", 34);
				object.put("name", "班主任");
				object.put("iconfont", "icon-jiachang");
			}else if(role.endsWith("35")){
				object.put("roleCode", 35);
				object.put("name", "教研组长");
				object.put("iconfont", "icon-ai-connection");
			}else if(role.endsWith("36")){
				object.put("roleCode", 36);
				object.put("name", "备课组长");
				object.put("iconfont", "icon-xiaobenkechengtongji");
			}else if(role.endsWith("37")){
				Map<String, Object> params = new HashMap<String, Object>();
				params.put("roleId", roleId);
				JSONObject subject = userAuthorizationService.listSubjects(params);
				JSONArray subArray = subject.getJSONArray("data");
				for(int i = 0; i < subArray.size(); i++){
					JSONObject subobj = new JSONObject();
					JSONObject subObject = new JSONObject();
					subObject = subArray.getJSONObject(i);
					if((subObject.getString("code")).endsWith("1")){
						subobj.put("roleCode", 37);
						subobj.put("name", "语文");
						subobj.put("iconfont", "icon-zhongwen");
						subobj.put("subCode", "1");
						arr.add(subobj);
					}else if((subObject.getString("code")).endsWith("2")){
						subobj.put("roleCode", 37);
						subobj.put("name", "数学");
						subobj.put("iconfont", "icon-shuxue");
						subobj.put("subCode", "2");
						arr.add(subobj);
					}else if((subObject.getString("code")).endsWith("3")){
						subobj.put("roleCode", 37);
						subobj.put("name", "英语");
						subobj.put("iconfont", "icon-yingyu");
						subobj.put("subCode", "3");
						arr.add(subobj);
					}else if((subObject.getString("code")).endsWith("4")){
						subobj.put("roleCode", 37);
						subobj.put("name", "物理");
						subobj.put("iconfont", "icon-wuli");
						subobj.put("subCode", "4");
						arr.add(subobj);
					}else if((subObject.getString("code")).endsWith("5")){
						subobj.put("roleCode", 37);
						subobj.put("name", "化学");
						subobj.put("iconfont", "icon-huaxue");
						subobj.put("subCode", "5");
						arr.add(subobj);
					}else if((subObject.getString("code")).endsWith("6")){
						subobj.put("roleCode", 37);
						subobj.put("name", "历史");
						subobj.put("iconfont", "icon-lishi");
						subobj.put("subCode", "6");
						arr.add(subobj);
					}else if((subObject.getString("code")).endsWith("7")){
						subobj.put("roleCode", 37);
						subobj.put("name", "地理");
						subobj.put("iconfont", "icon-kongjiandili");
						subobj.put("subCode", "7");
						arr.add(subobj);
					}else if((subObject.getString("code")).endsWith("8")){
						subobj.put("roleCode", 37);
						subobj.put("name", "政治");
						subobj.put("iconfont", "icon-zhengzhi");
						subobj.put("subCode", "8");
						arr.add(subobj);
					}else if((subObject.getString("code")).endsWith("9")){
						subobj.put("roleCode", 37);
						subobj.put("name", "生物");
						subobj.put("iconfont", "icon-shengwu");
						subobj.put("subCode", "9");
						arr.add(subobj);
					}
				}
				
			}
			arr.add(object);
		}
		obj.put("data", arr);
		obj.put("code", 0);
		return obj;
	}
	
	
	
}

 

var schoolbus_data = {
		//直通车--身份菜单
		get_bus_menu: function(){
			var json = JSON.parse($.cookie('user'))
			//var url="../ume/sys/um/roles/getRoles/"+json.roleCode+"/"+json.roleId;
			//校长
			var url="../ume/sys/um/roles/getRoles/31/112507123823235044000020";
			//教务
			//var url="../ume/sys/um/roles/getRoles/32/112507123823235044000021";
			//年级组长
			//var url="../ume/sys/um/roles/getRoles/33/11250712382323504400003011250717";
			//教研组长
			//var url="../ume/sys/um/roles/getRoles/35/1125071238232350440000402";
			//备课组长
			//var url="../ume/sys/um/roles/getRoles/36/112507123823235044000041112507172";
			
			var datas=[];				
			$.ajax({
				type : "get",
				async : false,
				url : url,
				success : function(s) {
					datas = s.data;
				},
				error : function(XMLHttpRequest, textStatus, errorThrown) {
					datas = XMLHttpRequest.data;
				}
			});	
			return datas;
		},
		//直通车--所有数据的内容
		get_all_data: function(){
			var json = JSON.parse($.cookie('user'))
			//var url="../ume/sys/um/roles/directCarRoles/"+json.schCode+"/"+json.roleCode;
			
			//校长
			var url="../ume/sys/um/roles/directCarRoles/"+json.schCode+"/31";
			//教务
			//var url="../ume/sys/um/roles/directCarRoles/"+json.schCode+"/32";
			//年级组长
			//var url="../ume/sys/um/roles/directCarRoles/"+json.schCode+"/33";
			//教研组长
			//var url="../ume/sys/um/roles/directCarRoles/"+json.schCode+"/35";
			//备课组长
			//var url="../ume/sys/um/roles/directCarRoles/"+json.schCode+"/36";
			
			var datas=[];
			Tomd.wait("加载中...");
			$.ajax({
				type : "get",
				async : false,
				url : url,
				success : function(s) {
					datas = s.data;
					Tomd.waitok();
				},
				error : function(XMLHttpRequest, textStatus, errorThrown) {
					datas = XMLHttpRequest.data;
				}
			});	
			return datas;
			
		},
};
var all_data = {};
var schoolbus = {
		//填充直通车首部菜单
		fill_busmenu: function(){
			document.getElementById('schoolbus_tab').innerHTML = template('schoolbus_tab_template',{model:schoolbus_data.get_bus_menu()});
			$(".schoolbus_tab li").eq(0).addClass("selected");
			var n = $(".schoolbus_tab li").eq(0).data("name");
			this.tab_fill(n);
		},
		//填充直通车内容
		fill_schoolbus: function(datas){
			document.getElementById('schoolbus_lesson').innerHTML = template('schoolbus_lesson_template',{model:datas});
		},
		//假如有年级,则以年级为分隔标准填充内容
		fill_grade_schoolbus: function(datas){
			document.getElementById('schoolbus_lesson').innerHTML = template('schoolbus_lesson_template',{model:datas,gradeArray:this.gradeArr(datas)});
		},
		
		
		paixv: function(arr){
		    var len = arr.length;
		    for (var i = 0; i < len; i++) {
		        for (var j = 0; j < len - 1 - i; j++) {
		            if (arr[j].clazz.clzSerial > arr[j+1].clazz.clzSerial) {        //相邻元素两两对比
		                var temp = arr[j+1];        //元素交换
		                arr[j+1] = arr[j];
		                arr[j] = temp;
		            }
		        }
		    }
		    return arr;
		},
		
		//grade去重
		gradeArr: function(array){
					let _array = [];
		            array.forEach(_s => {
		                if (!_array.includes(_s.grade.grade)) {
		                    _array.push(_s.grade.grade)
		                }
		            });
		            _array.map(grade => {
		                let obj = {
		                		grade: grade.grade,
		                    data: array.filter(_s => _s.grade === grade.grade)
		                }
		                return obj
		            })
		             return _array.sort();
		},
		
		//排序,大到小
		sortNumber: function(a,b)
		{
		return b - a
		},
		//选中哪一种身份就显示哪种身份的内容
		selected_schoolbus_tab: function(){
			var self=this;
			$(".schoolbus_tab li").on("click", function(){
				$(this).addClass("selected").siblings().removeClass("selected");
				var n = $(this).data("name");
				self.tab_fill(n);
			});
		},		
		//按照切换的身份重新填充
		tab_fill: function(n){
			var self = this;
			switch(n)
				{
					//教务
					case '教务':
						var data = self.screen_data(all_data,32);
						self.fill_schoolbus(data);
						break;
						//年级组长
					case '年级组长':
						var data = self.screen_data(all_data,33);
						self.fill_grade_schoolbus(data);
						//self.fill_grade_schoolbus(schoolbus_data.get_bus_njzz());
						break;
						//班主任
					case '班主任':
						var data = self.screen_data(all_data,34);
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						//self.fill_schoolbus(schoolbus_data.get_bus_bzr());	
						break;
						//教研组长
					case '教研组长':
						
						var data = self.screen_data(all_data,35);
						self.fill_schoolbus(data);
						//var data = self.screen_data(schoolbus_data.get_all_data(),'教研组长');
						//self.fill_schoolbus(data);	
						break;
						//备课组长
					case '备课组长':
						var data = self.screen_data(all_data,36);
						self.fill_grade_schoolbus(data);
						//self.fill_schoolbus(schoolbus_data.get_bus_bzr());	
						break;
						//语文教师
					case '语文':
						var data = self.screen_data(all_data,37,'语文');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						//self.fill_grade_schoolbus(schoolbus_data.get_bus_teacher());
						break;
						//数学教师
					case '数学':
						var data = self.screen_data(all_data,37,'数学');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						break;
						//英语教师
					case '英语':
						var data = self.screen_data(all_data,37,'英语');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						break;
						//物理教师
					case '物理':
						var data = self.screen_data(all_data,37,'物理');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						break;
						//化学教师
					case '化学':
						var data = self.screen_data(all_data,37,'化学');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						break;
						//历史教师
					case '历史':
						var data = self.screen_data(all_data,37,'历史');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						break;
						//地理教师
					case '地理':
						var data = self.screen_data(all_data,37,'地理');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						break;
						//政治教师
					case '政治':
						var data = self.screen_data(all_data,37,'政治');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						break;
						//生物教师
					case '生物':
						var data = self.screen_data(all_data,37,'生物');
						var datas = self.paixv(data);
						self.fill_grade_schoolbus(datas);
						break;
					default:
						break;
				};			
		},
		//按照name和lesson从数据集中筛选出符合条件的数据 datas代表整个数据集,translate是用户类型,lesson是语文、数学等课程名
		screen_data: function(datas,roleCode,lesson){
			var set_data=[];
			if(!lesson){
				$.each(datas, function(index,value){
					if(value.roleCode == roleCode)
						set_data.push(value);
				});
			}else{
				$.each(datas, function(index,value){
					if(value.roleCode == roleCode && value.subject.name == lesson)
						set_data.push(value);
				});
			}
			return set_data;
		},
		//点击姓名 进行切换
		name_switch: function(){
			$("body").one("click",".schoolbus_lesson_ul li",function(){
				var vam = confirm("切换成:" + $(this).data("name") + " " + $(this).data("information"));
				if(vam){
					var roleId = $(this).data("id");
					//把当前角色的角色的具体信息写到session
					data = {
						"roleId" : roleId
					};
					var role_data = getData("../ume/sys/um/roles/select", data);
					//当前角色菜单列表
					var menus_data = getData("../ume/sys/um/userAuthorization/listMenus", data);
					var curr_data = getData("../user/currentUser");
					var res = [];
					tempData = {
						roleCode : curr_data,
						data : res,
						user : setUser
					};
					sessionStorage.setItem('setUser', JSON.stringify(tempData));
					document.getElementById('userSwitch').innerHTML = template('userSwitchTemp', tempData);
					setCookie(curr_data);
					sessionStorage.setItem('testKey','true');
					// 切换页面
					GHOME.renderLoadPage();
					
				}		
				
			});
		},
		//搜索姓名
		searchName: function(event){
			var self_name = $(event.target).val();
			$(".schoolbus_lesson_ul li").each(function(){
				var content = String($(this).data("name"));
				if(content.indexOf(self_name)>-1)
					$(this).show();
				else
					$(this).hide();
			})
		},
		//自动运行
		init: function(){
			all_data = schoolbus_data.get_all_data();
			this.fill_busmenu();			
			this.selected_schoolbus_tab();
			this.name_switch();
		},
};
schoolbus.init();
var setUser = {
	adm : 30, //角色-学校管理员  维护学校基本信息权限,例如:年级、班级、教师、教师角色、学生信息等。
	rector : 31, //角色-校长  查看全校考情学情
	jiaowu : 32, //角色-教务  查看全校考情学情 
	nianjizuzhang : 33, //角色-年级组长 查看所在年级考情学情 (年级)
	banzhuren : 34, //角色-班主任  查看所在班级考情学情 (班级、年级)
	jiaoyan : 35, //角色-教研组长  查看所负责的学科的全校考情学情 (学科)
	beike : 36, //角色-备课组长  查看所负责的学科的所在年级的考情学情  (学科、年级)
	jiaoshi : 37 //角色-任课教师   查看所任课班级考情学情   (班级、学科、年级)
};
//参数
var
	//当前用户信息
	role_data = {},
	//当前角色列表
	menus_data = {},
	//当前用户Id
	roleId = null,
	data = null,
	tempCode = null,
	temp = {},
	url = null,
	curr_data = {};

function getData(url, data) {
	var datas,
		pdata = data || {};
	$.ajax({
		type : "get",
		async : false,
		url : url,
		data : pdata,
		success : function(s) {
			datas = s.data;
		},
		error : function(XMLHttpRequest, textStatus, errorThrown) {
			datas = XMLHttpRequest.data;
		}
	});
	return datas;
}
//判断角色类别,把相应数据写到cookie
function setCookie(curr_data) {
	if (curr_data.roleCode == setUser.adm) {
		//学校管理员
		temp.schCode = curr_data.schCode;
		temp.roleCode = curr_data.roleCode;
		temp.roleId = curr_data.roleId;
	} else if (curr_data.roleCode == setUser.rector) {
		//校长
		temp.schCode = curr_data.schCode;
		temp.roleCode = curr_data.roleCode;
		temp.roleId = curr_data.roleId;
	} else if (curr_data.roleCode == setUser.jiaowu) {
		//教务
		temp.schCode = curr_data.schCode;
		temp.roleCode = curr_data.roleCode;
		temp.roleId = curr_data.roleId;
	} else if (curr_data.roleCode == setUser.nianjizuzhang) {
		//年级组长		
		temp.schCode = curr_data.schCode;
		temp.yearIn = curr_data.grade.yearIn;
		temp.roleCode = curr_data.roleCode;
		temp.roleId = curr_data.roleId;
	} else if (curr_data.roleCode == setUser.banzhuren) {
		//班主任		
		temp.schCode = curr_data.schCode;
		temp.yearIn = curr_data.grade.yearIn;
		temp.clzCode = curr_data.clazz.clzCode;
		temp.roleCode = curr_data.roleCode;
		temp.roleId = curr_data.roleId;
	} else if (curr_data.roleCode == setUser.jiaoyan) {
		//教研组长		
		temp.schCode = curr_data.schCode;
		temp.subCode = curr_data.subject.code;
		temp.roleCode = curr_data.roleCode;
		temp.roleId = curr_data.roleId;
	} else if (curr_data.roleCode == setUser.beike) {
		//备课组长		
		temp.schCode = curr_data.schCode;
		temp.yearIn = curr_data.grade.yearIn;
		temp.subCode = curr_data.subject.code;
		temp.roleCode = curr_data.roleCode;
		temp.roleId = curr_data.roleId;
	} else if (curr_data.roleCode == setUser.jiaoshi) {
		//任课教师		
		temp.schCode = curr_data.schCode;
		temp.yearIn = curr_data.grade.yearIn;
		temp.clzCode = curr_data.clazz.clzCode;
		temp.subCode = curr_data.subject.code;
		temp.roleCode = curr_data.roleCode;
		temp.roleId = curr_data.roleId;
	}
	if (temp) {
		$.cookie('user', JSON.stringify(temp), {
			expires : 30
		}); //默认缓存30天
	}
}
;
(function() {
	var res = getData("../ume/sys/um/roles/list");
	TOOL.userSwitch = function() {
		var tempData = null;
		curr_data = getData("../user/currentUser");
		roleId = curr_data.id;
		
		//当前角色菜单列表
		data = {
			"roleId" : roleId
		};
		menus_data = getData("../ume/sys/um/userAuthorization/listMenus", data);
		
		tempData = {
			roleCode : curr_data,
			data : res,
			user : setUser
		}
		sessionStorage.setItem('setUser', JSON.stringify(tempData));
		document.getElementById('userSwitch').innerHTML = template('userSwitchTemp', tempData);
		//把当前角色的角色的具体信息写到session
		//        role_data = getData("../ume/sys/um/roles/select", data);

		setCookie(curr_data);
		// 选择切换
		this.clickUserSwitch = function(_this) {
			roleId = _this.getAttribute('data-code');
			//把当前角色的角色的具体信息写到session
			data = {
				"roleId" : roleId
			};
			role_data = getData("../ume/sys/um/roles/select", data);
			//当前角色菜单列表
			menus_data = getData("../ume/sys/um/userAuthorization/listMenus", data);
			curr_data = getData("../user/currentUser");
			tempData = {
				roleCode : curr_data,
				data : res,
				user : setUser
			};
			sessionStorage.setItem('setUser', JSON.stringify(tempData));
			document.getElementById('userSwitch').innerHTML = template('userSwitchTemp', tempData);
			setCookie(curr_data);
			// 切换页面
			GHOME.renderLoadPage();
		// window.location.reload();
		}
	}
	TOOL.logOut = function(_this) {
		sessionStorage.removeItem('setUser');
		sessionStorage.removeItem('testKey');
		window.location.href = '../user/logout';
	}
	TOOL.userSwitch();
})()
<!-- header -->
<!-- <%@ page contentType="text/html; charset=utf-8"%> -->

<h1 class="logo navbar-brand"></h1>
<!-- navs -->
<div class="navbar-nav-scroll">
    <ul class="navbar-nav bd-navbar-nav flex-row" id="navbar"></ul>
</div>
<!-- user -->
<div class="flex-row ml-md-auto d-md-flex">
    <div class="user-menu" id="userSwitch"></div>
</div>
<script type="text/html" id="userSwitchTemp">
    <img src="../assets/img/header-img.jpg" />
    <h3 id="teacherName">{{roleCode.teacher.tchAlias}}</h3>
    <div class="toggle">
    <span class="curr-role">
        {{if roleCode.roleCode == user.adm || roleCode.roleCode == user.rector ||  roleCode.roleCode == user.jiaowu }}
           {{roleCode.teacherRole.name}}
        {{else if roleCode.roleCode == user.nianjizuzhang}}
           {{roleCode.grade.grdName}} {{roleCode.teacherRole.name}}
        {{else if roleCode.roleCode == user.jiaoyan}}
           {{roleCode.subject.name}} {{roleCode.teacherRole.name}}
        {{else if roleCode.roleCode == user.banzhuren}}
           {{roleCode.grade.grdName}} {{roleCode.clazz.clzName}} {{roleCode.teacherRole.name}}
        {{else if roleCode.roleCode == user.beike}}
           {{roleCode.grade.grdName}} {{roleCode.subject.name}} {{roleCode.teacherRole.name}}
        {{else if roleCode.roleCode == user.jiaoshi}}
           {{roleCode.grade.grdName}} {{roleCode.clazz.clzName}} {{roleCode.subject.name}} {{roleCode.teacherRole.name}}
        {{/if}}
    </span>
        <div class="btn-group" id="qiehuan">
            <button type="button" class="btn btn-secondary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">切换</button>
            <div class="dropdown-menu dropdown-menu-right">
                {{each data item}}
					       <a class="dropdown-item" href="javascript:;" data-code="{{item.roleId}}" onclick="TOOL.clickUserSwitch(this)">{{item.showName}}</a>
                {{/each}}
            </div>
        </div>
    </div>
</script>
					

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值