酒店预订平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
3.0 KiB

  1. <?php
  2. namespace app\admin\service;
  3. use app\admin\model\OrderHotel;
  4. use app\admin\model\OrderItem;
  5. use app\admin\model\OrderMain;
  6. use app\admin\model\Purchase;
  7. use app\admin\model\PurchasePrice;
  8. /**
  9. * Created by PhpStorm.
  10. * User: nizongfeng
  11. * Date: 2021/10/24
  12. * Time: 15:55
  13. */
  14. class OrderMainService
  15. {
  16. /**
  17. * 设置主订单金额
  18. * @param int $orderId
  19. * @throws
  20. */
  21. private static function setOrderAmount(int $orderId){
  22. $itemModel = new OrderItem();
  23. $hotelModel = new OrderHotel();
  24. $itemList =$itemModel->where(["order_id"=>$orderId])->select()->toArray();
  25. $hotelList = $hotelModel->where(["order_id"=>$orderId])->select()->toArray();
  26. $amount = 0;
  27. $cost = 0;
  28. foreach ($itemList as $item) {
  29. $amount += $item['total_price'];
  30. $cost+= $item['total_cost'];
  31. }
  32. foreach ($hotelList as $hotel) {
  33. $amount += $hotel['total_price'];
  34. $cost += $hotel["total_cost"];
  35. }
  36. //更新金额
  37. OrderMain::update(["total_amount"=>$amount,"cost_amount"=>$cost])->where(["id"=>$orderId]);
  38. }
  39. /**
  40. * 设置子订单金额
  41. * @param int $subOrderId
  42. * @param string $prodType
  43. * @throws \think\db\exception\DataNotFoundException
  44. * @throws \think\db\exception\ModelNotFoundException
  45. * @throws \think\exception\DbException
  46. */
  47. private static function setSubOrderAmount( int $subOrderId,string $prodType) {
  48. $purchaseModel = new Purchase();
  49. $purchaseList = $purchaseModel->where(["order_detail_id"=>$subOrderId,"del_flag"=>0])->select()->toArray();
  50. $cost = 0;
  51. $amount = 0;
  52. foreach ($purchaseList as $purchase) {
  53. $cost += $purchase['total_cost'];
  54. $amount += $purchase['total_price'];
  55. }
  56. if ($prodType == "hotel") {
  57. OrderHotel::update(["total_price"=>$amount,"total_cost"=>$cost])->where(["id"=>$subOrderId]);
  58. } else {
  59. OrderItem::update(["total_price"=>$amount,"total_cost"=>$cost])->where(["id"=>$subOrderId]);
  60. }
  61. }
  62. /**
  63. * 设置采购单/子订单/主订单 金额
  64. * @param Purchase $purchase
  65. * @throws \think\db\exception\DataNotFoundException
  66. * @throws \think\db\exception\ModelNotFoundException
  67. * @throws \think\exception\DbException
  68. */
  69. public function setPurchase(Purchase $purchase){
  70. $purchasePrice = new PurchasePrice();
  71. $purchasePriceList = $purchasePrice->where(["purchase_id"=>$purchase["id"],"del_flag"=>0])->select()->toArray();
  72. $cost = 0;
  73. $amount = 0;
  74. foreach ($purchasePriceList as $price) {
  75. $cost += $price['cost'] * $price["cnt"];
  76. $amount += $price['price'] * $price["cnt"];
  77. }
  78. Purchase::update(["total_price"=>$amount,["total_cost"=>$cost]])->where(["id"=>$purchase['id']]);
  79. //更新子表
  80. static::setSubOrderAmount($purchase['order_detail_id'], $purchase['prod_type']);
  81. //更新主表金额
  82. static::setOrderAmount($purchase['order_id']);
  83. }
  84. }