From f00ffd8d5276ae9ab342c9f0d9067f7582e52951 Mon Sep 17 00:00:00 2001 From: lhx Date: Wed, 17 Dec 2025 16:59:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E3=80=81=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/UserController.java | 9 +++- .../model/dto/user/UserInfoDto.java | 10 +++++ .../dc_project/model/vo/PersonnelListVo.java | 6 +-- .../dc/dc_project/service/UserService.java | 6 +++ .../service/impl/PersonnelServiceImpl.java | 20 ++++++++- .../service/impl/UserServiceImpl.java | 18 ++++++++ src/main/resources/mapper/PersonnelMapper.xml | 42 +++++++++++++++++-- 7 files changed, 102 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/dc/dc_project/model/dto/user/UserInfoDto.java diff --git a/src/main/java/com/dc/dc_project/controller/sys/UserController.java b/src/main/java/com/dc/dc_project/controller/sys/UserController.java index f3c6c29..92b6c30 100644 --- a/src/main/java/com/dc/dc_project/controller/sys/UserController.java +++ b/src/main/java/com/dc/dc_project/controller/sys/UserController.java @@ -33,7 +33,14 @@ public class UserController { } @PostMapping("/getUserInfo") - ResponseResult getUserInfo() { + @DcCheckPermission("system:user:detail") + ResponseResult getUserInfo(@RequestBody UserInfoDto userInfoDto) { + Long userId = StpUtil.getLoginIdAsLong(); + return userService.getUserInfo(userId, userInfoDto.getId()); + } + + @PostMapping("/userInfo") + ResponseResult UserInfo() { Long userId = StpUtil.getLoginIdAsLong(); return userService.getUserInfo(userId); } diff --git a/src/main/java/com/dc/dc_project/model/dto/user/UserInfoDto.java b/src/main/java/com/dc/dc_project/model/dto/user/UserInfoDto.java new file mode 100644 index 0000000..ebde78e --- /dev/null +++ b/src/main/java/com/dc/dc_project/model/dto/user/UserInfoDto.java @@ -0,0 +1,10 @@ +package com.dc.dc_project.model.dto.user; + + +import lombok.Data; + +@Data +public class UserInfoDto { + + private Long id; +} diff --git a/src/main/java/com/dc/dc_project/model/vo/PersonnelListVo.java b/src/main/java/com/dc/dc_project/model/vo/PersonnelListVo.java index ddfa93e..bf6efb8 100644 --- a/src/main/java/com/dc/dc_project/model/vo/PersonnelListVo.java +++ b/src/main/java/com/dc/dc_project/model/vo/PersonnelListVo.java @@ -3,6 +3,8 @@ package com.dc.dc_project.model.vo; import lombok.Data; +import java.util.List; + @Data public class PersonnelListVo { @@ -28,9 +30,7 @@ public class PersonnelListVo { private String orgName; - private Long positionId; - - private String positionName; + private List positionList; private Long userId; } diff --git a/src/main/java/com/dc/dc_project/service/UserService.java b/src/main/java/com/dc/dc_project/service/UserService.java index 0cf6a1f..e0b6d8a 100644 --- a/src/main/java/com/dc/dc_project/service/UserService.java +++ b/src/main/java/com/dc/dc_project/service/UserService.java @@ -29,6 +29,12 @@ public interface UserService extends IService { */ ResponseResult getUserInfo(Long userId); + /** + * 获取用户信息(查询别人) + * @return + */ + ResponseResult getUserInfo(Long pId, Long userId); + /** * 用户列表 * @param userReqDto diff --git a/src/main/java/com/dc/dc_project/service/impl/PersonnelServiceImpl.java b/src/main/java/com/dc/dc_project/service/impl/PersonnelServiceImpl.java index f317d62..e94a455 100644 --- a/src/main/java/com/dc/dc_project/service/impl/PersonnelServiceImpl.java +++ b/src/main/java/com/dc/dc_project/service/impl/PersonnelServiceImpl.java @@ -1,5 +1,6 @@ package com.dc.dc_project.service.impl; +import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -24,7 +25,10 @@ import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author ADMIN @@ -61,7 +65,13 @@ public class PersonnelServiceImpl extends ServiceImpl orgIds = null; if (dataScopeType != null) { @@ -70,6 +80,14 @@ public class PersonnelServiceImpl extends ServiceImpl orgService.list(new LambdaQueryWrapper().eq(Org::getIsDeleted, IsDeleted.NO.getCode())).stream().map(Org::getId).toList(); default -> List.of(pOrgId); }; + log.info("数据权限范围:{}", orgIds); + if (personnelDto.getOrgId() != null) { + if (!orgIds.contains(personnelDto.getOrgId())) { + return ResponseResult.error("无权限查看组织"); + } + orgIds.clear(); + orgIds = Stream.of(personnelDto.getOrgId()).collect(Collectors.toList()); + } } Page page = baseMapper.getPage(personnelDto, orgIds); diff --git a/src/main/java/com/dc/dc_project/service/impl/UserServiceImpl.java b/src/main/java/com/dc/dc_project/service/impl/UserServiceImpl.java index 6d6aa02..b5dc700 100644 --- a/src/main/java/com/dc/dc_project/service/impl/UserServiceImpl.java +++ b/src/main/java/com/dc/dc_project/service/impl/UserServiceImpl.java @@ -111,6 +111,24 @@ public class UserServiceImpl extends ServiceImpl } + @Override + public ResponseResult getUserInfo(Long pId, Long userId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(User::getId, userId) + .eq(User::getIsDeleted, 0) + .eq(User::getStatus, 1); + User user = baseMapper.selectOne(queryWrapper); + Personnel personnel = personnelMapper.selectOne(new LambdaQueryWrapper().eq(Personnel::getUserId, user.getId())); + List roles = roleMapper.getRolesByUserId(user.getId()); + List positions = positionMapper.getPositionsByPId(personnel.getId()); + + UserInfoVo userInfoVo = UserInfoVo.personnelToUserInfoVo(personnel); + userInfoVo.setRoles(roles); + userInfoVo.setPositionVos(positions); + + return ResponseResult.success(userInfoVo); + } + @Override public ResponseResult UserList(UserReqDto userReqDto, Long userId) { int level = PermissionUtils.getOrDefault(DataScopeType.CUSTOM.getLevel()); diff --git a/src/main/resources/mapper/PersonnelMapper.xml b/src/main/resources/mapper/PersonnelMapper.xml index 938377b..72affcc 100644 --- a/src/main/resources/mapper/PersonnelMapper.xml +++ b/src/main/resources/mapper/PersonnelMapper.xml @@ -17,19 +17,53 @@