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>