You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
4.2 KiB
137 lines
4.2 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use App\Logic\AddressLogic;
|
|
use App\Models\ShopAddress;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class ShopAddressController extends ApiController
|
|
{
|
|
|
|
// 收货地址列表
|
|
public function addressList(Request $request)
|
|
{
|
|
if (empty(\Auth::user()->id)) {
|
|
$user_id = 0;
|
|
} else {
|
|
$user_id = \Auth::user()->id;
|
|
}
|
|
$list = AddressLogic::getAddrList(['uid' => $user_id]);
|
|
return $this->success($list);
|
|
}
|
|
|
|
// 收货地址详情
|
|
public function addressDetail(Request $request)
|
|
{
|
|
// 参数校验
|
|
$validator = Validator::make($request->all(),
|
|
[
|
|
'id' => 'required',
|
|
],
|
|
[
|
|
'id.required' => 'id参数缺失',
|
|
]
|
|
);
|
|
if ($validator->fails()) {
|
|
return $this->failed($validator->errors(), 403);
|
|
}
|
|
$info = AddressLogic::getOneAddr($request->id);
|
|
return $this->success($info);
|
|
}
|
|
|
|
// 保存收货地址
|
|
public function addressSave(Request $request)
|
|
{
|
|
if (empty(\Auth::user()->id)) {
|
|
$user_id = 0;
|
|
} else {
|
|
$user_id = \Auth::user()->id;
|
|
}
|
|
// 参数校验
|
|
$validator = Validator::make($request->all(),
|
|
[
|
|
'id' => 'required',
|
|
'name' => 'required',
|
|
'mobile' => 'required',
|
|
'province_id' => 'required',
|
|
'city_id' => 'required',
|
|
'district_id' => 'required',
|
|
'address' => 'required',
|
|
'is_default' => 'required',
|
|
],
|
|
[
|
|
'id.required' => 'id参数缺失',
|
|
'name.required' => '收货人参数缺失',
|
|
'mobile.required' => '收货人手机号参数缺失',
|
|
'province_id.required' => 'province_id参数缺失',
|
|
'city_id.required' => 'city_id参数缺失',
|
|
'district_id.required' => 'district_id参数缺失',
|
|
'address.required' => '详细地址参数缺失',
|
|
'is_default.required' => 'is_default参数缺失',
|
|
]
|
|
);
|
|
if ($validator->fails()) {
|
|
return $this->failed($validator->errors(), 403);
|
|
}
|
|
if ($request->id && $request->id > 0) {
|
|
$model = ShopAddress::find($request->id);
|
|
} else {
|
|
$model = new ShopAddress();
|
|
}
|
|
$model->user_name = $request->name;
|
|
$model->mobile = $request->mobile;
|
|
$model->uid = $user_id;
|
|
$model->country_id = 1;
|
|
$model->country = '中国';
|
|
$model->province_id = $request->province_id;
|
|
$model->province = $request->province;
|
|
$model->city_id = $request->city_id;
|
|
$model->city = $request->city;
|
|
$model->district_id = $request->district_id;
|
|
$model->district = $request->district;
|
|
$model->address = $request->address;
|
|
$model->is_default = intval($request->is_default);
|
|
$model->status = ShopAddress::STATUS_ON;
|
|
// 开启事务
|
|
DB::beginTransaction();
|
|
try {
|
|
DB::table('shop_address')
|
|
->where('is_default', ShopAddress::DEFAULT_ON)
|
|
->update(['is_default' => ShopAddress::DEFAULT_OFF]);
|
|
$re = $model->save();
|
|
DB::commit();
|
|
return $this->message('操作成功');
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
return $this->failed('报错失败', 403);
|
|
}
|
|
|
|
}
|
|
|
|
// 删除收货地址
|
|
public function addressDelete(Request $request)
|
|
{
|
|
// 参数校验
|
|
$validator = Validator::make($request->all(),
|
|
[
|
|
'id' => 'required',
|
|
],
|
|
[
|
|
'id.required' => 'id参数缺失',
|
|
]
|
|
);
|
|
if ($validator->fails()) {
|
|
return $this->failed($validator->errors(), 403);
|
|
}
|
|
$model = ShopAddress::find($request->id);
|
|
$re = $model->delete();
|
|
if ($re) {
|
|
return $this->message('操作成功');
|
|
}
|
|
}
|
|
|
|
|
|
} |