|
@@ -0,0 +1,320 @@
|
|
|
+<?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'=>'杰唯智能',
|
|
|
+ 'password'=>substr(md5('Zhks2023_jw'), 0, 16),
|
|
|
+ 'from'=>'wx'
|
|
|
+ ];
|
|
|
+ } 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' => $this->adminid,
|
|
|
+ 'pass' => substr(md5($pass), 0, 16),
|
|
|
+ 'desc' => $pass,
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 查找是否已有登录信息
|
|
|
+ $conInfo = m('meet_sys_login')->getone("`oa_uid`=$this->adminid", 'count(1) con');
|
|
|
+ $con = $conInfo['con'];
|
|
|
+
|
|
|
+ // 如果存在则更新,不存在则插入
|
|
|
+ if ($con > 0) {
|
|
|
+ $type = '登录第三方会议-登录2';
|
|
|
+ $remark = '更新';
|
|
|
+ m('meet_sys_login')->update($data, "`oa_uid`=".$this->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';
|
|
|
+ $remark = $adminname;
|
|
|
+ m('log')->addlog($type, $remark);
|
|
|
+
|
|
|
+ // 请求创建用户接口
|
|
|
+ $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');
|
|
|
+ $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'];
|
|
|
+ }
|
|
|
+}
|