|
|
@@ -10,15 +10,19 @@ 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.constant.Constant;
|
|
|
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.keycloak.SwitchDTO;
|
|
|
import com.inspur.customer.object.org.*;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
+import org.hibernate.validator.internal.util.stereotypes.Lazy;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -37,6 +41,10 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
|
|
|
@DubboReference
|
|
|
private KeycloakService keycloakService;
|
|
|
|
|
|
+ @Lazy
|
|
|
+ @Resource
|
|
|
+ private SmsbDepartmentUserService userService;
|
|
|
+
|
|
|
@Override
|
|
|
public Response pageByGroupId(SmsbMessageGroupQuery query) {
|
|
|
Page<SmsbMessageGroupMemberDO> page = new Page<>(query.getPageIndex(), query.getPageSize());
|
|
|
@@ -60,8 +68,11 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
|
|
|
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());
|
|
|
+ SmsbMessageGroupMemberDO memberDO = memberMap.get(member.getId());
|
|
|
+ member.setRecipientType(memberDO.getRecipientType());
|
|
|
+ member.setEnabled(memberDO.getEnabled());
|
|
|
+ member.setCreateTime(memberDO.getCreateTime());
|
|
|
+ member.setUpdateTime(memberDO.getUpdateTime());
|
|
|
});
|
|
|
|
|
|
smsbMessageMemberCOS = smsbMessageMemberCOS.stream()
|
|
|
@@ -126,30 +137,39 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
|
|
|
|
|
|
@Override
|
|
|
public Response updateByDepartmentUserId(SmsbMessageMemberUpdateDto updateDto) {
|
|
|
- // 获取有效的主送人信息
|
|
|
- List<SmsbMessageGroupMemberDO> curList = lambdaQuery()
|
|
|
- .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
|
|
|
- .eq(SmsbMessageGroupMemberDO::getEnabled, 1)
|
|
|
- .eq(SmsbMessageGroupMemberDO::getRecipientType, 1)
|
|
|
- .list();
|
|
|
-
|
|
|
- // 修改用户状态、主抄送类型时,如果修改的是将主送修改成抄送,则要判断该用户是否是唯一的主送,如果是,则报错提示
|
|
|
- if (Objects.equals(curList.size(), 1) && Objects.equals(updateDto.getDepartmentUserId(), curList.get(0).getDepartmentUserId())) {
|
|
|
- if (Objects.nonNull(updateDto.getRecipientType()) && updateDto.getRecipientType() == 2) {
|
|
|
- return Response.buildFailure("400","请至少保留一个收件人");
|
|
|
- }
|
|
|
- if (Objects.nonNull(updateDto.getEnabled()) && updateDto.getEnabled() == 0) {
|
|
|
- return Response.buildFailure("400","请至少保留一个启用的收件人");
|
|
|
- }
|
|
|
+// // 获取有效的主送人信息
|
|
|
+// List<SmsbMessageGroupMemberDO> curList = lambdaQuery()
|
|
|
+// .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
|
|
|
+// .eq(SmsbMessageGroupMemberDO::getEnabled, 1)
|
|
|
+// .eq(SmsbMessageGroupMemberDO::getRecipientType, 1)
|
|
|
+// .list();
|
|
|
+//
|
|
|
+// // 修改用户状态、主抄送类型时,如果修改的是将主送修改成抄送,则要判断该用户是否是唯一的主送,如果是,则报错提示
|
|
|
+// if (Objects.equals(curList.size(), 1) && Objects.equals(updateDto.getDepartmentUserId(), curList.get(0).getDepartmentUserId())) {
|
|
|
+// if (Objects.nonNull(updateDto.getRecipientType()) && updateDto.getRecipientType() == 2) {
|
|
|
+// return Response.buildFailure("400","请至少保留一个收件人");
|
|
|
+// }
|
|
|
+// if (Objects.nonNull(updateDto.getEnabled()) && updateDto.getEnabled() == 0) {
|
|
|
+// return Response.buildFailure("400","请至少保留一个启用的收件人");
|
|
|
+// }
|
|
|
+// }
|
|
|
+ boolean update;
|
|
|
+ if (Objects.nonNull(updateDto.getRecipientType())) {
|
|
|
+ // 主抄送类型只改该分组下的
|
|
|
+ update = this.update(new LambdaUpdateWrapper<SmsbMessageGroupMemberDO>()
|
|
|
+ .eq(SmsbMessageGroupMemberDO::getDepartmentUserId, updateDto.getDepartmentUserId())
|
|
|
+ .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
|
|
|
+ .set(SmsbMessageGroupMemberDO::getRecipientType, updateDto.getRecipientType())
|
|
|
+ .set(SmsbMessageGroupMemberDO::getUpdateTime, LocalDateTime.now()));
|
|
|
+ } else {
|
|
|
+ // 启用禁用时各个分组都要修改状态,也要把安播云账号的启用禁用状态修改
|
|
|
+ SwitchDTO switchDTO = new SwitchDTO();
|
|
|
+ switchDTO.setUserId(userService.listByIds(Collections.singletonList(updateDto.getDepartmentUserId())).get(0).getUserId());
|
|
|
+ switchDTO.setEnabled(updateDto.getEnabled() == 1 ? Boolean.TRUE : Boolean.FALSE);
|
|
|
+ update = userService.enableSwitch(switchDTO);
|
|
|
+ keycloakService.updateUser(switchDTO.getUserId(), switchDTO, Constant.ENABLE);
|
|
|
}
|
|
|
|
|
|
- boolean update = this.update(new LambdaUpdateWrapper<SmsbMessageGroupMemberDO>()
|
|
|
- .eq(SmsbMessageGroupMemberDO::getDepartmentUserId, updateDto.getDepartmentUserId())
|
|
|
- .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
|
|
|
- .set(Objects.nonNull(updateDto.getEnabled()), SmsbMessageGroupMemberDO::getEnabled, updateDto.getEnabled())
|
|
|
- .set(Objects.nonNull(updateDto.getRecipientType()), SmsbMessageGroupMemberDO::getRecipientType, updateDto.getRecipientType())
|
|
|
- .set(SmsbMessageGroupMemberDO::getUpdateTime, LocalDateTime.now()));
|
|
|
-
|
|
|
return update ? Response.buildSuccess() : Response.buildFailure("400", "更新失败");
|
|
|
}
|
|
|
|
|
|
@@ -180,6 +200,7 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
|
|
|
|
|
|
@Override
|
|
|
public Map<Long, List<KeycloakUserCO>> getByGroupIds(List<Long> groupIds) {
|
|
|
+ // key为分组id,value为要通知的用户
|
|
|
Map<Long, List<SmsbMessageGroupMemberDO>> memberMap = lambdaQuery()
|
|
|
.in(!CollectionUtils.isEmpty(groupIds), SmsbMessageGroupMemberDO::getGroupId, groupIds)
|
|
|
.eq(SmsbMessageGroupMemberDO::getEnabled, 1)
|
|
|
@@ -197,16 +218,24 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
|
|
|
memberDOList.forEach(
|
|
|
memberDO -> {
|
|
|
// 获取要通知人的keycloak信息,并设置主送抄送类型
|
|
|
- String userId = smsbDepartmentUserService
|
|
|
+ List<String> userList = smsbDepartmentUserService
|
|
|
.listByIds(Collections.singletonList(memberDO.getDepartmentUserId()))
|
|
|
.stream()
|
|
|
.map(SmsbMessageMemberCO::getUserId)
|
|
|
- .collect(Collectors.toList())
|
|
|
- .get(0);
|
|
|
-
|
|
|
- KeycloakUserCO userCO = keycloakService.getUsersByIds(Collections.singletonList(userId)).get(0);
|
|
|
- userCO.setRecipientType(memberDO.getRecipientType());
|
|
|
- keycloakUserCOS.add(userCO);
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(userList)) {
|
|
|
+ // 账号已注销,删除该用户在表中的信息
|
|
|
+ this.removeById(memberDO.getId());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<KeycloakUserCO> keycloakUserList = keycloakService.getUsersByIds(Collections.singletonList(userList.get(0)));
|
|
|
+ if (CollectionUtils.isEmpty(keycloakUserList)) {
|
|
|
+ // keycloak上无用户信息
|
|
|
+ log.error("无用户对应的keycloak信息");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ keycloakUserList.get(0).setRecipientType(memberDO.getRecipientType());
|
|
|
+ keycloakUserCOS.add(keycloakUserList.get(0));
|
|
|
}
|
|
|
);
|
|
|
resultMap.put(groupId, keycloakUserCOS);
|
|
|
@@ -215,6 +244,15 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
|
|
|
return resultMap;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void updateStatus(SmsbMessageMemberUpdateDto updateDto) {
|
|
|
+ this.update(new LambdaUpdateWrapper<SmsbMessageGroupMemberDO>()
|
|
|
+ .eq(SmsbMessageGroupMemberDO::getDepartmentUserId, updateDto.getDepartmentUserId())
|
|
|
+ .set(SmsbMessageGroupMemberDO::getEnabled, updateDto.getEnabled())
|
|
|
+ .set(SmsbMessageGroupMemberDO::getUpdateTime, LocalDateTime.now()));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
// 新增、修改、删除组员时要保证组内必须至少有一个收件人
|
|
|
private Boolean isLeagle (Long groupId){
|
|
|
return lambdaQuery().eq(SmsbMessageGroupMemberDO::getGroupId, groupId)
|