getconfig('meetsys_admin_name'), 'password'=>getconfig('meetsys_admin_pass'), 'from'=>'wx' ]; $adminid = getconfig('meetsys_admin_id'); // } else { // $body = [ // 'username'=>$uname, // 'password'=>substr(md5($pass), 0, 16), // 'from'=>'wx' // ]; // } // 发送请求 $resp = $this->sendPostRequest($loginUrl, $body); $code = $resp['code'] ?? -1; // 登录成功 if ($code != 0) { // 登录报错处理 if ($code == 400) { $msg = $resp['msg']; // 本地表中获取到用户信息 $dataOne = $this->getone("username='$uname'", 'count(1) as con'); $getCon = $dataOne['con']; // 找到了说明已经创建了,肯定是密码错了 if ($getCon > 0) { // 用户名或者密码错误 $type = '用户信息-登录时-'.$code; $remark = $msg; m('log')->addlog($type, $remark); // 阻止一下,要不第二次登录就创建用户了 return; } else { $type = '用户信息-登录时-'.$code; $remark = '我要创建用户了啊'; m('log')->addlog($type, $remark); // 没找到就要创建用户了->执行创建用户 $this->createUser($uname, md5($pass)); // 创建后登录 $resp = $this->sendPostRequest($loginUrl, $body); // 如果创建失败,写日志退出 if ($resp['code'] ?? -1!= 0) { $type = '登录第三方会议-登录时-创建用户'; $remark = "用户{$uname}登录失败,错误信息:{$resp['msg']}"; m('log')->addlog($type, $remark); return; } } } else { $type = '登录第三方会议-登录'; $remark = "用户{$uname}登录失败,错误信息:{$resp['msg']}"; m('log')->addlog($type, $remark); return; } } // 登录成功记录token $resp = $resp['data']; $data = [ 'uid' => $resp['user']['id'], 'admin_id' => $resp['user']['admin_id'], 'username' => $resp['user']['username'], 'face' => $resp['user']['face'], 'door_pass' => $resp['user']['door_pass'], 'token' => $resp['token'], 'token_expired' => date('Y-m-d H:i:s', $resp['expired']), 'oa_uid' => $adminid, 'pass' => substr(md5($pass), 0, 16), 'desc' => $pass, ]; // 查找是否已有登录信息 $conInfo = m('meet_sys_login')->getone("`oa_uid`=$adminid", 'count(1) con'); $con = $conInfo['con']; // 如果存在则更新,不存在则插入 if ($con > 0) { $type = '登录第三方会议-登录2'; $remark = '更新'; m('meet_sys_login')->update($data, "`oa_uid`=".$adminid); } else { $type = '登录第三方会议-登录3'; // $remark = $con.json_encode($data); $remark = '插入'; m('meet_sys_login')->insert($data); } m('log')->addlog($type, $remark); } /* * 第三方会议-登录————创建用户 * */ public function createUser($uname, $md5Pass, $isSelf=True) { $baseUrl = getconfig('meetsys_basurl'); $url = $baseUrl.'user/add'; $md5Pass = substr($md5Pass, 0, 16); // 第三方限制长度,限制一下长度 $body = [ 'username'=>$uname, // 用户名 'password'=>$md5Pass, // 密码 'face'=>'' // 人脸图url地址 ]; // 会议管理员token $adminname = getconfig('meetsys_admin_name'); $token = $this->getMeetSysToken(); // 打log $type = '登录第三方会议-创建用户-获取token'; m('log')->addlog($type, $adminname); // 请求创建用户接口 $resp = $this->sendPostRequest($url, $body, $token); $code = $resp['code'] ?? -1; if ($code != 0) { $msg = "用户{$uname}创建失败,错误信息:{$resp['msg']}"; // 打log $type = '登录第三方会议-创建用户'; $remark = $msg; m('log')->addlog($type, $remark); return ; } // 不是本人创建(管理员创建) if (!$isSelf) { $uinfo = m('admin')->getone("user='$uname'", 'id, user'); $oaUid = $uinfo['id'] ?? null; } $resp = $resp['data']; $data['uid'] = $resp['id']; // 会议系统用户id $data['admin_id'] = $resp['admin_id']; $data['username'] = $resp['username']; $data['face'] = $resp['face']; $data['door_pass'] = $resp['door_pass']; $data['oa_uid'] = $isSelf ? $this->adminid : $oaUid; // 信呼系统的用户id $data['pass'] = $md5Pass; // 查找是否已有登录信息 $conInfo = m('meet_sys_login')->getone("`uid`={$data['uid']}", 'count(1) con'); $con = $conInfo['con']; // 如果存在则更新,不存在则插入 if ($con > 0) { m('meet_sys_login')->update($data, "`uid`={$data['uid']}"); } else { m('meet_sys_login')->insert($data); } } /* * 第三方会议-登录————修改密码 * */ public function changePassword($newPass, $oldPass, $token=null) { $baseUrl = getconfig('meetsys_basurl'); $url = $baseUrl.'user/change_password'; $body = [ 'password'=>$oldPass, // 旧密码 'new_password'=>$newPass, // 新密码 'new_password_confirm'=>$newPass // 重复新密码 ]; if($token == null) { $token = $this->getMeetSysToken($this->adminid); } $resp = $this->sendPostRequest($url, $body, $token); $code = $resp['code'] ?? -1; if ($code != 0) { $msg = "用户{$this->adminname}修改密码失败,错误信息:{$resp['msg']}"; // 打log $type = '登录第三方会议-修改密码'; $remark = $msg; m('log')->addlog($type, $remark); } } /* * 第三方会议-登录————获取用户列表 * */ public function syncUserList() { // 需要先设置唯一索引 ALTER TABLE xinhu_meet_sys_login ADD UNIQUE INDEX idx_unique_user_id (uid); // 获取所有用户 $baseUrl = getconfig('meetsys_basurl'); $url = $baseUrl.'user/lst'; $body = [ 'page'=>0, // 旧密码 "size"=> 3000 ]; $token = m('meet_sys_login')->getMeetSysToken(); // 从接口获取用户 $rows = json_decode(m('meet_sys_login')->sendPostRequest($url, $body, $token), true); // 组装数组 $valArr = []; $resp = $rows['data']['data']; for ($i = 0; $i < count($resp); $i++) { $data = $resp[$i]; $valArr[$i]['uid'] = $data['id']; $valArr[$i]['face'] = $data['face']; $valArr[$i]['admin_id'] = $data['admin_id']; $valArr[$i]['username'] = $data['username']; $valArr[$i]['door_pass'] = $data['door_pass']; } $checkColArr = ['uid']; // 更新数据库中用户数据 $data = m('meet_sys_login')->insertOrUpdate($valArr, $checkColArr); $type = '3-用户同步-api'; $remark = "同步完成"; m('log')->addlog($type, $remark); return $data; } /* * 第三方会议-登录————删除用户 * */ public function dropUser($username) { $baseUrl = getconfig('meetsys_basurl'); $url = $baseUrl.'user/del'; $masterToken = $this->getMeetSysToken(); $uinfo = $this->getone("username='$username'"); if (!isset($uinfo['uid'])){ m('log')->addlog('3-删除用户', "meet_sys_login表内无该用户:$username"); return $uinfo; } $uid = intval($uinfo['uid']); $body =['id' => $uid]; $rows = $this->sendPostRequest($url, $body, $masterToken); if ($rows['code'] == 0) { $this->delete("username='$username'"); m('log')->addlog('3-删除用户', json_encode($rows)); } else { m('log')->addlog('3-删除用户', "失败:$username"); } return $rows; } /* * 第三方会议-登录————编辑用户信息处理 * */ public function changeUserInfo($uname, $md5Pass) { // 判断密码是否一致,一致则不动,不一致则修改 $row = $this->getone("`username`='$uname'", 'username, pass, token'); $md5Pass = substr($md5Pass, 0, 16); // 第三方限制长度,限制一下长度 if (isset($row['pass'])) { $oldPass = substr($row['pass'], 0, 16); // 第三方限制长度,限制一下长度 if ($md5Pass != $oldPass) { $token = $row['token']; $this->changePassword($md5Pass, $oldPass, $token); m('log')->addlog('修改密码', json_encode($oldPass)); } else { m('log')->addlog('不修改密码', json_encode($oldPass)); } } else { m('log')->addlog('编辑用户信息处理-创建', json_encode($uname)); $this->createUser($uname, $md5Pass, False); } } /* * 第三方会议-登录————获取token * */ public function getMeetSysToken($adminid=null) { // 没传默认用管理员id // $adminid = $adminid ?? getconfig('meetsys_admin_id'); $adminid = getconfig('meetsys_admin_id'); $token = m('meet_sys_login')->getone("oa_uid='{$adminid}'", 'token'); if ($token == null || $token == '') { // 打log $type = '登录第三方会议-获取token'; $remark = '未找到token,需要重新登录'; m('log')->addlog($type, $remark); return -2; } // 打log $type = '登录第三方会议-获取token'; // $remark = $token['token']; $remark = 'token'; m('log')->addlog($type, $remark); return $token['token']; } }