StoreOrder.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\model\api;
  4. use think\Model;
  5. /**
  6. * @mixin \think\Model
  7. */
  8. class StoreOrder extends Model
  9. {
  10. protected $name = 'store_order';
  11. /**
  12. * 获取订单列表
  13. * @param array $where
  14. * @param int $page
  15. * @param int $pageSize
  16. * @return array
  17. */
  18. public function getList($where = [], $page = 1, $pageSize = 20)
  19. {
  20. $query = $this->where($where);
  21. $totalCount = $query->count();
  22. $list = $query
  23. ->order('id', 'desc')
  24. ->page($page, $pageSize)
  25. ->select()
  26. ->toArray();
  27. // 关联订单商品信息
  28. if (!empty($list)) {
  29. foreach ($list as &$order) {
  30. $cartInfo = Db::name('store_order_cart_info')
  31. ->where('oid', $order['id'])
  32. ->select()
  33. ->toArray();
  34. foreach ($cartInfo as &$item) {
  35. if (!empty($item['cart_info'])) {
  36. $innerCartInfo = json_decode($item['cart_info'], true);
  37. unset($item['cart_info']);
  38. $item = array_merge($item, $innerCartInfo);
  39. }
  40. }
  41. $order['cart_info'] = $cartInfo;
  42. }
  43. }
  44. return [
  45. 'list' => $list,
  46. 'totalCount' => $totalCount,
  47. 'pageSize' => $pageSize,
  48. 'page' => $page
  49. ];
  50. }
  51. /**
  52. * 获取订单详情
  53. * @param int $id
  54. * @return array|null
  55. */
  56. public function getOrderDetail($id)
  57. {
  58. $order = $this->where('id', $id)->find();
  59. if (!$order) {
  60. return null;
  61. }
  62. $data = $order->toArray();
  63. // 获取订单商品
  64. $cartInfo = (new StoreOrderCartInfo())->where('oid', $id)->select()->toArray();
  65. $data['cart_info'] = $cartInfo;
  66. return $data;
  67. }
  68. }