|
|
@@ -7,19 +7,26 @@ 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.org.SmsbMessageGroupMemberService;
|
|
|
import com.inspur.customer.client.org.SmsbMessageGroupService;
|
|
|
import com.inspur.customer.infrastructure.mapper.org.SmsbMessageGroupMapper;
|
|
|
import com.inspur.customer.infrastructure.object.org.SmsbMessageGroupDO;
|
|
|
+import com.inspur.customer.object.keycloak.KeycloakUserCO;
|
|
|
import com.inspur.customer.object.org.SmsbMessageGroupDto;
|
|
|
import com.inspur.customer.object.org.SmsbMessageGroupQuery;
|
|
|
import com.inspur.customer.utils.BeanCopyUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author fantingwei
|
|
|
@@ -29,6 +36,8 @@ import java.util.Objects;
|
|
|
@DubboService(interfaceClass = SmsbMessageGroupService.class)
|
|
|
public class SmsbMessageGroupServiceImpl extends ServiceImpl<SmsbMessageGroupMapper, SmsbMessageGroupDO> implements SmsbMessageGroupService {
|
|
|
|
|
|
+ @DubboReference
|
|
|
+ private SmsbMessageGroupMemberService smsbMessageGroupMemberService;
|
|
|
|
|
|
@Override
|
|
|
public Response add(SmsbMessageGroupDto smsbMessageGroupDto) {
|
|
|
@@ -84,4 +93,28 @@ public class SmsbMessageGroupServiceImpl extends ServiceImpl<SmsbMessageGroupMap
|
|
|
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Map<Long, List<KeycloakUserCO>> listUserByInformLevel(String tenant, int informLevel, int errorId) {
|
|
|
+ // 获取消息分组中,当前启用的,符合tenant、informLevel、errorId的分组
|
|
|
+ List<SmsbMessageGroupDO> messageList = lambdaQuery()
|
|
|
+ .eq(StringUtils.isNotEmpty(tenant), SmsbMessageGroupDO::getTenant, tenant)
|
|
|
+ .ne(SmsbMessageGroupDO::getInformLevel, -1)
|
|
|
+ .eq(SmsbMessageGroupDO::getEnabled, 1)
|
|
|
+ .and(wrapper -> wrapper.nested(nestedWrapper -> nestedWrapper.eq(SmsbMessageGroupDO::getInformLevel, 9999)
|
|
|
+ .apply("FIND_IN_SET({0}, REPLACE(REPLACE(inform_type, '[', ''), ']', '')) > 0", errorId))
|
|
|
+ .or()
|
|
|
+ .between(SmsbMessageGroupDO::getInformLevel, 0, informLevel))
|
|
|
+ .list();
|
|
|
+ // 获取需要通知的groupIds
|
|
|
+ List<Long> groupIds = messageList.stream().map(SmsbMessageGroupDO::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(groupIds)) {
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ // key为groupId,value为对应的用户(包含主送抄送状态)
|
|
|
+ Map<Long, List<KeycloakUserCO>> map = smsbMessageGroupMemberService.getByGroupIds(groupIds);
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
}
|