|
|
@@ -0,0 +1,128 @@
|
|
|
+package com.inspur.customer.service.org;
|
|
|
+
|
|
|
+import com.alibaba.cola.dto.PageResponse;
|
|
|
+import com.alibaba.cola.dto.Response;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.inspur.customer.client.keycloak.KeycloakService;
|
|
|
+import com.inspur.customer.client.org.SmsbDepartmentUserService;
|
|
|
+import com.inspur.customer.client.org.SmsbMessageGroupMemberService;
|
|
|
+import com.inspur.customer.infrastructure.mapper.org.SmsbMessageGroupMemberMapper;
|
|
|
+import com.inspur.customer.infrastructure.object.org.SmsbMessageGroupMemberDO;
|
|
|
+import com.inspur.customer.object.keycloak.KeycloakUserCO;
|
|
|
+import com.inspur.customer.object.org.SmsbMessageGroupQuery;
|
|
|
+import com.inspur.customer.object.org.SmsbMessageMemberAddDto;
|
|
|
+import com.inspur.customer.object.org.SmsbMessageMemberCO;
|
|
|
+import com.inspur.customer.object.org.SmsbMessageMemberUpdateDto;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
+import org.apache.dubbo.config.annotation.DubboService;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author fantingwei
|
|
|
+ * @date 2024/6/17
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@DubboService(interfaceClass = SmsbMessageGroupMemberService.class)
|
|
|
+public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGroupMemberMapper, SmsbMessageGroupMemberDO> implements SmsbMessageGroupMemberService {
|
|
|
+
|
|
|
+ @DubboReference
|
|
|
+ private SmsbDepartmentUserService smsbDepartmentUserService;
|
|
|
+
|
|
|
+ @DubboReference
|
|
|
+ private KeycloakService keycloakService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Response pageByGroupId(SmsbMessageGroupQuery query) {
|
|
|
+ Page<SmsbMessageGroupMemberDO> page = new Page<>(query.getPageIndex(), query.getPageSize());
|
|
|
+ LambdaQueryWrapper<SmsbMessageGroupMemberDO> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper
|
|
|
+ .eq(Objects.nonNull(query.getGroupId()), SmsbMessageGroupMemberDO::getGroupId, query.getGroupId())
|
|
|
+ .eq(Objects.nonNull(query.getRecipientType()), SmsbMessageGroupMemberDO::getRecipientType, query.getRecipientType())
|
|
|
+ .orderByAsc(SmsbMessageGroupMemberDO::getRecipientType);
|
|
|
+ page = this.page(page, queryWrapper);
|
|
|
+
|
|
|
+ // 根据主表id,获取用户表的keycloak user_id,name和userName,email和phone
|
|
|
+ List<Long> departmentUserIds = page.getRecords().stream().map(SmsbMessageGroupMemberDO::getDepartmentUserId).distinct().collect(Collectors.toList());
|
|
|
+ List<SmsbMessageMemberCO> smsbMessageMemberCOS = smsbDepartmentUserService.listByIds(departmentUserIds);
|
|
|
+ List<String> userIds = smsbMessageMemberCOS.stream().map(SmsbMessageMemberCO::getUserId).distinct().collect(Collectors.toList());
|
|
|
+ Map<String, KeycloakUserCO> userMap = keycloakService.getUsersByIds(userIds).stream().collect(Collectors.toMap(KeycloakUserCO::getId,user -> user));
|
|
|
+ Map<Long, SmsbMessageGroupMemberDO> memberMap = page.getRecords().stream().collect(Collectors.toMap(SmsbMessageGroupMemberDO::getDepartmentUserId,
|
|
|
+ t -> t));
|
|
|
+
|
|
|
+ // 封装数据
|
|
|
+ smsbMessageMemberCOS.forEach(member -> {
|
|
|
+ KeycloakUserCO keycloakUser = userMap.get(member.getUserId());
|
|
|
+ member.setEmail(Objects.nonNull(keycloakUser) ? keycloakUser.getEmail() : null);
|
|
|
+ member.setPhone(Objects.nonNull(keycloakUser) ? keycloakUser.getPhone() : null);
|
|
|
+ member.setRecipientType(memberMap.get(member.getId()).getRecipientType());
|
|
|
+ member.setEnabled(memberMap.get(member.getId()).getEnabled());
|
|
|
+ });
|
|
|
+
|
|
|
+ return PageResponse.of(smsbMessageMemberCOS, (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Response addMember(SmsbMessageMemberAddDto addDto) {
|
|
|
+ List<Long> addDepartmentUserIds = addDto.getIdList();
|
|
|
+
|
|
|
+ // 查询当前group下的所有用户,移除掉重复部分,避免重复新增
|
|
|
+ List<Long> curIds = lambdaQuery()
|
|
|
+ .eq(SmsbMessageGroupMemberDO::getGroupId, addDto.getGroupId())
|
|
|
+ .list()
|
|
|
+ .stream()
|
|
|
+ .map(SmsbMessageGroupMemberDO::getDepartmentUserId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ addDepartmentUserIds.removeAll(curIds);
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
+ List<SmsbMessageGroupMemberDO> addList = new ArrayList<>();
|
|
|
+ addDepartmentUserIds.forEach(departmentUserId -> {
|
|
|
+ SmsbMessageGroupMemberDO memberDO = new SmsbMessageGroupMemberDO();
|
|
|
+ memberDO.setId(null);
|
|
|
+ memberDO.setGroupId(addDto.getGroupId());
|
|
|
+ memberDO.setUserType(1);
|
|
|
+ memberDO.setDepartmentUserId(departmentUserId);
|
|
|
+ memberDO.setEnabled(1);
|
|
|
+ memberDO.setRecipientType(addDto.getRecipientType());
|
|
|
+ memberDO.setCreateBy(addDto.getCreateBy());
|
|
|
+ memberDO.setCreateUser(addDto.getCreateUser());
|
|
|
+ memberDO.setCreateTime(now);
|
|
|
+ memberDO.setUpdateTime(now);
|
|
|
+ addList.add(memberDO);
|
|
|
+ });
|
|
|
+ this.saveBatch(addList);
|
|
|
+
|
|
|
+ return Response.buildSuccess();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Response updateByDepartmentUserId(SmsbMessageMemberUpdateDto updateDto) {
|
|
|
+ boolean update = this.update(new LambdaUpdateWrapper<SmsbMessageGroupMemberDO>()
|
|
|
+ .eq(SmsbMessageGroupMemberDO::getDepartmentUserId, updateDto.getDepartmentUserId())
|
|
|
+ .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
|
|
|
+ .set(SmsbMessageGroupMemberDO::getEnabled, updateDto.getEnabled())
|
|
|
+ .set(SmsbMessageGroupMemberDO::getRecipientType, updateDto.getRecipientType())
|
|
|
+ .set(SmsbMessageGroupMemberDO::getUpdateTime, LocalDateTime.now()));
|
|
|
+
|
|
|
+ return update ? Response.buildSuccess() : Response.buildFailure("400", "更新失败");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public Response deleteByDepartmentUserIds(SmsbMessageMemberUpdateDto updateDto) {
|
|
|
+ boolean success = this.remove(new LambdaUpdateWrapper<SmsbMessageGroupMemberDO>()
|
|
|
+ .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
|
|
|
+ .in(SmsbMessageGroupMemberDO::getDepartmentUserId, updateDto.getDepartmentUserIds()));
|
|
|
+ return success ? Response.buildSuccess() : Response.buildFailure("400","删除失败");
|
|
|
+ }
|
|
|
+
|
|
|
+}
|