| /** | 
|  * 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<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.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<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(); | 
|     } | 
|     @PostMapping("getNameById") | 
|     @ApiOperation("用户名") | 
|     public Result getNameById(@RequestBody String ids) { | 
|         sysUserService.getNames(ids); | 
|         return Result.ok(); | 
|     } | 
| } |