Commit e48245ef27184f9b433c5ee95416b56891a90bc3
1 parent
849324ff
feat(mes): 优化 cal-team 班组成员相关逻辑
- MesCalTeamMemberController:注入 AdminUserApi,合并 list-by-team 与 list-by-team-ids 为单一接口(支持 teamId / teamIds 参数),新增 buildMemberRespVOList 方法批量填充用户昵称和手机号 - MesCalTeamMemberServiceImpl:validateTeamMemberExists 改为 void 返回; validateUserUnique 去掉冗余的 excludeId 参数 - MesCalTeamMemberMapper:selectByUserIdExcludeId 简化为 selectByUserId
Showing
3 changed files
with
42 additions
and
29 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/MesCalTeamMemberController.java
| 1 | 1 | package cn.iocoder.yudao.module.mes.controller.admin.cal.team; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.collection.CollUtil; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | |
| 5 | 7 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 6 | 8 | import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberPageReqVO; |
| 7 | 9 | import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberRespVO; |
| 8 | 10 | import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberSaveReqVO; |
| 9 | 11 | import cn.iocoder.yudao.module.mes.dal.dataobject.cal.team.MesCalTeamMemberDO; |
| 10 | 12 | import cn.iocoder.yudao.module.mes.service.cal.team.MesCalTeamMemberService; |
| 13 | +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | |
| 14 | +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | |
| 11 | 15 | import io.swagger.v3.oas.annotations.Operation; |
| 12 | 16 | import io.swagger.v3.oas.annotations.Parameter; |
| 13 | 17 | import io.swagger.v3.oas.annotations.tags.Tag; |
| ... | ... | @@ -18,9 +22,12 @@ import org.springframework.validation.annotation.Validated; |
| 18 | 22 | import org.springframework.web.bind.annotation.*; |
| 19 | 23 | |
| 20 | 24 | import java.util.Collection; |
| 25 | +import java.util.Collections; | |
| 21 | 26 | import java.util.List; |
| 27 | +import java.util.Map; | |
| 22 | 28 | |
| 23 | 29 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 30 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | |
| 24 | 31 | |
| 25 | 32 | @Tag(name = "管理后台 - MES 班组成员") |
| 26 | 33 | @RestController |
| ... | ... | @@ -30,6 +37,8 @@ public class MesCalTeamMemberController { |
| 30 | 37 | |
| 31 | 38 | @Resource |
| 32 | 39 | private MesCalTeamMemberService teamMemberService; |
| 40 | + @Resource | |
| 41 | + private AdminUserApi adminUserApi; | |
| 33 | 42 | |
| 34 | 43 | @PostMapping("/create") |
| 35 | 44 | @Operation(summary = "创建班组成员") |
| ... | ... | @@ -64,25 +73,36 @@ public class MesCalTeamMemberController { |
| 64 | 73 | return success(BeanUtils.toBean(pageResult, MesCalTeamMemberRespVO.class)); |
| 65 | 74 | } |
| 66 | 75 | |
| 67 | - // TODO @AI:getTeamMemberListByTeam、getTeamMemberListByTeamIds 融合下,允许传递 teamId、teamIds; | |
| 68 | - | |
| 69 | 76 | @GetMapping("/list-by-team") |
| 70 | - @Operation(summary = "获得指定班组的成员列表") | |
| 71 | - @Parameter(name = "teamId", description = "班组编号", required = true) | |
| 77 | + @Operation(summary = "获得班组成员列表", description = "支持单个 teamId 或多个 teamIds") | |
| 72 | 78 | @PreAuthorize("@ss.hasPermission('mes:cal-team:query')") |
| 73 | - public CommonResult<List<MesCalTeamMemberRespVO>> getTeamMemberListByTeam(@RequestParam("teamId") Long teamId) { | |
| 74 | - List<MesCalTeamMemberDO> list = teamMemberService.getTeamMemberListByTeamId(teamId); | |
| 75 | - return success(BeanUtils.toBean(list, MesCalTeamMemberRespVO.class)); | |
| 79 | + public CommonResult<List<MesCalTeamMemberRespVO>> getTeamMemberListByTeam( | |
| 80 | + @RequestParam(value = "teamId", required = false) Long teamId, | |
| 81 | + @RequestParam(value = "teamIds", required = false) Collection<Long> teamIds) { | |
| 82 | + List<MesCalTeamMemberDO> list; | |
| 83 | + if (CollUtil.isNotEmpty(teamIds)) { | |
| 84 | + list = teamMemberService.getTeamMemberListByTeamIds(teamIds); | |
| 85 | + } else if (teamId != null) { | |
| 86 | + list = teamMemberService.getTeamMemberListByTeamId(teamId); | |
| 87 | + } else { | |
| 88 | + list = Collections.emptyList(); | |
| 89 | + } | |
| 90 | + return success(buildMemberRespVOList(list)); | |
| 76 | 91 | } |
| 77 | 92 | |
| 78 | - @GetMapping("/list-by-team-ids") | |
| 79 | - @Operation(summary = "获得指定多个班组的成员列表") | |
| 80 | - @Parameter(name = "teamIds", description = "班组编号列表", required = true) | |
| 81 | - @PreAuthorize("@ss.hasPermission('mes:cal-team:query')") | |
| 82 | - public CommonResult<List<MesCalTeamMemberRespVO>> getTeamMemberListByTeamIds( | |
| 83 | - @RequestParam("teamIds") Collection<Long> teamIds) { | |
| 84 | - List<MesCalTeamMemberDO> list = teamMemberService.getTeamMemberListByTeamIds(teamIds); | |
| 85 | - return success(BeanUtils.toBean(list, MesCalTeamMemberRespVO.class)); | |
| 93 | + // ==================== 拼接 VO ==================== | |
| 94 | + | |
| 95 | + private List<MesCalTeamMemberRespVO> buildMemberRespVOList(List<MesCalTeamMemberDO> list) { | |
| 96 | + if (CollUtil.isEmpty(list)) { | |
| 97 | + return Collections.emptyList(); | |
| 98 | + } | |
| 99 | + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( | |
| 100 | + convertSet(list, MesCalTeamMemberDO::getUserId)); | |
| 101 | + return BeanUtils.toBean(list, MesCalTeamMemberRespVO.class, vo -> | |
| 102 | + MapUtils.findAndThen(userMap, vo.getUserId(), user -> { | |
| 103 | + vo.setNickname(user.getNickname()); | |
| 104 | + vo.setTelephone(user.getMobile()); | |
| 105 | + })); | |
| 86 | 106 | } |
| 87 | 107 | |
| 88 | 108 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamMemberMapper.java
| ... | ... | @@ -32,10 +32,8 @@ public interface MesCalTeamMemberMapper extends BaseMapperX<MesCalTeamMemberDO> |
| 32 | 32 | return selectList(MesCalTeamMemberDO::getTeamId, teamIds); |
| 33 | 33 | } |
| 34 | 34 | |
| 35 | - default MesCalTeamMemberDO selectByUserIdExcludeId(Long userId, Long excludeId) { | |
| 36 | - return selectOne(new LambdaQueryWrapperX<MesCalTeamMemberDO>() | |
| 37 | - .eq(MesCalTeamMemberDO::getUserId, userId) | |
| 38 | - .neIfPresent(MesCalTeamMemberDO::getId, excludeId)); | |
| 35 | + default MesCalTeamMemberDO selectByUserId(Long userId) { | |
| 36 | + return selectOne(MesCalTeamMemberDO::getUserId, userId); | |
| 39 | 37 | } |
| 40 | 38 | |
| 41 | 39 | default void deleteByTeamId(Long teamId) { | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/cal/team/MesCalTeamMemberServiceImpl.java
| ... | ... | @@ -37,7 +37,7 @@ public class MesCalTeamMemberServiceImpl implements MesCalTeamMemberService { |
| 37 | 37 | // 1.1 校验班组存在 |
| 38 | 38 | teamService.validateTeamExists(createReqVO.getTeamId()); |
| 39 | 39 | // 1.2 校验用户未分配到其他班组 |
| 40 | - validateUserUnique(null, createReqVO.getUserId()); | |
| 40 | + validateUserUnique(createReqVO.getUserId()); | |
| 41 | 41 | |
| 42 | 42 | // 2. 插入 |
| 43 | 43 | MesCalTeamMemberDO member = BeanUtils.toBean(createReqVO, MesCalTeamMemberDO.class); |
| ... | ... | @@ -78,19 +78,14 @@ public class MesCalTeamMemberServiceImpl implements MesCalTeamMemberService { |
| 78 | 78 | teamMemberMapper.deleteByTeamId(teamId); |
| 79 | 79 | } |
| 80 | 80 | |
| 81 | - // TODO @AI:无需返回; | |
| 82 | - private MesCalTeamMemberDO validateTeamMemberExists(Long id) { | |
| 83 | - MesCalTeamMemberDO member = teamMemberMapper.selectById(id); | |
| 84 | - if (member == null) { | |
| 81 | + private void validateTeamMemberExists(Long id) { | |
| 82 | + if (teamMemberMapper.selectById(id) == null) { | |
| 85 | 83 | throw exception(CAL_TEAM_MEMBER_NOT_EXISTS); |
| 86 | 84 | } |
| 87 | - return member; | |
| 88 | 85 | } |
| 89 | 86 | |
| 90 | - // TODO @AI:这里的 excludeId 可以去掉 | |
| 91 | - private void validateUserUnique(Long excludeId, Long userId) { | |
| 92 | - MesCalTeamMemberDO member = teamMemberMapper.selectByUserIdExcludeId(userId, excludeId); | |
| 93 | - if (member != null) { | |
| 87 | + private void validateUserUnique(Long userId) { | |
| 88 | + if (teamMemberMapper.selectByUserId(userId) != null) { | |
| 94 | 89 | throw exception(CAL_TEAM_MEMBER_USER_DUPLICATE); |
| 95 | 90 | } |
| 96 | 91 | } | ... | ... |