酒店预订平台
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

234 lignes
7.3 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 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. Db::commit();
  65. return Util::returnArrSu();
  66. }
  67. /**
  68. * 添加子订单到付款单
  69. * @param $param
  70. * @return array
  71. */
  72. public function addSubOrder($param){
  73. $model = new PaymentOrderDao();
  74. $infoRe = $model->getInfoById($param['id']);
  75. if (!$infoRe['flag']) {
  76. return $infoRe;
  77. }
  78. if (isset($param['hotel_id']) && count($param['hotel_id'])>0) {
  79. $orderMainDao = new OrderHotelDao();
  80. $addRe = $orderMainDao->addSubOrderInPayment($infoRe['data'],$param['hotel_id']);
  81. if (!$addRe['flag']) {
  82. return $addRe;
  83. }
  84. }
  85. if (isset($param['item_id']) && count($param['item_id'])>0) {
  86. $orderMainDao = new OrderItemDao();
  87. $addRe = $orderMainDao->addSubOrderInPayment($infoRe['data'],$param['item_id']);
  88. if (!$addRe['flag']) {
  89. return $addRe;
  90. }
  91. }
  92. return Util::returnArrSu();
  93. }
  94. /**
  95. * 移除子订单
  96. * @param $param
  97. * @return array
  98. */
  99. public function removeSubOrder($param){
  100. if (isset($param['hotel_id']) && count($param['hotel_id'])>0) {
  101. $orderMainDao = new OrderHotelDao();
  102. $addRe = $orderMainDao->removeSubOrderFormPayment($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->removeSubOrderFormPayment($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 getSubOrderList($param){
  122. $dao = new PaymentOrderDao();
  123. $item_where_arr = ["d.del_flag=0","a.del_flag=0"];
  124. $hotel_where_arr = ["c.del_flag=0","b.del_flag=0"];
  125. $where_arr = [];
  126. if ($param['prod_type']=='hotel'){
  127. $item_where_arr[] = " a.id = 0 ";
  128. }else{
  129. $hotel_where_arr[]=" b.id = 0 ";
  130. }
  131. if (!empty($param['order_id'])) {
  132. $item_where_arr[] = " a.id = {$param["order_id"]} ";
  133. $hotel_where_arr[]=" b.id = {$param['order_id']} ";
  134. }
  135. if (!empty($param['supplier_id'])) {
  136. $item_where_arr[] = " d.supplier_id = {$param["supplier_id"]} ";
  137. $hotel_where_arr[]=" c.supplier_id = {$param['supplier_id']} ";
  138. }
  139. if (!empty($param['confirm_status'])) {
  140. $item_where_arr[] = " a.confirm_status = {$param["confirm_status"]} ";
  141. $hotel_where_arr[]=" b.confirm_status = {$param['confirm_status']} ";
  142. }
  143. if (!empty($param['customer_name'])) {
  144. $item_where_arr[] = " a.customer_name like %{$param["customer_name"]}% ";
  145. $hotel_where_arr[]=" b.customer_name like %{$param['customer_name']}% ";
  146. }
  147. if (!empty($param['item_id'])) {
  148. $item_where_arr[] = " a.item_id = {$param["item_id"]} ";
  149. }
  150. if (!empty($param['hotel_id'])) {
  151. $item_where_arr[] = " a.hotel_id = {$param["hotel_id"]} ";
  152. }
  153. switch ($param['inPayment']) {
  154. case 1:
  155. $item_where_arr[] = " a.payment_order_id = {$param["payment_order_id"]} ";
  156. $hotel_where_arr[]=" b.payment_order_id = {$param['payment_order_id']} ";
  157. break;
  158. case 2:
  159. $item_where_arr[] = " a.payment_order_id != {$param["payment_order_id"]} ";
  160. $hotel_where_arr[]=" b.payment_order_id != {$param['payment_order_id']} ";
  161. break;
  162. case 3:
  163. $item_where_arr[] = " a.payment_order_id = '' ";
  164. $hotel_where_arr[]=" b.payment_order_id = '' ";
  165. }
  166. //金额区间查询
  167. if (!empty($param['startMoney'])) {
  168. $item_where_arr[] = " a.total_cost >= {$param["startMoney"]} ";
  169. $hotel_where_arr[]=" b.total_cost >= {$param['startMoney']} ";
  170. }
  171. if (!empty($param['endMoney'])) {
  172. $item_where_arr[] = " a.total_cost <= {$param["endMoney"]} ";
  173. $hotel_where_arr[]=" b.total_cost <= {$param['endMoney']} ";
  174. }
  175. //时间区间查询
  176. if (!empty($param['startTime']) ) {
  177. $item_where_arr[] = " a.create_time >= {$param["startTime"]} 00:00:00 ";
  178. $hotel_where_arr[]=" b.create_time >= {$param['startTime']} 00:00:00 ";
  179. }
  180. if (!empty($param['endTime'])) {
  181. $item_where_arr[] = " a.create_time <= {$param["endTime"]} 23:59:59 ";
  182. $hotel_where_arr[]=" b.create_time <= {$param['endTime']} 23:59:59 ";
  183. }
  184. return $dao->getSubOrderListByWhere(join(" and ",$hotel_where_arr),join(" and ",$item_where_arr),join(" and ",$where_arr),$param);
  185. }
  186. /**
  187. * 删除付款单
  188. * @param $id
  189. * @return array
  190. */
  191. public function delAll($id){
  192. Db::startTrans();
  193. //1.删除付款单下的附加项目订单
  194. $itemDao = new OrderItemDao();
  195. $itemRe = $itemDao->delPaymentOrder($id);
  196. if (!$itemRe['flag']) {
  197. Db::rollback();
  198. return $itemRe;
  199. }
  200. //1.删除付款单下的酒店订单
  201. $hotelDao = new OrderHotelDao();
  202. $hotelRe = $hotelDao->delPaymentOrder($id);
  203. if (!$hotelRe['flag']) {
  204. Db::rollback();
  205. return $hotelRe;
  206. }
  207. //2.删除付款单
  208. $model = new PaymentOrderDao();
  209. $delRe = $model->del($id);
  210. if (!$delRe['flag']) {
  211. Db::rollback();
  212. return $delRe;
  213. }
  214. Db::commit();
  215. return Util::returnArrSu();
  216. }
  217. }