用户、员工修改

This commit is contained in:
lhx
2025-12-17 16:59:19 +08:00
parent 340c78a00a
commit f00ffd8d52
7 changed files with 102 additions and 9 deletions

View File

@@ -33,7 +33,14 @@ public class UserController {
} }
@PostMapping("/getUserInfo") @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(); Long userId = StpUtil.getLoginIdAsLong();
return userService.getUserInfo(userId); return userService.getUserInfo(userId);
} }

View File

@@ -0,0 +1,10 @@
package com.dc.dc_project.model.dto.user;
import lombok.Data;
@Data
public class UserInfoDto {
private Long id;
}

View File

@@ -3,6 +3,8 @@ package com.dc.dc_project.model.vo;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class PersonnelListVo { public class PersonnelListVo {
@@ -28,9 +30,7 @@ public class PersonnelListVo {
private String orgName; private String orgName;
private Long positionId; private List<PositionVo> positionList;
private String positionName;
private Long userId; private Long userId;
} }

View File

@@ -29,6 +29,12 @@ public interface UserService extends IService<User> {
*/ */
ResponseResult getUserInfo(Long userId); ResponseResult getUserInfo(Long userId);
/**
* 获取用户信息(查询别人)
* @return
*/
ResponseResult getUserInfo(Long pId, Long userId);
/** /**
* 用户列表 * 用户列表
* @param userReqDto * @param userReqDto

View File

@@ -1,5 +1,6 @@
package com.dc.dc_project.service.impl; 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.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -24,7 +25,10 @@ import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author ADMIN * @author ADMIN
@@ -61,7 +65,13 @@ public class PersonnelServiceImpl extends ServiceImpl<PersonnelMapper, Personnel
Personnel personnel = this.getOneByUserId(userId); Personnel personnel = this.getOneByUserId(userId);
Long pOrgId = orgMapper.getOrgIdByPersonnelId(personnel.getId()); Long pOrgId = orgMapper.getOrgIdByPersonnelId(personnel.getId());
if (pOrgId == null) { if (pOrgId == null) {
return ResponseResult.error("无归属组织,无"); //管理员
if (StpUtil.hasRole(userId, "admin")) {
pOrgId = 1L;
}
else {
return ResponseResult.error("账号无归属组织");
}
} }
List<Long> orgIds = null; List<Long> orgIds = null;
if (dataScopeType != null) { if (dataScopeType != null) {
@@ -70,6 +80,14 @@ public class PersonnelServiceImpl extends ServiceImpl<PersonnelMapper, Personnel
case ALL -> orgService.list(new LambdaQueryWrapper<Org>().eq(Org::getIsDeleted, IsDeleted.NO.getCode())).stream().map(Org::getId).toList(); case ALL -> orgService.list(new LambdaQueryWrapper<Org>().eq(Org::getIsDeleted, IsDeleted.NO.getCode())).stream().map(Org::getId).toList();
default -> List.of(pOrgId); 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<PersonnelListVo> page = baseMapper.getPage(personnelDto, orgIds); Page<PersonnelListVo> page = baseMapper.getPage(personnelDto, orgIds);

View File

@@ -111,6 +111,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
} }
@Override
public ResponseResult getUserInfo(Long pId, Long userId) {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>()
.eq(User::getId, userId)
.eq(User::getIsDeleted, 0)
.eq(User::getStatus, 1);
User user = baseMapper.selectOne(queryWrapper);
Personnel personnel = personnelMapper.selectOne(new LambdaQueryWrapper<Personnel>().eq(Personnel::getUserId, user.getId()));
List<Role> roles = roleMapper.getRolesByUserId(user.getId());
List<PositionVo> positions = positionMapper.getPositionsByPId(personnel.getId());
UserInfoVo userInfoVo = UserInfoVo.personnelToUserInfoVo(personnel);
userInfoVo.setRoles(roles);
userInfoVo.setPositionVos(positions);
return ResponseResult.success(userInfoVo);
}
@Override @Override
public ResponseResult UserList(UserReqDto userReqDto, Long userId) { public ResponseResult UserList(UserReqDto userReqDto, Long userId) {
int level = PermissionUtils.getOrDefault(DataScopeType.CUSTOM.getLevel()); int level = PermissionUtils.getOrDefault(DataScopeType.CUSTOM.getLevel());

View File

@@ -17,19 +17,53 @@
<select id="getPage" resultType="com.dc.dc_project.model.vo.PersonnelListVo"> <select id="getPage" resultType="com.dc.dc_project.model.vo.PersonnelListVo">
select select
sp.id, sp.id,
so.org_id, so.id as orgId,
so.name as orgName,
sp.user_id, sp.user_id,
sp.name, sp.name,
sp.position, sp.sex,
sp.avatar,
sp.contact_phone, sp.contact_phone,
sp.email, sp.email,
sp.main_responsibility, sp.main_responsibility,
sp.remark, sp.remark,
sp.status, sp.status,
sp.user_id,
sp.created_by,
sp.created_at,
sp.updated_at
From sys_personnel sp From sys_personnel sp
left join sys_personnel_position spp on sp.id = spp.personnel_id
left join sys_position sps on spp.position_id = sps.id
left join sys_personnel_org spo on sp.id = spo.personnel_id left join sys_personnel_org spo on sp.id = spo.personnel_id
left join sys_org so on so.id = spo.org_id left join sys_org so on so.id = spo.org_id
<where>
<if test="personnelDto.name != null">
sp.name like concat('%',#{personnelDto.name},'%')
</if>
<if test="personnelDto.contactPhone != null">
and sp.contact_phone like concat('%',#{personnelDto.contactPhone},'%')
</if>
<if test="personnelDto.email != null">
and sp.email like concat('%',#{personnelDto.email},'%')
</if>
<if test="personnelDto.sex != null">
and sp.sex = #{personnelDto.sex}
</if>
<if test="personnelDto.mainResponsibility != null">
and sp.main_responsibility like concat('%',#{personnelDto.mainResponsibility},'%')
</if>
<if test="personnelDto.remark != null">
and sp.remark like concat('%',#{personnelDto.remark},'%')
</if>
<if test="personnelDto.status != null">
and sp.status = #{personnelDto.status}
</if>
<if test="orgIds != null">
and so.id in
<foreach item="item" index="index" collection="orgIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
AND sp.is_deleted = 0
</where>
</select> </select>
</mapper> </mapper>