酒店预订平台
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.
 
 
 
 
 
 

261 lines
8.5 KiB

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: nizongfeng
  5. * Date: 2021/11/17
  6. * Time: 17:29
  7. */
  8. namespace app\admin\service;
  9. use app\admin\command\Util;
  10. use app\admin\dao\OrderHotelDao;
  11. use app\admin\dao\OrderItemDao;
  12. use app\admin\dao\OrderMainDao;
  13. use app\admin\dao\PaymentOrderDao;
  14. use think\Db;
  15. class PaymentOrderService
  16. {
  17. /**
  18. * 保存详情
  19. * @param $param
  20. * @return array
  21. */
  22. public function save($param){
  23. //保存
  24. $dao = new PaymentOrderDao();
  25. $addRe = $dao->save($param);
  26. if (!$addRe['flag']) {
  27. return $addRe;
  28. }
  29. if (!empty($param['id'])) {
  30. $orderHotelModel = new OrderHotelDao();
  31. $orderHotelModel->updatePayOrderName($param['id'], $param["name"]);
  32. $orderItemModel = new OrderItemDao();
  33. $orderItemModel->updatePayOrderName($param['id'], $param["name"]);
  34. }
  35. return Util::returnArrSu();
  36. }
  37. /**
  38. * 获取列表
  39. * @param $param
  40. * @return array
  41. */
  42. public function getList($param){
  43. $dao = new PaymentOrderDao();
  44. return $dao->getList($param);
  45. }
  46. /**
  47. * 设置状态
  48. * @param $id
  49. * @param $status
  50. * @return array
  51. */
  52. public function setStatus($id,$status) {
  53. Db::startTrans();
  54. //1.设置收购单状态
  55. $dao = new PaymentOrderDao();
  56. $statusRe = $dao->setStatus($id,$status);
  57. if (!$statusRe['flag']) {
  58. Db::rollback();
  59. return$statusRe;
  60. }
  61. //2.设置所有订单表的状态
  62. $hotelDao = new OrderHotelDao();
  63. $hotelRe = $hotelDao->setPaymentOrderStatus($id,$status);
  64. if (!$hotelRe['flag']) {
  65. Db::rollback();
  66. return $hotelRe;
  67. }
  68. $itemDao = new OrderItemDao();
  69. $itemRe = $itemDao->setPaymentOrderStatus($id,$status);
  70. if (!$itemRe['flag']) {
  71. Db::rollback();
  72. return $itemRe;
  73. }
  74. //3.获取所有子订单对应的主订单ID
  75. $hotelIds = $hotelDao->getOrderMainIdByPayment($id);
  76. $itemIds = $itemDao->getOrderMainIdByPayment($id);
  77. $orderMainIds = array_unique(array_merge($hotelIds,$itemIds));
  78. $orderMainDao = new OrderMainDao();
  79. foreach ($orderMainIds as $orderId) {
  80. $setRe = $orderMainDao->setOrderAmount($orderId);
  81. if (!$setRe['flag']) {
  82. Db::rollback();
  83. return $setRe;
  84. }
  85. }
  86. Db::commit();
  87. return Util::returnArrSu();
  88. }
  89. /**
  90. * 添加子订单到付款单
  91. * @param $param
  92. * @return array
  93. */
  94. public function addSubOrder($param){
  95. $model = new PaymentOrderDao();
  96. $infoRe = $model->getInfoById($param['id']);
  97. if (!$infoRe['flag']) {
  98. return $infoRe;
  99. }
  100. if (isset($param['hotel_id']) && count($param['hotel_id'])>0) {
  101. $orderMainDao = new OrderHotelDao();
  102. $addRe = $orderMainDao->addSubOrderInPayment($infoRe['data'],$param['hotel_id']);
  103. if (!$addRe['flag']) {
  104. return $addRe;
  105. }
  106. }
  107. if (isset($param['item_id']) && count($param['item_id'])>0) {
  108. $orderMainDao = new OrderItemDao();
  109. $addRe = $orderMainDao->addSubOrderInPayment($infoRe['data'],$param['item_id']);
  110. if (!$addRe['flag']) {
  111. return $addRe;
  112. }
  113. }
  114. return Util::returnArrSu();
  115. }
  116. /**
  117. * 移除子订单
  118. * @param $param
  119. * @return array
  120. */
  121. public function removeSubOrder($param){
  122. if (isset($param['hotel_id']) && count($param['hotel_id'])>0) {
  123. $orderMainDao = new OrderHotelDao();
  124. $addRe = $orderMainDao->removeSubOrderFormPayment($param['hotel_id']);
  125. if (!$addRe['flag']) {
  126. return $addRe;
  127. }
  128. }
  129. if (isset($param['item_id']) && count($param['item_id'])>0) {
  130. $orderMainDao = new OrderItemDao();
  131. $addRe = $orderMainDao->removeSubOrderFormPayment($param['item_id']);
  132. if (!$addRe['flag']) {
  133. return $addRe;
  134. }
  135. }
  136. return Util::returnArrSu("");
  137. }
  138. /**
  139. * 获取子订单列表
  140. * @param $param
  141. * @return array
  142. */
  143. public function getSubOrderList($param){
  144. $dao = new PaymentOrderDao();
  145. $item_where_arr = ["d.del_flag=0","a.del_flag=0","a.group_id = {$param['group_id']}"];
  146. $hotel_where_arr = ["c.del_flag=0","b.del_flag=0","b.group_id = {$param['group_id']}"];
  147. $where_arr = [];
  148. if ($param['prod_type']=='hotel'){
  149. $item_where_arr[] = " a.id = 0 ";
  150. }else{
  151. $hotel_where_arr[]=" b.id = 0 ";
  152. }
  153. if (!empty($param['sub_order_id'])) {
  154. $item_where_arr[] = " a.id = {$param["sub_order_id"]} ";
  155. $hotel_where_arr[]=" b.id = {$param['sub_order_id']} ";
  156. }
  157. if (!empty($param['order_id'])) {
  158. $item_where_arr[] = " a.order_id = {$param["order_id"]} ";
  159. $hotel_where_arr[]=" b.order_id = {$param['order_id']} ";
  160. }
  161. if (!empty($param['supplier_id'])) {
  162. $item_where_arr[] = " d.supplier_id = {$param["supplier_id"]} ";
  163. $hotel_where_arr[]=" c.supplier_id = {$param['supplier_id']} ";
  164. }
  165. if (!empty($param['confirm_status'])) {
  166. $item_where_arr[] = " a.confirm_status = {$param["confirm_status"]} ";
  167. $hotel_where_arr[]=" b.confirm_status = {$param['confirm_status']} ";
  168. }
  169. if (!empty($param['customer_name'])) {
  170. $item_where_arr[] = " a.customer_name like '%{$param["customer_name"]}%' ";
  171. $hotel_where_arr[]=" b.customer_name like '%{$param['customer_name']}%' ";
  172. }
  173. if (!empty($param['item_id'])) {
  174. $item_where_arr[] = " a.item_id = {$param["item_id"]} ";
  175. }
  176. if (!empty($param['hotel_id'])) {
  177. $hotel_where_arr[] = " b.hotel_id = {$param["hotel_id"]} ";
  178. }
  179. switch ($param['inPayment']) {
  180. case 1:
  181. $item_where_arr[] = " a.payment_order_id = {$param["payment_order_id"]} ";
  182. $hotel_where_arr[]=" b.payment_order_id = {$param['payment_order_id']} ";
  183. break;
  184. case 2:
  185. $item_where_arr[] = " a.payment_order_id != {$param["payment_order_id"]} ";
  186. $hotel_where_arr[]=" b.payment_order_id != {$param['payment_order_id']} ";
  187. break;
  188. case 3:
  189. $item_where_arr[] = " a.payment_order_id = '' ";
  190. $hotel_where_arr[]=" b.payment_order_id = '' ";
  191. }
  192. //金额区间查询
  193. if (!empty($param['startMoney'])) {
  194. $item_where_arr[] = " a.total_cost >= {$param["startMoney"]} ";
  195. $hotel_where_arr[]=" b.total_cost >= {$param['startMoney']} ";
  196. }
  197. if (!empty($param['endMoney'])) {
  198. $item_where_arr[] = " a.total_cost <= {$param["endMoney"]} ";
  199. $hotel_where_arr[]=" b.total_cost <= {$param['endMoney']} ";
  200. }
  201. //时间区间查询
  202. if (!empty($param['startTime']) ) {
  203. $item_where_arr[] = " a.check_in_date >= '{$param["startTime"]} 00:00:00' ";
  204. $hotel_where_arr[]=" b.check_in_date >= '{$param['startTime']} 00:00:00' ";
  205. }
  206. if (!empty($param['endTime'])) {
  207. $item_where_arr[] = " a.check_in_date <= '{$param["endTime"]} 23:59:59' ";
  208. $hotel_where_arr[]=" b.check_in_date <= '{$param['endTime']} 23:59:59' ";
  209. }
  210. return $dao->getSubOrderListByWhere(join(" and ",$hotel_where_arr),join(" and ",$item_where_arr),join(" and ",$where_arr),$param);
  211. }
  212. /**
  213. * 删除付款单
  214. * @param $id
  215. * @return array
  216. */
  217. public function delAll($id){
  218. Db::startTrans();
  219. //1.删除付款单下的附加项目订单
  220. $itemDao = new OrderItemDao();
  221. $itemRe = $itemDao->delPaymentOrder($id);
  222. if (!$itemRe['flag']) {
  223. Db::rollback();
  224. return $itemRe;
  225. }
  226. //1.删除付款单下的酒店订单
  227. $hotelDao = new OrderHotelDao();
  228. $hotelRe = $hotelDao->delPaymentOrder($id);
  229. if (!$hotelRe['flag']) {
  230. Db::rollback();
  231. return $hotelRe;
  232. }
  233. //2.删除付款单
  234. $model = new PaymentOrderDao();
  235. $delRe = $model->del($id);
  236. if (!$delRe['flag']) {
  237. Db::rollback();
  238. return $delRe;
  239. }
  240. Db::commit();
  241. return Util::returnArrSu();
  242. }
  243. }