酒店预订平台
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

185 rader
5.9 KiB

  1. <?php
  2. namespace app\admin\service;
  3. use app\admin\command\Util;
  4. use app\admin\model\OrderHotel;
  5. use app\admin\model\OrderItem;
  6. use app\admin\model\OrderMain;
  7. use app\admin\model\Purchase;
  8. use app\admin\model\PurchasePrice;
  9. use think\Exception;
  10. use think\Url;
  11. /**
  12. * Created by PhpStorm.
  13. * User: nizongfeng
  14. * Date: 2021/10/24
  15. * Time: 15:55
  16. */
  17. class OrderMainService
  18. {
  19. /**
  20. * 保存主订单
  21. * @param $param
  22. * @return array
  23. */
  24. public function saveOrder($param)
  25. {
  26. /**
  27. * 1.添加主订单
  28. */
  29. $orderMainDao = new OrderMainDao();
  30. $addOrderMain = $orderMainDao->save($param);
  31. if (!$addOrderMain["flag"]) {
  32. return $addOrderMain;
  33. }
  34. $orderId = $addOrderMain['data'];
  35. //所有子订单设置为删除
  36. $orderHotelDao = new OrderHotelDao();
  37. $orderHotelDao->delete($orderId);
  38. $orderItemDao = new OrderItemDao();
  39. $orderItemDao->delete($orderId);
  40. $purchasePriceDao = new PurchasePriceDao();
  41. $purchasePriceDao->delete($orderId);
  42. //循环子订单
  43. foreach ($param['subOrderList'] as $subOrderParam) {
  44. /**
  45. * 2.添加子订单 有则激活更新、无则添加
  46. */
  47. if ($subOrderParam['prodType'] == 'hotel') {
  48. $subOrderDao = $orderHotelDao;
  49. } else {
  50. $subOrderDao = $orderItemDao;
  51. }
  52. $addSubOrder = $subOrderDao->modify($subOrderParam, $orderId);
  53. if (!$addSubOrder['flag']) {
  54. return $addSubOrder;
  55. }
  56. $subOrderId = $addSubOrder['data'];
  57. $subOrderInfo = $subOrderDao->getInfoById($subOrderId);
  58. /**
  59. * 2.1添加子订单下的采购单 有则更新激活、无则添加
  60. */
  61. $purchaseDao = new PurchaseDao();
  62. if ($subOrderParam['prod_type'] == 'hotel') {
  63. $addPurchase = $purchaseDao->saveHotelPurchase($subOrderParam, $subOrderInfo);
  64. } else {
  65. $addPurchase = $purchaseDao->saveItemPurchase($subOrderParam, $subOrderInfo);
  66. }
  67. if (!$addPurchase['flag']) {
  68. return $addPurchase;
  69. }
  70. $purchaseId = $addPurchase['id'];
  71. /**
  72. * 2.1.1添加采购单的每日价格 先删除、后添加激活
  73. */
  74. $purchasePriceDao = new PurchasePriceDao();
  75. $addPurchasePrice = $purchasePriceDao->saveList($subOrderParam['purchasePriceList'], $orderId, $subOrderParam['prod_type'], $subOrderId, $purchaseId);
  76. if (!$addPurchasePrice['flag']) {
  77. return $addPurchasePrice;
  78. }
  79. /**
  80. * 2.1.2 计算更新 采购单总金额、成本、产品数量
  81. */
  82. $setPurchaseRe = $purchaseDao->setPurchaseAmount($purchaseId);
  83. if (!$setPurchaseRe['flag']) {
  84. return $setPurchaseRe;
  85. }
  86. /**
  87. * 2.2 计算更新 子订单成本、金额、产品数量
  88. */
  89. $setSubOrderRe = $subOrderDao->setSubOrderAmount($subOrderId);
  90. if (!$setSubOrderRe['flag']) {
  91. return $setSubOrderRe;
  92. }
  93. }
  94. /**
  95. * 3 计算更新 主订单成本、金额、产品数量
  96. */
  97. $setOrderMainRe = $orderMainDao->setOrderAmount($orderId);
  98. if (!$setOrderMainRe['flag']) {
  99. return $setOrderMainRe;
  100. }
  101. return Util::returnArrSu($orderId);
  102. }
  103. /**
  104. * 保存子订单
  105. * @param $subOrderParam
  106. * @return array
  107. */
  108. public function subOrderSave($subOrderParam)
  109. {
  110. $orderId = $subOrderParam['order_id'];
  111. $orderMainDao = new OrderMainDao();
  112. /**
  113. * 2.添加子订单
  114. */
  115. if ($subOrderParam['prodType'] == 'hotel') {
  116. $subOrderDao = new OrderHotelDao();
  117. } else {
  118. $subOrderDao = new OrderItemDao();
  119. }
  120. $addSubOrder = $subOrderDao->modify($subOrderParam, $orderId);
  121. if (!$addSubOrder['flag']) {
  122. return $addSubOrder;
  123. }
  124. $subOrderId = $addSubOrder['data'];
  125. $subOrderInfo = $subOrderDao->getInfoById($subOrderId);
  126. /**
  127. * 2.1添加子订单下的采购单
  128. */
  129. $purchaseDao = new PurchaseDao();
  130. if ($subOrderParam['prod_type'] == 'hotel') {
  131. $addPurchase = $purchaseDao->saveHotelPurchase($subOrderParam, $subOrderInfo);
  132. } else {
  133. $addPurchase = $purchaseDao->saveItemPurchase($subOrderParam, $subOrderInfo);
  134. }
  135. if (!$addPurchase['flag']) {
  136. return $addPurchase;
  137. }
  138. $purchaseId = $addPurchase['id'];
  139. /**
  140. * 2.1.1添加采购单的每日价格
  141. */
  142. $purchasePriceDao = new PurchasePriceDao();
  143. $addPurchasePrice = $purchasePriceDao->saveList($subOrderParam['purchasePriceList'], $orderId, $subOrderParam['prod_type'], $subOrderId, $purchaseId);
  144. if (!$addPurchasePrice['flag']) {
  145. return $addPurchasePrice;
  146. }
  147. /**
  148. * 2.1.2 计算更新 采购单总金额、成本、产品数量
  149. */
  150. $setPurchaseRe = $purchaseDao->setPurchaseAmount($purchaseId);
  151. if (!$setPurchaseRe['flag']) {
  152. return $setPurchaseRe;
  153. }
  154. /**
  155. * 2.2 计算更新 子订单成本、金额、产品数量
  156. */
  157. $setSubOrderRe = $subOrderDao->setSubOrderAmount($subOrderId);
  158. if (!$setSubOrderRe['flag']) {
  159. return $setSubOrderRe;
  160. }
  161. /**
  162. * 3 计算更新 主订单成本、金额、产品数量
  163. */
  164. $setOrderMainRe = $orderMainDao->setOrderAmount($orderId);
  165. if (!$setOrderMainRe['flag']) {
  166. return $setOrderMainRe;
  167. }
  168. return Util::returnArrSu($subOrderId);
  169. }
  170. }