基于javaweb+mysql的springboot教务管理系统(java+springboot+thymeleaf+layui+html+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot教务管理系统(java+springboot+thymeleaf+layui+html+mysql)
项目介绍
1.系统默认超级管理员账号为admin,默认密码为123456 系统配置:用户管理、角色管理、权限管理 默认已配置好基本数据:用户默认只有一个超级管理员,角色有三种:管理员、教师、学生,权限已按照角色分配完成。 2.系统建设 a.建设简介: 学校建设需要按照系部 > 专业 > 年级 > 班级的顺序进行建设。每项管理均提供精确/条件查询,可快速定位所需信息。 b.系部建设 c.专业建设 d.年级建设 3,课目建设 a.课目介绍 b.添加必修课目 c.添加选修课目 d.课目启动与暂停 4.教师管理 a.教师授课管理 b.录入教师 c.教师信息查询 5.学生管理: a,退学信息 b.录入学生 c.学生信息查询 6.成绩管理 a.学生成绩管理 b.教师成绩管理 7.校园新闻: a,新闻管理
b.发布新闻
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
-
后端:SpringBoot+Thymeleaf
-
前端:HTML+CSS+jQuery+LayUI
使用说明
-
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
-
使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
- 将项目中application.yml配置文件中的数据库配置改为自己的配置;注:要修改最下方profiles:dev相关的配置; 4. 运行项目,输入localhost:8080/home 登录 管理员账号/密码:admin/123456 教师账号/密码:2020001/123456 学生账号/密码:15020002/123456
/**
* 查询周
*/
@RequestMapping("findallweeks")
@ResponseBody
public Object findAllWeeks(Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<WeeksDB> listAll = tchCourseService.findAllWeeks();
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> wData = new HashMap<String, Object>();
wData.put("code", 0);
wData.put("msg", "");
wData.put("count", pageInfo.getTotal());
wData.put("data", pageInfo.getList());
return wData;
}
/**
* 查询节段
*/
@RequestMapping("findallschedule")
@ResponseBody
public Object findAllSchedule(Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<ScheduleDB> listAll = tchCourseService.findAllSchedule();
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> sData = new HashMap<String, Object>();
sData.put("code", 0);
sData.put("msg", "");
sData.put("count", pageInfo.getTotal());
sData.put("data", pageInfo.getList());
return sData;
}
/**
* 添加教师授课表记录并返回新数据id
*/
@RequestMapping("addonetchcourse")
@ResponseBody
public Object addOneTchCourse(TchCourseVO tchCourseVO){
int flag = tchCourseService.findTchCourseFlag(tchCourseVO);
if(flag>0){
}
}
String str = JSONObject.toJSONString(args);
str = str.length() > 2000 ? str.substring(2000) : str;
logger.info("params:======>" + str);
if(session != null){
logger.info("session id :======>" + session.getId());
}
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
SysLog mylog = method.getAnnotation(com.nsapi.niceschoolapi.common.annotation.SysLog.class);
if(mylog != null){
//注解上的描述
logger.info("mylog:======>" + mylog.value());
}
if(MySysUser.ShiroUser() != null) {
String username = StringUtils.isNotBlank(MySysUser.nickName()) ? MySysUser.nickName() : MySysUser.loginName();
logger.info("user:======>" + username);
}
}
@Around("webLog()")
public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
try {
Object obj = proceedingJoinPoint.proceed();
return obj;
} catch (Exception e) {
logger.error("exception message :======>" + e.getMessage());
throw e;
}
}
@AfterReturning(returning = "ret", pointcut = "webLog()")
public void doAfterReturning(Object ret) {
if(MySysUser.ShiroUser() != null) {
String username = StringUtils.isNotBlank(MySysUser.nickName()) ? MySysUser.nickName() : MySysUser.loginName();
logger.info("user:======>" + username);
}
String retString = JSONObject.toJSONString(ret);
retString = retString.length() > 2000 ? retString.substring(2000) : retString;
logger.info("ret:======>" + retString);
logger.info("useTime:======>" + (System.currentTimeMillis() - startTime.get()) + "");
}
}
@RequestMapping("edit")
public String edit(String id,ModelMap modelMap){
Role role = roleService.getRoleById(id);
String menuIds = null;
if(role != null) {
menuIds = role.getMenuSet().stream().map(menu -> menu.getId()).collect(Collectors.joining(","));
}
Map<String,Object> map = new HashMap();
map.put("parentId",null);
map.put("isShow",Boolean.FALSE);
List<Menu> menuList = menuService.selectAllMenus(map);
modelMap.put("role",role);
modelMap.put("menuList",menuList);
modelMap.put("menuIds",menuIds);
return "admin/role/edit";
}
@RequiresPermissions("sys:role:edit")
@PostMapping("edit")
@ResponseBody
@SysLog("保存编辑角色数据")
public ResponseEntity edit(@RequestBody Role role){
if(StringUtils.isBlank(role.getId())){
return ResponseEntity.failure("角色ID不能为空");
}
if(StringUtils.isBlank(role.getName())){
return ResponseEntity.failure("角色名称不能为空");
}
Role oldRole = roleService.getRoleById(role.getId());
if(!oldRole.getName().equals(role.getName())){
if(roleService.getRoleNameCount(role.getName())>0){
return ResponseEntity.failure("角色名称已存在");
}
}
roleService.updateRole(role);
return ResponseEntity.success("操作成功");
}
@RequiresPermissions("sys:role:delete")
@PostMapping("delete")
@ResponseBody
@SysLog("删除角色数据")
public ResponseEntity delete(@RequestParam(value = "id",required = false)String id){
if(StringUtils.isBlank(id)){
return ResponseEntity.failure("角色ID不能为空");
}
Role role = roleService.getRoleById(id);
roleService.deleteRole(role);
@Controller
@RequestMapping("admin/system/menu")
public class MenuController {
@Autowired
MenuService menuService;
@RequestMapping("list")
@SysLog("跳转菜单列表")
public String list(){
return "admin/menu/list";
}
@RequiresPermissions("sys:menu:list")
@RequestMapping("treeList")
@ResponseBody
public ResponseEntity treeList(){
ResponseEntity responseEntity = ResponseEntity.success("操作成功");
responseEntity.setAny("code",0);
responseEntity.setAny("msg","");
responseEntity.setAny("count","");
HashMap map = new HashMap();
map.put("del_flag",false);
List<Menu> menus = menuService.selectAllMenuList(map);
menus.forEach( menu -> {
if(StringUtils.isBlank(menu.getParentId())) {
menu.setParentId("-1");
}
});
menus.sort(Comparator.comparing(Menu::getSort));
return responseEntity.setAny("data",menus);
}
@RequestMapping("add")
public String add(@RequestParam(value = "parentId",required = false) String parentId, ModelMap modelMap){
if(parentId != null){
public class LogAspect {
private Logger logger = LoggerFactory.getLogger(LogAspect.class);
private ThreadLocal<Long> startTime = new ThreadLocal<>();
@Pointcut("@annotation(com.nsapi.niceschoolapi.common.annotation.SysLog)")
public void webLog(){}
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) {
startTime.set(System.currentTimeMillis());
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
HttpSession session = (HttpSession) attributes.resolveReference(RequestAttributes.REFERENCE_SESSION);
logger.info("classMethod:======>" + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
logger.info("method:======>" + request.getMethod());
//获取传入目标方法的参数
Object[] args = joinPoint.getArgs();
for (int i = 0; i < args.length; i++) {
Object o = args[i];
if(o instanceof ServletRequest || (o instanceof ServletResponse) || o instanceof MultipartFile){
args[i] = o.toString();
}
}
String str = JSONObject.toJSONString(args);
str = str.length() > 2000 ? str.substring(2000) : str;
logger.info("params:======>" + str);
if(session != null){
logger.info("session id :======>" + session.getId());
}
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
SysLog mylog = method.getAnnotation(com.nsapi.niceschoolapi.common.annotation.SysLog.class);
if(mylog != null){
//注解上的描述
logger.info("mylog:======>" + mylog.value());
}
if(MySysUser.ShiroUser() != null) {
String username = StringUtils.isNotBlank(MySysUser.nickName()) ? MySysUser.nickName() : MySysUser.loginName();
logger.info("user:======>" + username);
}
}
@Autowired
MenuService menuService;
public enum LoginTypeEnum {
PAGE,ADMIN;
}
// @RequestMapping(value = "")
// public String welcome() {
// return "redirect:admin";
// }
@RequestMapping(value = {"admin","admin/index"})
public String adminIndex(RedirectAttributes attributes, ModelMap map) {
Subject s = SecurityUtils.getSubject();
attributes.addFlashAttribute(LOGIN_TYPE, LoginTypeEnum.ADMIN);
if(s.isAuthenticated()) {
return "redirect:index";
}
return "redirect:toLogin";
}
@RequestMapping(value = "toLogin")
public String adminToLogin(HttpSession session, @ModelAttribute(LOGIN_TYPE) String loginType) {
if(StringUtils.isBlank(loginType)) {
LoginTypeEnum attribute = (LoginTypeEnum) session.getAttribute(LOGIN_TYPE);
loginType = attribute == null ? loginType : attribute.name();
}
if(LoginTypeEnum.ADMIN.name().equals(loginType)) {
session.setAttribute(LOGIN_TYPE,LoginTypeEnum.ADMIN);
return "admin/login";
}else {
session.setAttribute(LOGIN_TYPE,LoginTypeEnum.PAGE);
return "login";
}
}
@RequestMapping(value = "index")
public String index(HttpSession session, @ModelAttribute(LOGIN_TYPE) String loginType) {
if(StringUtils.isBlank(loginType)) {
LoginTypeEnum attribute = (LoginTypeEnum) session.getAttribute(LOGIN_TYPE);
loginType = attribute == null ? loginType : attribute.name();
}
if(LoginTypeEnum.ADMIN.name().equals(loginType)) {
AuthRealm.ShiroUser principal = (AuthRealm.ShiroUser) SecurityUtils.getSubject().getPrincipal();
session.setAttribute("icon",StringUtils.isBlank(principal.getIcon()) ? "/static/admin/img/face.jpg" : principal.getIcon());
return "admin/index";
user.login(token);
}catch (IncorrectCredentialsException e) {
errorMsg = "用户名或密码错误!";
}catch (UnknownAccountException e) {
errorMsg = "账户不存在!";
}catch (LockedAccountException e) {
errorMsg = "账户已被锁定!";
}catch (UserTypeAccountException e) {
errorMsg = "账户不是管理用户!";
}
if(StringUtils.isBlank(errorMsg)) {
ResponseEntity responseEntity = new ResponseEntity();
responseEntity.setSuccess(Boolean.TRUE);
responseEntity.setAny("url","index");
return responseEntity;
}else {
return ResponseEntity.failure(errorMsg);
}
}
}
@RequestMapping("admin/main")
public String main(ModelMap map){
return "admin/main";
}
/***
* 获得用户所拥有的菜单列表
* @return
*/
@RequestMapping("/admin/user/getUserMenu")
@ResponseBody
public List<ShowMenuVo> getUserMenu(){
String userId = MySysUser.id();
List<ShowMenuVo> list = menuService.getShowMenuByUser(userId);
return list;
}
return ResponseEntity.failure("角色名称已存在");
}
roleService.saveRole(role);
return ResponseEntity.success("操作成功");
}
@RequestMapping("edit")
public String edit(String id,ModelMap modelMap){
Role role = roleService.getRoleById(id);
String menuIds = null;
if(role != null) {
menuIds = role.getMenuSet().stream().map(menu -> menu.getId()).collect(Collectors.joining(","));
}
Map<String,Object> map = new HashMap();
map.put("parentId",null);
map.put("isShow",Boolean.FALSE);
List<Menu> menuList = menuService.selectAllMenus(map);
modelMap.put("role",role);
modelMap.put("menuList",menuList);
modelMap.put("menuIds",menuIds);
return "admin/role/edit";
}
@RequiresPermissions("sys:role:edit")
@PostMapping("edit")
@ResponseBody
@SysLog("保存编辑角色数据")
public ResponseEntity edit(@RequestBody Role role){
if(StringUtils.isBlank(role.getId())){
return ResponseEntity.failure("角色ID不能为空");
}
if(StringUtils.isBlank(role.getName())){
return ResponseEntity.failure("角色名称不能为空");
}
Role oldRole = roleService.getRoleById(role.getId());
if(!oldRole.getName().equals(role.getName())){
if(roleService.getRoleNameCount(role.getName())>0){
return ResponseEntity.failure("角色名称已存在");
}
}
roleService.updateRole(role);
return ResponseEntity.success("操作成功");
}
@RequiresPermissions("sys:role:delete")
@PostMapping("delete")
@ResponseBody
@SysLog("删除角色数据")
public ResponseEntity delete(@RequestParam(value = "id",required = false)String id){
if(StringUtils.isBlank(id)){
return ResponseEntity.failure("角色ID不能为空");
@Controller
public class courseController {
@Autowired
private com.nsapi.niceschoolapi.service.courselService courselService;
@RequestMapping("selCou")
public String selCourse(){
// System.out.println("---------------------------------------------------------------------------------------------------------------");
return "selCou";
}
@RequestMapping("sel")
@ResponseBody
public Object sel(Integer page, Integer limit, coursel coursel, String cname){
coursel.setCname(cname);
PageHelper.startPage(page, limit);
List<com.nsapi.niceschoolapi.entity.coursel> cs = courselService.selCourse(coursel);
PageInfo pageInfo = new PageInfo(cs);
Map<String, Object> tableData = new HashMap<String, Object>();
//这是layui要求返回的json数据格式
tableData.put("code", 0);
tableData.put("msg", "");
//将全部数据的条数作为count传给前台(一共多少条)
tableData.put("count", pageInfo.getTotal());
//将分页后的数据返回(每页要显示的数据)
tableData.put("data", pageInfo.getList());
System.out.print(cs);
return tableData;
}
SecurityUtils.getSubject().logout();
return "redirect:home";
}
}
package com.nsapi.niceschoolapi.controller;
@Transactional
@Controller
@RequestMapping("tchcoursemanage")
public class TchCourseController extends BaseController {
@Autowired
private TchCourseService tchCourseService;
/**
* 进入教师授课管理页面
*/
@RequestMapping("tchcoursemanage")
public String classmanage() {
return "view/teacher/tchcoursemanage";
}
/*******************************************************************查询*********************************************************************/
/**
* 查询全部教师
*/
@RequestMapping("findalltch")
@ResponseBody
public LayuiResult<Map> selClassinfoDB(Integer gid){
List<ClassinfoDB> classinfo = studentService.selClassinfoDB(gid);
LayuiResult result = new LayuiResult();
result.setData(classinfo);
return result;
}
// 根据id查询一条学生信息以此进行修改
@RequestMapping("/selStudentId")
public String selStudentId(Integer id, Model model){
// 查询学生信息
List<StudentDB> stu = studentService.selStudentId(id);
// 查询班级
List<ClassinfoDB> cls = studentService.selClass();
// 查询政治面貌表
List<PoliticsTypeDB> stupol = studentService.selPolitics();
model.addAttribute("stu",stu);
model.addAttribute("cls",cls);
model.addAttribute("stupol",stupol);
return "view/student/updStudent";
}
// 根据id查询显示学生详细信息
@RequestMapping("/selectMessage")
public String selectMessage(Integer id, Model model){
// 查询学生信息
List<StudentDB> stu = studentService.selStudentId(id);
// 查询班级
List<ClassinfoDB> cls = studentService.selClass();
// 查询政治面貌表
List<PoliticsTypeDB> stupol = studentService.selPolitics();
model.addAttribute("stu",stu);
model.addAttribute("cls",cls);
model.addAttribute("stupol",stupol);
return "view/student/selStuExam";
}
// 修改用户信息
@RequestMapping("/updateStudent")
@ResponseBody
public LayuiResult<StudentDB> updateStudent(StudentDB studentDB, String birthday) throws Exception{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date=format.parse(birthday);
studentDB.setSbirthday(date);
studentService.updateStudent(studentDB);
LayuiResult result= new LayuiResult();
//删除提示
result.setMsg("修改成功!");
return result;
}
/**
* 查询周
*/
@RequestMapping("findallweeks")
@ResponseBody
public Object findAllWeeks(Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<WeeksDB> listAll = tchCourseService.findAllWeeks();
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> wData = new HashMap<String, Object>();
wData.put("code", 0);
wData.put("msg", "");
wData.put("count", pageInfo.getTotal());
wData.put("data", pageInfo.getList());
return wData;
}
/**
* 查询节段
*/
@RequestMapping("findallschedule")
@ResponseBody
public Object findAllSchedule(Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<ScheduleDB> listAll = tchCourseService.findAllSchedule();
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> sData = new HashMap<String, Object>();
sData.put("code", 0);
sData.put("msg", "");
sData.put("count", pageInfo.getTotal());
sData.put("data", pageInfo.getList());
return sData;
}
/**
* 添加教师授课表记录并返回新数据id
*/
@RequestMapping("addonetchcourse")
@ResponseBody
public Object addOneTchCourse(TchCourseVO tchCourseVO){
int flag = tchCourseService.findTchCourseFlag(tchCourseVO);
if(flag>0){
return false;
}else{
int d = tchCourseService.findTchCourseDanger(tchCourseVO);
if (d>0){
return false;
}else {
int r = tchCourseService.addOneTchCourse(tchCourseVO);
if(r>0){
int r2 = tchCourseService.addOneTchClass(tchCourseVO);
@Controller
public class StuExamController {
@Autowired
private StudentExamService studentExamService;
@RequestMapping("selstudentExam")
public String selCourses(){
return "StudentExam";
}
@RequestMapping("selScs")
@ResponseBody
public Object selSc(Integer page, Integer limit, StuExamVO stuExamVO){
stuExamVO.setTid(Integer.valueOf(MySysUser.loginName()));
PageHelper.startPage(page, limit);
List<StuExamVO> stuCourseVOS = studentExamService.selScs(stuExamVO);
PageInfo pageInfo = new PageInfo(stuCourseVOS);
Map<String, Object> tableData = new HashMap<String, Object>();
//这是layui要求返回的json数据格式
tableData.put("code", 0);
tableData.put("msg", "");
//将全部数据的条数作为count传给前台(一共多少条)
tableData.put("count", pageInfo.getTotal());
//将分页后的数据返回(每页要显示的数据)
tableData.put("data", pageInfo.getList());
// System.out.print(cs);
return tableData;
}
//下面是下拉框
@RequestMapping("selDes")
}
}
/**
* 获取班级列表
*/
@RequestMapping("findallclass")
@ResponseBody
public Object findAllClass(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.findAllClass(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> classData = new HashMap<String, Object>();
classData.put("code", 0);
classData.put("msg", "");
classData.put("count", pageInfo.getTotal());
classData.put("data", pageInfo.getList());
return classData;
}
/**
* 级联获取年级列表
*/
@RequestMapping("jlselgrade")
@ResponseBody
public Object jlSelGrade(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.jlSelGrade(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> jlgradeData = new HashMap<String, Object>();
jlgradeData.put("code", 0);
jlgradeData.put("msg", "");
jlgradeData.put("count", pageInfo.getTotal());
jlgradeData.put("data", pageInfo.getList());
return jlgradeData;
}
/**
@Controller
public class LonginController {
private final static Logger LOGGER = LoggerFactory.getLogger(LonginController.class);
public final static String LOGIN_TYPE = "loginType";
@Autowired
@Qualifier("captchaProducer")
DefaultKaptcha captchaProducer;
@Autowired
UserService userService;
@Autowired
MenuService menuService;
public enum LoginTypeEnum {
PAGE,ADMIN;
}
// @RequestMapping(value = "")
// public String welcome() {
// return "redirect:admin";
// }
@RequestMapping(value = {"admin","admin/index"})
public String adminIndex(RedirectAttributes attributes, ModelMap map) {
Subject s = SecurityUtils.getSubject();
attributes.addFlashAttribute(LOGIN_TYPE, LoginTypeEnum.ADMIN);
if(s.isAuthenticated()) {
return "redirect:index";
}
return "redirect:toLogin";
}
*/
public static class ShiroUser implements Serializable {
private static final long serialVersionUID = -1373760761780840081L;
public String id;
public String loginName;
public String nickName;
public String icon;
public ShiroUser(String id, String loginName, String nickName,String icon) {
this.id = id;
this.loginName = loginName;
this.nickName = nickName;
this.icon=icon;
}
public String getloginName() {
return loginName;
}
public String getNickName() {
return nickName;
}
public String getIcon() {
return icon;
}
public String getId() {
return id;
}
/**
* 本函数输出将作为默认的<shiro:principal/>输出.
*/
@Override
public String toString() {
return nickName;
}
/**
@Controller
public class SelCourseManController {
@Autowired
private SelCourseManageService selCourseManageService;
@RequestMapping("selCourses")
public String selCourses(){
System.out.println("----------------------");
return "SelCourseMan";
}
@RequestMapping("selSc")
@ResponseBody
public Object selSc(Integer page, Integer limit, StuCourseVO stuCourseVO){
System.out.println(stuCourseVO.getSname());
PageHelper.startPage(page, limit);
List<StuCourseVO> stuCourseVOS = selCourseManageService.selSc(stuCourseVO);
PageInfo pageInfo = new PageInfo(stuCourseVOS);
Map<String, Object> tableData = new HashMap<String, Object>();
//这是layui要求返回的json数据格式
tableData.put("code", 0);
tableData.put("msg", "");
//将全部数据的条数作为count传给前台(一共多少条)
tableData.put("count", pageInfo.getTotal());
//将分页后的数据返回(每页要显示的数据)
tableData.put("data", pageInfo.getList());
// System.out.print(cs);
return tableData;
}
//下面是下拉框
@RequestMapping("selDe")
@ResponseBody
public Object selDe(){
List<DepartmentDB> departmentDBS = selCourseManageService.selDe();
//System.out.println(departmentDBS);
return departmentDBS;
}
@RequestMapping("selMa")
//小程序修改密码
if(StringUtils.isBlank(userName)){
//PC修改密码
User user = userService.findUserById(MySysUser.id());
byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);
String password = Encodes.encodeHex(hashPassword);
if(!user.getPassword().equals(password)){
return ResponseEntity.failure("旧密码错误");
}
user.setPassword(newPwd);
Encodes.entryptPassword(user);
userService.updateById(user);
return ResponseEntity.success("操作成功");
}else {
//小程序修改密码
User user = userService.findUserByLoginName(userName);
byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);
String password = Encodes.encodeHex(hashPassword);
if(!user.getPassword().equals(password)){
return ResponseEntity.failure("旧密码错误");
}
user.setPassword(newPwd);
Encodes.entryptPassword(user);
userService.updateById(user);
return ResponseEntity.success("操作成功");
}
}
@SysLog("上传头像")
@PostMapping("uploadFace")
@ResponseBody
public ResponseEntity uploadFile(@RequestParam("icon") MultipartFile file, HttpServletRequest httpServletRequest) {
if(file == null){
return ResponseEntity.failure("上传文件为空 ");
}
String url = null;
Map map = new HashMap();
//使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法
public class AddStudentController {
@Autowired // 自动注入
private StudentService studentService;
@Autowired
private AddStudentService addStudentService;
@RequestMapping("/addStudentPage")
public String selPolitics(Model model){
// 查询政治面貌表
List<PoliticsTypeDB> stupol = studentService.selPolitics();
model.addAttribute("stupol",stupol);
return "view/student/addStudent";
}
// 添加学生
@RequestMapping("addStudent") // 用来处理请求地址映射的注解
@ResponseBody // 通常用来返回JSON数据给客户端
public LayuiResult<StudentDB> addStudent(StudentVO studentVO, String birthday, String tertime) throws Exception{
LayuiResult<StudentDB> result= new LayuiResult<>();
// 将接收到的时间进行类型转换
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1=format.parse(birthday);
Date date2=format.parse(tertime);
studentVO.setSbirthday(date1);
studentVO.setEntertime(date2);
// 判断该年份是否已存在学生
Integer year = addStudentService.selectStuYear(studentVO.getClassid());
if(year !=0 ){
// 若该年份学生为空时 则添加一条分割线
Integer fenge = addStudentService.stuSegmentation(studentVO.getClassid());
}
// 生成学生学号
int stui = addStudentService.selStuid(studentVO.getGid());
studentVO.setStuid(String.valueOf(stui));
studentVO.setSid(stui);
// 根据前台传来信息添加学生
Integer addStudent = addStudentService.addStudent(studentVO);
// 获取学号
String stuid = studentVO.getStuid();
// 根据学号查询学生id编号
Integer sid = addStudentService.selectSid(stuid);
// 获取所选专业id
Integer mid = studentVO.getMid();
// 根据学生专业查询该专业开设的必修课程
List<CourseDB> selCourse = addStudentService.selCourse(mid);
}
return ResponseEntity.success("操作成功");
}
}
package com.nsapi.niceschoolapi.controller;
@Controller
@RequestMapping("admin/system/menu")
public class MenuController {
@Autowired
MenuService menuService;
@RequestMapping("list")
@SysLog("跳转菜单列表")
public String list(){
return "admin/menu/list";
}
@RequiresPermissions("sys:menu:list")
@RequestMapping("treeList")
@ResponseBody
public ResponseEntity treeList(){
ResponseEntity responseEntity = ResponseEntity.success("操作成功");
responseEntity.setAny("code",0);
responseEntity.setAny("msg","");
responseEntity.setAny("count","");
HashMap map = new HashMap();
map.put("del_flag",false);
List<Menu> menus = menuService.selectAllMenuList(map);
menus.forEach( menu -> {
if(StringUtils.isBlank(menu.getParentId())) {
menu.setParentId("-1");
}
});
menus.sort(Comparator.comparing(Menu::getSort));
return responseEntity.setAny("data",menus);
}
*/
@RequestMapping("findcoursebytch")
@ResponseBody
public Object findCourseByTch(TchCourseVO tchCourseVO,Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<TchCourseVO> listAll = tchCourseService.findCourseByTch(tchCourseVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> sData = new HashMap<String, Object>();
sData.put("code", 0);
sData.put("msg", "");
sData.put("count", pageInfo.getTotal());
sData.put("data", pageInfo.getList());
return sData;
}
/**
* 教师授课及班级删除
*/
@RequestMapping("deltchcourse")
@ResponseBody
public Object delTchCourse(TchCourseVO tchCourseVO){
int flag = tchCourseService.delTchCourse(tchCourseVO);
if(flag>0){
return true;
}else {
return false;
}
}
}
package com.nsapi.niceschoolapi.common.realm;
}
/**
* 查询周
*/
@RequestMapping("findallweeks")
@ResponseBody
public Object findAllWeeks(Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<WeeksDB> listAll = tchCourseService.findAllWeeks();
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> wData = new HashMap<String, Object>();
wData.put("code", 0);
wData.put("msg", "");
wData.put("count", pageInfo.getTotal());
wData.put("data", pageInfo.getList());
return wData;
}
/**
* 查询节段
*/
@RequestMapping("findallschedule")
@ResponseBody
public Object findAllSchedule(Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<ScheduleDB> listAll = tchCourseService.findAllSchedule();
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> sData = new HashMap<String, Object>();
sData.put("code", 0);
sData.put("msg", "");
sData.put("count", pageInfo.getTotal());
sData.put("data", pageInfo.getList());
return sData;
}
/**
* 添加教师授课表记录并返回新数据id
*/
@RequestMapping("addonetchcourse")
@ResponseBody
public Object addOneTchCourse(TchCourseVO tchCourseVO){
int flag = tchCourseService.findTchCourseFlag(tchCourseVO);
if(flag>0){
return false;
}
}
/**
* 提交教评
*/
@RequestMapping("addoneappraise")
@ResponseBody
public Object addOneAppraise(EvTchVO evTchVO){
evTchVO.setStuid(MySysUser.loginName());
//判断成绩是否存在
int res1 = appraiseService.selTchExamState(evTchVO);
if(res1>0){
//添加记录
int res_addOneAppraise = appraiseService.addOneAppraise(evTchVO);
//更新成绩
int res_updOneTchExam = appraiseService.updOneTchExam(evTchVO);
if(res_addOneAppraise==1&&res_updOneTchExam==1){
return true;
}else{
return false;
}
}else if(res1==0){
//添加记录
int res_addOneAppraise = appraiseService.addOneAppraise(evTchVO);
evTchVO.setPcount(1);
evTchVO.setExam(evTchVO.getErexam());
//新增成绩
int res_addOneTchExam = appraiseService.addOneTchExam(evTchVO);
if(res_addOneAppraise==1&&res_addOneTchExam==1){
return true;
}else{
return false;
}
}else {
return false;
}
}
}
package com.nsapi.niceschoolapi.controller;
@RequestParam(value = "limit",defaultValue = "10")Integer limit,
ServletRequest request){
Map map = WebUtils.getParametersStartingWith(request, "s_");
PageData<Role> rolePageData = new PageData<>();
QueryWrapper<Role> roleWrapper = new QueryWrapper<>();
roleWrapper.eq("del_flag",false);
if(!map.isEmpty()){
String keys = (String) map.get("key");
if(StringUtils.isNotBlank(keys)) {
roleWrapper.like("name", keys);
}
}
IPage<Role> rolePage = roleService.page(new Page<>(page,limit),roleWrapper);
rolePageData.setCount(rolePage.getTotal());
rolePageData.setData(setUserToRole(rolePage.getRecords()));
return rolePageData;
}
private List<Role> setUserToRole(List<Role> roles){
roles.forEach(r -> {
if(StringUtils.isNotBlank(r.getCreateId())){
User u = userService.findUserById(r.getCreateId());
if(StringUtils.isBlank(u.getNickName())){
u.setNickName(u.getLoginName());
}
r.setCreateUser(u);
}
if(StringUtils.isNotBlank(r.getUpdateId())){
User u = userService.findUserById(r.getUpdateId());
if(StringUtils.isBlank(u.getNickName())){
u.setNickName(u.getLoginName());
}
r.setUpdateUser(u);
}
});
return roles;
}
@RequestMapping("add")
public String add(ModelMap modelMap){
Map<String,Object> map = new HashMap();
map.put("parentId",null);
map.put("isShow",false);
List<Menu> menuList = menuService.selectAllMenus(map);
modelMap.put("menuList",menuList);
return "admin/role/add";
int res_addOneAppraise = appraiseService.addOneAppraise(evTchVO);
//更新成绩
int res_updOneTchExam = appraiseService.updOneTchExam(evTchVO);
if(res_addOneAppraise==1&&res_updOneTchExam==1){
return true;
}else{
return false;
}
}else if(res1==0){
//添加记录
int res_addOneAppraise = appraiseService.addOneAppraise(evTchVO);
evTchVO.setPcount(1);
evTchVO.setExam(evTchVO.getErexam());
//新增成绩
int res_addOneTchExam = appraiseService.addOneTchExam(evTchVO);
if(res_addOneAppraise==1&&res_addOneTchExam==1){
return true;
}else{
return false;
}
}else {
return false;
}
}
}
package com.nsapi.niceschoolapi.controller;
@Controller
@RequestMapping("admin/system/user")
public class UserController {
@Autowired
UserService userService;
@Autowired
RoleService roleService;
@Autowired
UploadService uploadService;
@RequestMapping("list")
@SysLog("跳转系统用户列表页面")
public String list(){
return "admin/user/list";
User user = userService.getById(id);
if(user == null){
return ResponseEntity.failure("用户不存在");
}
userService.lockUser(user);
return ResponseEntity.success("操作成功");
}
@RequiresPermissions("sys:user:delete")
@PostMapping("delete")
@ResponseBody
@SysLog("删除系统用户数据(单个)")
public ResponseEntity delete(@RequestParam(value = "id",required = false)String id){
if(StringUtils.isBlank(id)){
return ResponseEntity.failure("参数错误");
}
User user = userService.getById(id);
if(user == null){
return ResponseEntity.failure("用户不存在");
}else if(user.getAdminUser()) {
return ResponseEntity.failure("不能删除后台用户");
}
userService.deleteUser(user);
return ResponseEntity.success("操作成功");
}
@RequiresPermissions("sys:user:delete")
@PostMapping("deleteSome")
@ResponseBody
@SysLog("删除系统用户数据(多个)")
public ResponseEntity deleteSome(@RequestBody List<User> users){
if(users == null || users.size()==0){
return ResponseEntity.failure("请选择需要删除的用户");
}
for (User u : users){
if(u.getAdminUser()){
return ResponseEntity.failure("不能删除超级管理员");
}else{
userService.deleteUser(u);
}
}
return ResponseEntity.success("操作成功");
}
@RequestMapping("userinfo")
public String toEditMyInfo(ModelMap modelMap){
String userId = MySysUser.id();
User user = userService.findUserById(userId);
modelMap.put("userinfo",user);
modelMap.put("userRole",user.getRoleLists());
return "admin/user/userInfo";
}