package com.ruoyi.admin.controller;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.ruoyi.admin.entity.SysUser;
|
import com.ruoyi.admin.entity.UserRole;
|
import com.ruoyi.admin.request.PasswordRequest;
|
import com.ruoyi.admin.request.SysUserRequest;
|
import com.ruoyi.admin.service.SysUserService;
|
import com.ruoyi.admin.service.UserRoleService;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
import com.ruoyi.common.security.service.TokenService;
|
import com.ruoyi.system.api.model.LoginUser;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 用户信息表 前端控制器
|
* </p>
|
*
|
* @author hjl
|
* @since 2024-06-25
|
*/
|
@RestController
|
@RequestMapping("/sysUser")
|
@Api(tags = {"后台-权限管理-账号管理"})
|
public class SysUserController {
|
|
@Resource
|
private SysUserService sysUserService;
|
@Resource
|
private TokenService tokenService;
|
@Resource
|
private UserRoleService userRoleService;
|
|
/**
|
* 账号分页列表
|
*
|
* @param pageNum 页码
|
* @param pageSize 每页显示条数
|
*/
|
@RequiresPermissions("power_account")
|
@ApiOperation(value = "账号分页查询列表", tags = {"后台-权限管理-账号管理"})
|
@GetMapping(value = "/page")
|
@ApiImplicitParams({
|
@ApiImplicitParam(value = "账号名称", name = "nickName", dataType = "String"),
|
@ApiImplicitParam(value = "账号", name = "account", dataType = "String"),
|
@ApiImplicitParam(value = "所属账号", name = "roleId", dataType = "String"),
|
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
|
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
|
})
|
public R<IPage<SysUser>> queryPageList(String nickName, String account, String roleId,
|
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
return R.ok(sysUserService.queryPage(nickName, account, roleId, Page.of(pageNum, pageSize)));
|
}
|
|
/**
|
* 启用/关闭后台账号
|
*
|
* @param id 后台账号id
|
* @param enable 启用/关闭
|
*/
|
@RequiresPermissions("power_enable")
|
@ApiOperation(value = "启用/关闭后台账号", tags = {"后台-师傅管理-师傅列表管理"})
|
@GetMapping(value = "/enable")
|
@ApiImplicitParams({
|
@ApiImplicitParam(value = "账号id", name = "id", dataType = "Integer", required = true),
|
@ApiImplicitParam(value = "0:关闭;1:启用", name = "enable", dataType = "Integer", required = true)
|
})
|
public R<String> enable(@RequestParam Integer id, @RequestParam Integer enable) {
|
boolean update = sysUserService.lambdaUpdate().set(SysUser::getIsEnable, enable)
|
.eq(SysUser::getUserId, id).update();
|
return update ? R.ok() : R.fail();
|
}
|
|
/**
|
* 账号详情
|
*
|
* @param id 账号id
|
*/
|
@RequiresPermissions("power_detail")
|
@ApiOperation(value = "账号详情", tags = {"后台-权限管理-账号管理"})
|
@GetMapping(value = "/detail")
|
@ApiImplicitParams({
|
@ApiImplicitParam(value = "账号id", name = "id", dataType = "Integer", required = true)
|
})
|
public R<SysUser> detail(@RequestParam Integer id) {
|
// 账号详情
|
return R.ok(sysUserService.getById(id));
|
}
|
|
/**
|
* 新增账号
|
*
|
* @param sysUserRequest 账号信息
|
*/
|
@RequiresPermissions("power_save")
|
@ApiOperation(value = "新增账号", tags = {"后台-权限管理-账号管理"})
|
@PostMapping(value = "/save")
|
public R<String> save(@RequestBody @Validated SysUserRequest sysUserRequest) {
|
LoginUser loginUser = tokenService.getLoginUser();
|
if (null == loginUser) {
|
return R.loginExpire("登录失效!");
|
}
|
SysUser user = sysUserService.lambdaQuery()
|
.eq(SysUser::getAccount, sysUserRequest.getAccount())
|
.eq(SysUser::getIsDelete, 0).one();
|
if (null != user) {
|
return R.fail("该账号已存在!");
|
}
|
// 账号封装
|
SysUser sysUser = new SysUser();
|
sysUser.setNickName(sysUserRequest.getNickName());
|
sysUser.setAccount(sysUserRequest.getAccount());
|
// 加密密码
|
String password = sysUserRequest.getPassword();
|
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
sysUser.setPassword(passwordEncoder.encode(password));
|
sysUser.setIsEnable(sysUserRequest.getIsEnable());
|
boolean save = sysUserService.save(sysUser);
|
// 添加账号与角色关联
|
UserRole userRole = new UserRole();
|
userRole.setUserId(sysUser.getUserId());
|
userRole.setRoleId(sysUserRequest.getRoleId().longValue());
|
save = save && userRoleService.save(userRole);
|
return save ? R.ok() : R.fail();
|
}
|
|
/**
|
* 修改账号
|
*
|
* @param sysUserRequest 账号信息
|
*/
|
@RequiresPermissions("power_update")
|
@ApiOperation(value = "修改账号", tags = {"后台-权限管理-账号管理"})
|
@PostMapping(value = "/update")
|
public R<String> update(@RequestBody SysUserRequest sysUserRequest) {
|
Long userId = sysUserRequest.getUserId();
|
String nickName = sysUserRequest.getNickName();
|
String account = sysUserRequest.getAccount();
|
String password = sysUserRequest.getPassword();
|
Integer isEnable = sysUserRequest.getIsEnable();
|
Integer roleId = sysUserRequest.getRoleId();
|
LoginUser loginUser = tokenService.getLoginUser();
|
if (null == loginUser) {
|
return R.loginExpire("登录失效!");
|
}
|
SysUser user = sysUserService.lambdaQuery()
|
.eq(SysUser::getAccount, sysUserRequest.getAccount())
|
.eq(SysUser::getIsDelete, 0)
|
.ne(SysUser::getUserId, sysUserRequest.getUserId()).one();
|
if (null != user) {
|
return R.fail("该账号已存在!");
|
}
|
// 修改账号信息
|
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
LambdaUpdateChainWrapper<SysUser> wrapper = sysUserService.lambdaUpdate();
|
wrapper = StringUtils.isNotBlank(nickName) ? wrapper.set(SysUser::getNickName, nickName) : wrapper;
|
wrapper = StringUtils.isNotBlank(account) ? wrapper.set(SysUser::getAccount, account) : wrapper;
|
wrapper = StringUtils.isNotBlank(password) ? wrapper.set(SysUser::getPassword, passwordEncoder.encode(password)) : wrapper;
|
wrapper = null != isEnable ? wrapper.set(SysUser::getIsEnable, isEnable) : wrapper;
|
boolean update = wrapper.eq(SysUser::getUserId, userId).update();
|
// 修改账号与角色关联
|
update = update && userRoleService.lambdaUpdate().set(UserRole::getRoleId, roleId)
|
.eq(UserRole::getUserId, userId).update();
|
return update ? R.ok() : R.fail();
|
}
|
|
/**
|
* 修改密码
|
*
|
* @param passwordRequest 账号信息
|
*/
|
@ApiOperation(value = "修改密码", tags = {"后台-权限管理-账号管理"})
|
@PostMapping(value = "/updatePassword")
|
public R<String> updatePassword(@RequestBody @Validated PasswordRequest passwordRequest) {
|
String account = passwordRequest.getAccount();
|
String oldPassword = passwordRequest.getOldPassword();
|
String newPassword = passwordRequest.getNewPassword();
|
String confirmPassword = passwordRequest.getConfirmPassword();
|
SysUser user = sysUserService.lambdaQuery()
|
.eq(SysUser::getAccount, account)
|
.eq(SysUser::getIsDelete, 0).one();
|
if (null == user) {
|
return R.fail("账号不存在!");
|
} else {
|
if (!newPassword.equals(confirmPassword)) {
|
return R.fail("新密码与二次确认密码不一致,请重新输入!");
|
}
|
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
if (!passwordEncoder.matches(oldPassword, user.getPassword())) {
|
return R.fail("原密码错误,请重试!");
|
}
|
// 校验通过,加密新的明文密码
|
String encodeNewPassword = passwordEncoder.encode(newPassword);
|
user.setPassword(encodeNewPassword);
|
sysUserService.updateById(user);
|
}
|
return R.ok();
|
}
|
|
/**
|
* 根据id批量删除账号
|
*
|
* @param ids 账号id拼接
|
*/
|
@RequiresPermissions("power_delete")
|
@ApiOperation(value = "批量删除账号", tags = {"后台-权限管理-账号管理"})
|
@GetMapping(value = "/batchDelete")
|
@ApiImplicitParams({
|
@ApiImplicitParam(value = "多条账号id ',' 拼接", name = "ids", dataType = "String", required = true)
|
})
|
public R<String> batchDelete(@RequestParam String ids) {
|
List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
|
List<SysUser> list = sysUserService.lambdaQuery().in(SysUser::getUserId, idList).list();
|
list.forEach(data -> data.setIsDelete(1));
|
// 删除账号需要删除账号所关联的菜单信息
|
for (String id : idList) {
|
userRoleService.remove(new QueryWrapper<UserRole>().eq("user_id", id));
|
}
|
return sysUserService.updateBatchById(list) ? R.ok() : R.fail();
|
}
|
|
}
|