| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- <?php
- /*
- * 会议后台相关
- * */
- class meet_sys_loginClassModel extends Model
- {
- /*
- * 第三方会议-登录————会议后台
- * */
- public function loginMeetSysLogin($uname, $pass='Zhks2023_jw') {
- $baseUrl = getconfig('meetsys_basurl');;
- $loginUrl = $baseUrl.'login';
- // if ($uname == '杰唯智能') {
- $body = [
- 'username'=>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'];
- }
- }
|