You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.0 KiB
146 lines
4.0 KiB
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\AdminRoleUsers;
|
|
use App\Models\AdminUsers;
|
|
use Exception;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
final class AdminUsersService
|
|
{
|
|
|
|
/**
|
|
* @var OperationLogService
|
|
*/
|
|
private OperationLogService $logService;
|
|
|
|
/**
|
|
* 构造函数
|
|
* @param OperationLogService $logService
|
|
*/
|
|
public function __construct(OperationLogService $logService)
|
|
{
|
|
$this->logService = $logService;
|
|
}
|
|
|
|
/**
|
|
* @throws Exception
|
|
*/
|
|
public function createModel(array $data): AdminUsers
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$model = AdminUsers::create([
|
|
'username' => $data['username'],
|
|
'password' => Hash::make($data['password']),
|
|
'name' => $data['name'],
|
|
'avatar' => '',
|
|
'email' => $data['email'],
|
|
'status' => 1,
|
|
'created_at' => get_datetime()
|
|
]);
|
|
|
|
$user_id = $model->id;
|
|
// 角色id
|
|
$role_id = $data['role_id'];
|
|
$AdminRoleUsers = AdminRoleUsers::create([
|
|
'user_id' => $user_id,
|
|
'role_id' => $role_id
|
|
]);
|
|
// 职位id
|
|
$permission_id = $data['permission_id'];
|
|
//
|
|
$packing_id = $data['packing'];
|
|
|
|
|
|
$this->logService->logCreated($model, '创建用户');
|
|
$this->logService->logCreated($AdminRoleUsers, '创建用户关联角色');
|
|
return $model;
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param array $data
|
|
* @param int $id
|
|
* @return AdminUsers
|
|
* @throws Exception
|
|
*/
|
|
public function updateModel(array $data, int $id): AdminUsers
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
if (AdminUsers::query()->where('username', $data['username'])->exists()) {
|
|
throw new Exception(__('service.admin_role.role_exists'));
|
|
}
|
|
$model = AdminUsers::findOrFail($id);
|
|
$model->update([
|
|
'username' => $data['username'],
|
|
'password' => Hash::make($data['password']),
|
|
'name' => $data['name'],
|
|
'avatar' => '',
|
|
'email' => $data['email'],
|
|
'status' => $data['status'],
|
|
'created_at' => get_datetime()
|
|
]);
|
|
|
|
// 角色id
|
|
$role_id = $data['role_id'];
|
|
$DelAdminRoleUsers = AdminRoleUsers::where('user_id', $id)->select();
|
|
$DelAdminRoleUsers->delete();
|
|
$AddAdminRoleUsers = AdminRoleUsers::create([
|
|
'user_id' => $id,
|
|
'role_id' => $role_id
|
|
]);
|
|
// 职位id
|
|
$permission_id = $data['permission_id'];
|
|
//
|
|
$packing_id = $data['packing'];
|
|
|
|
|
|
$this->logService->logCreated($model, '创建用户');
|
|
$this->logService->logDeleted($DelAdminRoleUsers, '删除用户关联角色');
|
|
$this->logService->logCreated($AddAdminRoleUsers, '创建用户关联角色');
|
|
return $model;
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param $id
|
|
* @return bool
|
|
* @throws Exception
|
|
*/
|
|
public function deleteModel($id): bool
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$model = AdminUsers::findOrFail($id);
|
|
|
|
$this->logService->logDeleted($model, '删除用户');
|
|
|
|
$model->delete();
|
|
|
|
$oldAdminRoleUser = AdminRoleUsers::where(['user_id' => $id])->select();
|
|
|
|
$this->logService->logDeleted($oldAdminRoleUser, '删除用户关联角色');
|
|
|
|
$oldAdminRoleUser->delete();
|
|
|
|
DB::commit();
|
|
return true;
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
}
|
|
|