kphcdr 1 year ago
parent
commit
d4889023fe
2 changed files with 61 additions and 0 deletions
  1. 45 0
      app/Exports/UserOrderExport.php
  2. 16 0
      app/Modules/Mini/Controllers/OrderController.php

+ 45 - 0
app/Exports/UserOrderExport.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Exports;
+
+use App\Base\Utils;
+use App\Models\Order\Order;
+use App\Models\Order\OrderGoods;
+use App\Models\User\User;
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\Arr;
+use Maatwebsite\Excel\Concerns\FromCollection;
+
+class UserOrderExport implements FromCollection
+{
+    public $params;
+
+    /**
+     * @param $params
+     */
+    public function __construct($params)
+    {
+        $this->params = $params;
+    }
+
+    public function collection()
+    {
+        $data = Order::where("user_id", $this->params['user_id'])->orderByDesc("id")->get()->map(function (Order $model) {
+            $goodsInfo = "";
+            foreach ($model->goods as $g) {
+                $goodsInfo .= sprintf("%s %s x %s (%s) \n", $g->goods->name, $g->sn, $g->count, implode("-", Arr::pluck($g->custom ?? [], "value")));
+            }
+            return [
+                "id" => $model->id,
+                "goods" => $goodsInfo,
+                "user_id" => Utils::idNo4($model->user_id),
+                "name" => $model->user->name,
+                "phone" => $model->user->phone,
+                "email" => $model->user->email,
+                "created_at" => $model->created_at->format("Y-m-d H:i:s"),
+            ];
+        });
+        $data->prepend(["编号", "商品信息", "用户ID", "用户昵称", "用户手机", "用户邮箱", "询价时间"]);
+        return $data;
+    }
+}

+ 16 - 0
app/Modules/Mini/Controllers/OrderController.php

@@ -3,8 +3,11 @@
 namespace App\Modules\Mini\Controllers;
 
 use App\Base\BaseController;
+use App\Exports\AdminOrderExport;
+use App\Exports\UserOrderExport;
 use App\Modules\Mini\Services\OrderService;
 use Illuminate\Support\Facades\Auth;
+use Maatwebsite\Excel\Facades\Excel;
 
 class OrderController extends BaseController
 {
@@ -16,4 +19,17 @@ class OrderController extends BaseController
         $paginate = app(OrderService::class)->paginate(Auth::id(), $params);
         return $this->ok($paginate);
     }
+
+    public function export()
+    {
+
+        $name = sprintf('用户订单导出%s.xls', date("YmdHis"));
+        Excel::store(new UserOrderExport([
+            "user_id" => Auth::id(),
+        ]), $name, "public");
+
+        return $this->ok([
+            "url" => config("app.url") . "/storage/" . $name,
+        ]);
+    }
 }