package com.wsf.springbootdemo.controller;
import com.auth0.jwt.interfaces.Claim;
import com.baomidou.kaptcha.Kaptcha;
import com.baomidou.kaptcha.exception.KaptchaIncorrectException;
import com.baomidou.kaptcha.exception.KaptchaNotFoundException;
import com.baomidou.kaptcha.exception.KaptchaTimeoutException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wsf.springbootdemo.pojo.ResponseResult;
import com.wsf.springbootdemo.pojo.User;
import com.wsf.springbootdemo.pojo.UserRole;
import com.wsf.springbootdemo.service.RoleService;
import com.wsf.springbootdemo.service.UserRoleService;
import com.wsf.springbootdemo.service.UserService;
import com.wsf.springbootdemo.utils.JWTUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.v3.oas.annotations.Operation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
/**
* @author wsfstart
* @create 2022-05-19 15:41
*/
@Slf4j
@RestController
@RequestMapping("/user")
@Api(tags = "用户信息处理")
public class UserController {
@Autowired
private Kaptcha kaptcha;
@Autowired
private UserService userService;
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Autowired
private UserRoleService userRoleService;
@Autowired
private RoleService roleService;
/**
* 登录接口
* @param username
* @param password
* @param code
* @return
*/
@PostMapping("login")
@Operation(summary = "登录接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名",dataTypeClass = String.class),
@ApiImplicitParam(name = "password", value = "密码",dataTypeClass = String.class),
@ApiImplicitParam(name = "code", value = "验证码",dataTypeClass = String.class),
})
public ResponseResult login(String username,String password,String code) {
log.info("user/login");
log.info(username+" "+password+" "+code);
User user = new User(username, password);
try {
kaptcha.validate(code);
} catch (Exception e) {
e.printStackTrace();
if (e instanceof KaptchaIncorrectException) {
return new ResponseResult(410, "验证码不正确");
} else if (e instanceof KaptchaNotFoundException) {
return new ResponseResult(410, "验证码未找到");
} else if (e instanceof KaptchaTimeoutException) {
return new ResponseResult(410, "验证码过期");
} else {
return new ResponseResult(410, "验证码渲染失败");
}
}
//登录
return userService.login(user);
}
/**
* 获取Kaptcha验证码
*/
@Operation(summary = "获取验证码")
@GetMapping("getKaptchaImg")
public void getKaptchaImg() {
//默认900秒
kaptcha.render();
}
@PostMapping("logout")
@Operation(summary = "退出登录")
public ResponseResult logout() {
return userService.logout();
}
/**
* 根据权限查询用户数据
* @param page 当前页
* @param limit 条数
* @return
*/
@PostMapping("list")
@PreAuthorize("hasAuthority('system:User:list')")
@Operation(summary = "查询用户列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "当前页",defaultValue = "1",dataTypeClass = Integer.class),
@ApiImplicitParam(name = "limit", value = "每页条数",defaultValue = "10",dataTypeClass = Integer.class),
@ApiImplicitParam(name = "userName", value = "用户名",dataTypeClass = String.class),
@ApiImplicitParam(name = "phonenumber", value = "手机号",dataTypeClass = String.class),
@ApiImplicitParam(name = "isLock", value = "是否锁定",dataTypeClass = Integer.class),
})
public ResponseResult list(@RequestParam(required = false,defaultValue = "1") Integer page,
@RequestParam(required = false,defaultValue = "10") Integer limit,
String userName,String phonenumber,Integer isLock) {
log.info("页码:"+page+"条数:"+limit);
Page<User> userPage = new Page<>(page, limit);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like(StringUtils.isNotBlank(userName),"user_name",userName)
.like(StringUtils.isNotBlank(phonenumber),"phonenumber",phonenumber)
.eq(!Objects.isNull(isLock),"status",isLock);
userService.page(userPage,wrapper);
userPage.getRecords().forEach(user -> {
user.setRole(roleService.getById(user.getUserType()));
});
return new ResponseResult(200, "请求用户列表成功", userPage);
}
@PostMapping("status")
@PreAuthorize("hasAuthority('system:User:save')")
@Transactional(rollbackFor=Exception.class)
@Operation(summary = "修改状态")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用户ID",dataTypeClass = Long.class),
@ApiImplicitParam(name = "status", value = "状态",dataTypeClass = String.class),
})
public ResponseResult status(Long id,String status){
User user = new User();
user.setId(id);
user.setStatus(status);
user.setUpdateTime(new Date());
if(userService.updateById(user)){
return new ResponseResult(200,"修改状态成功");
}
return new ResponseResult(500,"修改状态失败");
}
@PostMapping("save")
@PreAuthorize("hasAuthority('system:User:save')")
@Transactional(rollbackFor=Exception.class)
@Operation(summary = "修改用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "user", value = "用户对象",dataTypeClass = User.class)
})
public ResponseResult save(User user, HttpServletRequest request){
String token = request.getHeader("token");
Map<String, Claim> payloadFromToken = JWTUtil.getPayloadFromToken(token);
Claim claim = payloadFromToken.get("id");
String id = claim.asString();
if(Objects.isNull(user.getId())){
user.setCreateTime(new Date());
log.info("添加------------"+user);
user.setCreateBy(Long.parseLong(id));
boolean save = userService.save(user);
if(save){
return new ResponseResult(200,"用户管理添加成功");
}else{
return new ResponseResult(500,"用户管理添加失败");
}
}else{
user.setUpdateTime(new Date());
user.setUpdateBy(Long.parseLong(id));
log.info("修改------------"+user);
boolean update = userService.updateById(user);
if(update){
return new ResponseResult(200,"用户管理修改成功");
}else{
return new ResponseResult(500,"用户管理修改失败");
}
}
}
@PostMapping("updateContent")
@Transactional(rollbackFor=Exception.class)
@Operation(summary = "修改个人信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "user", value = "用户对象
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringBoot+Vue开发的前后端分离人事管理系统源码+项目使用说明(毕设项目含前端和后端源码).zip
共191个文件
java:60个
png:44个
js:23个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 15 浏览量
2022-12-30
09:48:07
上传
评论 5
收藏 6.95MB ZIP 举报
温馨提示
基于SpringBoot+Vue开发的前后端分离人事管理系统源码+项目使用说明(毕设项目含前端和后端源码).zip 【功能实现】 登录 -- 完成 路由拦截 -- 完成 角色管理(增加、编辑、搜索、删除、权限管理) -- 完成 用户管理(增加、编辑、搜索、删除、数据权限、刷新缓存) -- 完成 权限管理(增加、编辑、搜索、删除、配置权限) -- 完成 菜单管理(增加、编辑、搜索、删除) -- 完成 员工管理(增加、编辑、搜索、删除) -- 完成 职位管理(增加、编辑、搜索、删除) -- 完成 部门管理(增加、编辑、搜索、删除) -- 完成 【技术栈】 vue2 + vuex + vue-router + webpack + ES6/7 + axios + elementUI SpringBoot+MybatisPlus+JWT+SpringSecurity+MySQL+Redis 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、项目说明等,该项目可以直接作为毕设、课程设计使用。
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot+Vue开发的前后端分离人事管理系统源码+项目使用说明(毕设项目含前端和后端源码).zip (191个子文件)
.babelrc 230B
app.f7de60d9ec9c07c112d0b94c59208a0e.css 207KB
iconfont.css 11KB
.editorconfig 147B
iconfont.eot 11KB
iconfont.4f4ba31.eot 11KB
gif.gif 1.98MB
gif.gif 1.98MB
.gitignore 154B
.gitkeep 0B
index.html 611B
index.html 409B
favicon.ico 946B
UserController.java 13KB
EmployeeController.java 7KB
MenuController.java 6KB
RoleController.java 6KB
RedisCache.java 6KB
JobController.java 5KB
DeptController.java 5KB
Employee.java 5KB
MenuServiceImpl.java 4KB
UserServiceImpl.java 4KB
SecurityConfig.java 4KB
JwtAuthenticationTokenFilter.java 4KB
Dept.java 3KB
MapperTest.java 3KB
Job.java 3KB
User.java 2KB
LoginUser.java 2KB
UserDetailsServiceImpl.java 2KB
FastJsonRedisSerializer.java 2KB
Menu.java 2KB
SwaggerConfig.java 2KB
MenuServiceTest.java 1KB
JWTUtil.java 1KB
RedisConfig.java 1KB
ROleMenuServiceTest.java 1KB
ResponseResult.java 1KB
WebUtils.java 1KB
AuthenticationEntryPointImpl.java 1KB
AccessDeniedHandlerImpl.java 1KB
UserServiceTest.java 1014B
Role.java 1000B
RoleMenuServiceImpl.java 989B
CorsConfig.java 931B
UserRole.java 908B
RoleMenu.java 875B
MybatisPlusConfig.java 852B
RoleServiceImpl.java 821B
UserMapper.java 811B
UserService.java 682B
RoleMenuMapper.java 623B
UserRoleServiceImpl.java 575B
EmployeeServiceImpl.java 574B
RoleMapper.java 561B
MenuMapper.java 561B
DeptServiceImpl.java 553B
SpringbootDemoApplication.java 539B
JobServiceImpl.java 534B
DateUtil.java 533B
RoleMenuService.java 461B
UserRoleMapper.java 447B
MenuService.java 426B
RoleService.java 404B
EmployeeMapper.java 384B
DeptMapper.java 375B
JobMapper.java 359B
UserRoleService.java 339B
EmployeeService.java 338B
DeptService.java 333B
JobService.java 318B
SpringbootDemoApplicationTests.java 231B
wx.jpg 8KB
vendor.e37fbe972401a2962be8.js 742KB
app.656e0752769862c0c376.js 120KB
userMG.js 8KB
webpack.prod.conf.js 5KB
index.js 5KB
webpack.dev.conf.js 3KB
utils.js 3KB
index.js 3KB
main.js 2KB
webpack.base.conf.js 2KB
util.js 2KB
basisMG.js 2KB
payMG.js 2KB
axiosFun.js 1KB
eslintrc.js 1KB
check-versions.js 1KB
build.js 1KB
manifest.3ad1d5771e9b13dbdad2.js 858B
vue-loader.conf.js 553B
store.js 455B
.postcssrc.js 246B
dev.env.js 156B
prod.env.js 61B
package-lock.json 1001KB
package.json 2KB
LICENSE 1KB
共 191 条
- 1
- 2
资源评论
- zhoucong121232023-04-20资源和描述一致,质量不错,解决了我的问题,感谢资源主。Make程序设计2023-11-07嗯嗯,感谢您的好评和认可!互相学习,欢迎沟通交流!!
Make程序设计
- 粉丝: 5627
- 资源: 3567
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 微软常用运行库 游戏运行库 VC++各个版本
- 微信小程序开发教程.pptx
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- 锐捷网络认证中心网络管理.pdf
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- SD8233LF是一款用于单按键触摸及接近感应开关,其用途是替代传统的机械型开关芯片IC
- 基于YOLOv5的烟雾火焰检测算法研究
- 基于STM32的联合调试侦听设备解决方案原理图PCB源文件调试工具视频(大赛作品)
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功