logService = $logService; } /** * @param array $data * @return Builder|Model * @throws Exception */ public function createModel(array $data): Builder|Model { try { DB::beginTransaction(); if (AdminUsers::query()->where('username', $data['username']) ->exists() ) { throw new Exception(__('service.admin_user.name_exists')); } $model = AdminUsers::query()->create([ 'username' => $data['username'], 'password' => Hash::make($data['password']), 'name' => $data['name'], 'avatar' => '', 'email' => $data['email'] ?? '', 'position' => $data['position'] ?? '', 'status' => 1, 'created_at' => get_datetime() ]); $user_id = $model->id; $this->logService->logCreated($model, '创建用户'); // 角色id $AdminRoleUsers = AdminRoleUsers::query()->create([ 'role_id' => $data['role_id'], 'user_id' => $user_id, 'created_at' => get_datetime() ]); $this->logService->logCreated($AdminRoleUsers, '创建用户关联角色'); // 停车场id $packing_id = $data['packing_id']; DB::commit(); 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(); $existsWhere = [ ['username', '=', $data['username']], ['id', '<>', $id] ]; if (AdminUsers::query()->where($existsWhere)->exists()) { throw new Exception(__('service.admin_user.name_exists')); } $model = AdminUsers::findOrFail($id); $oldValue = $model->toArray(); $model->update([ 'username' => $data['username'], 'password' => Hash::make($data['password']), 'name' => $data['name'], 'avatar' => '', 'email' => $data['email'] ?? '', 'position' => $data['position'] ?? '', 'status' => $data['status'], 'created_at' => get_datetime() ]); // 角色id $role_id = $data['role_id']; $oldAdminRoleUsers = AdminRoleUsers::query() ->where('user_id', $id) ->where('role_id', $role_id) ->get()->toArray(); if (!$oldAdminRoleUsers) { $updateData = [ 'role_id' => $role_id, 'updated_at' => get_datetime() ]; AdminRoleUsers::query()->where('user_id', $id)->update($updateData); $newAdminRoleUsers = $oldAdminRoleUsers; $newAdminRoleUsers['role_id'] = $role_id; $newAdminRoleUsers['updated_at'] = $updateData['updated_at']; $this->logService->logUpdatedData( new AdminRoleUsers(), $oldAdminRoleUsers, '更新用户关联角色', $newAdminRoleUsers ); } // $packing_id = $data['packing_id']; $this->logService->logUpdated($model, $oldValue, '更新用户'); DB::commit(); 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::query()->where( ['user_id' => $id] )->select()->get()->toArray(); AdminRoleUsers::query()->where(['user_id' => $id])->delete(); $this->logService->logDeletedData( new AdminRoleUsers(), '删除用户关联角色', $oldAdminRoleUser ); DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param $item * @param int $is_edit * @return mixed */ public function optionItem($item, int $is_edit = 0): mixed { $item['status_str'] = $item['status'] ? __('admin.normal') : __('admin.freeze'); $item['role_name'] = $item->roles->value('name'); $item['packing_name'] = ''; if ($is_edit) { $item['role_id'] = $item['roles'][0]['id']; $item['packing_id'] = ''; } unset($item['roles']); return $item; } }