diff --git a/app/Admin/Services/Plan/TaskService.php b/app/Admin/Services/Plan/TaskService.php index 0983a27..371898e 100644 --- a/app/Admin/Services/Plan/TaskService.php +++ b/app/Admin/Services/Plan/TaskService.php @@ -70,7 +70,7 @@ class TaskService extends BaseService $endAt = $month->copy()->endOfMonth(); // 门店实际业绩 - $actualPerformance = Ledger::where('store_id', $store->id) + $totalSales = Ledger::where('store_id', $store->id) ->whereBetween('date', [$startAt->format('Y-m-d'), $endAt->format('Y-m-d')]) ->sum('sales'); @@ -80,7 +80,7 @@ class TaskService extends BaseService 'store_id' => $store->id, 'store_master_id' => $store->master_id, 'expected_performance' => $payload['expected_performance'], - 'actual_performance' => $actualPerformance, + 'actual_performance' => $totalSales, ]); // 月份 @@ -172,7 +172,7 @@ class TaskService extends BaseService 'expected_performance' => $payload['expected_performance'], ]); - if ($taskable->isCompleted()) { + if ($taskable->isCompleted() && ! $task->isSuccess()) { $task->update([ 'task_status' => TaskStatus::Success, 'completed_at' => now(), diff --git a/app/Enums/TaskStatus.php b/app/Enums/TaskStatus.php index 79b8399..ad682a8 100644 --- a/app/Enums/TaskStatus.php +++ b/app/Enums/TaskStatus.php @@ -22,7 +22,7 @@ enum TaskStatus: int self::Processing->value => '进行中', self::Success->value => '已完成', self::Failed->value => '未完成', - self::Revoked->value => '已撤销', + // self::Revoked->value => '已撤销', ]; } @@ -33,7 +33,7 @@ enum TaskStatus: int self::Processing->value => ''.self::Processing->text().'', self::Success->value => ''.self::Success->text().'', self::Failed->value => ''.self::Failed->text().'', - self::Revoked->value => ''.self::Revoked->text().'', + // self::Revoked->value => ''.self::Revoked->text().'', ]; } } diff --git a/app/Http/Controllers/Api/LedgerController.php b/app/Http/Controllers/Api/LedgerController.php index 2ffa15c..81373af 100644 --- a/app/Http/Controllers/Api/LedgerController.php +++ b/app/Http/Controllers/Api/LedgerController.php @@ -9,7 +9,9 @@ use App\Models\Keyword; use App\Models\Ledger; use App\Models\LedgerItem; use App\Models\TaskLedger; +use App\Models\TaskPerformance; use Illuminate\Http\Request; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Throwable; @@ -85,9 +87,11 @@ class LedgerController extends Controller } } + $date = Carbon::createFromFormat('Y-m-d', $validated['date']); + /** @var \App\Models\Ledger|null */ $ledger = Ledger::where('store_id', $user->store_id) - ->where('date', $validated['date']) + ->where('date', $date->format('Y-m-d')) ->first(); if ($ledger && ! $ledger->allowReReport()) { @@ -134,7 +138,8 @@ class LedgerController extends Controller ])->all() ); - // 自动完成总账录入任务 + // 总账录入任务 + /** @var \App\Models\TaskLedger */ $taskLedger = TaskLedger::where('store_id', $user->store_id) ->where('date', $ledger->date) ->first(); @@ -145,6 +150,28 @@ class LedgerController extends Controller ]); } + // 业绩指标任务 + /** @var \App\Models\TaskPerformance */ + $taskPerformance = TaskPerformance::where('store_id', $ledger->store_id) + ->where('month', $date->format('Y-m')) + ->first(); + if ($taskPerformance) { + $totalSales = Ledger::where('store_id', $ledger->store_id) + ->whereBetween('date', [$date->copy()->startOfMonth()->format('Y-m-d'), $date->copy()->endOfMonth()->format('Y-m-d')]) + ->sum('sales'); + + $taskPerformance->update([ + 'actual_performance' => $totalSales, + ]); + + if ($taskPerformance->isCompleted() && ! $taskPerformance->task->isSuccess()) { + $taskPerformance->task->update([ + 'task_status' => TaskStatus::Success, + 'completed_at' => now(), + ]); + } + } + DB::commit(); } catch (Throwable $e) { DB::rollBack(); diff --git a/app/Models/Task.php b/app/Models/Task.php index 759a238..957e81c 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -46,4 +46,9 @@ class Task extends Model { return $this->morphTo(); } + + public function isSuccess(): bool + { + return $this->task_status === TaskStatus::Success; + } }