|
|
@@ -3,6 +3,7 @@ package com.inspur.customer.service.org;
|
|
|
import com.alibaba.cola.dto.PageResponse;
|
|
|
import com.alibaba.cola.dto.Response;
|
|
|
import com.alibaba.cola.dto.SingleResponse;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
@@ -10,6 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.inspur.customer.client.org.SmsbDepartmentService;
|
|
|
import com.inspur.customer.client.org.SmsbDepartmentUserService;
|
|
|
import com.inspur.customer.constant.Constant;
|
|
|
import com.inspur.customer.infrastructure.convertor.SmsbDepartmentConvertor;
|
|
|
@@ -20,11 +22,14 @@ import com.inspur.customer.object.keycloak.SwitchDTO;
|
|
|
import com.inspur.customer.object.org.*;
|
|
|
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.beans.BeanUtils;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
|
|
|
@@ -37,6 +42,9 @@ import java.util.*;
|
|
|
@DubboService(interfaceClass = SmsbDepartmentUserService.class)
|
|
|
public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUserMapper, SmsbDepartmentUserDO> implements SmsbDepartmentUserService{
|
|
|
|
|
|
+ @Lazy
|
|
|
+ @Resource
|
|
|
+ private SmsbDepartmentService departmentService;
|
|
|
@Override
|
|
|
public Boolean addUserDepartment(String userId, SmsbUserAdd smsbUserAdd) {
|
|
|
return super.save(SmsbDepartmentConvertor.toDataObjectForCreate(userId , smsbUserAdd));
|
|
|
@@ -125,6 +133,8 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
|
|
|
public boolean updateDeviceExceptionLevel(SmsbUserExceptionLevelUpdate levelUpdate) {
|
|
|
return super.update(new LambdaUpdateWrapper<>(SmsbDepartmentUserDO.class)
|
|
|
.set(SmsbDepartmentUserDO::getInformLevel, levelUpdate.getInformLevel())
|
|
|
+ .set(SmsbDepartmentUserDO::getInformType, CollectionUtils.isEmpty(levelUpdate.getInformType())
|
|
|
+ ? null: JSONObject.toJSONString(levelUpdate.getInformType()))
|
|
|
.eq(SmsbDepartmentUserDO::getUserId, levelUpdate.getUserId()));
|
|
|
}
|
|
|
|
|
|
@@ -182,25 +192,26 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
|
|
|
* @return 指定部门下接收级别<= informLevel的用户
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<SmsbSimpleUserCO> listUserByInformLevel(String tenant, List<String> org, int informLevel) {
|
|
|
+ public List<SmsbSimpleUserCO> listUserByInformLevel(String tenant, List<String> org, int informLevel ,int errorId) {
|
|
|
LambdaQueryWrapper<SmsbDepartmentUserDO> queryWrapper = Wrappers.lambdaQuery();
|
|
|
-
|
|
|
+ List<String> paths = departmentService.listSuperiorDepartments(org, tenant);
|
|
|
queryWrapper.eq(SmsbDepartmentUserDO::getTenant, tenant)
|
|
|
.ne(SmsbDepartmentUserDO::getInformLevel, -1)
|
|
|
.eq(SmsbDepartmentUserDO::getEnabled, 1)
|
|
|
.between(SmsbDepartmentUserDO::getInformLevel, 1000, 1000 + informLevel)
|
|
|
- .or(!CollectionUtils.isEmpty(org), q -> q.ne(SmsbDepartmentUserDO::getInformLevel, -1)
|
|
|
- .in(SmsbDepartmentUserDO::getPath, org)
|
|
|
+ .or(!CollectionUtils.isEmpty(paths), q -> q.ne(SmsbDepartmentUserDO::getInformLevel, -1)
|
|
|
+ .in(SmsbDepartmentUserDO::getPath, paths)
|
|
|
.eq(SmsbDepartmentUserDO::getEnabled, 1)
|
|
|
.eq(SmsbDepartmentUserDO::getTenant, tenant)
|
|
|
.between(SmsbDepartmentUserDO::getInformLevel, 0, informLevel))
|
|
|
//部门为空代表设备在根部门
|
|
|
- .or(CollectionUtils.isEmpty(org), q -> q.ne(SmsbDepartmentUserDO::getInformLevel, -1)
|
|
|
+ .or(CollectionUtils.isEmpty(paths), q -> q.ne(SmsbDepartmentUserDO::getInformLevel, -1)
|
|
|
.isNull(SmsbDepartmentUserDO::getPath)
|
|
|
.eq(SmsbDepartmentUserDO::getEnabled, 1)
|
|
|
.eq(SmsbDepartmentUserDO::getTenant, tenant)
|
|
|
.between(SmsbDepartmentUserDO::getInformLevel, 0, informLevel));
|
|
|
-
|
|
|
+ queryWrapper.or(i->i.eq(SmsbDepartmentUserDO::getInformLevel , 9999)
|
|
|
+ .like(SmsbDepartmentUserDO::getInformType , ","+errorId+","));
|
|
|
List<SmsbDepartmentUserDO> list = this.list(queryWrapper);
|
|
|
|
|
|
List<SmsbSimpleUserCO> smsbSimpleUserList = Lists.newArrayListWithCapacity(list.size());
|
|
|
@@ -233,4 +244,24 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
|
|
|
this.list().forEach(user -> userMap.put(user.getUserId(),user.getUserName()));
|
|
|
return userMap;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<KeycloakUserCO> listUser(List<String> userIds) {
|
|
|
+ List<KeycloakUserCO> userList = Lists.newArrayListWithCapacity(userIds.size());
|
|
|
+ List<SmsbDepartmentUserDO> departmentUsers = super.list(Wrappers.<SmsbDepartmentUserDO>lambdaQuery()
|
|
|
+ .in(SmsbDepartmentUserDO::getUserId, userIds));
|
|
|
+ if(CollectionUtils.isNotEmpty(departmentUsers)){
|
|
|
+ departmentUsers.forEach(departmentUser->{
|
|
|
+ KeycloakUserCO keycloakUserCO = new KeycloakUserCO();
|
|
|
+ keycloakUserCO.setId(departmentUser.getUserId());
|
|
|
+ keycloakUserCO.setUsername(departmentUser.getUserName());
|
|
|
+ keycloakUserCO.setPhone(Collections.singletonList(departmentUser.getPhone()));
|
|
|
+ keycloakUserCO.setEmail(departmentUser.getEmail());
|
|
|
+ keycloakUserCO.setWechat(Collections.singletonList(departmentUser.getWechat()));
|
|
|
+ keycloakUserCO.setWechatAppletOpenId(departmentUser.getWechatApplet());
|
|
|
+ userList.add(keycloakUserCO);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return userList;
|
|
|
+ }
|
|
|
}
|