forked from xyz2k8/demo-server-php
/
GroupProcess.php
114 lines (100 loc) · 3.44 KB
/
GroupProcess.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
/**
* 获取我加入的群
* @UserFunction(method = GET)
* @CheckLogin
*/
function get_my_group() {
$db = new DataBase(DB_DNS, DB_USER, DB_PASSWORD);
$group_list = $db->fetchAll('SELECT `group`.`id`, `group`.`name`,`group_user`.`timestamp` AS `join_date` FROM `group_user` INNER JOIN `group` ON `group_user`.`group_id` = `group`.`id` WHERE `group_user`.`user_id` = ?', getCurrentUserId());
return $group_list;
}
/**
* 创建群
* @UserFunction(method = POST)
* @CheckLogin
*/
function create_group(String $name, String $introduce) {
$db = new DataBase(DB_DNS, DB_USER, DB_PASSWORD);
$user_id = getCurrentUserId();
$group_id = $db->insert('INSERT INTO `group`(`name`,`introduce`,`create_user_id`) VALUES(?,?,?);', $name, $introduce, $user_id);
$db->exec('INSERT INTO `group_user`(`group_id`, `user_id`, `role`) VALUES(?,?,1);', $group_id, $user_id);
return $group_id;
}
/**
* 更新群信息
* @UserFunction(method = POST)
* @CheckLogin
*/
function update_group(Integer $id, String $name, String $introduce) {
$db = new DataBase(DB_DNS, DB_USER, DB_PASSWORD);
$user_id = getCurrentUserId();
if($db->fetchColumn('SELECT `create_user_id` FROM `group` WHERE `id`=?',$id)==$user_id){
$db->exec('UPDATE `group` SET `name`=?,`introduce`=? WHERE `id`=?;', $name, $introduce, $id);
} else {
throw new ProException('you are this group admin', 204);
}
}
/**
* 加入群
* @UserFunction(method = GET|POST)
* @CheckLogin
*/
function join_group(Integer $id) {
$db = new DataBase(DB_DNS, DB_USER, DB_PASSWORD);
$user_id = getCurrentUserId();
$group = $db->fetch('SELECT * FROM `group` WHERE `id` = ?;', $id);
if ($group) {
if ($group['number'] >= $group['max_number']){
throw new ProException('group $id reach limit', 202);
}
if ($db->fetchColumn('SELECT count(*) FROM `group_user` WHERE `user_id`=? AND `group_id`=?', $user_id, $id)!=0) {
throw new ProException('you have to join the $id group', 203);
}
$db->exec('INSERT INTO `group_user`(`group_id`, `user_id`, `role`) VALUES(?,?,0);', $id, $user_id);
$db->exec('UPDATE `group` SET `number` = `number`+1 WHERE `id` = ?;', $id);
} else {
throw new ProException('group $id is not exists', 201);
}
}
/**
* 退出群
* @UserFunction(method = GET|POST)
* @CheckLogin
*/
function quit_group(Integer $id) {
$db = new DataBase(DB_DNS, DB_USER, DB_PASSWORD);
$user_id = getCurrentUserId();
if ($db->exec('DELETE FROM `group_user` WHERE `group_id` = ? AND `user_id` = ?', $id, $user_id)>0){
$db->exec('UPDATE `group` SET `number` = `number`-1 WHERE `id` = ?;', $id);
}
}
/**
* 获取指定群信息
* @UserFunction(method = GET)
* @CheckLogin
*/
function get_group(Integer $id) {
$db = new DataBase(DB_DNS, DB_USER, DB_PASSWORD);
$user_id = getCurrentUserId();
$group = $db->fetch('SELETE * FROM `group` WHERE `id` = ?', $id);
$group['users'] = $db->fetchAll('SELECT a.`id`, a.`username`, a.`portrait` FROM `user` AS a INNER JOIN `group_user` AS b ON b.user_id=a.id WHERE b.group_id = ?' ,$id);
return $group;
}
/**
* 获取全部群信息
* @UserFunction(method = GET)
*/
function get_all_group() {
$db = new DataBase(DB_DNS, DB_USER, DB_PASSWORD);
$group_list = $db->fetchAll('SELECT * FROM `group`');
return $group_list;
}
/**
* 获取聊天室信息
* @UserFunction(method = GET)
*/
function get_all_chatroom() {
$group_list = array("chatroom_01"=>"聊天室一","chatroom_02"=>"聊天室二","chatroom_03"=>"聊天室三","chatroom_04"=>"聊天室四","chatroom_05"=>"聊天室五");
return $group_list;
}