酒店预订平台
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

PaymentOrderService.php 7.8 KiB

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