/**
|
* Copyright (c) 2018 人人开源 All rights reserved.
|
*
|
* https://www.renren.io
|
*
|
* 版权所有,侵权必究!
|
*/
|
|
package com.zt.modules.sys.controller;
|
|
import com.zt.common.annotation.DataFilter;
|
import com.zt.common.annotation.DataFilters;
|
import com.zt.common.annotation.LogOperation;
|
import com.zt.common.annotation.QueryParam;
|
import com.zt.common.constant.Constant;
|
import com.zt.common.db.constant.AcceptValues;
|
import com.zt.common.db.query.QueryFilter;
|
import com.zt.common.exception.ErrorCode;
|
import com.zt.common.servlet.PageResult;
|
import com.zt.common.servlet.Result;
|
import com.zt.common.utils.ExcelUtils;
|
import com.zt.common.validator.AssertUtils;
|
import com.zt.common.validator.ValidatorUtils;
|
import com.zt.common.validator.group.AddGroup;
|
import com.zt.common.validator.group.DefaultGroup;
|
import com.zt.common.validator.group.UpdateGroup;
|
import com.zt.core.context.User;
|
import com.zt.core.context.UserContext;
|
import com.zt.core.security.Md5Utils;
|
import com.zt.core.sys.model.SysUser;
|
import com.zt.modules.sys.dto.MapDto;
|
import com.zt.modules.sys.dto.PasswordDto;
|
import com.zt.modules.sys.dto.UserRoleDto;
|
import com.zt.modules.sys.dto.UserTreeDto;
|
import com.zt.modules.sys.excel.SysUserExcel;
|
import com.zt.modules.sys.model.SysMap;
|
import com.zt.modules.sys.service.*;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import springfox.documentation.annotations.ApiIgnore;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 用户管理
|
*
|
* @author hehz
|
*/
|
@RestController
|
@RequestMapping("/sys/user")
|
@Api(tags = "用户管理")
|
public class SysUserController {
|
@Autowired
|
private SysUserService sysUserService;
|
@Autowired
|
private SysRoleUserService sysRoleUserService;
|
@Autowired
|
private SysPostUserService sysPostUserService;
|
@Autowired
|
private SysJobUserService sysJobUserService;
|
|
@Autowired
|
private SysMapService sysMapService;
|
|
@GetMapping("page")
|
@ApiOperation("分页")
|
@DataFilters({
|
@DataFilter(field = Constant.Field.COMPANY, accept = AcceptValues.COMPANY, defaul = AcceptValues.Company.CURRENT_IDS),
|
@DataFilter(field = Constant.Field.DEPT, accept = AcceptValues.DEPT),
|
@DataFilter(name = "用户性别", field = "a.gender", accept = AcceptValues.DICT, dict = "gender") })
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
|
@ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
|
@ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
|
@ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
|
@ApiImplicitParam(name = "username", value = "用户名", dataType = Constant.QT.STRING, format = "username^LK"),
|
@ApiImplicitParam(name = "companyId", value = "公司id", required = true, dataType = Constant.QT.LONG, format = "company_id^EQ"),
|
@ApiImplicitParam(name = "deptId", value = "部门ID", dataType = Constant.QT.LONG, format = "dept_id^EQ") })
|
@RequiresPermissions("sys:user:page")
|
public PageResult<SysUser> page(@ApiIgnore @QueryParam QueryFilter queryFilter) {
|
return PageResult.ok(sysUserService.page(queryFilter));
|
}
|
|
@GetMapping("tree")
|
@ApiOperation("用户部门树")
|
public Result<List<UserTreeDto>> list() {
|
List<UserTreeDto> list = sysUserService.getUserDeptTree();
|
|
return Result.ok(list);
|
}
|
|
@GetMapping("{id}")
|
@ApiOperation("信息")
|
@RequiresPermissions("sys:user:info")
|
public Result<SysUser> get(@PathVariable("id") Long id) {
|
SysUser data = sysUserService.get(id);
|
|
// 用户岗位列表
|
data.setPostIdList(sysPostUserService.getUserPosts(id).stream().map(post -> post.getId())
|
.collect(Collectors.toList()));
|
// 用户职位列表
|
data.setJobIdList(sysJobUserService.getUserJobs(id).stream().map(job -> job.getId())
|
.collect(Collectors.toList()));
|
|
data.setTeamgroupIds(sysMapService.getIds(id,"userTeamggroup"));
|
data.setShipIds(sysMapService.getIds(id,"userShip"));
|
return Result.ok(data);
|
}
|
|
@GetMapping("getUserTeamGrop")
|
@ApiOperation("信息")
|
public Result<List<MapDto>> erve(@PathVariable("id") Long id) {
|
List<MapDto> list = sysMapService.getMapsDto(id,"userTeamggroup");
|
return Result.ok(list);
|
}
|
|
@GetMapping("getTeamGropFinish")
|
@ApiOperation("信息")
|
public Result<List<SysMap>> getTeamGropFinish(Long mainId, String type) {
|
List<SysMap> list = sysMapService.getMaps(mainId,type);
|
return Result.ok(list);
|
}
|
|
@GetMapping("insertData")
|
@ApiOperation("信息")
|
public Result insertData(String type, Long mainId, String subIds) {
|
sysMapService.insertData(type, mainId, subIds);
|
return Result.ok();
|
}
|
|
@PostMapping
|
@ApiOperation("新增")
|
@LogOperation("用户管理--->新增")
|
//@RequiresPermissions("sys:user")
|
public Result insert(@RequestBody SysUser entity) {
|
// 效验数据
|
ValidatorUtils.validateEntity(entity, AddGroup.class, DefaultGroup.class);
|
|
entity.setSuperAdmin(false);
|
|
sysUserService.insert(entity);
|
|
return Result.ok();
|
}
|
|
@PutMapping
|
@ApiOperation("修改")
|
@LogOperation("用户管理--->修改")
|
@RequiresPermissions("sys:user:update")
|
public Result update(@RequestBody SysUser entity) {
|
// 效验数据
|
ValidatorUtils.validateEntity(entity, UpdateGroup.class, DefaultGroup.class);
|
|
sysUserService.update(entity);
|
|
return Result.ok();
|
}
|
|
@DeleteMapping
|
@ApiOperation("删除")
|
@LogOperation("用户管理--->删除")
|
@RequiresPermissions("sys:user:delete")
|
public Result delete(@RequestBody Long[] ids) {
|
// 效验数据
|
AssertUtils.isArrayEmpty(ids, "id");
|
|
sysUserService.delete(ids);
|
|
return Result.ok();
|
}
|
|
@GetMapping("export")
|
@ApiOperation("导出")
|
@LogOperation("导出")
|
@RequiresPermissions("sys:user:export")
|
@ApiImplicitParam(name = "username", value = "用户名", dataType = Constant.QT.STRING, format = "username^LK")
|
public void export(@ApiIgnore @QueryParam QueryFilter queryFilter, HttpServletResponse response) throws Exception {
|
List<SysUser> list = sysUserService.list(queryFilter);
|
|
ExcelUtils.exportExcelToTarget(response, null, list, SysUserExcel.class);
|
}
|
|
@GetMapping("resetPassword")
|
@ApiOperation("重置密码")
|
public Result<SysUser> resetPassword(@QueryParam Long id) {
|
sysUserService.resetPassword(id);
|
// 用户角色列表
|
return Result.ok();
|
}
|
|
@PutMapping("password")
|
@ApiOperation("修改密码")
|
@LogOperation("用户管理--->修改密码")
|
public Result password(@RequestBody PasswordDto dto) {
|
// 效验数据
|
ValidatorUtils.validateEntity(dto);
|
|
User user = UserContext.getUser();
|
|
// 原密码不正确
|
if (!Md5Utils.hash(dto.getPassword()).equals(user.getPassword())) {
|
return Result.ok().error(ErrorCode.PASSWORD_ERROR);
|
}
|
|
sysUserService.updatePassword(user.getId(), dto.getNewPassword());
|
|
return Result.ok();
|
}
|
|
@GetMapping("{id}/role")
|
@ApiOperation("用户角色列表")
|
@RequiresPermissions("sys:user:role")
|
public Result<List<Long>> getRole(@PathVariable("id") Long id) {
|
|
return Result.ok(sysRoleUserService.getUserRoles(id).stream().map(role -> role.getId())
|
.collect(Collectors.toList()));
|
}
|
|
@PostMapping("role")
|
@ApiOperation("用户角色列表")
|
@RequiresPermissions("sys:user:role")
|
public Result saveRole(@RequestBody UserRoleDto dto) {
|
sysRoleUserService.saveOrUpdate(dto.getUserId(), dto.getRoleIdList());
|
return Result.ok();
|
}
|
}
|