zhanglinxin пре 1 година
родитељ
комит
3b6aab9679
2 измењених фајлова са 82 додато и 114 уклоњено
  1. 29 98
      application/api/controller/Dingtalk.php
  2. 53 16
      application/common/service/DingtalkService.php

+ 29 - 98
application/api/controller/Dingtalk.php

@@ -2,9 +2,6 @@
 
 namespace app\api\controller;
 
-use app\common\constant\CommonConstant;
-use app\common\model\Department;
-use app\common\model\User;
 use app\common\service\DingtalkService;
 use hg\apidoc\annotation as Apidoc;
 
@@ -15,36 +12,49 @@ use hg\apidoc\annotation as Apidoc;
  */
 class Dingtalk extends Base
 {
+    // 需要登录
+    protected $need_login = [];
+
+    public function initialize()
+    {
+        parent::initialize();
+    }
 
     /**
-     * 获取部门列表
+     * 获取鉴权需要的参数
      *
+     * @Apidoc\Desc("设置企业内部应用H5微应用鉴权")
      * @Apidoc\Method("POST")
-     * @Apidoc\Param("dept_id", type="integer",require=true, desc="父部门ID")
+     * @Apidoc\Param("url", type="string", require=true, desc="应用URL")
+     **/
+    public function get_auth(){
+        $url = input('url') ?: '';
+        $this->success('获取鉴权需要的参数',DingtalkService::generateAuthSignature($url));
+    }
+
+    /**
+     * 更新员工和部门
+     *
+     * @Apidoc\Method("POST")
+     **/
+    public function renew(){
+        DingtalkService::renew();
+        $this->success('更新员工和部门成功');
+    }
+
+
+    /**
+     * 获取部门列表
      */
     public function department_listsub()
     {
         $dept_id = input('dept_id');
         $resp = DingtalkService::department_listsub($dept_id);
-        $data = [];
-        foreach ($resp as $value) {
-            $data[] = [
-                'dept_id' => $value->dept_id,
-                'name' => $value->name,
-                'parent_id' => $value->parent_id,
-            ];
-        }
-        if ($data) {
-            Department::insertAll($data);
-        }
         $this->success('获取部门列表', $resp);
     }
 
     /**
      * 获取部门详情
-     *
-     * @Apidoc\Method("POST")
-     * @Apidoc\Param("dept_id", type="integer",require=true, desc="部门ID")
      */
     public function department_get()
     {
@@ -55,41 +65,16 @@ class Dingtalk extends Base
 
     /**
      * 获取部门用户详情
-     *
-     * @Apidoc\Method("POST")
-     * @Apidoc\Param("dept_id", type="integer",require=true, desc="部门ID")
      */
     public function user_list()
     {
         $dept_id = input('dept_id');
         $resp = DingtalkService::user_list($dept_id);
-        if($resp->list){
-            $data = [];
-            foreach ($resp->list as $value) {
-                $data[] = [
-                    'userid' => $value->userid,
-                    'unionid' => $value->unionid,
-                    'name' => $value->name,
-                    'avatar' => $value->avatar,
-                    'mobile' => isset($value->mobile) ? $value->mobile : '',
-                    'email' => isset($value->email) ? $value->email : '',
-                    'title' => isset($value->title) ? $value->title : '',
-                    'manager_userid' => isset($value->manager_userid) ? $value->manager_userid : '',
-                    'department' => implode(',', $value->dept_id_list),
-                ];
-            }
-            if ($data) {
-                User::insertAll($data);
-            }
-        }
         $this->success('获取部门用户详情', $resp);
     }
 
     /**
      * 查询用户详情
-     *
-     * @Apidoc\Method("POST")
-     * @Apidoc\Param("userid", type="string",require=true, desc="用户的userId")
      */
     public function get_users()
     {
@@ -98,58 +83,4 @@ class Dingtalk extends Base
         $this->success('查询用户详情', $resp);
     }
 
-    //获取用户列表
-    public function get_member()
-    {
-        $list = User::select();
-//        $data = array_column($list->toArray(), null, 'userid');
-        $no_user_list = [];
-        $user_list = [];
-        foreach ($list as $value) {
-            $resp = DingtalkService::user_get($value['userid']);
-            if ($resp->errcode == 0) {
-                $user_list[$resp->result->userid] = [
-                    'userid' => $resp->result->userid,
-                    'manager_userid' => isset($resp->result->manager_userid) ? $resp->result->manager_userid : '',
-                ];
-            }
-            if ($resp->errcode == 60121) {
-                $no_user_list[$value['userid']] = [
-                    'userid' => $value['userid'],
-                ];
-            }
-        }
-
-        foreach ($list as $val) {
-            if (array_key_exists($val['userid'], $user_list)) {
-                $val->manager_userid = $user_list[$val['userid']]['manager_userid'];
-                $val->save();
-            }
-        }
-        if ($no_user_list) {
-            User::where('userid', 'in', array_keys($no_user_list))->update(['is_deleted' => 1]);
-        }
-    }
-
-    /**
-     * 获取鉴权需要的参数
-     *
-     * @Apidoc\Desc("设置企业内部应用H5微应用鉴权")
-     * @Apidoc\Method("POST")
-     * @Apidoc\Param("url", type="string", require=true, desc="应用URL")
-     **/
-    public function get_auth(){
-        $url = input('url') ?: '';
-        $this->success('获取鉴权需要的参数',DingtalkService::generateAuthSignature($url));
-    }
-
-    /**
-     * 更新员工和部门
-     *
-     * @Apidoc\Method("POST")
-     **/
-    public function renew(){
-        DingtalkService::renew();
-        $this->success('更新员工和部门成功');
-    }
 }

+ 53 - 16
application/common/service/DingtalkService.php

@@ -151,20 +151,22 @@ class DingtalkService
      **/
     public static function renew()
     {
+        $save_department_data = [];
+        $add_department_data = [];
+        $del_department_data = [];
+        $department_user_data = [];
+        $user_data = [];
+        $save_user_data = [];
+        $add_user_data = [];
+        $del_user_data = [];
+
         // 更新部门
-//        $department_data = self::get_tree(1);
-        $department_data = '[{"dept_id":438337214,"name":"BOSS","parent_id":1},{"dept_id":438145402,"name":"项目管理中心","parent_id":1},{"dept_id":501674219,"name":"技术部","parent_id":438145402},{"dept_id":500773946,"name":"项目一组","parent_id":501674219},{"dept_id":501193520,"name":"项目二组","parent_id":501674219},{"dept_id":731200005,"name":"Ui测试组","parent_id":501674219},{"dept_id":501415496,"name":"销售部","parent_id":438145402},{"dept_id":859178110,"name":"运营部","parent_id":438145402},{"dept_id":724339668,"name":"职能支持中心","parent_id":1},{"dept_id":438218445,"name":"人力资源部","parent_id":724339668},{"dept_id":702458745,"name":"财务部","parent_id":724339668}]';
-        $department_data = json_decode($department_data, JSON_UNESCAPED_UNICODE);
+        $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');
-        $save_department_data = [];
-        $add_department_data = [];
-        $del_department_data = [];
-        $department_user_data = [];
-        $user_data = [];
 
         foreach ($department_data as $value) {
             if (array_key_exists($value['dept_id'], $department_key)) {
@@ -183,11 +185,12 @@ class DingtalkService
                 $user_data[] = (array)$val;
             }
         }
-//        $user_data_key = array_column($user_data, null, 'userid');
+        $user_data_key = array_column($user_data, null, 'userid');
+        $user_list = User::field('is_deleted', true)
+            ->where('is_deleted', CommonConstant::IS_DELETED_0)
+            ->select();
+        $user_key = array_column($user_list->toArray(), null, 'userid');
 
-        p($user_data);
-        p(json_encode($user_data,JSON_UNESCAPED_UNICODE));
-        exit;
         if ($save_department_data) {
             foreach ($department_list as $val) {
                 if (array_key_exists($val['dept_id'], $department_data_key)) {
@@ -206,10 +209,44 @@ class DingtalkService
         }
 
         // 更新员工
-        $user_list = User::field('is_deleted', true)
-            ->where('is_deleted', CommonConstant::IS_DELETED_0)
-            ->select();
-        $user_key = array_column($user_list->toArray(), null, 'userid');
+        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 ($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();
+        }
 
     }