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

/**
* 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);
}
}