forked from meolu/walle-web
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Group.php
125 lines (112 loc) · 2.71 KB
/
Group.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
115
116
117
118
119
120
121
122
123
124
125
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "group".
*
* @property integer $id
* @property integer $project_id
* @property string $user_id
*/
class Group extends \yii\db\ActiveRecord
{
/**
* 普通开发者
*/
const TYPE_USER = 0;
/**
* 管理员
*/
const TYPE_ADMIN = 1;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'group';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['project_id', 'user_id'], 'required'],
[['project_id', 'user_id', 'type'], 'integer'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'project_id' => 'Project ID',
'user_id' => 'User ID',
'type' => 'Type',
];
}
/**
* width('user')
*
* @return \yii\db\ActiveQuery
*/
public function getUser() {
return $this->hasOne(User::className(), ['id' => 'user_id']);
}
/**
* 项目添加用户
*
* @param $projectId
* @param $userId array
* @return bool
*/
public static function addGroupUser($projectId, $userIds, $type = Group::TYPE_USER) {
// 是否已在组内
$exitsUids = Group::find()
->select(['user_id'])
->where(['project_id' => $projectId, 'user_id' => $userIds])
->column();
$notExists = array_diff($userIds, $exitsUids);
if (empty($notExists)) return true;
$group = new Group();
foreach ($notExists as $uid) {
$relation = clone $group;
$relation->attributes = [
'project_id' => $projectId,
'user_id' => $uid,
'type' => $type,
];
$relation->save();
}
return true;
}
/**
* 是否为该项目的审核管理员
*
* @param $projectId
* @param $uid
* @return int|string
*/
public static function isAuditAdmin($uid, $projectId = null) {
$isAuditAdmin = static::find()
->where(['user_id' => $uid, 'type' => Group::TYPE_ADMIN]);
if ($projectId) {
$isAuditAdmin->andWhere(['project_id' => $projectId, ]);
}
return $isAuditAdmin->count();
}
/**
* 获取用户可以审核的项目
*
* @param $uid
* @return array
*/
public static function getAuditProjectIds($uid) {
return static::find()
->select(['project_id'])
->where(['user_id' => $uid, 'type' => Group::TYPE_ADMIN])
->column();
}
}