kphcdr 1 rok pred
rodič
commit
577c018477

+ 6 - 0
app/Models/User/UserAddress.php

@@ -23,6 +23,12 @@ use App\Base\BaseModel;
  * @method static \Illuminate\Database\Eloquent\Builder|UserAddress whereName($value)
  * @method static \Illuminate\Database\Eloquent\Builder|UserAddress wherePhone($value)
  * @mixin \Eloquent
+ * @property int    $user_id
+ * @method static \Illuminate\Database\Eloquent\Builder|UserAddress whereUserId($value)
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|UserAddress whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserAddress whereUpdatedAt($value)
  */
 class UserAddress extends BaseModel
 {

+ 22 - 15
app/Modules/Mini/Controllers/UserController.php

@@ -3,6 +3,8 @@
 namespace App\Modules\Mini\Controllers;
 
 use App\Base\BaseController;
+use App\Models\User\UserFav;
+use App\Modules\Mini\Services\AddressService;
 use App\Modules\Mini\Services\CompanyService;
 use App\Modules\Mini\Services\FavService;
 use Faker\Provider\Image;
@@ -30,25 +32,22 @@ class UserController extends BaseController
 
     public function favDel()
     {
-        return $this->ok();
+        $params = $this->valid([
+            "ids" => "array|required",
+        ]);
+
+        return $this->ok([
+            "row" => UserFav::whereIn("id", $params['ids'])->where("user_id", Auth::id())->delete(),
+        ]);
     }
 
     public function address()
     {
-        return $this->ok([
-            "total" => 1,
-            "page_total" => 1,
-            "list" => [
-                [
-                    "id" => 1,
-                    "is_default" => 1,
-                    "name" => "收件人姓名",
-                    "address" => "余杭良睦路地铁鼎创中心**位置",
-                    "phone" => "15012341234",
-                    "location" => "浙江省杭州市余杭区",
-                ],
-            ],
+        $params = $this->valid([
+            "page_size" => "",
         ]);
+
+        return $this->ok(app(AddressService::class)->paginate(Auth::user(), $params));
     }
 
     public function addressDel()
@@ -58,6 +57,14 @@ class UserController extends BaseController
 
     public function addressStore()
     {
-        return $this->ok();
+        $params = $this->valid([
+            "id" => "int",
+            "is_default" => "int",
+            "name" => "required",
+            "address" => "required",
+            'phone' => "required",
+            "area" => "required",
+        ]);
+        return $this->ok(app(AddressService::class)->store(Auth::user(), $params));
     }
 }

+ 50 - 0
app/Modules/Mini/Services/AddressService.php

@@ -0,0 +1,50 @@
+<?php
+
+namespace App\Modules\Mini\Services;
+
+use App\Base\BaseService;
+use App\Models\User\User;
+use App\Models\User\UserAddress;
+
+class AddressService extends BaseService
+{
+    public function store(User $user, $params)
+    {
+        $id = $params['id'];
+        if ($id) {
+            $address = UserAddress::where("id", $id)->where("user_id", $user->id)->firstOrFail();
+        } else {
+            $address = new UserAddress();
+            $address->user_id = $user->id;
+        }
+
+        $address->address = $params['address'];
+        $address->name = $params['name'];
+        $address->phone = $params['phone'];
+        if (UserAddress::where("user_id", $user->id)->count() == 0) {
+            $address->is_default = 1;
+        }
+        $address->area = $params['area'];
+        $address->save();
+    }
+
+    public function paginate(User $user, $params)
+    {
+        $p = UserAddress::where("user_id", $user->id)->orderByDesc("id")->paginate($params['page_size']);
+
+        return [
+            "total" => $p->total(),
+            "page_total" => $p->lastPage(),
+            "list" => array_map(function (UserAddress $model) {
+                return [
+                    "id" => $model->id,
+                    "is_default" => $model->is_default,
+                    "name" => $model->name,
+                    "phone" => $model->phone,
+                    "area" => $model->area,
+                    "address" => $model->address,
+                ];
+            }, $p->items()),
+        ];
+    }
+}

+ 3 - 0
database/migrations/2023_05_10_073046_create_usersomething_table.php

@@ -22,11 +22,14 @@ return new class extends Migration {
 
         Schema::create('user_address', function (Blueprint $table) {
             $table->id();
+            $table->unsignedInteger("user_id")->default(0);
             $table->string("name")->default('');
             $table->string("phone")->default('');
             $table->string("area")->default('');
             $table->string("address")->default("");
             $table->tinyInteger("is_default")->default(0);
+            $table->timestamps();
+
         });
     }