package com.example.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.Account;
import com.example.entity.AuthorityInfo;
import com.example.exception.CustomException;
import com.example.entity.AdminInfo;
import com.example.entity.JiazhangInfo;
import com.example.entity.TeacherInfo;
import com.example.service.AdminInfoService;
import com.example.service.JiazhangInfoService;
import com.example.service.TeacherInfoService;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import cn.hutool.json.JSONUtil;
import java.util.*;
import java.util.stream.Collectors;
@RestController
public class AccountController {
@Value("${authority.info}")
private String authorityStr;
@Resource
private AdminInfoService adminInfoService;
@Resource
private JiazhangInfoService jiazhangInfoService;
@Resource
private TeacherInfoService teacherInfoService;
@PostMapping("/login")
public Result<Account> login(@RequestBody Account account, HttpServletRequest request) {
if (StrUtil.isBlank(account.getName()) || StrUtil.isBlank(account.getPassword()) || account.getLevel() == null) {
throw new CustomException(ResultCode.PARAM_LOST_ERROR);
}
Integer level = account.getLevel();
Account login = new Account();
if (1 == level) {
login = adminInfoService.login(account.getName(), account.getPassword());
}
if (2 == level) {
login = jiazhangInfoService.login(account.getName(), account.getPassword());
}
if (3 == level) {
login = teacherInfoService.login(account.getName(), account.getPassword());
}
request.getSession().setAttribute("user", login);
return Result.success(login);
}
@PostMapping("/register")
public Result<Account> register(@RequestBody Account account) {
Integer level = account.getLevel();
Account login = new Account();
if (1 == level) {
AdminInfo info = new AdminInfo();
BeanUtils.copyProperties(account, info);
login = adminInfoService.add(info);
}
if (2 == level) {
JiazhangInfo info = new JiazhangInfo();
BeanUtils.copyProperties(account, info);
login = jiazhangInfoService.add(info);
}
if (3 == level) {
TeacherInfo info = new TeacherInfo();
BeanUtils.copyProperties(account, info);
login = teacherInfoService.add(info);
}
return Result.success(login);
}
@GetMapping("/logout")
public Result logout(HttpServletRequest request) {
request.getSession().setAttribute("user", null);
return Result.success();
}
@GetMapping("/auth")
public Result getAuth(HttpServletRequest request) {
Object user = request.getSession().getAttribute("user");
if(user == null) {
return Result.error("401", "未登录");
}
return Result.success(user);
}
@GetMapping("/getAccountInfo")
public Result<Object> getAccountInfo(HttpServletRequest request) {
Account account = (Account) request.getSession().getAttribute("user");
if (account == null) {
return Result.success(new Object());
}
Integer level = account.getLevel();
if (1 == level) {
return Result.success(adminInfoService.findById(account.getId()));
}
if (2 == level) {
return Result.success(jiazhangInfoService.findById(account.getId()));
}
if (3 == level) {
return Result.success(teacherInfoService.findById(account.getId()));
}
return Result.success(new Object());
}
@GetMapping("/getSession")
public Result<Map<String, String>> getSession(HttpServletRequest request) {
Account account = (Account) request.getSession().getAttribute("user");
if (account == null) {
return Result.success(new HashMap<>(1));
}
Map<String, String> map = new HashMap<>(1);
map.put("username", account.getName());
return Result.success(map);
}
@GetMapping("/getAuthority")
public Result<List<AuthorityInfo>> getAuthorityInfo() {
List<AuthorityInfo> authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class);
return Result.success(authorityInfoList);
}
/**
* 获取当前用户所能看到的模块信息
* @param request
* @return
*/
@GetMapping("/authority")
public Result<List<Integer>> getAuthorityInfo(HttpServletRequest request) {
Account user = (Account) request.getSession().getAttribute("user");
if (user == null) {
return Result.success(new ArrayList<>());
}
JSONArray objects = JSONUtil.parseArray(authorityStr);
for (Object object : objects) {
JSONObject jsonObject = (JSONObject) object;
if (user.getLevel().equals(jsonObject.getInt("level"))) {
JSONArray array = JSONUtil.parseArray(jsonObject.getStr("models"));
List<Integer> modelIdList = array.stream().map((o -> {
JSONObject obj = (JSONObject) o;
return obj.getInt("modelId");
})).collect(Collectors.toList());
return Result.success(modelIdList);
}
}
return Result.success(new ArrayList<>());
}
@GetMapping("/permission/{modelId}")
public Result<List<Integer>> getPermission(@PathVariable Integer modelId, HttpServletRequest request) {
List<AuthorityInfo> authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class);
Account user = (Account) request.getSession().getAttribute("user");
if (user == null) {
return Result.success(new ArrayList<>());
}
Optional<AuthorityInfo> optional = authorityInfoList.stream().filter(x -> x.getLevel().equals(user.getLevel())).findFirst();
if (optional.isPresent()) {
Optional<AuthorityInfo.Model> firstOption = optional.get().getModels().stream().filter(x -> x.getModelId().equals(modelId)).findFirst();
if (firstOption.isPresent()) {
List<Integer> info = firstOption.get().getOperation();
return Result.success(info);
}
}
return Result.success(new ArrayList<>());
}
@PutMapping("/updatePassword")
public Result updatePassword(@RequestBody Account info, HttpServletRequest request) {
Account account = (Account) request.getSession().getAttribute("user");
if (account == null) {
return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
}
String oldPassword = SecureUtil.md5(info.getPassword());
if (!oldPassword.equals(account.getPassword())) {
return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);
}
info.setPassword(SecureUtil.md5(info.getNewPassword()));
Integer level = account.getLevel();
if (1 == level) {
AdminInfo adminInfo = new AdminInfo();
BeanUtils.copyProperties(info, adminInfo);
adminInfoService.update(adminInfo);
}
if (2 == level) {
JiazhangInfo jiazhangInfo = new JiazhangInfo();
BeanUtils.copyProperties(info, jiazhangInfo);
jiazhangInfoService.update(jiazhangInfo);
}
if (3 == level) {
TeacherInfo teacherInfo = new TeacherInfo();
BeanUtils.copyProperties(info, teacherInfo);
teacherInfoService.update(teacherInfo);
}
info.setLevel(level);
info.setName(account.getNa
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
小学学生管理系统包括以下功能: 学生信息管理:记录学生的基本信息、家庭联系方式等,便于学校管理和教师沟通。 成绩管理:记录学生的考试成绩,方便老师和家长随时查看学生的学业表现。 考勤管理:记录学生的考勤情况,包括迟到、早退、请假等,确保学生的出勤情况。 课程安排:安排学生的课程表,包括上课时间、教室安排等信息。 综合评价:进行学生的综合评价,包括学习态度、品德发展、课外活动参与等方面的评定。 家长沟通:提供家长与学校之间的沟通平台,发布通知、安排家长会等。
资源推荐
资源详情
资源评论
收起资源包目录
基于springBoot小学学生管理系统的设计与实现+毕业论文 (311个子文件)
$PRODUCT_WORKSPACE_FILE$ 489B
AccountController.class 12KB
EchartsController.class 12KB
AdminInfoController.class 8KB
TeacherInfoController.class 8KB
JiazhangInfoController.class 8KB
NxSystemFileController.class 8KB
JiangchengInfoController.class 8KB
AdvertiserInfoController.class 8KB
ChengjiInfoController.class 8KB
StudentInfoController.class 7KB
BanjiInfoController.class 7KB
MenuController.class 6KB
JiazhangInfoService.class 4KB
TeacherInfoService.class 4KB
AdminInfoService.class 4KB
AdminInfo.class 3KB
AdvertiserInfoService.class 3KB
JiangchengInfoService.class 3KB
StudentInfoService.class 3KB
ChengjiInfoService.class 3KB
BanjiInfoService.class 3KB
Account.class 3KB
NxSystemFileInfoService.class 3KB
TeacherInfo.class 3KB
JiazhangInfo.class 2KB
Result.class 2KB
EchartsData.class 2KB
ResultCode.class 2KB
MyInterceptor.class 2KB
GlobalExceptionHandler.class 2KB
JiangchengInfo.class 2KB
ChengjiInfo.class 2KB
EchartsData$Data.class 2KB
WebMvcConfig.class 2KB
AdvertiserInfo.class 2KB
StudentInfo.class 1KB
EchartsData$Series.class 1KB
AuthorityInfo.class 1KB
MyInterceptorConfig.class 1KB
NxSystemFileInfo.class 1KB
BanjiInfo.class 1KB
AuthorityInfo$Model.class 1KB
CustomException.class 1KB
JiazhangInfoDao.class 935B
TeacherInfoDao.class 930B
AdminInfoDao.class 920B
Application.class 793B
NxSystemFileInfoDao.class 773B
JiangchengInfoDao.class 689B
StudentInfoDao.class 677B
ChengjiInfoDao.class 677B
BanjiInfoDao.class 669B
AdvertiserInfoDao.class 649B
JiangchengInfoVo.class 621B
ChengjiInfoVo.class 609B
AdvertiserInfoVo.class 320B
JiazhangInfoVo.class 312B
StudentInfoVo.class 308B
TeacherInfoVo.class 308B
AdminInfoVo.class 300B
BanjiInfoVo.class 300B
index.css 227KB
index.css 227KB
bootstrap.min.css 119KB
bootstrap.min.css 119KB
font-awesome.css 26KB
font-awesome.css 26KB
quill.snow.css 24KB
quill.snow.css 24KB
nav.css 2KB
nav.css 2KB
my.css 1KB
my.css 1KB
common.css 476B
common.css 476B
fontawesome-webfont.eot 55KB
fontawesome-webfont.eot 55KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.eot 20KB
file-info 0B
file-info 0B
adminInfo.html 20KB
adminInfo.html 20KB
teacherInfo.html 18KB
teacherInfo.html 18KB
jiangchengInfo.html 18KB
jiangchengInfo.html 18KB
chengjiInfo.html 18KB
chengjiInfo.html 18KB
jiazhangInfo.html 18KB
jiazhangInfo.html 18KB
studentInfo.html 17KB
studentInfo.html 17KB
advertiserInfo.html 17KB
advertiserInfo.html 17KB
banjiInfo.html 17KB
banjiInfo.html 17KB
index.html 12KB
index.html 12KB
共 311 条
- 1
- 2
- 3
- 4
资源评论
code.song
- 粉丝: 1075
- 资源: 1188
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功