地址管理
This commit is contained in:
parent
6640ec2728
commit
0f8ae94e22
|
|
@ -15,6 +15,7 @@ use Beike\Models\Category;
|
||||||
use Beike\Models\CategoryPath;
|
use Beike\Models\CategoryPath;
|
||||||
use Beike\Repositories\AddressRepo;
|
use Beike\Repositories\AddressRepo;
|
||||||
use Beike\Repositories\CustomerRepo;
|
use Beike\Repositories\CustomerRepo;
|
||||||
|
use Beike\Repositories\ZoneRepo;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class AddressService
|
class AddressService
|
||||||
|
|
@ -45,7 +46,7 @@ class AddressService
|
||||||
'phone' => $data['phone'] ?? '',
|
'phone' => $data['phone'] ?? '',
|
||||||
'country_id' => (int)$data['country_id'] ?? 0,
|
'country_id' => (int)$data['country_id'] ?? 0,
|
||||||
'zone_id' => (int)$data['zone_id'] ?? 0,
|
'zone_id' => (int)$data['zone_id'] ?? 0,
|
||||||
'zone' => $data['zone'] ?? '',
|
'zone' => ZoneRepo::find($data['zone_id'])->name,
|
||||||
'city_id' => (int)$data['city_id'] ?? 0,
|
'city_id' => (int)$data['city_id'] ?? 0,
|
||||||
'city' => $data['city'] ?? '',
|
'city' => $data['city'] ?? '',
|
||||||
'zipcode' => $data['zipcode'] ?? '',
|
'zipcode' => $data['zipcode'] ?? '',
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ class ZoneRepo
|
||||||
*/
|
*/
|
||||||
public static function find($id)
|
public static function find($id)
|
||||||
{
|
{
|
||||||
return Zone::query()->find($id);
|
return Zone::query()->findOrFail($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,10 @@
|
||||||
namespace Beike\Shop\Http\Controllers\Account;
|
namespace Beike\Shop\Http\Controllers\Account;
|
||||||
|
|
||||||
use Beike\Shop\Http\Controllers\Controller;
|
use Beike\Shop\Http\Controllers\Controller;
|
||||||
use Beike\Shop\Http\Resources\CustomerResource;
|
use Beike\Shop\Http\Requests\AddressRequest;
|
||||||
|
use Beike\Shop\Http\Resources\Account\AddressResource;
|
||||||
use Beike\Repositories\AddressRepo;
|
use Beike\Repositories\AddressRepo;
|
||||||
use Beike\Repositories\CustomerRepo;
|
use Beike\Shop\Services\AddressService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class AddressController extends Controller
|
class AddressController extends Controller
|
||||||
|
|
@ -23,28 +24,36 @@ class AddressController extends Controller
|
||||||
{
|
{
|
||||||
$addresses = AddressRepo::listByCustomer(current_customer());
|
$addresses = AddressRepo::listByCustomer(current_customer());
|
||||||
$data = [
|
$data = [
|
||||||
'addresses' => CustomerResource::collection($addresses),
|
'addresses' => AddressResource::collection($addresses),
|
||||||
];
|
];
|
||||||
|
|
||||||
return view('account/address', $data);
|
return view('account/address', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function show(Request $request, $id)
|
||||||
{
|
{
|
||||||
$data = $request->only(['name', 'phone', 'country_id', 'state_id', 'state', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']);
|
$address = AddressRepo::find($id);
|
||||||
$data['customer_id'] = current_customer()->customer_id;
|
|
||||||
return AddressRepo::create($data);
|
return json_success('获取成功', new AddressResource($address));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, int $addressId)
|
public function store(AddressRequest $request)
|
||||||
{
|
{
|
||||||
return AddressRepo::update($addressId, $request->only(['name', 'phone', 'country_id', 'state_id', 'state', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']));
|
$data = $request->only(['name', 'phone', 'country_id', 'zone_id', 'zone', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']);
|
||||||
|
$address = AddressService::create($data);
|
||||||
|
return json_success('创建成功', new AddressResource($address));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(Request $request, int $addressId)
|
public function update(AddressRequest $request, int $id)
|
||||||
{
|
{
|
||||||
AddressRepo::delete($addressId);
|
$address = AddressRepo::update($id, $request->only(['name', 'phone', 'country_id', 'zone_id', 'zone', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']));
|
||||||
|
return json_success('更新成功', new AddressResource($address));
|
||||||
|
}
|
||||||
|
|
||||||
return ['success' => true];
|
public function destroy(Request $request, int $id)
|
||||||
|
{
|
||||||
|
AddressRepo::delete($id);
|
||||||
|
|
||||||
|
return json_success('删除成功');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Beike\Shop\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class AddressRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function authorize()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => 'required',
|
||||||
|
'phone' => 'required',
|
||||||
|
'country_id' => 'required|exists:countries,id',
|
||||||
|
'zone_id' => 'required|exists:zones,id',
|
||||||
|
'address_1' => 'required',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function attributes()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => '姓名',
|
||||||
|
'phone' => '电话号码',
|
||||||
|
'country_id' => '国家ID',
|
||||||
|
'zone_id' => '省份ID',
|
||||||
|
'address_1' => '地址1',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Beike\Shop\Http\Resources\Account;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class AddressResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
$data = [
|
||||||
|
'name' => $this->name,
|
||||||
|
'phone' => $this->phone,
|
||||||
|
'country_id' => $this->country_id,
|
||||||
|
'country' => $this->country->name,
|
||||||
|
'zone_id' => $this->zone_id,
|
||||||
|
'zone' => $this->zone,
|
||||||
|
'city' => $this->city,
|
||||||
|
'zipcode' => $this->zipcode,
|
||||||
|
'address_1' => $this->address_1,
|
||||||
|
'address_2' => $this->address_2,
|
||||||
|
];
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -43,11 +43,12 @@ Route::prefix('/')
|
||||||
Route::post('register', [RegisterController::class, 'store'])->name('register.store');
|
Route::post('register', [RegisterController::class, 'store'])->name('register.store');
|
||||||
Route::get('logout', [LogoutController::class, 'index'])->name('logout');
|
Route::get('logout', [LogoutController::class, 'index'])->name('logout');
|
||||||
|
|
||||||
Route::middleware('shop_auth:' . Customer::AUTH_GUARD)
|
Route::prefix('account/')
|
||||||
|
->middleware('shop_auth:' . Customer::AUTH_GUARD)
|
||||||
->group(function () {
|
->group(function () {
|
||||||
Route::get('account', [AccountController::class, 'index'])->name('account.index');
|
Route::get('/', [AccountController::class, 'index'])->name('account.index');
|
||||||
|
|
||||||
Route::resource('account/addresses', AddressController::class);
|
Route::resource('addresses', AddressController::class);
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('/{url_key}', [PagesController::class, 'show'])->name('pages.show');
|
Route::get('/{url_key}', [PagesController::class, 'show'])->name('pages.show');
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* AddressService.php
|
||||||
|
*
|
||||||
|
* @copyright 2022 opencart.cn - All Rights Reserved
|
||||||
|
* @link http://www.guangdawangluo.com
|
||||||
|
* @author Sam Chen <sam.chen@opencart.cn>
|
||||||
|
* @created 2022-07-04 18:52:57
|
||||||
|
* @modified 2022-07-04 18:52:57
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Beike\Shop\Services;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use Beike\Repositories\AddressRepo;
|
||||||
|
|
||||||
|
class AddressService
|
||||||
|
{
|
||||||
|
public static function create($data)
|
||||||
|
{
|
||||||
|
$data['customer_id'] = current_customer()->customer_id;
|
||||||
|
$address = AddressRepo::create($data);
|
||||||
|
return $address;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function update($id, $data)
|
||||||
|
{
|
||||||
|
$address = AddressRepo::update($id, $data);
|
||||||
|
|
||||||
|
return $address;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue