94 lines
2.6 KiB
PHP
94 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace app\admin\logic;
|
|
|
|
use app\common\traits\crud\CrudLogicTrait;
|
|
use app\common\model\User;
|
|
use support\Db;
|
|
|
|
class UserLogic
|
|
{
|
|
use CrudLogicTrait;
|
|
|
|
/**
|
|
* 指定当前要操作的模型
|
|
*/
|
|
protected string $modelClass = User::class;
|
|
|
|
|
|
public function updateRoleAndSystem(array $data): bool
|
|
{
|
|
$roleIds = $data['role_ids'] ?? [];
|
|
$systemIds = $data['system_ids'] ?? [];
|
|
$userId = $data['user_id'] ?? 0;
|
|
|
|
Db::beginTransaction();
|
|
try {
|
|
Db::table('user_roles')->where('user_id', $userId)->delete();
|
|
if (count($roleIds) > 0) {
|
|
$insertDataRole = [];
|
|
foreach ($roleIds as $roleId) {
|
|
$insertDataRole[] = [
|
|
'role_id' => $roleId,
|
|
'user_id' => $userId
|
|
];
|
|
}
|
|
$res = Db::table('user_roles')->insert($insertDataRole);
|
|
var_dump($res);
|
|
}
|
|
|
|
Db::table('user_systems')->where('user_id', $userId)->delete();
|
|
if (count($systemIds) > 0) {
|
|
$insertDataSystem = [];
|
|
foreach ($systemIds as $systemId) {
|
|
$insertDataSystem[] = [
|
|
'system_id' => $systemId,
|
|
'user_id' => $userId
|
|
];
|
|
}
|
|
Db::table('user_systems')->insert($insertDataSystem);
|
|
}
|
|
|
|
Db::commit();
|
|
return true;
|
|
} catch (\Throwable $exception) {
|
|
Db::rollBack();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
public function updateUserResources(array $data): bool
|
|
{
|
|
$userId = $data['user_id'] ?? 0;
|
|
$resources = $data['resources'] ?? [];
|
|
|
|
if (empty($userId)) {
|
|
return false;
|
|
}
|
|
|
|
Db::beginTransaction();
|
|
try {
|
|
// 删除原有资源关联
|
|
Db::table('user_resources')->where('user_id', $userId)->delete();
|
|
|
|
// 批量插入新角色资源关联
|
|
if (!empty($resources)) {
|
|
$insertData = [];
|
|
foreach ($resources as $resourceId) {
|
|
$insertData[] = [
|
|
'user_id' => $userId,
|
|
'resource_id' => $resourceId
|
|
];
|
|
}
|
|
Db::table('user_resources')->insert($insertData);
|
|
}
|
|
|
|
Db::commit();
|
|
return true;
|
|
} catch (\Throwable $exception) {
|
|
Db::rollBack();
|
|
return false;
|
|
}
|
|
}
|
|
} |