酒店预订平台
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 
 

268 řádky
8.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. $subOrderParam['group_id'] = $param['group_id'];
  45. /**
  46. * 2.添加子订单 有则激活更新、无则添加
  47. */
  48. if ($subOrderParam['prod_type'] == 'hotel') {
  49. $subOrderDao = $orderHotelDao;
  50. } else {
  51. $subOrderDao = $orderItemDao;
  52. }
  53. $addSubOrder = $subOrderDao->modify($subOrderParam, $orderId);
  54. if (!$addSubOrder['flag']) {
  55. return $addSubOrder;
  56. }
  57. $subOrderId = $addSubOrder['data'];
  58. $subOrderInfo = $subOrderDao->getInfoById($subOrderId);
  59. if (!$subOrderInfo['flag']) {
  60. return $subOrderInfo;
  61. }
  62. /**
  63. * 2.1添加子订单下的采购单 有则更新激活、无则添加
  64. */
  65. $purchaseDao = new PurchaseDao();
  66. if ($subOrderParam['prod_type'] == 'hotel') {
  67. $addPurchase = $purchaseDao->saveHotelPurchase($subOrderParam, $subOrderInfo['data']);
  68. } else {
  69. $addPurchase = $purchaseDao->saveItemPurchase($subOrderParam, $subOrderInfo['data']);
  70. }
  71. if (!$addPurchase['flag']) {
  72. return $addPurchase;
  73. }
  74. $purchaseId = $addPurchase['data'];
  75. /**
  76. * 2.1.1添加采购单的每日价格 先删除、后添加激活
  77. */
  78. $purchasePriceDao = new PurchasePriceDao();
  79. $addPurchasePrice = $purchasePriceDao->saveList($subOrderParam['purchasePriceList'], $orderId, $subOrderParam['prod_type'], $subOrderId, $purchaseId);
  80. if (!$addPurchasePrice['flag']) {
  81. return $addPurchasePrice;
  82. }
  83. /**
  84. * 2.1.2 计算更新 采购单总金额、成本、产品数量
  85. */
  86. $setPurchaseRe = $purchaseDao->setPurchaseAmount($purchaseId);
  87. if (!$setPurchaseRe['flag']) {
  88. return $setPurchaseRe;
  89. }
  90. /**
  91. * 2.2 计算更新 子订单成本、金额、产品数量
  92. */
  93. $setSubOrderRe = $subOrderDao->setSubOrderAmount($subOrderId);
  94. if (!$setSubOrderRe['flag']) {
  95. return $setSubOrderRe;
  96. }
  97. }
  98. /**
  99. * 3 计算更新 主订单成本、金额、产品数量
  100. */
  101. $setOrderMainRe = $orderMainDao->setOrderAmount($orderId);
  102. if (!$setOrderMainRe['flag']) {
  103. return $setOrderMainRe;
  104. }
  105. return Util::returnArrSu("",$orderId);
  106. }
  107. /**
  108. * 保存子订单
  109. * @param $subOrderParam
  110. * @return array
  111. */
  112. public function subOrderSave($subOrderParam)
  113. {
  114. $orderId = $subOrderParam['order_id'];
  115. $orderMainDao = new OrderMainDao();
  116. /**
  117. * 2.添加子订单
  118. */
  119. if ($subOrderParam['prod_type'] == 'hotel') {
  120. $subOrderDao = new OrderHotelDao();
  121. } else {
  122. $subOrderDao = new OrderItemDao();
  123. }
  124. $addSubOrder = $subOrderDao->modify($subOrderParam, $orderId);
  125. if (!$addSubOrder['flag']) {
  126. return $addSubOrder;
  127. }
  128. $subOrderId = $addSubOrder['data'];
  129. $subOrderInfo = $subOrderDao->getInfoById($subOrderId);
  130. /**
  131. * 2.1添加子订单下的采购单
  132. */
  133. $purchaseDao = new PurchaseDao();
  134. if ($subOrderParam['prod_type'] == 'hotel') {
  135. $addPurchase = $purchaseDao->saveHotelPurchase($subOrderParam, $subOrderInfo);
  136. } else {
  137. $addPurchase = $purchaseDao->saveItemPurchase($subOrderParam, $subOrderInfo);
  138. }
  139. if (!$addPurchase['flag']) {
  140. return $addPurchase;
  141. }
  142. $purchaseId = $addPurchase['id'];
  143. /**
  144. * 2.1.1添加采购单的每日价格
  145. */
  146. $purchasePriceDao = new PurchasePriceDao();
  147. $addPurchasePrice = $purchasePriceDao->saveList($subOrderParam['purchasePriceList'], $orderId, $subOrderParam['prod_type'], $subOrderId, $purchaseId);
  148. if (!$addPurchasePrice['flag']) {
  149. return $addPurchasePrice;
  150. }
  151. /**
  152. * 2.1.2 计算更新 采购单总金额、成本、产品数量
  153. */
  154. $setPurchaseRe = $purchaseDao->setPurchaseAmount($purchaseId);
  155. if (!$setPurchaseRe['flag']) {
  156. return $setPurchaseRe;
  157. }
  158. /**
  159. * 2.2 计算更新 子订单成本、金额、产品数量
  160. */
  161. $setSubOrderRe = $subOrderDao->setSubOrderAmount($subOrderId);
  162. if (!$setSubOrderRe['flag']) {
  163. return $setSubOrderRe;
  164. }
  165. /**
  166. * 3 计算更新 主订单成本、金额、产品数量
  167. */
  168. $setOrderMainRe = $orderMainDao->setOrderAmount($orderId);
  169. if (!$setOrderMainRe['flag']) {
  170. return $setOrderMainRe;
  171. }
  172. return Util::returnArrSu("",$subOrderId);
  173. }
  174. /**
  175. * 删除子订单
  176. * @param $param
  177. * @return array
  178. */
  179. public function delSubOrder($param){
  180. try {
  181. if ($param['prod_type'] == 'hotel') {
  182. $subOrderDao = new OrderHotelDao();
  183. } else {
  184. $subOrderDao = new OrderItemDao();
  185. }
  186. $subOrderRe = $subOrderDao->getInfoById($param['id']);
  187. if (!$subOrderRe['flag']) {
  188. return $subOrderRe;
  189. }
  190. $subOrderDao->delById($param['id']);
  191. //删除采购单
  192. $purchaseDao = new PurchaseDao();
  193. $purchaseDao->deleteBySubOrderId($param['id']);
  194. //删除每日采购单价格
  195. $purchasePriceDao = new PurchasePriceDao();
  196. $purchasePriceDao->deleteBySubOrderId($param['id']);
  197. //重新计算订单总金额
  198. $orderMainDao = new OrderMainDao();
  199. $orderMainDao->setOrderAmount($subOrderRe['data']['order_id']);
  200. return Util::returnArrSu();
  201. }catch (Exception $e){
  202. return Util::returnArrEr("删除子订单失败:".$e->getMessage());
  203. }
  204. }
  205. /**
  206. * 获取订单详情
  207. * @param $id
  208. * @return array
  209. */
  210. public function getOrderInfo($id){
  211. $orderMainDao = new OrderMainDao();
  212. $orderMainRe = $orderMainDao->getInfoById($id);
  213. if (!$orderMainRe['flag']) {
  214. return $orderMainRe;
  215. }
  216. $orderMain = $orderMainRe['data'];
  217. //获取采购单金额列表
  218. $purchasePriceDao = new PurchasePriceDao();
  219. $purchasePriceRe = $purchasePriceDao->getPurchasePriceListByOrderId($id);
  220. if (!$purchasePriceRe['flag']) {
  221. return $purchasePriceRe;
  222. }
  223. //获取采购单列表
  224. $purchaseDao = new PurchaseDao();
  225. $purchaseRe = $purchaseDao->getListByOrderId($id);
  226. if (!$purchaseRe['flag']) {
  227. return $purchaseRe;
  228. }
  229. //设置采购单展示数据
  230. $purchaseShow = $purchaseDao->setPurchaseShow($purchaseRe['data'],$purchasePriceRe['data']);
  231. if (!$purchaseShow['flag']) {
  232. return $purchaseShow;
  233. }
  234. //获取子订单列表
  235. $orderHotelDao = new OrderHotelDao();
  236. $orderHotelRe = $orderHotelDao->getListByOrderId($id);
  237. if (!$orderHotelRe['flag']) {
  238. return $orderHotelRe;
  239. }
  240. $orderItemDao = new OrderItemDao();
  241. $orderItemRe = $orderItemDao->getListByOrderId($id);
  242. if (!$orderItemRe['flag']) {
  243. return $orderItemRe;
  244. }
  245. //设置子订单列表
  246. $subOrderList = $orderMainDao->setSubOrderShow($purchaseShow['data'],$orderHotelRe['data'],$orderItemRe['data']);
  247. if (!$subOrderList['flag']) {
  248. return $subOrderList;
  249. }
  250. $orderMain["subOrderList"]=$subOrderList['data'];
  251. return Util::returnArrSu("",$orderMain);
  252. }
  253. }