OrderList.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace addons\SecondaryCard\common\global_func\Order;
  3. use addons\ReservationService\common\models\ReservationServiceOrder;
  4. use addons\SecondaryCard\common\models\SecondaryCardOrder;
  5. use addons\SecondaryCard\common\models\SecondaryCardUseLog;
  6. use addons\SecondaryCard\common\service\SecondaryCardOrderService;
  7. use common\enums\AddonsEnum;
  8. use common\models\mall\MallAddons;
  9. class OrderList
  10. {
  11. public static function getApiOrderList($params)
  12. {
  13. if (!isset($params['order']) || !is_array($params['order'])) return [];
  14. $marketing_ids = [];
  15. foreach ($params['order'] as $val) {
  16. if ($val['order_source'] == 'Reserve' && $val['marketing_type'] == 'SecondaryCard') {
  17. $marketing_ids[] = $val['marketing_id'];
  18. }
  19. }
  20. if (!empty($marketing_ids)) {
  21. $secondary_card_order_list = SecondaryCardOrder::lists(['where' => [['id' => $marketing_ids]], 'index' => 'id','with'=>['secondaryCard']]);
  22. }
  23. // 判断是否安装了预约服务插件
  24. if (MallAddons::isInstall($params['mall_id'], AddonsEnum::ADDONS_NAME_RESERVATION_SERVICE)) {
  25. $order_ids = array_column($params['order'],'id');
  26. $reservation_service_order_list = ReservationServiceOrder::lists(['where'=>[['order_id'=>$order_ids]],'index'=>'order_id']);
  27. $reservation_service_order_ids = array_column($reservation_service_order_list,'id');
  28. $use_log_list = SecondaryCardUseLog::lists(['where'=>[['reservation_service_order_id'=>$reservation_service_order_ids]],'index'=>'reservation_service_order_id']);
  29. }
  30. foreach ($params['order'] as &$item) {
  31. if ($item['order_source'] == 'Reserve' && $item['marketing_type'] == 'SecondaryCard') {
  32. if (!empty($secondary_card_order_list) && isset($secondary_card_order_list[$item['marketing_id']])) {
  33. $item['is_secondary_card'] = 1;
  34. $secondary_card_order = $secondary_card_order_list[$item['marketing_id']];
  35. $item['secondary_card'] = [
  36. 'name' => $secondary_card_order['secondaryCard']['name'],
  37. 'font_color' => $secondary_card_order['secondaryCard']['font_color'],
  38. 'background' => $secondary_card_order['secondaryCard']['background'],
  39. 'reservation_cancel_hour' => $secondary_card_order['secondaryCard']['reservation_cancel_hour'],
  40. 'appointment_interval_duration' => $secondary_card_order['secondaryCard']['appointment_interval_duration'],
  41. 'service' => json_decode($secondary_card_order['secondaryCard']['service'],true),
  42. 'order_no' => $secondary_card_order['order_no'],
  43. 'secondary_card_order_order_id' => $secondary_card_order['id'],
  44. 'main_order_id' => $item['id'],
  45. 'reservation_cancel_type' => $secondary_card_order['secondaryCard']['reservation_cancel_type'],
  46. 'reservation_cancel_deduct' => $secondary_card_order['secondaryCard']['reservation_cancel_deduct'],
  47. ];
  48. $item['secondary_card']['order_source'] = SecondaryCardOrderService::getSourceName($secondary_card_order,$secondary_card_order['secondaryCard']['use_type']);
  49. $service_times = 1;
  50. if (isset($reservation_service_order_list[$item['id']])) {
  51. $reservation_service_order_id = $reservation_service_order_list[$item['id']]['id'];
  52. if (isset($use_log_list[$reservation_service_order_id])) {
  53. $service_times = $use_log_list[$reservation_service_order_id]['clerk_nums'];
  54. }
  55. }
  56. $item['secondary_card']['service_times'] = $service_times;
  57. $item['secondary_card_order_no'] = $secondary_card_order['order_no'];
  58. }
  59. }
  60. }
  61. return $params['order'];
  62. }
  63. }