From 991ae5844be61b8faead0b9cfcbcb3f59bd2f3cb Mon Sep 17 00:00:00 2001 From: weizong song Date: Tue, 31 Jan 2023 18:23:42 +0800 Subject: [PATCH] up --- .../Controllers/Admin/OrdersController.php | 1 + .../Admin/StatisticsController.php | 4 +++ app/Models/Holiday.php | 8 +++++ app/Models/OrderItems.php | 20 ++++++++--- .../2023_01_31_180151_create_holiday.php | 36 +++++++++++++++++++ resources/views/admin/orders/index.blade.php | 7 ++-- 6 files changed, 69 insertions(+), 7 deletions(-) create mode 100755 app/Models/Holiday.php create mode 100644 database/migrations/2023_01_31_180151_create_holiday.php 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 @@
@csrf +
@@ -172,6 +173,7 @@ $.get(url, function (res) { $("#modal-box").modal("show"); $("#modal-box form input[name=item_id]").val(item_id); + $("#modal-box form input[name=fee]").val(res.fee); $("#modal-box form input[name=serial]").val(res.order.serial); $("#modal-box form input[name=service_date]").val(res.service_date); $("#modal-box form input[name=total]").val(res.total).prop("disabled", false); @@ -215,9 +217,8 @@ function calculateSalary() { if (!$("#modal-box form").find("input[name=salary]").length) return; var total = $("#modal-box form input[name=total]").val(); - var fee_percent = $("#modal-box form input[name$='[fee_percent]']").val(); - var fee = $("#modal-box form input[name$='[fee]']").val(); - var salary = total - (fee_percent * total / 100 + parseFloat(fee)); + var fee = $("#modal-box form input[name=fee]").val(); + var salary = total - fee; $("#modal-box form").find("input[name=salary]").val(salary); }