Browse Source

更新员工和部门

zhanglinxin 1 year ago
parent
commit
9b86da684f
1 changed files with 62 additions and 54 deletions
  1. 62 54
      application/common/service/DingtalkService.php

+ 62 - 54
application/common/service/DingtalkService.php

@@ -6,6 +6,8 @@ use app\common\constant\CommonConstant;
 use app\common\model\Department;
 use app\common\model\User;
 use app\extend\Dingtalk\Sample;
+use think\Db;
+use think\Exception;
 
 /**
  * 钉钉服务类
@@ -160,14 +162,12 @@ class DingtalkService
         $add_user_data = [];
         $del_user_data = [];
 
-        // 更新部门
         $department_data = self::get_tree(1);
         $department_data_key = array_column($department_data, null, 'dept_id');
         $department_list = Department::field('is_deleted', true)
             ->where('is_deleted', CommonConstant::IS_DELETED_0)
             ->select();
         $department_key = array_column($department_list->toArray(), null, 'dept_id');
-
         foreach ($department_data as $value) {
             if (array_key_exists($value['dept_id'], $department_key)) {
                 $save_department_data[] = $value;
@@ -176,12 +176,12 @@ class DingtalkService
             }
 
             $user_list = self::user_list($value['dept_id']);
-            if($user_list->list){
+            if ($user_list->list) {
                 $department_user_data[$value['dept_id']] = $user_list->list;
             }
         }
         foreach ($department_user_data as $value) {
-            foreach ($value as $val){
+            foreach ($value as $val) {
                 $user_data[] = (array)$val;
             }
         }
@@ -191,63 +191,70 @@ class DingtalkService
             ->select();
         $user_key = array_column($user_list->toArray(), null, 'userid');
 
-        if ($save_department_data) {
-            foreach ($department_list as $val) {
-                if (array_key_exists($val['dept_id'], $department_data_key)) {
-                    $department_data_info = $department_data_key[$val['dept_id']];
-                    $val->save($department_data_info);
-                } else {
-                    $del_department_data[] = $val['id'];
+        Db::startTrans();
+        try {
+            // 更新部门
+            if ($save_department_data) {
+                foreach ($department_list as $val) {
+                    if (array_key_exists($val['dept_id'], $department_data_key)) {
+                        $department_data_info = $department_data_key[$val['dept_id']];
+                        $val->save($department_data_info);
+                    } else {
+                        $del_department_data[] = $val['id'];
+                    }
                 }
             }
-        }
-        if ($add_department_data) {
-            Department::insertAll($add_department_data);
-        }
-        if ($del_department_data) {
-            Department::where('id', 'in', $del_department_data)->delete();
-        }
-
-        // 更新员工
-        foreach ($user_data as $value) {
-            if (array_key_exists($value['userid'], $user_key)) {
-                $data = [
-                    'userid'=>$value['userid'],
-                    'unionid'=>$value['unionid'],
-                    'department' => implode(',', $value['dept_id_list']),
-                ];
-                $save_user_data[] = $data;
-            } else {
-                $data = [
-                    'userid' => $value['userid'],
-                    'unionid' => $value['unionid'],
-                    'name' => $value['name'],
-                    'avatar' => $value['avatar'],
-                    'mobile' => isset($value['mobile']) ? $value['mobile'] : '',
-                    'title' => isset($value['title']) ? $value['title'] : '',
-                    'manager_userid' => isset($value['manager_userid']) ? $value['manager_userid'] : '',
-                    'department' => implode(',', $value['dept_id_list']),
-                ];
-                $add_user_data[] = $data;
+            if ($add_department_data) {
+                Department::insertAll($add_department_data);
             }
-        }
-        if ($save_user_data) {
-            foreach ($user_list as $val) {
-                if (array_key_exists($val['userid'], $user_data_key)) {
-                    $user_data_info = $user_data_key[$val['userid']];
-                    $val->save($user_data_info);
+            if ($del_department_data) {
+                Department::where('id', 'in', $del_department_data)->delete();
+            }
+
+            // 更新员工
+            foreach ($user_data as $value) {
+                if (array_key_exists($value['userid'], $user_key)) {
+                    $data = [
+                        'userid' => $value['userid'],
+                        'unionid' => $value['unionid'],
+                        'department' => implode(',', $value['dept_id_list']),
+                    ];
+                    $save_user_data[] = $data;
                 } else {
-                    $del_user_data[] = $val['id'];
+                    $data = [
+                        'userid' => $value['userid'],
+                        'unionid' => $value['unionid'],
+                        'name' => $value['name'],
+                        'avatar' => $value['avatar'],
+                        'mobile' => isset($value['mobile']) ? $value['mobile'] : '',
+                        'title' => isset($value['title']) ? $value['title'] : '',
+                        'manager_userid' => isset($value['manager_userid']) ? $value['manager_userid'] : '',
+                        'department' => implode(',', $value['dept_id_list']),
+                    ];
+                    $add_user_data[] = $data;
                 }
             }
+            if ($save_user_data) {
+                foreach ($user_list as $val) {
+                    if (array_key_exists($val['userid'], $user_data_key)) {
+                        $user_data_info = $user_data_key[$val['userid']];
+                        $val->save($user_data_info);
+                    } else {
+                        $del_user_data[] = $val['id'];
+                    }
+                }
+            }
+            if ($add_user_data) {
+                User::insertAll($add_user_data);
+            }
+            if ($del_user_data) {
+                User::where('id', 'in', $del_user_data)->delete();
+            }
+        } catch (Exception $e) {
+            Db::rollback();
+            except('出现错误:' . $e->getMessage());
         }
-        if ($add_user_data) {
-            User::insertAll($add_user_data);
-        }
-        if ($del_user_data) {
-            User::where('id', 'in', $del_user_data)->delete();
-        }
-
+        return true;
     }
 
     /**
@@ -266,4 +273,5 @@ class DingtalkService
         }
         return $tree;
     }
+
 }