|
@@ -3,6 +3,7 @@
|
|
namespace app\admin\service\sys_manage;
|
|
namespace app\admin\service\sys_manage;
|
|
|
|
|
|
use app\model\SysRole;
|
|
use app\model\SysRole;
|
|
|
|
+use support\Db;
|
|
use support\Request;
|
|
use support\Request;
|
|
|
|
|
|
class RoleService
|
|
class RoleService
|
|
@@ -78,7 +79,9 @@ class RoleService
|
|
public static function insertRole($params)
|
|
public static function insertRole($params)
|
|
{
|
|
{
|
|
try {
|
|
try {
|
|
|
|
+ Db::beginTransaction();
|
|
$data = [
|
|
$data = [
|
|
|
|
+ 'role_superior_id' => $params['role_superior_id'] ?? 0,
|
|
'role_status' => $params['role_status'],
|
|
'role_status' => $params['role_status'],
|
|
'role_category' => $params['role_category'],
|
|
'role_category' => $params['role_category'],
|
|
'role_name' => $params['role_name'],
|
|
'role_name' => $params['role_name'],
|
|
@@ -87,12 +90,22 @@ class RoleService
|
|
'role_permission' => '[]',
|
|
'role_permission' => '[]',
|
|
'role_addtimes' => time()
|
|
'role_addtimes' => time()
|
|
];
|
|
];
|
|
-
|
|
|
|
- // 入库
|
|
|
|
- if (!SysRole::insert($data)) {
|
|
|
|
- throw new \Exception('角色添加失败');
|
|
|
|
|
|
+ $roleId = SysRole::insertGetId($data);
|
|
|
|
+ $path = '/0/';
|
|
|
|
+ if (!empty($params['role_superior_id'])) {
|
|
|
|
+ $superior = SysRole::find($params['role_superior_id']);
|
|
|
|
+ dump($superior);
|
|
|
|
+ if (!isset($superior->role_path)) {
|
|
|
|
+ Db::rollBack();
|
|
|
|
+ return json_fail("上级角色不存在");
|
|
|
|
+ }
|
|
|
|
+ $path = $superior->role_path;
|
|
}
|
|
}
|
|
|
|
+ SysRole::where('role_id', $roleId)->update(['role_path' => $path . $roleId . '/']);
|
|
|
|
+ Db::commit();
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
|
+ Db::rollBack();
|
|
|
|
+ dump($e->getMessage());
|
|
return json_fail('角色添加失败');
|
|
return json_fail('角色添加失败');
|
|
}
|
|
}
|
|
|
|
|
|
@@ -111,22 +124,40 @@ class RoleService
|
|
public static function updateRole($id, $params)
|
|
public static function updateRole($id, $params)
|
|
{
|
|
{
|
|
$role = SysRole::find($id);
|
|
$role = SysRole::find($id);
|
|
|
|
+ $oldPath = $role->role_path;
|
|
if (!$role) {
|
|
if (!$role) {
|
|
return json_fail('角色不存在');
|
|
return json_fail('角色不存在');
|
|
}
|
|
}
|
|
-
|
|
|
|
try {
|
|
try {
|
|
|
|
+ Db::beginTransaction();
|
|
$data = [
|
|
$data = [
|
|
|
|
+ 'role_superior_id' => $params['role_superior_id'] ?? 0,
|
|
'role_status' => $params['role_status'],
|
|
'role_status' => $params['role_status'],
|
|
'role_category' => $params['role_category'],
|
|
'role_category' => $params['role_category'],
|
|
'role_name' => $params['role_name'],
|
|
'role_name' => $params['role_name'],
|
|
'role_remark' => $params['role_remark'] ? format_string($params['role_remark']) : null,
|
|
'role_remark' => $params['role_remark'] ? format_string($params['role_remark']) : null,
|
|
'role_extend_json' => $params['role_extend_json'] ?? '{}',
|
|
'role_extend_json' => $params['role_extend_json'] ?? '{}',
|
|
];
|
|
];
|
|
|
|
+ if ($data['role_superior_id'] == 0) {
|
|
|
|
+ $data['role_path'] = '/0/' . $id . '/';
|
|
|
|
+ } else if ($data['role_superior_id'] != $role->role_superior_id) {
|
|
|
|
+ $superior = SysRole::find($data['role_superior_id']);
|
|
|
|
+ $data['role_path'] = $superior->role_path . $id . '/';
|
|
|
|
+ $child = SysRole::where('role_path', 'like', $oldPath . '%')->get();
|
|
|
|
+ dump($child);
|
|
|
|
+ foreach ($child as $item) {
|
|
|
|
+ $childPath = str_replace($oldPath, $data['role_path'], $item->role_path);
|
|
|
|
+ SysRole::where('role_id', $item->role_id)->update(['role_path'=>$childPath]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ dump($data);
|
|
if (!SysRole::where('role_id', $id)->update($data)) {
|
|
if (!SysRole::where('role_id', $id)->update($data)) {
|
|
|
|
+ Db::rollBack();
|
|
throw new \Exception('角色修改失败');
|
|
throw new \Exception('角色修改失败');
|
|
}
|
|
}
|
|
|
|
+ Db::commit();
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
|
|
+ Db::rollBack();
|
|
return json_fail($e->getMessage());
|
|
return json_fail($e->getMessage());
|
|
}
|
|
}
|
|
|
|
|