You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
5.4 KiB
180 lines
5.4 KiB
/**
|
|
* Copyright (c) 2018 人人开源 All rights reserved.
|
|
*
|
|
* https://www.renren.io
|
|
*
|
|
* 版权所有,侵权必究!
|
|
*/
|
|
|
|
package com.epmet.controller;
|
|
|
|
import com.epmet.commons.tools.exception.ErrorCode;
|
|
import com.epmet.commons.tools.page.PageData;
|
|
import com.epmet.commons.tools.security.bo.ResourceBO;
|
|
import com.epmet.commons.tools.security.password.PasswordUtils;
|
|
import com.epmet.commons.tools.security.user.SecurityUser;
|
|
import com.epmet.commons.tools.security.user.UserDetail;
|
|
import com.epmet.commons.tools.utils.ConvertUtils;
|
|
import com.epmet.commons.tools.utils.ExcelUtils;
|
|
import com.epmet.commons.tools.utils.Result;
|
|
import com.epmet.commons.tools.validator.AssertUtils;
|
|
import com.epmet.commons.tools.validator.ValidatorUtils;
|
|
import com.epmet.commons.tools.validator.group.AddGroup;
|
|
import com.epmet.commons.tools.validator.group.DefaultGroup;
|
|
import com.epmet.commons.tools.validator.group.UpdateGroup;
|
|
import com.epmet.dto.PasswordDTO;
|
|
import com.epmet.dto.SysUserDTO;
|
|
import com.epmet.excel.SysUserExcel;
|
|
import com.epmet.service.SysResourceService;
|
|
import com.epmet.service.SysRoleDataScopeService;
|
|
import com.epmet.service.SysRoleUserService;
|
|
import com.epmet.service.SysUserService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* 用户管理
|
|
*
|
|
* @author Mark sunlightcs@gmail.com
|
|
* @since 1.0.0
|
|
*/
|
|
@RestController
|
|
@RequestMapping("user")
|
|
public class SysUserController {
|
|
@Autowired
|
|
private SysUserService sysUserService;
|
|
@Autowired
|
|
private SysRoleUserService sysRoleUserService;
|
|
@Autowired
|
|
private SysRoleDataScopeService sysRoleDataScopeService;
|
|
@Autowired
|
|
private SysResourceService sysResourceService;
|
|
|
|
@GetMapping("page")
|
|
public Result<PageData<SysUserDTO>> page(@RequestParam Map<String, Object> params){
|
|
PageData<SysUserDTO> page = sysUserService.page(params);
|
|
|
|
return new Result<PageData<SysUserDTO>>().ok(page);
|
|
}
|
|
|
|
@GetMapping("{id}")
|
|
public Result<SysUserDTO> get(@PathVariable("id") Long id){
|
|
SysUserDTO data = sysUserService.get(id);
|
|
|
|
//用户角色列表
|
|
List<Long> roleIdList = sysRoleUserService.getRoleIdList(id);
|
|
data.setRoleIdList(roleIdList);
|
|
|
|
return new Result<SysUserDTO>().ok(data);
|
|
}
|
|
|
|
@GetMapping("info")
|
|
public Result<SysUserDTO> info(UserDetail user){
|
|
SysUserDTO data = ConvertUtils.sourceToTarget(user, SysUserDTO.class);
|
|
return new Result<SysUserDTO>().ok(data);
|
|
}
|
|
|
|
@PostMapping
|
|
public Result save(@RequestBody SysUserDTO dto){
|
|
//效验数据
|
|
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
|
|
|
|
sysUserService.save(dto);
|
|
|
|
return new Result();
|
|
}
|
|
|
|
@PutMapping
|
|
public Result update(@RequestBody SysUserDTO dto){
|
|
//效验数据
|
|
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
|
|
|
|
sysUserService.update(dto);
|
|
|
|
return new Result();
|
|
}
|
|
|
|
@PutMapping("password")
|
|
public Result password(@RequestBody PasswordDTO dto){
|
|
//效验数据
|
|
ValidatorUtils.validateEntity(dto);
|
|
|
|
UserDetail user = SecurityUser.getUser();
|
|
|
|
//原密码不正确
|
|
if(!PasswordUtils.matches(dto.getPassword(), user.getPassword())){
|
|
return new Result().error(ErrorCode.PASSWORD_ERROR);
|
|
}
|
|
|
|
sysUserService.updatePassword(user.getId(), dto.getNewPassword());
|
|
|
|
return new Result();
|
|
}
|
|
|
|
@DeleteMapping
|
|
public Result delete(@RequestBody Long[] ids){
|
|
//效验数据
|
|
AssertUtils.isArrayEmpty(ids, "id");
|
|
|
|
sysUserService.delete(ids);
|
|
|
|
return new Result();
|
|
}
|
|
|
|
@GetMapping("export")
|
|
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
|
|
List<SysUserDTO> list = sysUserService.list(params);
|
|
|
|
ExcelUtils.exportExcelToTarget(response, null, list, SysUserExcel.class);
|
|
}
|
|
|
|
/**
|
|
* 根据用户名,获取用户信息
|
|
*/
|
|
@GetMapping("getByUsername")
|
|
public Result<UserDetail> getByUsername(String username){
|
|
SysUserDTO user = sysUserService.getByUsername(username);
|
|
|
|
UserDetail userDetail = ConvertUtils.sourceToTarget(user, UserDetail.class);
|
|
//初始化用户数据
|
|
initUserData(userDetail);
|
|
|
|
return new Result<UserDetail>().ok(userDetail);
|
|
}
|
|
|
|
/**
|
|
* 根据用户ID,获取用户信息
|
|
*/
|
|
@GetMapping("getById")
|
|
public Result<UserDetail> getById(Long id){
|
|
SysUserDTO user = sysUserService.get(id);
|
|
|
|
UserDetail userDetail = ConvertUtils.sourceToTarget(user, UserDetail.class);
|
|
//初始化用户数据
|
|
initUserData(userDetail);
|
|
|
|
return new Result<UserDetail>().ok(userDetail);
|
|
}
|
|
|
|
/**
|
|
* 初始化用户数据
|
|
*/
|
|
private void initUserData(UserDetail userDetail){
|
|
if(userDetail == null){
|
|
return;
|
|
}
|
|
|
|
//用户部门数据权限
|
|
List<Long> deptIdList = sysRoleDataScopeService.getDataScopeList(userDetail.getId());
|
|
userDetail.setDeptIdList(deptIdList);
|
|
|
|
//用户资源列表
|
|
List<ResourceBO> resourceList = sysResourceService.getUserResourceList(userDetail.getId());
|
|
userDetail.setResourceList(resourceList);
|
|
}
|
|
|
|
}
|
|
|