Parcourir la source

新增用户失败之后删除

丁治程 il y a 9 mois
Parent
commit
2c79f3c42d

+ 56 - 23
jeecg-module-interlock/src/main/java/org/jeecg/modules/interlockUser/service/impl/InterlockUserServiceImpl.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.interlockUser.service.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.util.oConvertUtils;
@@ -110,46 +111,78 @@ public class InterlockUserServiceImpl extends ServiceImpl<InterlockUserMapper, I
         SysUserRole userRole = new SysUserRole(userId, interlockUserAdd.getRoleId());
         sysUserRoleService.save(userRole);
 
-        addSSOIoTEdgeUser(interlockUserAdd,interlockUser,eiToken);
+        int i = addSSOIoTEdgeUser(interlockUserAdd, interlockUser, eiToken);
+
+        if (i > 0){
+            this.removeById(interlockUser);
+            UpdateWrapper<InterlockSystemLimit> upQuery = new UpdateWrapper<>();
+            upQuery.eq("interlock_user_id",interlockUser.getId());
+            interlockSystemLimitService.remove(upQuery);
+            return Result.error("用户添加失败!");
+        }
 
 
         return Result.OK("用户添加成功!");
     }
 
-    private void addSSOIoTEdgeUser(InterlockUserAdd interlockUserAdd, InterlockUser interlockUser, String eiToken) {
+    private int addSSOIoTEdgeUser(InterlockUserAdd interlockUserAdd, InterlockUser interlockUser, String eiToken) {
+        int count = 0;
         try {
             restClientService.addSSOUser(interlockUserAdd.getUsername());
         } catch (Exception e) {
             log.info("SSO新增用户报错:{}",e.getMessage());
+            count++;
         } finally {
-            JSONObject jsonObject = restClientService.invitationSSOUserInIoTEdge(interlockUserAdd.getUsername(), eiToken);
-            String code = (String) jsonObject.get("code");
-            String iotUserId = (String) jsonObject.get("userId");
+            try {
+                JSONObject jsonObject = restClientService.invitationSSOUserInIoTEdge(interlockUserAdd.getUsername(), eiToken);
+                String code = (String) jsonObject.get("code");
+                String iotUserId = (String) jsonObject.get("userId");
 
-            interlockUser.setIotUserid(iotUserId);
-            this.updateById(interlockUser);
+                interlockUser.setIotUserid(iotUserId);
+                this.updateById(interlockUser);
 
-            if (ObjectUtil.isNotNull(code)){
-                log.info("IoTEdge邀请SSO用户失败: {}"+jsonObject.get("message").toString());
-            }
-            String rloe = "";
-            if ("0".equals(interlockUserAdd.getRole())){
-                rloe = "systemAdmin";
-                restClientService.setUserRole(iotUserId,"",rloe,eiToken);
-            }else {
-                for (InterlockSystemLimit item : interlockUserAdd.getSystemLimitList()) {
-                    //InterlockBase base = baseService.getById(item.getId());
-                    if ("1".equals(interlockUserAdd.getRole()) && ObjectUtil.isNotNull(item.getLimitType()) && "0".equals(item.getLimitType())){
-                        rloe = "groupAdmin";
-                        restClientService.setUserRole(iotUserId,item.getIotedgeGroupId(),rloe,eiToken);
-                    }else if ("1".equals(interlockUserAdd.getRole()) && ObjectUtil.isNotNull(item.getLimitType()) && "1".equals(item.getLimitType())){
-                        rloe = "groupView";
-                        restClientService.setUserRole(iotUserId,item.getIotedgeGroupId(),rloe,eiToken);
+                if (ObjectUtil.isNotNull(code)){
+                    log.info("IoTEdge邀请SSO用户失败: {}"+jsonObject.get("message").toString());
+                }
+                String rloe = "";
+                if ("0".equals(interlockUserAdd.getRole())){
+                    rloe = "systemAdmin";
+                    try {
+                        restClientService.setUserRole(iotUserId,"",rloe,eiToken);
+                    } catch (Exception e) {
+                        log.info("IoTEdge分配角色报错:{}",e.getMessage());
+                        count++;
+                    }
+                }else {
+                    for (InterlockSystemLimit item : interlockUserAdd.getSystemLimitList()) {
+                        //InterlockBase base = baseService.getById(item.getId());
+                        if ("1".equals(interlockUserAdd.getRole()) && ObjectUtil.isNotNull(item.getLimitType()) && "0".equals(item.getLimitType())){
+                            rloe = "groupAdmin";
+                            try {
+                                restClientService.setUserRole(iotUserId,item.getIotedgeGroupId(),rloe,eiToken);
+                            } catch (Exception e) {
+                                log.info("IoTEdge分配角色报错:{}",e.getMessage());
+                                count++;
+                            }
+                        }else if ("1".equals(interlockUserAdd.getRole()) && ObjectUtil.isNotNull(item.getLimitType()) && "1".equals(item.getLimitType())){
+                            rloe = "groupView";
+                            try {
+                                restClientService.setUserRole(iotUserId,item.getIotedgeGroupId(),rloe,eiToken);
+                            } catch (Exception e) {
+                                log.info("IoTEdge分配角色报错:{}",e.getMessage());
+                                count++;
+                            }
+                        }
                     }
                 }
+            } catch (Exception e) {
+                log.info("IoTEdge邀请SSO用户报错:{}",e.getMessage());
+                count++;
             }
 
         }
+
+        return count;
     }
 
     /**