Explorar el Código

Merge branch '84-integrate' into 'develop'

develpo-20230209

用户增加inform level

See merge request !30

linwenhua hace 2 años
padre
commit
a51a6f5db9

+ 21 - 6
smsb-customer-manager-adapter/src/main/java/com/inspur/customer/web/controller/org/SmsbDepartmentController.java

@@ -115,18 +115,33 @@ public class SmsbDepartmentController {
 
     @PutMapping("/admin/users/update")
     public Response updateUserFirstName(@RequestHeader String userId ,
-                                        @RequestBody SmsbUserUpdate userUpdate){
+                                        @RequestBody SmsbUserUpdate userUpdate) {
         Response checkResponse = departmentService.checkOperationAuthority(userId, userService.getOneByUserId(userUpdate.getUserId()).getTenant());
-        if(!checkResponse.isSuccess()){return checkResponse;}
+        if (!checkResponse.isSuccess()) {
+            return checkResponse;
+        }
         Boolean flag = userService.updateUserFirstName(userUpdate);
-        if(flag){
-            return service.updateUser(userUpdate.getUserId() , userUpdate.getName() , Constant.UPDATE_USER_FIRSTNAME);
+        if (flag) {
+            return service.updateUser(userUpdate.getUserId(), userUpdate.getName(), Constant.UPDATE_USER_FIRSTNAME);
+        }
+        return Response.buildFailure("500", "用户名修改失败!");
+    }
+
+    @PutMapping("/admin/users/update/deviceExceptionLevel")
+    public Response updateUserFirstName(@RequestHeader String userId,
+                                        @RequestBody SmsbUserExceptionLevelUpdate levelUpdate) {
+        Response checkResponse = departmentService.checkOperationAuthority(userId, userService.getOneByUserId(levelUpdate.getUserId()).getTenant());
+        if (!checkResponse.isSuccess()) {
+            return checkResponse;
+        }
+        if (userService.updateDeviceExceptionLevel(levelUpdate)) {
+            return Response.buildSuccess();
         }
-        return Response.buildFailure("500","用户名修改失败!");
+        return Response.buildFailure("500", "接收级别修改失败!");
     }
 
     @GetMapping("/keycloak/oneself/tree")
-    public Response queryOneselfDepartTree(@RequestHeader String userId){
+    public Response queryOneselfDepartTree(@RequestHeader String userId) {
         return departmentService.queryOneselfDepartTree(userId);
     }
 

+ 45 - 3
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/org/SmsbDepartmentUserServiceImpl.java

@@ -24,6 +24,8 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
@@ -110,14 +112,21 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
         return super.update(new LambdaUpdateWrapper<>(SmsbDepartmentUserDO.class)
             .set(SmsbDepartmentUserDO::getDepartmentId , null)
             .set(SmsbDepartmentUserDO::getPath , null)
-            .likeRight(SmsbDepartmentUserDO::getPath , path));
+            .likeRight(SmsbDepartmentUserDO::getPath, path));
     }
 
     @Override
     public Boolean updateUserFirstName(SmsbUserUpdate userUpdate) {
         return super.update(new LambdaUpdateWrapper<>(SmsbDepartmentUserDO.class)
-            .set(SmsbDepartmentUserDO::getName , userUpdate.getName())
-            .eq(SmsbDepartmentUserDO::getUserId , userUpdate.getUserId()));
+            .set(SmsbDepartmentUserDO::getName, userUpdate.getName())
+            .eq(SmsbDepartmentUserDO::getUserId, userUpdate.getUserId()));
+    }
+
+    @Override
+    public boolean updateDeviceExceptionLevel(SmsbUserExceptionLevelUpdate levelUpdate) {
+        return super.update(new LambdaUpdateWrapper<>(SmsbDepartmentUserDO.class)
+            .set(SmsbDepartmentUserDO::getInformLevel, levelUpdate.getInformLevel())
+            .eq(SmsbDepartmentUserDO::getUserId, levelUpdate.getUserId()));
     }
 
     @Override
@@ -162,4 +171,37 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
         });
         return smsbSimpleUserList;
     }
+
+    /**
+     * 获取指定org下接收级别<=informLevel的用户
+     *
+     * @param org         指定org
+     * @param informLevel 指定informLevel
+     * @return 指定部门下接收级别<= informLevel的用户
+     */
+    @Override
+    public List<SmsbSimpleUserCO> listUserByOrgAndInformLevel(String tenant, List<String> org, int informLevel) {
+        List<SmsbDepartmentUserDO> list = new ArrayList<>(this.list(Wrappers.lambdaQuery(SmsbDepartmentUserDO.class)
+            .eq(SmsbDepartmentUserDO::getTenant, tenant)
+            .eq(SmsbDepartmentUserDO::getEnabled, 1)
+            .eq(SmsbDepartmentUserDO::getInformLevel, 9999)));
+        if (!CollectionUtils.isEmpty(org)) {
+
+            LambdaQueryWrapper<SmsbDepartmentUserDO> queryWrapper = Wrappers.lambdaQuery();
+
+            queryWrapper.in(SmsbDepartmentUserDO::getPath, org);
+            queryWrapper.eq(SmsbDepartmentUserDO::getEnabled, 1);
+            queryWrapper.le(SmsbDepartmentUserDO::getInformLevel, informLevel);
+
+            list.addAll(this.list(queryWrapper));
+        }
+
+        List<SmsbSimpleUserCO> smsbSimpleUserList = Lists.newArrayListWithCapacity(list.size());
+        list.forEach(user -> {
+            SmsbSimpleUserCO userCO = new SmsbSimpleUserCO();
+            BeanUtils.copyProperties(user, userCO);
+            smsbSimpleUserList.add(userCO);
+        });
+        return smsbSimpleUserList;
+    }
 }

+ 23 - 0
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/tenant/UserInformServiceImpl.java

@@ -2,10 +2,12 @@ package com.inspur.customer.service.tenant;
 
 import com.alibaba.cola.exception.BizException;
 import com.inspur.customer.client.keycloak.KeycloakService;
+import com.inspur.customer.client.org.SmsbDepartmentUserService;
 import com.inspur.customer.client.tenant.TenantExceptionInformStrategyService;
 import com.inspur.customer.client.tenant.UserInformService;
 import com.inspur.customer.context.inform.InformLevelEnum;
 import com.inspur.customer.context.inform.InformTypeEnum;
+import com.inspur.customer.object.org.SmsbSimpleUserCO;
 import com.inspur.customer.object.tenant.InformAddresseeCO;
 import com.inspur.customer.object.keycloak.KeycloakUserCO;
 import com.inspur.customer.object.tenant.ExceptionInformStrategyCmd;
@@ -13,11 +15,13 @@ import com.inspur.customer.object.tenant.TenantExceptionInformStrategyCO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Nullable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author linwenhua
@@ -30,6 +34,8 @@ public class UserInformServiceImpl implements UserInformService {
     @DubboReference
     private KeycloakService keycloakService;
     @DubboReference
+    private SmsbDepartmentUserService departmentUserService;
+    @DubboReference
     private TenantExceptionInformStrategyService tenantExceptionInformStrategyService;
 
     @Override
@@ -68,6 +74,23 @@ public class UserInformServiceImpl implements UserInformService {
                 throw new BizException("500", "类型错误");
             }
         }
+
+        //关联的org需要对该org下的用户进行预警,并且需要用户的接收级别<=异常级别,这里我们用informLevel的id表示级别的递增
+        if (!CollectionUtils.isEmpty(org)) {
+            log.debug("users:{}", users);
+            List<SmsbSimpleUserCO> orgUserList = departmentUserService.listUserByOrgAndInformLevel(tenant, org, informLevel.getId());
+            List<String> existedUserIdList = users.stream().map(KeycloakUserCO::getId).collect(Collectors.toList());
+            List<String> orgUserIdList = orgUserList.stream().map(SmsbSimpleUserCO::getUserId).distinct().collect(Collectors.toList());
+            orgUserIdList.removeAll(existedUserIdList);
+            log.debug("orgUserIdList:{}", orgUserIdList);
+            if (!CollectionUtils.isEmpty(orgUserIdList)) {
+                List<KeycloakUserCO> orgKeyCloakUserList = keycloakService.getUsersByIds(orgUserIdList);
+                log.debug("orgKeyCloakUserList:{}", orgKeyCloakUserList);
+                users.addAll(orgKeyCloakUserList);
+            }
+        }
+
+
         informAddressee.setUsers(users);
         return informAddressee;
     }

+ 11 - 0
smsb-customer-manager-client/src/main/java/com/inspur/customer/client/org/SmsbDepartmentUserService.java

@@ -82,6 +82,8 @@ public interface SmsbDepartmentUserService {
      */
     Boolean updateUserFirstName(SmsbUserUpdate userUpdate);
 
+    boolean updateDeviceExceptionLevel(SmsbUserExceptionLevelUpdate levelUpdate);
+
 
     /**
      * get simple user
@@ -92,4 +94,13 @@ public interface SmsbDepartmentUserService {
     SmsbSimpleUserCO getOneByUserId(String userId);
 
     List<SmsbSimpleUserCO> listUserByDeprIds(SmsbDepartmentCmd departmentCmd, String path);
+
+    /**
+     * 获取指定org下接收级别<=informLevel的用户
+     *
+     * @param org         指定org
+     * @param informLevel 指定informLevel
+     * @return 指定部门下接收级别<= informLevel的用户
+     */
+    List<SmsbSimpleUserCO> listUserByOrgAndInformLevel(String tenant, List<String> org, int informLevel);
 }

+ 2 - 0
smsb-customer-manager-client/src/main/java/com/inspur/customer/object/org/SmsbUserAdd.java

@@ -45,4 +45,6 @@ public class SmsbUserAdd extends OperationAuthority {
      */
     @NotNull(message = "credentials不能为空")
     private List<CredentialRepresentation> credentials;
+
+    private Integer informLevel;
 }

+ 25 - 0
smsb-customer-manager-client/src/main/java/com/inspur/customer/object/org/SmsbUserExceptionLevelUpdate.java

@@ -0,0 +1,25 @@
+package com.inspur.customer.object.org;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author zengweijie
+ * @version 1.0
+ * @date 2023/2/9
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SmsbUserExceptionLevelUpdate extends OperationAuthority {
+    private static final long serialVersionUID = -79360028340473287L;
+    /**
+     * 用户ID
+     */
+    @NotNull(message = "userId不能为空")
+    private String userId;
+
+    @NotNull(message = "通知级别不能为空")
+    private Integer informLevel;
+}

+ 1 - 0
smsb-customer-manager-infrastructure/src/main/java/com/inspur/customer/infrastructure/convertor/SmsbDepartmentConvertor.java

@@ -39,6 +39,7 @@ public class SmsbDepartmentConvertor {
         userRelation.setEnabled(Constant.AccountNumberEnum.ENABLE.value());
         userRelation.setTenant(smsbUserAdd.getTenant());
         userRelation.setCreateTime(LocalDateTime.now());
+        userRelation.setInformLevel(smsbUserAdd.getInformLevel());
         return userRelation;
     }
 }

+ 6 - 0
smsb-customer-manager-infrastructure/src/main/java/com/inspur/customer/infrastructure/object/org/SmsbDepartmentUserDO.java

@@ -71,4 +71,10 @@ public class SmsbDepartmentUserDO implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
     private LocalDateTime createTime;
+
+    /**
+     * 同部门下设备异常预警接收级别
+     */
+    @TableField("inform_level")
+    private Integer informLevel;
 }