OrderService.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace app\common\service\order;
  3. use app\common\enum\order\OrderTypeEnum;
  4. use app\common\model\order\Order as OrderModel;
  5. /**
  6. * 订单服务类
  7. */
  8. class OrderService
  9. {
  10. /**
  11. * 生成订单号
  12. */
  13. public static function createOrderNo()
  14. {
  15. return date('Ymd') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
  16. }
  17. /**
  18. * 整理订单列表 (根据order_type获取不同类型的订单记录)
  19. */
  20. public static function getOrderList($data, $orderIndex = 'order', $with = [])
  21. {
  22. // 整理订单id
  23. $orderIds = [];
  24. foreach ($data as &$item) {
  25. $orderIds[$item['order_type']['value']][] = $item['order_id'];
  26. }
  27. // 获取订单列表
  28. $orderList = [];
  29. foreach ($orderIds as $orderType => $values) {
  30. $model = new OrderModel();
  31. $orderList[$orderType] = $model->getListByIds($values, $with);
  32. }
  33. // 格式化到数据源
  34. foreach ($data as $key => &$item) {
  35. if (!isset($orderList[$item['order_type']['value']][$item['order_id']])) {
  36. $item->delete();
  37. unset($data[$key]);
  38. continue;
  39. }
  40. $item[$orderIndex] = $orderList[$item['order_type']['value']][$item['order_id']];
  41. }
  42. return $data;
  43. }
  44. }