diff --git a/app/Http/Controllers/Admin/OrdersController.php b/app/Http/Controllers/Admin/OrdersController.php index 8ed3e7d..c6e6324 100755 --- a/app/Http/Controllers/Admin/OrdersController.php +++ b/app/Http/Controllers/Admin/OrdersController.php @@ -126,6 +126,7 @@ class OrdersController extends CommonController public function getItem($id) { $order_item = OrderItems::with("order")->find($id); + $order_item = $order_item->calculateFee(); return $this->ajaxResponse($order_item); } } diff --git a/app/Http/Controllers/Admin/StatisticsController.php b/app/Http/Controllers/Admin/StatisticsController.php index 82e8141..38cd863 100755 --- a/app/Http/Controllers/Admin/StatisticsController.php +++ b/app/Http/Controllers/Admin/StatisticsController.php @@ -42,6 +42,10 @@ class StatisticsController extends CommonController public function _getMonths() { $months = []; + for ($i = 1; $i <= 12; $i++) { + $mm = $i < 10 ? "0" . $i : $i; + $months[] = (date("Y") - 2) . "-" . $mm; + } for ($i = 1; $i <= 12; $i++) { $mm = $i < 10 ? "0" . $i : $i; $months[] = (date("Y") - 1) . "-" . $mm; diff --git a/app/Models/Holiday.php b/app/Models/Holiday.php new file mode 100755 index 0000000..e130a7a --- /dev/null +++ b/app/Models/Holiday.php @@ -0,0 +1,8 @@ +belongsTo(Orders::class); } - public function siblings() { - return $this->hasManyThrough(OrderItems::class,Orders::class,"id","order_id","order_id","id"); + public function siblings() + { + return $this->hasManyThrough(OrderItems::class, Orders::class, "id", "order_id", "order_id", "id"); } public function customer() @@ -190,7 +191,18 @@ class OrderItems extends SoftDeletesModel ->first(); } - $fee = $factor->fee_percent * $this->total / 100 + $factor->fee - $this->fee_free; + //todo:考虑不同项目的情况,目前是全部统一 + $holidays = cache("holidays_" . $this->order->project_id); + if (!$holidays) { + $holidays = Holiday::where("project_id", $this->order->project_id)->get()->keyBy("date")->toArray(); + cache(['holidays' . $this->order->project_id => $holidays], now()->addSeconds(90)); //只保存较短时间,省却了更新节假日时的缓存更新机制 + } + + if (in_array($this->service_date, array_keys($holidays))) { + $fee = $factor->fee_percent * ($this->total / $holidays[$this->service_date]["price_ratio"]) / 100 + $factor->fee - $this->fee_free; + } else { + $fee = $factor->fee_percent * $this->total / 100 + $factor->fee - $this->fee_free; + } $paramedic_total = $this->total - $fee; $this->paramedic_total = $paramedic_total; $this->fee = $fee; diff --git a/database/migrations/2023_01_31_180151_create_holiday.php b/database/migrations/2023_01_31_180151_create_holiday.php new file mode 100644 index 0000000..6e89ec2 --- /dev/null +++ b/database/migrations/2023_01_31_180151_create_holiday.php @@ -0,0 +1,36 @@ +id(); + $table->integer("project_id")->nullable(); + $table->string("date")->nullable(); + $table->string("remark")->nullable(); + $table->decimal("price_ratio", 2, 1)->nullable()->default(1); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('holiday'); + } +} diff --git a/resources/views/admin/orders/index.blade.php b/resources/views/admin/orders/index.blade.php index 8268134..2ea0035 100755 --- a/resources/views/admin/orders/index.blade.php +++ b/resources/views/admin/orders/index.blade.php @@ -118,6 +118,7 @@