diff --git a/app/Console/Commands/CreateTodayOrderItems.php b/app/Console/Commands/CreateTodayOrderItems.php index d2122c0..be0261f 100644 --- a/app/Console/Commands/CreateTodayOrderItems.php +++ b/app/Console/Commands/CreateTodayOrderItems.php @@ -44,8 +44,12 @@ class CreateTodayOrderItems extends Command $threshold = 50; DB::enableQueryLog(); + // 获取所有状态为1的项目 + $projects = Project::where("status", 1)->pluck("id")->toArray(); + //获取正在进行中的订单,即使已经到了截止日,只要状态是在进行中的都继续生成 $unGeneratedOrders = (new Orders())->whereIn("status", [Orders::STATUS_ONGOING]) + ->whereIn("project_id", $projects) ->whereRaw("DATEDIFF(`from_date`, now()) <= 0") ->whereDoesntHave("orderItems", function ($query) { $query->whereRaw("DATEDIFF(`service_date`, now()) = 0"); diff --git a/app/Forms/ProjectForm.php b/app/Forms/ProjectForm.php index 511851d..2deeef1 100755 --- a/app/Forms/ProjectForm.php +++ b/app/Forms/ProjectForm.php @@ -26,6 +26,8 @@ class ProjectForm extends Form $this->add("complaint_mobile", Field::TEXT, ["label" => "投诉电话"]); // 是否需要签订协议 $this->add("agreement", Field::SELECT, ["label" => "是否需要签订协议", "choices" => [0 => "否", 1 => "是"]]); + // 状态 + $this->add("status", Field::SELECT, ["label" => "状态", "choices" => [1 => "启用", 0 => "禁用"], "default_value" => 1]); // 协议 $this->add("content", Field::TEXTAREA, ["label" => "协议"]); $this->add("profile", Field::TEXTAREA, ["label" => "简介"]); diff --git a/app/Http/Controllers/Admin/ProjectController.php b/app/Http/Controllers/Admin/ProjectController.php index 43d149d..b4eb58b 100755 --- a/app/Http/Controllers/Admin/ProjectController.php +++ b/app/Http/Controllers/Admin/ProjectController.php @@ -616,4 +616,32 @@ class ProjectController extends CommonController return $this->success("新增成功", '', $model); } + /** + * 快速切换项目状态 + */ + public function toggleStatus(Request $request) + { + try { + $id = $request->id; + $status = $request->status; + + if (!in_array($status, [0, 1])) { + return $this->error("状态值不正确"); + } + + $project = $this->model->find($id); + if (!$project) { + return $this->error("项目不存在"); + } + + $project->status = $status; + $project->save(); + + $statusText = $status == 1 ? "启用" : "禁用"; + return $this->success("项目已{$statusText}"); + } catch (\Exception $exception) { + return $this->error("操作失败:" . $exception->getMessage()); + } + } + } diff --git a/app/Models/OrderItems.php b/app/Models/OrderItems.php index 3a2a8b9..adab973 100755 --- a/app/Models/OrderItems.php +++ b/app/Models/OrderItems.php @@ -218,9 +218,13 @@ class OrderItems extends SoftDeletesModel $last_id = cache("last_auto_checkout_order_item_id", 0); Log::channel("daily_auto_checkout")->info("Last id:" . $last_id); + // 获取所有状态为1的项目 + $projects = Project::where("status", 1)->pluck("id")->toArray(); + $unpaid_order_items = (new OrderItems()) - ->whereHas("order", function ($query) { - $query->where("status", Orders::STATUS_ONGOING); + ->whereHas("order", function ($query) use ($projects) { + $query->where("status", Orders::STATUS_ONGOING) + ->whereIn("project_id", $projects); }) ->whereNull("paid_at") ->where("id", ">", $last_id) diff --git a/database/migrations/2020_06_05_121826_create_project.php b/database/migrations/2020_06_05_121826_create_project.php index 3a014ab..9e586f4 100644 --- a/database/migrations/2020_06_05_121826_create_project.php +++ b/database/migrations/2020_06_05_121826_create_project.php @@ -20,7 +20,7 @@ class CreateProject extends Migration $table->text("profile")->nullable(); $table->string("logo")->nullable(); $table->text("banners")->nullable(); - $table->string("status")->default(0); + $table->string("status")->default(1)->comment("1:启用,0:禁用"); $table->timestamps(); $table->softDeletes(); }); diff --git a/resources/views/admin/project/index.blade.php b/resources/views/admin/project/index.blade.php index e77052a..5c37d27 100755 --- a/resources/views/admin/project/index.blade.php +++ b/resources/views/admin/project/index.blade.php @@ -19,6 +19,7 @@