diff --git a/beike/Shop/Http/Controllers/Account/AddressController.php b/beike/Shop/Http/Controllers/Account/AddressController.php index d74fc928..412bfd90 100644 --- a/beike/Shop/Http/Controllers/Account/AddressController.php +++ b/beike/Shop/Http/Controllers/Account/AddressController.php @@ -39,14 +39,14 @@ class AddressController extends Controller public function store(AddressRequest $request) { - $data = $request->only(['name', 'phone', 'country_id', 'zone_id', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']); + $data = $request->only(['name', 'phone', 'country_id', 'zone_id', 'city_id', 'city', 'zipcode', 'address_1', 'address_2', 'default']); $address = AddressService::create($data); return json_success('创建成功', new AddressResource($address)); } public function update(AddressRequest $request, int $id) { - $data = $request->only(['name', 'phone', 'country_id', 'zone_id', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']); + $data = $request->only(['name', 'phone', 'country_id', 'zone_id', 'city_id', 'city', 'zipcode', 'address_1', 'address_2', 'default']); $address = AddressService::update($id, $data); return json_success('更新成功', new AddressResource($address)); } diff --git a/beike/Shop/Http/Resources/Account/AddressResource.php b/beike/Shop/Http/Resources/Account/AddressResource.php index 711a3106..97854291 100644 --- a/beike/Shop/Http/Resources/Account/AddressResource.php +++ b/beike/Shop/Http/Resources/Account/AddressResource.php @@ -26,6 +26,7 @@ class AddressResource extends JsonResource 'zipcode' => $this->zipcode, 'address_1' => $this->address_1, 'address_2' => $this->address_2, + 'default' => (current_customer()->address_id == $this->id), ]; return $data; diff --git a/beike/Shop/Services/AddressService.php b/beike/Shop/Services/AddressService.php index 5efa44fc..ddd5b40b 100644 --- a/beike/Shop/Services/AddressService.php +++ b/beike/Shop/Services/AddressService.php @@ -20,19 +20,32 @@ class AddressService { public static function create($data) { - $data['customer_id'] = current_customer()->id; + $customer = current_customer(); + $data['customer_id'] = $customer->id; $data['zone'] = ZoneRepo::find($data['zone_id'])->name; $address = AddressRepo::create($data); + + if ($data['default']) { + $customer->address_id = $address->id; + $customer->save(); + } return $address; } public static function update($id, $data) { + $customer = current_customer(); $address = AddressRepo::find($id); - $data['zone'] = ZoneRepo::find($data['zone_id'])->name; - if ($address->customer_id != current_customer()->id) { - $address; + if ($address->customer_id != $customer->id) { + return null; } - return AddressRepo::update($address, $data); + $data['zone'] = ZoneRepo::find($data['zone_id'])->name; + $address = AddressRepo::update($address, $data); + if ($data['default'] && $customer->address_id != $address->id) { + $customer->address_id = $address->id; + $customer->save(); + } + + return $address; } } diff --git a/database/migrations/2022_06_23_075504_create_customer_table.php b/database/migrations/2022_06_23_075504_create_customer_table.php index 1b792d96..5c058aff 100644 --- a/database/migrations/2022_06_23_075504_create_customer_table.php +++ b/database/migrations/2022_06_23_075504_create_customer_table.php @@ -20,6 +20,7 @@ class CreateCustomerTable extends Migration $table->string('name'); $table->string('avatar')->default(''); $table->unsignedInteger('customer_group_id'); + $table->unsignedInteger('address_id'); $table->string('locale', 10); $table->tinyInteger('status')->default(0); $table->string('code', 40)->default('');