Procházet zdrojové kódy

第三方系统接口功能

第三方系统接口功能
q před 1 rokem
rodič
revize
87f7e2bade

+ 4 - 0
webmain/flow/input/inputjs/mode_meet_sys_login.js

@@ -0,0 +1,4 @@
+//流程模块【meet_sys_login.会议第三方登录】下录入页面自定义js页面,初始函数
+function initbodys(){
+	
+}

+ 42 - 0
webmain/flow/input/mode_meet_sysAction.php

@@ -0,0 +1,42 @@
+<?php
+/**
+*	此文件是流程模块【meet_sys.第三方会议】对应控制器接口文件。
+*/ 
+class mode_meet_sysClassAction extends inputAction{
+	
+	/**
+	*	重写函数:保存前处理,主要用于判断是否可以保存
+	*	$table String 对应表名
+	*	$arr Array 表单参数
+	*	$id Int 对应表上记录Id 0添加时,大于0修改时
+	*	$addbo Boolean 是否添加时
+	*	return array('msg'=>'错误提示内容','rows'=> array()) 可返回空字符串,或者数组 rows 是可同时保存到数据库上数组
+	*/
+	protected function savebefore($table, $arr, $id, $addbo){
+		
+	}
+	
+	/**
+	*	重写函数:保存后处理,主要保存其他表数据
+	*	$table String 对应表名
+	*	$arr Array 表单参数
+	*	$id Int 对应表上记录Id
+	*	$addbo Boolean 是否添加时
+	*/	
+	protected function saveafter($table, $arr, $id, $addbo){
+		
+	}
+
+    public function testAjax() {
+        return substr(md5("Zhks2023_jw"), 0, 16);
+        $con = m('meet_sys_login')->dropUser("testttt");
+        return json_encode($con);
+    }
+    /*
+     * 第三方会议->用户信息同步接口
+     * */
+    public function syncUserAjax() {
+        return m('meet_sys_login')->syncUserList();
+    }
+}	
+			

+ 30 - 0
webmain/flow/input/mode_meet_sys_loginAction.php

@@ -0,0 +1,30 @@
+<?php
+/**
+*	此文件是流程模块【meet_sys_login.会议第三方登录】对应控制器接口文件。
+*/ 
+class mode_meet_sys_loginClassAction extends inputAction{
+	
+	/**
+	*	重写函数:保存前处理,主要用于判断是否可以保存
+	*	$table String 对应表名
+	*	$arr Array 表单参数
+	*	$id Int 对应表上记录Id 0添加时,大于0修改时
+	*	$addbo Boolean 是否添加时
+	*	return array('msg'=>'错误提示内容','rows'=> array()) 可返回空字符串,或者数组 rows 是可同时保存到数据库上数组
+	*/
+	protected function savebefore($table, $arr, $id, $addbo){
+		
+	}
+	
+	/**
+	*	重写函数:保存后处理,主要保存其他表数据
+	*	$table String 对应表名
+	*	$arr Array 表单参数
+	*	$id Int 对应表上记录Id
+	*	$addbo Boolean 是否添加时
+	*/	
+	protected function saveafter($table, $arr, $id, $addbo){
+		
+	}
+}	
+			

+ 155 - 0
webmain/model/meet_sysModel.php

@@ -0,0 +1,155 @@
+<?php
+/*
+ * 第三方会议
+ * */
+class meet_sysClassModel extends Model
+{
+
+    /*
+     * 第三方会议-创建joyeey会议
+     * */
+    public function createJoyeeyMeet($flowModelRs) {
+
+        $baseUrl = getconfig('meetsys_basurl');
+
+        // 往会议管理平台发送数据
+        $url = $baseUrl.'meeting/create';
+
+        // 获取信呼会议信息
+        $meetId = $flowModelRs['id'];
+        $meetingId = $flowModelRs['meeting_id'];
+        $meetingRoom = m('meeting_room')->getone('id='.$meetingId);
+
+        // 设置 body 参数的值
+        $body['type'] = 1;
+        $body['room_id'] = intval($meetingRoom['room_id']);
+        $body['subject'] = $flowModelRs['title'];
+        $body['start'] = $flowModelRs['startdt'];
+        $body['end'] = $flowModelRs['enddt'];
+
+        // 查找是否已有登录信息
+        $token = m('meet_sys_login')->getMeetSysToken($this->adminid);
+        if($token == -2) {
+            // 未找到token处理,用超级管理员的token
+            $token = m('meet_sys_login')->getMeetSysToken();
+        }
+
+        // 调用封装的发送 POST 请求的方法
+        $resp = $this->sendPostRequest($url, $body, $token);
+        $code = $resp['code'] ?? -1;
+        if ($code != 0) {
+            // 打log
+            $type = '第三方会议-创建joyeey会议-错误';
+            $remark = json_encode($resp);
+            m('log')->addlog($type, $remark);
+            return -1;
+        }
+        // 更新当前会议关联id
+        m('meet')->update('meet_id='.$resp['data']['id'],'id='.$meetId);
+
+        // 打log
+        $type = '第三方会议-创建joyeey会议-成功';
+        $remark = json_encode($resp);
+        m('log')->addlog($type, $remark);
+
+        return $resp;
+    }
+
+
+    /*
+     * 第三方会议-取消joyeey会议
+     * */
+    public function cancelJoyeeyMeet($flowModelRs) {
+
+        $baseUrl = getconfig('meetsys_basurl');
+        $url = $baseUrl.'/meeting/cancel';
+
+        // 设置 body 参数的值
+        $body['id'] = intval($flowModelRs['meet_id']);
+        $body['cancel_reason'] = '来自接口';
+
+        $token = m('meet_sys_login')->getMeetSysToken($this->adminid);
+
+        // 调用封装的发送 POST 请求的方法
+        $response = $this->sendPostRequest($url, $body, $token);
+
+        // 打log
+        $type = '登录第三方会议-提交结果1取消';
+        $remark = $baseUrl.'————'.json_encode($response);
+        m('log')->addlog($type, $remark);
+
+        return $response;
+    }
+
+
+    /*
+     * 第三方会议-创建会议室
+     * */
+    public function createMeetingRoom($meetingRoomId) {
+
+        $baseUrl = getconfig('meetsys_basurl');
+        $url = $baseUrl.'room/add';
+
+        $roomInfo = m("meeting_room")->getone("id=$meetingRoomId", 'room_name, capacity');
+
+        $body = [
+            "name"=>$roomInfo['room_name'],
+            "is_vip"=>(bool)intval(false),
+            "capacity"=>intval($roomInfo['capacity']), // 容纳人数
+            "desc" => $bodyParams['dsc'] ?? null
+        ];
+
+        $token = m('meet_sys_login')->getMeetSysToken($this->adminid);
+
+        // 调用封装的发送 POST 请求的方法
+        $response = $this->sendPostRequest($url, $body, $token);
+        $code = $response['code'];
+
+        if ($code == 400) {
+            $type = '3-创建会议-失败';
+            $remark = $response['msg'];
+            m('log')->addlog($type, $remark);
+        } else {
+            $data = $response['data'];
+            // 请求到的会议室id更新到表里
+            $valArr = [
+                'room_id'=>$data['id']
+            ];
+            m('meeting_room')->update($valArr, "id=$meetingRoomId");
+        }
+
+        return $response;
+    }
+
+    /*
+     * 第三方会议-删除会议室
+     * */
+    public function deleteMeetingRoom($meetingRoomId) {
+
+        $baseUrl = getconfig('meetsys_basurl');
+        $url = $baseUrl.'room/del';
+
+        $roomInfo = m("meeting_room")->getone("id=$meetingRoomId", 'room_id, room_name, desc, capacity');
+
+        if (isset($roomInfo['room_id'])) {
+            $body = ["id"=>$roomInfo['room_id']];
+
+            $token = m('meet_sys_login')->getMeetSysToken($this->adminid);
+
+            // 调用封装的发送 POST 请求的方法
+            $response = $this->sendPostRequest($url, $body, $token);
+
+            $type = '3-会议室创建成功';
+            $remark = json_encode($roomInfo);
+            m('log')->addlog($type, $remark);
+
+            return $response;
+        }
+
+        $type = '3-会议室创建失败';
+        $remark = '未找到会议室id';
+        m('log')->addlog($type, $remark);
+        return false;
+    }
+
+}

+ 320 - 0
webmain/model/meet_sys_loginModel.php

@@ -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'];
+    }
+}