package com.ruoyi.system.controller;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.ruoyi.admin.api.feignClient.AdminClient;
|
import com.ruoyi.common.core.constant.Constants;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.core.utils.poi.ExcelUtil;
|
import com.ruoyi.common.core.web.controller.BaseController;
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
import com.ruoyi.common.core.web.page.TableDataInfo;
|
import com.ruoyi.common.log.annotation.Log;
|
import com.ruoyi.common.log.enums.BusinessType;
|
import com.ruoyi.common.security.annotation.InnerAuth;
|
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
import com.ruoyi.system.api.domain.SysRole;
|
import com.ruoyi.system.api.domain.SysUser;
|
import com.ruoyi.system.api.model.LoginUser;
|
import com.ruoyi.system.service.*;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.commons.lang3.ArrayUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.List;
|
import java.util.Set;
|
import java.util.stream.Collectors;
|
|
/**
|
* 用户信息
|
*
|
* @author ruoyi
|
*/
|
@RestController
|
@RequestMapping("/user")
|
public class SysUserController extends BaseController {
|
@Autowired
|
private ISysUserService userService;
|
|
@Autowired
|
private ISysRoleService roleService;
|
@Autowired
|
private ISysPostService postService;
|
@Autowired
|
private ISysPermissionService permissionService;
|
|
@Resource
|
private AdminClient adminClient;
|
|
@GetMapping("/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)
|
})
|
@ApiOperation(value = "角色列表", tags = {"后台-权限管理-角色管理"})
|
public R<IPage<SysUser>> page(String nickName, String account, String role,
|
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
return R.ok(userService.queryPage(nickName, account, role, Page.of(pageNum, pageSize)));
|
}
|
|
/**
|
* 新增后台账号
|
*/
|
@PostMapping("/addAccount")
|
@ApiOperation(value = "添加账号", tags = {"后台-权限管理-账号管理"})
|
public R<String> addAccount(@RequestBody @Validated SysUser user) {
|
SysUser dbUser = userService.lambdaQuery().eq(SysUser::getAccount, user.getAccount())
|
.eq(SysUser::getIsDelete, 0).one();
|
if (null != dbUser) {
|
return R.fail("当前账号已存在!");
|
}
|
// MD5加密登录密码(新)
|
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
String encodePassword = passwordEncoder.encode(Constants.DEFAULT_PASSWORD);
|
user.setPassword(encodePassword);
|
return userService.save(user) ? R.ok() : R.fail("账号添加失败,请重试");
|
}
|
|
/**
|
* 获取用户列表
|
*/
|
@RequiresPermissions("system:user:list")
|
@GetMapping("/list")
|
public TableDataInfo list(SysUser user) {
|
startPage();
|
List<SysUser> list = userService.selectUserList(user);
|
return getDataTable(list);
|
}
|
|
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
|
@RequiresPermissions("system:user:export")
|
@PostMapping("/export")
|
public void export(HttpServletResponse response, SysUser user) {
|
List<SysUser> list = userService.selectUserList(user);
|
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
|
util.exportExcel(response, list, "用户数据");
|
}
|
|
@PostMapping("/importTemplate")
|
public void importTemplate(HttpServletResponse response) {
|
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
|
util.importTemplateExcel(response, "用户数据");
|
}
|
|
/**
|
* 获取当前用户信息
|
*/
|
@InnerAuth
|
@GetMapping("/info/{username}")
|
public R<LoginUser> info(@PathVariable("username") String username) {
|
SysUser sysUser = userService.selectUserByUserName(username);
|
if (StringUtils.isNull(sysUser)) {
|
return R.fail("用户名或密码错误");
|
}
|
// 角色集合
|
SysRole roles = permissionService.getRolePermission(sysUser);
|
// 权限集合
|
Set<String> permissions = permissionService.getMenuPermission(sysUser);
|
LoginUser sysUserVo = new LoginUser();
|
sysUserVo.setSysUser(sysUser);
|
sysUserVo.setRole(roles.getRoleName());
|
sysUserVo.setRoleId(roles.getRoleId());
|
sysUserVo.setPermissions(permissions);
|
if (null != sysUser.getFranchiseeId()) {
|
List<String> data = adminClient.cityDetail(sysUser.getFranchiseeId()).getData();
|
sysUserVo.setCityList(data);
|
}
|
return R.ok(sysUserVo);
|
}
|
|
/**
|
* 获取用户信息
|
*
|
* @return 用户信息
|
*/
|
@GetMapping("getInfo")
|
public AjaxResult getInfo() {
|
SysUser user = userService.selectUserById(SecurityUtils.getUserId());
|
// 角色集合
|
SysRole roles = permissionService.getRolePermission(user);
|
// 权限集合
|
Set<String> permissions = permissionService.getMenuPermission(user);
|
AjaxResult ajax = AjaxResult.success();
|
ajax.put("user", user);
|
ajax.put("roles", roles);
|
ajax.put("permissions", permissions);
|
return ajax;
|
}
|
|
/**
|
* 根据用户编号获取详细信息
|
*/
|
@RequiresPermissions("system:user:query")
|
@GetMapping(value = {"/", "/{userId}"})
|
public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) {
|
userService.checkUserDataScope(userId);
|
AjaxResult ajax = AjaxResult.success();
|
List<SysRole> roles = roleService.selectRoleAll();
|
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
ajax.put("posts", postService.selectPostAll());
|
if (StringUtils.isNotNull(userId)) {
|
SysUser sysUser = userService.selectUserById(userId);
|
ajax.put(AjaxResult.DATA_TAG, sysUser);
|
ajax.put("postIds", postService.selectPostListByUserId(userId));
|
ajax.put("roleId", sysUser.getSysRole().getRoleId());
|
}
|
return ajax;
|
}
|
|
/**
|
* 新增用户
|
*/
|
@RequiresPermissions("system:user:add")
|
@Log(title = "用户管理", businessType = BusinessType.INSERT)
|
@PostMapping
|
public AjaxResult add(@Validated @RequestBody SysUser user) {
|
if (!userService.checkUserNameUnique(user)) {
|
return error("新增用户'" + user.getAccount() + "'失败,登录账号已存在");
|
}
|
user.setCreateBy(SecurityUtils.getUsername());
|
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
|
return toAjax(userService.insertUser(user));
|
}
|
|
public static void main(String[] args) {
|
System.err.println(SecurityUtils.encryptPassword("a123456"));
|
}
|
/**
|
* 修改用户
|
*/
|
@RequiresPermissions("system:user:edit")
|
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
|
@PutMapping
|
public AjaxResult edit(@Validated @RequestBody SysUser user) {
|
userService.checkUserAllowed(user);
|
userService.checkUserDataScope(user.getUserId());
|
if (!userService.checkUserNameUnique(user)) {
|
return error("修改用户'" + user.getNickName() + "'失败,登录账号已存在");
|
}
|
user.setUpdateBy(SecurityUtils.getUsername());
|
return toAjax(userService.updateUser(user));
|
}
|
|
/**
|
* 删除用户
|
*/
|
@RequiresPermissions("system:user:remove")
|
@Log(title = "用户管理", businessType = BusinessType.DELETE)
|
@DeleteMapping("/{userIds}")
|
public AjaxResult remove(@PathVariable Long[] userIds) {
|
if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) {
|
return error("当前用户不能删除");
|
}
|
return toAjax(userService.deleteUserByIds(userIds));
|
}
|
|
/**
|
* 重置密码
|
*/
|
@RequiresPermissions("system:user:edit")
|
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
|
@PutMapping("/resetPwd")
|
public AjaxResult resetPwd(@RequestBody SysUser user) {
|
userService.checkUserAllowed(user);
|
userService.checkUserDataScope(user.getUserId());
|
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
|
user.setUpdateBy(SecurityUtils.getUsername());
|
return toAjax(userService.resetPwd(user));
|
}
|
|
/**
|
* 状态修改
|
*/
|
@RequiresPermissions("system:user:edit")
|
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
|
@PutMapping("/changeStatus")
|
public AjaxResult changeStatus(@RequestBody SysUser user) {
|
userService.checkUserAllowed(user);
|
userService.checkUserDataScope(user.getUserId());
|
user.setUpdateBy(SecurityUtils.getUsername());
|
return toAjax(userService.updateUserStatus(user));
|
}
|
|
/**
|
* 用户授权角色
|
*/
|
@RequiresPermissions("system:user:edit")
|
@Log(title = "用户管理", businessType = BusinessType.GRANT)
|
@PutMapping("/authRole")
|
public AjaxResult insertAuthRole(Long userId, Long roleId) {
|
userService.checkUserDataScope(userId);
|
userService.insertUserAuth(userId, roleId);
|
return success();
|
}
|
|
}
|