/** * 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.oss.service.ISysOssConfigService; import com.zt.core.security.Md5Utils; import com.zt.core.sys.model.SysUser; import com.zt.life.sys.dto.OssDto; 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 ISysOssConfigService sysOssConfigService; @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 page(@ApiIgnore @QueryParam QueryFilter queryFilter) { return PageResult.ok(sysUserService.page(queryFilter)); } @GetMapping("tree") @ApiOperation("用户部门树") public Result> list() { List list = sysUserService.getUserDeptTree(); return Result.ok(list); } @GetMapping("{id}") @ApiOperation("信息") @RequiresPermissions("sys:user:info") public Result get(@PathVariable("id") Long id) { SysUser data = sysUserService.getUserInfo(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> erve(@PathVariable("id") Long id) { List list = sysMapService.getMapsDto(id,"userTeamggroup"); return Result.ok(list); } @GetMapping("getTeamGropFinish") @ApiOperation("信息") public Result> getTeamGropFinish(Long mainId, String type) { List 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 list = sysUserService.list(queryFilter); ExcelUtils.exportExcelToTarget(response, null, list, SysUserExcel.class); } @GetMapping("resetPassword") @ApiOperation("重置密码") public Result 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> 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(); } @PostMapping("getNameById") @ApiOperation("用户名") public Result getNameById(@RequestBody String ids) { sysUserService.getNames(ids); return Result.ok(); } }