| package com.ruoyi.system.controller; | 
|   | 
| import java.util.*; | 
| import java.util.stream.Collectors; | 
| import javax.annotation.Resource; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
| import com.ruoyi.chargingPile.api.feignClient.SiteClient; | 
| import com.ruoyi.chargingPile.api.model.Site; | 
| import com.ruoyi.common.core.utils.StringUtils; | 
| import com.ruoyi.common.core.web.page.PageInfo; | 
| import com.ruoyi.other.api.domain.TUserSite; | 
| import com.ruoyi.other.api.feignClient.RoleSiteClient; | 
| import com.ruoyi.other.api.feignClient.UserSiteClient; | 
| import com.ruoyi.system.api.query.ChangeUserQuery; | 
| import com.ruoyi.system.api.model.*; | 
| import com.ruoyi.system.domain.SysUserRole; | 
| import com.ruoyi.system.query.GetSysUserList; | 
| import com.ruoyi.system.query.ShopUserStart; | 
| import com.ruoyi.system.service.*; | 
| import io.seata.spring.annotation.GlobalTransactional; | 
| import io.swagger.annotations.Api; | 
| import io.swagger.annotations.ApiOperation; | 
| import org.apache.commons.lang3.ArrayUtils; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.validation.annotation.Validated; | 
| import org.springframework.web.bind.annotation.*; | 
| import com.ruoyi.common.core.domain.R; | 
| import com.ruoyi.common.core.web.controller.BaseController; | 
| import com.ruoyi.common.core.web.domain.AjaxResult; | 
| import com.ruoyi.common.log.annotation.Log; | 
| import com.ruoyi.common.log.enums.BusinessType; | 
| import com.ruoyi.common.security.annotation.InnerAuth; | 
| import com.ruoyi.common.security.annotation.RequiresPermissions; | 
| import com.ruoyi.common.security.utils.SecurityUtils; | 
| import com.ruoyi.system.api.domain.SysDept; | 
| import com.ruoyi.system.api.domain.SysRole; | 
| import com.ruoyi.system.api.domain.SysUser; | 
|   | 
| /** | 
|  * 用户信息 | 
|  * | 
|  * @author ruoyi | 
|  */ | 
| @RestController | 
| @RequestMapping("/user") | 
| @Api(tags = "用户信息") | 
| public class SysUserController extends BaseController { | 
|     @Resource | 
|     private ISysUserService userService; | 
|   | 
|     @Resource | 
|     private ISysRoleService roleService; | 
|   | 
|     @Resource | 
|     private ISysDeptService deptService; | 
|   | 
|     @Resource | 
|     private ISysPostService postService; | 
|   | 
|     @Resource | 
|     private ISysPermissionService permissionService; | 
|   | 
|     @Resource | 
|     private ISysConfigService configService; | 
|   | 
|     @Resource | 
|     private ISysUserRoleService userRoleService; | 
|   | 
|     @Resource | 
|     private ISysUserRoleService sysUserRoleService; | 
|      | 
|     @Resource | 
|     private UserSiteClient userSiteClient; | 
|      | 
|     @Resource | 
|     private RoleSiteClient roleSiteClient; | 
|      | 
|     @Resource | 
|     private SiteClient siteClient; | 
|      | 
|      | 
|      | 
|      | 
|      | 
|     /** | 
|      * 获取用户列表 | 
|      */ | 
|     @GetMapping("/list") | 
|     @ApiOperation(value = "获取系统用户列表", tags = {"管理后台-系统用户管理", "管理后台-角色管理"}) | 
|     public AjaxResult list(GetSysUserList getSysUserList) { | 
|         PageInfo<SysUser> pageInfo = new PageInfo<>(getSysUserList.getPageCurr(), getSysUserList.getPageSize()); | 
|         PageInfo<SysUser> page = userService.getList(pageInfo, getSysUserList); | 
|         return AjaxResult.success(page); | 
|     } | 
|   | 
|     /** | 
|      * 获取用户选择列表 | 
|      */ | 
|     @PostMapping("/getChangeUserList") | 
|     @ApiOperation(value = "获取用户选择列表", tags = {"管理后台-获取用户选择列表"}) | 
|     public AjaxResult<PageInfo<SysUser>> getChangeUserList(@RequestBody ChangeUserQuery query) { | 
|         return AjaxResult.success(userService.getChangeUserList(query)); | 
|     } | 
|   | 
|     /** | 
|      * 新增用户 | 
|      */ | 
|     @Log(title = "用户管理", businessType = BusinessType.INSERT) | 
|     @PostMapping("/add") | 
|     @ApiOperation(value = "添加系统用户", tags = {"管理后台-系统用户管理"}) | 
|     @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 | 
|     public AjaxResult add(@RequestBody SysUser user) { | 
|         user.setUserName(user.getPhonenumber()); | 
|         if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){ | 
|             user.setNickName(user.getPhonenumber()); | 
|         } | 
|         if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { | 
|             return error("手机号已开通账号"); | 
|         } | 
|         if (StringUtils.isNotEmpty(user.getUserName()) && !userService.checkUserNameUnique(user)) { | 
|             return error("登录账号重复"); | 
|         } | 
|         user.setCreateBy(SecurityUtils.getUsername()); | 
|         user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | 
|         user.setRoleType(1); | 
|         userService.insertUser(user); | 
|         SysUserRole sysUserRole = new SysUserRole(); | 
|         sysUserRole.setRoleId(user.getRoleId()); | 
|         sysUserRole.setUserId(user.getUserId()); | 
|         userRoleService.insertSysUserRole(sysUserRole); | 
|         List<Integer> siteIds = user.getSiteIds(); | 
|         List<TUserSite> userSites = new ArrayList<>(); | 
|         for (Integer siteId : siteIds) { | 
|             TUserSite userSite = new TUserSite(); | 
|             userSite.setUserId(user.getUserId().intValue()); | 
|             userSite.setSiteId(siteId); | 
|             userSites.add(userSite); | 
|         } | 
|         userSiteClient.addUserSite(userSites); | 
|         return AjaxResult.success(); | 
|     } | 
|      | 
|      | 
|     @GetMapping("/verifyUserNameRepeat/{username}") | 
|     @ApiOperation(value = "校验账号是否重复", tags = {"管理后台-系统用户管理"}) | 
|     public AjaxResult verifyUserNameRepeat(@PathVariable String username){ | 
|         SysUser user = new SysUser(); | 
|         user.setUserName(username); | 
|         if (StringUtils.isNotEmpty(username) && !userService.checkUserNameUnique(user)) { | 
|             return error("账号不可重复"); | 
|         } | 
|         return success(); | 
|     } | 
|      | 
|     @GetMapping("/getRoleSiteName/{roleId}") | 
|     @ApiOperation(value = "获取角色对应的站点名称", tags = {"管理后台-系统用户管理"}) | 
|     public AjaxResult<List<String>> getRoleSiteName(@PathVariable Integer roleId){ | 
|         List<Integer> ids = roleSiteClient.getSiteIds(roleId.longValue()).getData(); | 
|         List<Site> data = siteClient.getSiteByIds(ids).getData(); | 
|         if(null == data){ | 
|             return AjaxResult.success(new ArrayList<>()); | 
|         } | 
|         List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList()); | 
|         return AjaxResult.success(siteNames); | 
|     } | 
|      | 
|      | 
|      | 
|      | 
|     /** | 
|      * 根据用户编号获取详细信息 | 
|      */ | 
|     @ApiOperation(value = "获取用户详情", tags = {"管理后台-系统用户管理"}) | 
|     @GetMapping("/getInfo/{userId}") | 
|     public AjaxResult getInfo(@PathVariable Long userId) { | 
|         userService.checkUserDataScope(userId); | 
|         AjaxResult ajax = AjaxResult.success(); | 
|         List<SysRole> roles = roleService.selectRoleAll(); | 
|         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); | 
|         ajax.put("posts", postService.selectPostAll()); | 
|         if (StringUtils.isNotNull(userId)) { | 
|             SysUser sysUser = userService.selectUserById(userId); | 
|             List<Integer> siteIds = userSiteClient.getSiteIds(userId).getData(); | 
|             sysUser.setSiteIds(siteIds); | 
|             List<Site> data = siteClient.getSiteByIds(siteIds).getData(); | 
|             List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList()); | 
|             sysUser.setSiteNames(siteNames); | 
|             ajax.put(AjaxResult.DATA_TAG, sysUser); | 
|             ajax.put("postIds", postService.selectPostListByUserId(userId)); | 
|             ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); | 
|         } | 
|         return AjaxResult.success(ajax); | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 修改用户 | 
|      */ | 
|     @Log(title = "用户管理", businessType = BusinessType.UPDATE) | 
|     @PutMapping("/update") | 
|     @ApiOperation(value = "编辑系统用户", tags = {"管理后台-系统用户管理"}) | 
|     @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 | 
|     public AjaxResult edit(@Validated @RequestBody SysUser user) { | 
|         user.setUserName(user.getPhonenumber()); | 
|         if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){ | 
|             user.setNickName(user.getPhonenumber()); | 
|         } | 
|         R<Integer> admin = this.isAdmin(user.getUserId()); | 
|         Integer data = admin.getData(); | 
|         if(data == null || data != 1){ | 
|             SysUserRole one = sysUserRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, user.getUserId())); | 
|             one.setRoleId(user.getRoleId()); | 
|             sysUserRoleService.updateSysUserRole(one); | 
|         } | 
|         userService.checkUserAllowed(user); | 
|         userService.checkUserDataScope(user.getUserId()); | 
|         SysUser sysUser = userService.getOne(Wrappers.lambdaQuery(SysUser.class) | 
|                 .eq(SysUser::getPhonenumber, user.getPhonenumber()) | 
|                 .eq(SysUser::getDelFlag,0) | 
|                 .last("LIMIT 1")); | 
|   | 
|         if (StringUtils.isNotEmpty(user.getPhonenumber()) && (Objects.nonNull(sysUser) && !user.getUserId().equals(sysUser.getUserId()) )) { | 
|             return error("手机号已开通账号"); | 
|         } | 
|         sysUser = userService.getOne(Wrappers.lambdaQuery(SysUser.class) | 
|                 .eq(SysUser::getUserName, user.getUserName()) | 
|                 .eq(SysUser::getDelFlag,0) | 
|                 .last("LIMIT 1")); | 
|         if (StringUtils.isNotEmpty(user.getUserName()) && (Objects.nonNull(sysUser) && !user.getUserId().equals(sysUser.getUserId()) )) { | 
|             return error("登录账号重复"); | 
|         } | 
|         user.setUpdateBy(SecurityUtils.getUsername()); | 
|         if (user.getPassword() != null && !"".equals(user.getPassword())) { | 
|             user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | 
|             user.setPassWordUpdate(new Date()); | 
|         } | 
|         if (user.getPhonenumber() != null) { | 
|             user.setUserName(user.getPhonenumber()); | 
|         } | 
|         user.setUpdateBy(SecurityUtils.getUsername()); | 
|         user.setUpdateTime(new Date()); | 
|         userService.updateUser(user); | 
|      | 
|         //删除旧的站点数据后添加新的 | 
|         userSiteClient.delUserSite(user.getUserId()); | 
|         List<Integer> siteIds = user.getSiteIds(); | 
|         List<TUserSite> userSites = new ArrayList<>(); | 
|         for (Integer siteId : siteIds) { | 
|             TUserSite userSite = new TUserSite(); | 
|             userSite.setUserId(user.getUserId().intValue()); | 
|             userSite.setSiteId(siteId); | 
|             userSites.add(userSite); | 
|         } | 
|         userSiteClient.addUserSite(userSites); | 
|         return success(); | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 删除用户 | 
|      */ | 
|     @Log(title = "用户管理", businessType = BusinessType.DELETE) | 
|     @DeleteMapping("/{userIds}") | 
|     @ApiOperation(value = "删除系统用户", tags = {"管理后台-系统用户管理"}) | 
|     public AjaxResult remove(@PathVariable Long[] userIds) { | 
|         if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) { | 
|             return error("当前用户不能删除"); | 
|         } | 
|         return toAjax(userService.deleteUserByIds(userIds)); | 
|     } | 
|   | 
|      | 
|   | 
|   | 
|     @PostMapping("/shopUserStart") | 
|     @ApiOperation(value = "账号管理--禁用/启用", tags = {"管理后台-系统用户管理"}) | 
|     public AjaxResult shopUserStart(@RequestBody ShopUserStart shopUserStart) { | 
|         if (shopUserStart.getUserId() == null) { | 
|             return AjaxResult.error("userId不能为空"); | 
|         } | 
|         SysUser sysUser = userService.selectUserById(shopUserStart.getUserId()); | 
|         if (sysUser.getStatus().equals("0")) { | 
|             sysUser.setStatus("1"); | 
|             sysUser.setForbiddenRemark(shopUserStart.getRemark()); | 
|         } else { | 
|             sysUser.setStatus("0"); | 
|             sysUser.setForbiddenRemark(""); | 
|         } | 
|         return toAjax(userService.updateUser(sysUser)); | 
|     } | 
|   | 
|   | 
|     @PostMapping("/getUserList") | 
|     public R<List<SysUser>> getUserList(@RequestBody List<Integer> userIds) { | 
|         List<SysUser> list = userService.list(new LambdaQueryWrapper<SysUser>().in(SysUser::getUserId, userIds)); | 
|         return R.ok(list); | 
|     } | 
|   | 
|     @PostMapping("/getSysUserFromCompanyId") | 
|     public R<List<CompanyUserListVo>> getSysUserFromCompanyId(@RequestBody CompanySysUserReq companySysUserReq) { | 
|         LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); | 
|         if (companySysUserReq.getUserIds().size() == 0) { | 
|             List<Integer> userIds = companySysUserReq.getUserIds(); | 
|             userIds.add(-1); | 
|             companySysUserReq.setUserIds(userIds); | 
|         } | 
|         sysUserLambdaQueryWrapper.in(SysUser::getUserId, companySysUserReq.getUserIds()); | 
|         if (companySysUserReq.getName() != null && !"".equals(companySysUserReq.getName())) { | 
|             sysUserLambdaQueryWrapper.like(SysUser::getUserName, companySysUserReq.getName()).or().like(SysUser::getPhonenumber, companySysUserReq.getName()); | 
|         } | 
|         sysUserLambdaQueryWrapper.eq(SysUser::getRoleType,2); | 
|         List<SysUser> list = userService.list(sysUserLambdaQueryWrapper); | 
|         ArrayList<CompanyUserListVo> companyUserListVos = new ArrayList<>(); | 
|         for (SysUser sysUser : list) { | 
|             CompanyUserListVo companyUserListVo = new CompanyUserListVo(); | 
|             companyUserListVo.setId(sysUser.getUserId()); | 
|             companyUserListVo.setPassword(sysUser.getPassword()); | 
|             companyUserListVo.setPhoneNumber(sysUser.getPhonenumber()); | 
|             companyUserListVo.setUserName(sysUser.getUserName()); | 
|             companyUserListVo.setNickName(sysUser.getNickName()); | 
|             companyUserListVos.add(companyUserListVo); | 
|         } | 
|         return R.ok(companyUserListVos); | 
|     } | 
|   | 
|     @PostMapping("/getSysUserFromCompanyIdOne") | 
|     public R<List<CompanyUserListVo>> getSysUserFromCompanyIdOne(@RequestBody CompanySysUserReq companySysUserReq) { | 
|         LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); | 
|         sysUserLambdaQueryWrapper.eq(SysUser::getRoleType, 2); | 
|         if (companySysUserReq.getName() != null && !"".equals(companySysUserReq.getName())) { | 
|             sysUserLambdaQueryWrapper.like(SysUser::getPhonenumber, companySysUserReq.getName()); | 
|         } | 
|         List<SysUser> list = userService.list(sysUserLambdaQueryWrapper); | 
|         ArrayList<CompanyUserListVo> companyUserListVos = new ArrayList<>(); | 
|         for (SysUser sysUser : list) { | 
|             CompanyUserListVo companyUserListVo = new CompanyUserListVo(); | 
|             companyUserListVo.setId(sysUser.getUserId()); | 
|             companyUserListVo.setPassword(sysUser.getPassword()); | 
|             companyUserListVo.setPhoneNumber(sysUser.getPhonenumber()); | 
|             companyUserListVo.setUserName(sysUser.getUserName()); | 
|             companyUserListVo.setNickName(sysUser.getNickName()); | 
|             companyUserListVos.add(companyUserListVo); | 
|         } | 
|         return R.ok(companyUserListVos); | 
|     } | 
|     @PostMapping("/isAdmin") | 
|     public R<Integer> isAdmin(@RequestBody Long userId){ | 
|         SysUserRole one = sysUserRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId)); | 
|         Long id =one.getRoleId(); | 
|         return R.ok(id.intValue()); | 
|     } | 
|   | 
|     @PostMapping("/getSysUser") | 
|     public R<SysUser> getSysUser(@RequestBody Long userId) { | 
|         try { | 
|             SysUser sysUser = userService.selectUserById(userId); | 
|             return R.ok(sysUser); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|             return R.ok(); | 
|         } | 
|     } | 
|   | 
|     @PostMapping("/updateSysUser") | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public R<Boolean> updateSysUser(@RequestBody SysUser sysUser) { | 
|         try { | 
|             sysUser.setUpdateBy(SecurityUtils.getUsername()); | 
|             sysUser.setUpdateTime(new Date()); | 
|             userService.updateUser(sysUser); | 
|             if(null != sysUser.getRoleId()){ | 
|                 userRoleService.deleteSysUserRoleByUserId(sysUser.getUserId()); | 
|                 SysUserRole sysUserRole = new SysUserRole(); | 
|                 sysUserRole.setRoleId(sysUser.getRoleId()); | 
|                 sysUserRole.setUserId(sysUser.getUserId()); | 
|                 userRoleService.insertSysUserRole(sysUserRole); | 
|             } | 
|             return R.ok(true); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|             return R.fail(); | 
|         } | 
|     } | 
|   | 
|   | 
|     @PostMapping("/companySaveSysUser") | 
|     public R<List<Integer>> companySaveSysUser(@RequestBody CompanyAddSysUserDto dto) { | 
|         List<CompanyUserListVo> list = dto.getList(); | 
|         ArrayList<Integer> userIds = new ArrayList<>(); | 
|         try { | 
|             for (CompanyUserListVo companyUserListVo : list) { | 
|                     List<Long> ids = userService.getSysUserFromPhone(companyUserListVo.getPhoneNumber()); | 
|                 SysUser sysUser = new SysUser(); | 
|                     if (ids.size() > 0) { | 
|                         sysUser.setRoleType(2); | 
|                         sysUser.setObjectId(dto.getCompanyId()); | 
|                         if(companyUserListVo.getPassword()!=null){ | 
|                             sysUser.setPassword(SecurityUtils.encryptPassword(companyUserListVo.getPassword())); | 
|                         } | 
|                         sysUser.setPhonenumber(companyUserListVo.getPhoneNumber()); | 
|                         sysUser.setUserName(companyUserListVo.getPhoneNumber()); | 
|                         sysUser.setNickName(companyUserListVo.getNickName()); | 
|                         sysUser.setUserId(ids.get(0).longValue()); | 
|                         userService.updateUser(sysUser); | 
|                         userIds.add(ids.get(0).intValue()); | 
|                     } else { | 
|   | 
|                         sysUser.setRoleType(2); | 
|                         sysUser.setObjectId(dto.getCompanyId()); | 
|                         if(companyUserListVo.getPassword()!=null){ | 
|                             sysUser.setPassword(SecurityUtils.encryptPassword(companyUserListVo.getPassword())); | 
|                         } | 
|                         sysUser.setPhonenumber(companyUserListVo.getPhoneNumber()); | 
|                         sysUser.setUserName(companyUserListVo.getPhoneNumber()); | 
|                         sysUser.setNickName(companyUserListVo.getNickName()); | 
|                         sysUser.setCreateBy(SecurityUtils.getUsername()); | 
|                         sysUser.setCreateTime(new Date()); | 
|                         userService.insertUser(sysUser); | 
|                         SysUserRole sysUserRole = new SysUserRole(); | 
|                         sysUserRole.setRoleId(20l); | 
|                         sysUserRole.setUserId(sysUser.getUserId()); | 
|                         sysUserRoleService.insertSysUserRole(sysUserRole); | 
|                         userIds.add(sysUser.getUserId().intValue()); | 
|                     } | 
|             } | 
|             return R.ok(userIds); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|             return R.ok(new ArrayList<>()); | 
|         } | 
|     } | 
|   | 
|   | 
|     @PostMapping("/addTRepairSysUser") | 
|     public R<List<Integer>> addTRepairSysUser(@RequestBody TRepairShopAddDto dto) { | 
|         List<TRepairShopAdd> list = dto.getList(); | 
|         ArrayList<Integer> userIds = new ArrayList<>(); | 
|         try { | 
|             for (TRepairShopAdd add : list) { | 
|                 List<Long> ids = userService.getSysUserFromPhone(add.getPhonenumber()); | 
|                 if (ids.size() > 0) { | 
|                     userIds.add(ids.get(0).intValue()); | 
|                 } else { | 
|                     SysUser sysUser = new SysUser(); | 
|                     sysUser.setPhonenumber(add.getPhonenumber()); | 
|                     sysUser.setCreateTime(new Date()); | 
|                     sysUser.setCreateBy(SecurityUtils.getUsername()); | 
|                     sysUser.setPassword(SecurityUtils.encryptPassword(add.getPwd())); | 
|                     sysUser.setRoleType(4); | 
|                     sysUser.setObjectId(dto.getRepairId()); | 
|                     sysUser.setUserName(add.getPhonenumber()); | 
|                     sysUser.setNickName(add.getPhonenumber()); | 
|                     userService.insertUser(sysUser); | 
|                     userIds.add(sysUser.getUserId().intValue()); | 
|                 } | 
|             } | 
|             return R.ok(userIds); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|             return R.ok(new ArrayList<>()); | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 获取当前用户信息 | 
|      */ | 
|     @InnerAuth | 
|     @GetMapping("/info/{username}") | 
|     public R<LoginUser> info(@PathVariable("username") String username) { | 
|         SysUser sysUser = userService.selectUserByUserName(username); | 
|         if (StringUtils.isNull(sysUser)) { | 
|             return R.fail("用户名或密码错误"); | 
|         } | 
|         // 角色集合 | 
|         Set<String> roles = permissionService.getRolePermission(sysUser); | 
|         // 权限集合 | 
|         Set<String> permissions = permissionService.getMenuPermission(sysUser); | 
|         LoginUser sysUserVo = new LoginUser(); | 
|         sysUserVo.setSysUser(sysUser); | 
|         sysUserVo.setRoles(roles); | 
|         sysUserVo.setPermissions(permissions); | 
|   | 
|         return R.ok(sysUserVo); | 
|     } | 
|   | 
|     /** | 
|      * 注册用户信息 | 
|      */ | 
|     @PostMapping("/register") | 
|     public R<Boolean> register(@RequestBody SysUser sysUser) { | 
|         String username = sysUser.getUserName(); | 
|         if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) { | 
|             return R.fail("当前系统没有开启注册功能!"); | 
|         } | 
|         if (!userService.checkUserNameUnique(sysUser)) { | 
|             return R.fail("保存用户'" + username + "'失败,注册账号已存在"); | 
|         } | 
|         return R.ok(userService.registerUser(sysUser)); | 
|     } | 
|   | 
|     /** | 
|      * 获取用户信息 | 
|      * | 
|      * @return 用户信息 | 
|      */ | 
|     @GetMapping("/getInfo") | 
|     public AjaxResult getInfo() { | 
|         SysUser user = userService.selectUserById(SecurityUtils.getUserId()); | 
|         // 角色集合 | 
|         Set<String> roles = permissionService.getRolePermission(user); | 
|         // 权限集合 | 
|         Set<String> permissions = permissionService.getMenuPermission(user); | 
|         AjaxResult ajax = AjaxResult.success(); | 
|         ajax.put("user", user); | 
|         ajax.put("roles", roles); | 
|         ajax.put("permissions", permissions); | 
|         return ajax; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 重置密码 | 
|      */ | 
|     @Log(title = "用户管理", businessType = BusinessType.UPDATE) | 
|     @PutMapping("/resetPwd") | 
|     @ApiOperation(value = "重置密码", tags = {"管理后台-系统用户管理"}) | 
|     public AjaxResult resetPwd(@RequestBody SysUser user) { | 
|         userService.checkUserAllowed(user); | 
|         userService.checkUserDataScope(user.getUserId()); | 
|         user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | 
|         user.setUpdateBy(SecurityUtils.getUsername()); | 
|         return toAjax(userService.resetPwd(user)); | 
|     } | 
|   | 
|     /** | 
|      * 状态修改 | 
|      */ | 
|     @Log(title = "用户管理", businessType = BusinessType.UPDATE) | 
|     @PutMapping("/changeStatus") | 
|     public AjaxResult changeStatus(@RequestBody SysUser user) { | 
|         userService.checkUserAllowed(user); | 
|         userService.checkUserDataScope(user.getUserId()); | 
|         user.setUpdateBy(SecurityUtils.getUsername()); | 
|         return toAjax(userService.updateUserStatus(user)); | 
|     } | 
|   | 
|     /** | 
|      * 根据用户编号获取授权角色 | 
|      */ | 
|     @GetMapping("/authRole/{userId}") | 
|     public AjaxResult authRole(@PathVariable("userId") Long userId) { | 
|         AjaxResult ajax = AjaxResult.success(); | 
|         SysUser user = userService.selectUserById(userId); | 
|         List<SysRole> roles = roleService.selectRolesByUserId(userId); | 
|         ajax.put("user", user); | 
|         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); | 
|         return ajax; | 
|     } | 
|   | 
|     /** | 
|      * 用户授权角色 | 
|      */ | 
|     @Log(title = "用户管理", businessType = BusinessType.GRANT) | 
|     @PutMapping("/authRole") | 
|     public AjaxResult insertAuthRole(Long userId, Long[] roleIds) { | 
|         userService.checkUserDataScope(userId); | 
|         userService.insertUserAuth(userId, roleIds); | 
|         return success(); | 
|     } | 
|   | 
|     /** | 
|      * 获取部门树列表 | 
|      */ | 
|     @GetMapping("/deptTree") | 
|     public AjaxResult deptTree(SysDept dept) { | 
|         return success(deptService.selectDeptTreeList(dept)); | 
|     } | 
|   | 
|     @PostMapping("/updateUser") | 
|     public R<Boolean>  updateUser(@RequestBody SysUser sysUser){ | 
|         return R.ok(userService.updateById(sysUser)); | 
|     } | 
|   | 
|     /** | 
|      * 通过用户id查询角色对象 | 
|      * @param userId | 
|      * @return | 
|      */ | 
|     @PostMapping("/queryRoleByUserId/{userId}") | 
|     public R<SysRole> queryRoleByUserId(@PathVariable("userId") Long userId){ | 
|         SysUserRole one = sysUserRoleService.getOne(Wrappers.lambdaQuery(SysUserRole.class) | 
|                 .eq(SysUserRole::getUserId, userId) | 
|                 .last("LIMIT 1")); | 
|         System.out.println("通过用户id查询角色对象"+one); | 
|         if(Objects.nonNull(one)){ | 
|             SysRole byId = roleService.getOne(Wrappers.lambdaQuery(SysRole.class) | 
|                     .eq(SysRole::getRoleId,one.getRoleId()) | 
|                     .last("LIMIT 1")); | 
|             return R.ok(byId); | 
|         } | 
|         return R.ok(); | 
|     } | 
|   | 
|   | 
|     @PostMapping("/queryRoleByRoleId/{roleId}") | 
|     public R<SysRole> queryRoleByRoleId(@PathVariable("roleId") Long roleId){ | 
|         return R.ok( roleService.getOne(Wrappers.lambdaQuery(SysRole.class) | 
|                 .eq(SysRole::getRoleId, roleId) | 
|                 .last("LIMIT 1"))); | 
|     } | 
|   | 
|     /** | 
|      * 通过手机号集合查询用户 | 
|      * @param phoneList | 
|      * @return | 
|      */ | 
|     @PostMapping("/queryUserByPhoneList") | 
|     public R<List<SysUser>> queryUserByPhoneList(@RequestBody List<String> phoneList){ | 
|         List<SysUser> list = userService.list(Wrappers.lambdaQuery(SysUser.class) | 
|                 .in(SysUser::getPhonenumber, phoneList) | 
|                 .ne(SysUser::getDelFlag,2)); | 
|         return R.ok(list); | 
|     } | 
|   | 
|     /** | 
|      * 默认批量添加修理厂 | 
|      * @param dtoList | 
|      * @return | 
|      */ | 
|     @PostMapping("/addUserRole") | 
|     public R<Boolean> addUserRole(@RequestBody List<SysUserRoleDTO> dtoList){ | 
|         List<SysUserRole> userRoles = new ArrayList<>(); | 
|         for (SysUserRoleDTO userRoleDTO : dtoList) { | 
|             SysUserRole userRole = new SysUserRole(); | 
|             userRole.setRoleId(userRoleDTO.getRoleId()); | 
|             userRole.setUserId(userRoleDTO.getUserId()); | 
|             userRoles.add(userRole); | 
|         } | 
|         return R.ok(sysUserRoleService.saveBatch(userRoles)); | 
|     } | 
|   | 
|     /** | 
|      * 通过手机号查询用户 | 
|      * @param phone | 
|      * @return | 
|      */ | 
|     @PostMapping("/queryUserByPhone") | 
|     public R<SysUser>  queryUserByPhone(@RequestBody String phone){ | 
|         SysUser user = userService.getOne(Wrappers.lambdaQuery(SysUser.class) | 
|                 .eq(SysUser::getPhonenumber, phone) | 
|                 .last("LIMIT 1")); | 
|         return R.ok(user); | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 通过账号查询用户 | 
|      * @param userName | 
|      * @return | 
|      */ | 
|     @ResponseBody | 
|     @PostMapping("/queryUserByUserName") | 
|     public R<SysUser> queryUserByUserName(@RequestBody String userName){ | 
|         SysUser user = userService.getOne(Wrappers.lambdaQuery(SysUser.class) | 
|                 .eq(SysUser::getUserName, userName) | 
|                 .last("LIMIT 1")); | 
|         return R.ok(user); | 
|     } | 
|      | 
|      | 
|     /** | 
|      * 添加管理员 | 
|      * @param user | 
|      */ | 
|     @ResponseBody | 
|     @PostMapping("/addSysUser") | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public R addSysUser(@RequestBody SysUser user){ | 
|         if(StringUtils.isEmpty(user.getUserName())){ | 
|             user.setUserName(user.getPhonenumber()); | 
|         } | 
|         if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){ | 
|             user.setNickName(user.getPhonenumber()); | 
|         } | 
|         if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { | 
|             throw new RuntimeException("手机号已开通账号"); | 
|         } | 
|         if (StringUtils.isNotEmpty(user.getUserName()) && !userService.checkUserNameUnique(user)) { | 
|             throw new RuntimeException("登录账号已存在"); | 
|         } | 
|         user.setCreateBy(SecurityUtils.getUsername()); | 
|         user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | 
|         if(null == user.getRoleType()){ | 
|             user.setRoleType(1); | 
|         } | 
|         userService.insertUser(user); | 
|         SysUserRole sysUserRole = new SysUserRole(); | 
|         sysUserRole.setRoleId(user.getRoleId()); | 
|         sysUserRole.setUserId(user.getUserId()); | 
|         userRoleService.insertSysUserRole(sysUserRole); | 
|         return R.ok(); | 
|     } | 
|      | 
|      | 
|     @ResponseBody | 
|     @PostMapping("/resetPassword") | 
|     public R resetPassword(@RequestBody SysUser user) { | 
|         user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | 
|         user.setUpdateBy(SecurityUtils.getUsername()); | 
|         userService.resetPwd(user); | 
|         return R.ok(); | 
|     } | 
|      | 
|      | 
|     @ResponseBody | 
|     @PostMapping("/getSysUserById") | 
|     public SysUser getSysUserById(@RequestParam("userId") Long userId){ | 
|         return userService.getById(userId); | 
|     } | 
| } |