|
|
@@ -1045,4 +1045,93 @@ class OrderService extends BaseService
|
|
|
]
|
|
|
];
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出订单数据
|
|
|
+ */
|
|
|
+ public function exportData($params)
|
|
|
+ {
|
|
|
+ $query = $this->model->where('mark', 1);
|
|
|
+
|
|
|
+ // 店铺筛选
|
|
|
+ if (isset($params['store_id']) && $params['store_id'] > 0) {
|
|
|
+ $query->where('store_id', $params['store_id']);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 用户筛选
|
|
|
+ if (isset($params['user_id']) && $params['user_id'] > 0) {
|
|
|
+ $query->where('user_id', $params['user_id']);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 状态筛选
|
|
|
+ if (isset($params['status']) && $params['status'] > 0) {
|
|
|
+ $query->where('status', $params['status']);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 售后类型筛选
|
|
|
+ if (isset($params['after_type']) && $params['after_type'] > 0) {
|
|
|
+ $query->where('after_type', $params['after_type']);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 退款状态筛选
|
|
|
+ if (isset($params['refund_status']) && $params['refund_status'] > 0) {
|
|
|
+ $query->where('refund_status', $params['refund_status']);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 关键词搜索
|
|
|
+ if (isset($params['keyword']) && $params['keyword']) {
|
|
|
+ $keyword = $params['keyword'];
|
|
|
+ $query->where(function ($q) use ($keyword) {
|
|
|
+ $q->where('order_no', 'like', '%' . $keyword . '%')
|
|
|
+ ->orWhere('receiver_name', 'like', '%' . $keyword . '%')
|
|
|
+ ->orWhere('receiver_mobile', 'like', '%' . $keyword . '%');
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ $list = $query->with(['user', 'orderGoods', 'store'])
|
|
|
+ ->orderBy('create_time', 'desc')
|
|
|
+ ->limit(5000)
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ if (!$list || $list->isEmpty()) {
|
|
|
+ return response()->json(['code' => 1, 'msg' => '没有可导出的数据']);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 状态映射
|
|
|
+ $statusMap = [1 => '待付款', 2 => '已付款', 3 => '已发货', 4 => '已完成', 9 => '已取消'];
|
|
|
+ $refundStatusMap = [0 => '无', 1 => '已退款', 2 => '已审核', 3 => '待审核'];
|
|
|
+
|
|
|
+ // 构建导出数据
|
|
|
+ $data = [];
|
|
|
+ foreach ($list as $item) {
|
|
|
+ $goodsNames = [];
|
|
|
+ if ($item->orderGoods) {
|
|
|
+ foreach ($item->orderGoods as $goods) {
|
|
|
+ $goodsNames[] = $goods->goods_name . ' x' . $goods->num;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $data[] = [
|
|
|
+ $item->order_no,
|
|
|
+ $item->user->nickname ?? '',
|
|
|
+ $item->user->mobile ?? '',
|
|
|
+ implode(';', $goodsNames),
|
|
|
+ $item->total ?? 0,
|
|
|
+ $item->pay_total ?? 0,
|
|
|
+ $statusMap[$item->status] ?? '未知',
|
|
|
+ $refundStatusMap[$item->refund_status] ?? '无',
|
|
|
+ $item->receiver_name ?? '',
|
|
|
+ $item->receiver_mobile ?? '',
|
|
|
+ $item->receiver_address ?? '',
|
|
|
+ $item->create_time ? date('Y-m-d H:i:s', strtotime($item->create_time)) : '',
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ $headings = ['订单号', '用户昵称', '用户手机', '商品信息', '订单金额', '实付金额', '订单状态', '退款状态', '收货人', '收货电话', '收货地址', '下单时间'];
|
|
|
+
|
|
|
+ $export = new \App\Exports\Export($data, $headings, '订单列表');
|
|
|
+ $filename = '订单列表_' . date('YmdHis') . '.xlsx';
|
|
|
+
|
|
|
+ return \Maatwebsite\Excel\Facades\Excel::download($export, $filename);
|
|
|
+ }
|
|
|
}
|