setDeptId($dept_id); $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/department/listsub"); if ($resp->errcode == 0 && $resp->errmsg == 'ok') { $result = $resp->result; return $result; } except($resp->errcode . ' ' . $resp->errmsg); } /** * 获取部门详情 * * @param string $dept_id 部门ID * @return mixed */ public static function department_get($dept_id) { $accessToken = Sample::accessToken()['accessToken']; $c = self::get_obj(); $req = new \OapiV2DepartmentListsubRequest; $req->setDeptId($dept_id); $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/department/get"); if ($resp->errcode == 0 && $resp->errmsg == 'ok') { $result = $resp->result; return $result; } except($resp->errcode . ' ' . $resp->errmsg); } /** * 获取部门用户详情 * * @param string $dept_id 部门ID * @return mixed */ public static function user_list($dept_id) { $accessToken = Sample::accessToken()['accessToken']; $c = self::get_obj(); $req = new \OapiV2UserListRequest; $req->setDeptId($dept_id); $req->setCursor("0"); $req->setSize("100"); $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/user/list"); if ($resp->errcode == 0 && $resp->errmsg == 'ok') { $result = $resp->result; return $result; } except($resp->errcode . ' ' . $resp->errmsg); } /** * 查询用户详情 * * @param string $userid 用户的userId * @return mixed */ public static function user_get($userid) { $accessToken = Sample::accessToken()['accessToken']; $c = self::get_obj(); $req = new \OapiV2UserGetRequest; $req->setUserid($userid); $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/user/get"); if ($resp->errcode == 0 && $resp->errmsg == 'ok') { $result = $resp->result; return $result; } except($resp->errcode . ' ' . $resp->errmsg); } /** * 通过免登码获取用户信息 * * @param string $code 免登授权码 * @return mixed */ public static function get_user_info($code) { $accessToken = Sample::accessToken()['accessToken']; $c = self::get_obj(); $req = new \OapiV2UserGetuserinfoRequest; $req->setCode($code); $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo"); if ($resp->errcode == 0 && $resp->errmsg == 'ok') { $result = $resp->result; return $result; } except($resp->errcode . ' ' . $resp->errmsg); } /** * 设置企业内部应用H5微应用鉴权 * @param string $url 应用URL,例如:https://your-domain.com/path/to/your/app.html * @return mixed **/ public static function generateAuthSignature($url) { // 获取jsapiTicket $jsapiTicket = Sample::jsapiTickets()['jsapiTicket']; // 生成鉴权签名 $nonceStr = randCode(16); // 随机字符串,用于保证签名不可预测性,长度为16个字符的随机字符串 $timeStamp = time(); // 时间戳,格式为13位数字,如:1602756290 $stringA = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timeStamp&url=$url"; $signature = sha1($stringA); // 签名值 // agentId值 // corpId值 $config = config('app.dingtalk'); $agentId = $config['agentId']; $corpId = $config['corpId']; return compact("agentId", "corpId", "nonceStr", "timeStamp", "signature", "url"); } /** * 更新员工和部门 * [{"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}] **/ public static function renew() { // 更新部门 // $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_object = array_column($department_data, null, 'dept_id'); $department_list = Department::field('is_deleted', true) ->where('is_deleted', CommonConstant::IS_DELETED_0) ->select(); $department_object = array_column($department_list->toArray(), null, 'dept_id'); $save_department_data = []; $add_department_data = []; $del_department_data = []; $user_data = []; foreach ($department_data as $value) { if (array_key_exists($value['dept_id'], $department_object)) { $save_department_data[] = $value; } else { $add_department_data[] = $value; } $user_data[] = self::user_list($value['dept_id']); } 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_object)) { $department_data_info = $department_data_object[$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(); } // 更新员工 $user_list = User::field('is_deleted', true) ->where('is_deleted', CommonConstant::IS_DELETED_0) ->select(); $user_object = array_column($user_list->toArray(), null, 'userid'); } /** * 递归 **/ public static function get_tree($dept_id, &$tree = []) { $resp = self::department_listsub($dept_id); foreach ($resp as $value) { $tree[] = [ 'dept_id' => $value->dept_id, 'name' => $value->name, 'parent_id' => $value->parent_id, ]; self::get_tree($value->dept_id, $tree); } return $tree; } }