2025-10-10 11:09:37 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace app\common\logic;
|
|
|
|
|
|
|
|
|
|
use app\common\traits\crud\CrudLogicTrait;
|
|
|
|
|
use app\common\model\UserGroup;
|
|
|
|
|
use app\common\model\UserGroupMembers;
|
|
|
|
|
|
|
|
|
|
class UserGroupLogic
|
|
|
|
|
{
|
|
|
|
|
use CrudLogicTrait;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 指定当前要操作的模型
|
|
|
|
|
*/
|
|
|
|
|
protected string $modelClass = UserGroup::class;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function createGroup(array $data): UserGroup
|
|
|
|
|
{
|
|
|
|
|
$created = UserGroup::create($data);
|
|
|
|
|
if (isset($data['user_ids']) && is_array($data['user_ids']) && count($data['user_ids']) > 0) {
|
|
|
|
|
foreach ($data['user_ids'] as $member) {
|
|
|
|
|
$this->addUserGroupMembers($member, $created->id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((int)$data['leader_id'] > 0) {
|
|
|
|
|
$leader = UserGroupMembers::where('user_id', $data['leader_id'])->where('group_id', $created->id)->first();
|
|
|
|
|
if ($leader) {
|
|
|
|
|
$leader->is_leader = 1;
|
|
|
|
|
$leader->save();
|
|
|
|
|
} else {
|
|
|
|
|
$this->addUserGroupMembers($data['leader_id'], $created->id, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $created;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function updateGroup(UserGroup $userGroup, array $data)
|
|
|
|
|
{
|
|
|
|
|
$userGroup->title = $data['title'];
|
|
|
|
|
$userGroup->sort = $data['sort'] ?? 0;
|
|
|
|
|
$userGroup->status = $data['status'];
|
2025-10-11 08:41:11 +00:00
|
|
|
$userGroup->scenario_code = $data['scenario_code'] ?? '';
|
2025-10-10 11:09:37 +00:00
|
|
|
$userGroup->save();
|
|
|
|
|
|
|
|
|
|
// 删除所有成员
|
|
|
|
|
UserGroupMembers::where('group_id', $userGroup->id)->delete();
|
|
|
|
|
|
|
|
|
|
if (isset($data['user_ids']) && is_array($data['user_ids']) && count($data['user_ids']) > 0) {
|
|
|
|
|
foreach ($data['user_ids'] as $member) {
|
|
|
|
|
$this->addUserGroupMembers($member, $userGroup->id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((int)$data['leader_id'] > 0) {
|
|
|
|
|
$leader = UserGroupMembers::where('user_id', $data['leader_id'])->where('group_id', $userGroup->id)->first();
|
|
|
|
|
if ($leader) {
|
|
|
|
|
$leader->is_leader = 1;
|
|
|
|
|
$leader->save();
|
|
|
|
|
} else {
|
|
|
|
|
$this->addUserGroupMembers($data['leader_id'], $userGroup->id, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $userGroup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function addUserGroupMembers(int $userId, int $groupId, int $isLeader = 0)
|
|
|
|
|
{
|
|
|
|
|
$udata = [
|
|
|
|
|
'user_id' => $userId,
|
|
|
|
|
'group_id' => $groupId,
|
|
|
|
|
'is_leader' => $isLeader
|
|
|
|
|
];
|
|
|
|
|
return UserGroupMembers::create($udata);
|
|
|
|
|
}
|
|
|
|
|
}
|