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.DriverInfo;
import com.example.entity.UserInfo;
import com.example.service.AdminInfoService;
import com.example.service.DriverInfoService;
import com.example.service.UserInfoService;
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 DriverInfoService driverInfoService;
@Resource
private UserInfoService userInfoService;
@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 = driverInfoService.login(account.getName(), account.getPassword());
}
if (3 == level) {
login = userInfoService.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) {
DriverInfo info = new DriverInfo();
BeanUtils.copyProperties(account, info);
login = driverInfoService.add(info);
}
if (3 == level) {
UserInfo info = new UserInfo();
BeanUtils.copyProperties(account, info);
login = userInfoService.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(driverInfoService.findById(account.getId()));
}
if (3 == level) {
return Result.success(userInfoService.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) {
DriverInfo driverInfo = new DriverInfo();
BeanUtils.copyProperties(info, driverInfo);
driverInfoService.update(driverInfo);
}
if (3 == level) {
UserInfo userInfo = new UserInfo();
BeanUtils.copyProperties(info, userInfo);
userInfoService.update(userInfo);
}
info.setLevel(level);
info.setName(account.getName());
// 清空session,让用户重新登录
request.g
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Java的校车安全管理平台毕业设计(源码+演示视频+数据库).rar (基于ssm框架的Java毕业设计)校车管理系统(源码) 【项目技术】 开发语言:Java 架构:B/S 数据库:mysql 【实现功能】 主要包括用户管理,车辆管理,司机管理,派车管理等各项功能
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的校车安全管理平台毕业设计(源码+演示视频+数据库).rar (413个子文件)
$PRODUCT_WORKSPACE_FILE$ 489B
AccountController.class 12KB
EchartsController.class 11KB
AdminInfoController.class 8KB
UserInfoController.class 8KB
DriverInfoController.class 8KB
NxSystemFileController.class 8KB
AdvertiserInfoController.class 8KB
SubmitInfoController.class 8KB
BusInfoController.class 7KB
MenuController.class 5KB
SubmitInfoCommentService.class 4KB
JiluInfoCommentService.class 4KB
DriverInfoService.class 4KB
AdminInfoService.class 4KB
UserInfoService.class 4KB
SubmitInfoCommentController.class 4KB
JiluInfoCommentController.class 4KB
JiluInfoService.class 4KB
JiluInfoController.class 4KB
AdminInfo.class 3KB
AdvertiserInfoService.class 3KB
SubmitInfoService.class 3KB
UserInfo.class 3KB
Account.class 3KB
BusInfoService.class 3KB
NxSystemFileInfoService.class 3KB
SubmitInfo.class 3KB
DriverInfo.class 3KB
Result.class 2KB
EchartsData.class 2KB
ResultCode.class 2KB
SubmitInfoComment.class 2KB
JiluInfoComment.class 2KB
MyInterceptor.class 2KB
GlobalExceptionHandler.class 2KB
EchartsData$Data.class 2KB
WebMvcConfig.class 2KB
AdvertiserInfo.class 2KB
EchartsData$Series.class 1KB
AuthorityInfo.class 1KB
MyInterceptorConfig.class 1KB
NxSystemFileInfo.class 1KB
BusInfo.class 1KB
JiluInfo.class 1KB
AuthorityInfo$Model.class 1KB
SubmitInfoCommentVo.class 1KB
JiluInfoCommentVo.class 1KB
CustomException.class 1KB
DriverInfoDao.class 925B
AdminInfoDao.class 920B
UserInfoDao.class 915B
SubmitInfoCommentDao.class 898B
JiluInfoCommentDao.class 888B
SubmitInfoDao.class 865B
Application.class 793B
NxSystemFileInfoDao.class 773B
JiluInfoDao.class 665B
BusInfoDao.class 661B
AdvertiserInfoDao.class 649B
SubmitInfoVo.class 602B
AdvertiserInfoVo.class 320B
DriverInfoVo.class 304B
AdminInfoVo.class 300B
UserInfoVo.class 296B
JiluInfoVo.class 296B
BusInfoVo.class 292B
index.css 227KB
index.css 227KB
index.css 227KB
index.css 227KB
bootstrap.min.css 119KB
bootstrap.min.css 119KB
bootstrap.css 115KB
bootstrap.css 115KB
font-awesome.css 28KB
font-awesome.css 28KB
quill.snow.css 24KB
quill.snow.css 24KB
font-awesome.css 21KB
font-awesome.css 21KB
bootstrap-theme.min.css 19KB
bootstrap-theme.min.css 19KB
swiper.min.css 13KB
swiper.min.css 13KB
custom-styles.css 10KB
custom-styles.css 10KB
my.css 1KB
my.css 1KB
index.css 480B
index.css 480B
notice.css 475B
notice.css 475B
fontawesome-webfont.eot 55KB
fontawesome-webfont.eot 55KB
fontawesome-webfontba72.eot 37KB
fontawesome-webfontd41d.eot 37KB
fontawesome-webfontd41d.eot 37KB
fontawesome-webfontba72.eot 37KB
glyphicons-halflings-regular.eot 20KB
共 413 条
- 1
- 2
- 3
- 4
- 5
资源评论
职场程序猿
- 粉丝: 2223
- 资源: 3682
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功