12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace App\Services;
- use App\Enums\ShopStatus;
- use App\Models\ShopInfo;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Slowlyo\OwlAdmin\Services\AdminService;
- /**
- * 店铺
- *
- * @method ShopInfo getModel()
- * @method ShopInfo|\Illuminate\Database\Query\Builder query()
- */
- class ShopInfoService extends AdminService
- {
- protected string $modelName = ShopInfo::class;
- /**
- * 审核店铺
- *
- * @param array $data 包含 shop_id, action 和 reason
- */
- public function reviewShop(array $data): array
- {
- try {
- DB::beginTransaction();
- // 获取店铺信息
- $shop = ShopInfo::with('authRecord')->findOrFail($data['shop_id']);
- // 验证店铺当前状态
- abort_if($shop->state !== ShopStatus::PENDING->value, 422, '店铺状态不允许审核');
- // 验证认证记录是否存在
- abort_if(! $shop->authRecord, 422, '店铺认证信息不存在');
- // 更新店铺状态
- $shop->state = $data['action'] === 'approve'
- ? ShopStatus::ACTIVE->value
- : ShopStatus::REJECTED->value;
- $shop->save();
- // 更新认证记录状态
- $shop->authRecord->state = $data['action'] === 'approve'
- ? ShopStatus::ACTIVE->value
- : ShopStatus::REJECTED->value;
- $shop->authRecord->audit_remark = $data['reason'];
- $shop->authRecord->audit_time = now();
- $shop->authRecord->auditor = Auth::id();
- $shop->authRecord->save();
- DB::commit();
- return [
- 'code' => 200,
- 'message' => '审核成功',
- 'data' => null,
- ];
- } catch (\Exception $e) {
- DB::rollBack();
- Log::error('审核店铺失败', [
- 'shop_id' => $data['shop_id'],
- 'action' => $data['action'],
- 'error' => $e->getMessage(),
- 'trace' => $e->getTraceAsString(),
- ]);
- throw $e;
- }
- }
- }
|