bztang-admin/app/backend/modules/order/controllers/AddressUpdateController.php

102 lines
3.1 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2020/7/27
* Time: 15:24
*/
namespace app\backend\modules\order\controllers;
use app\common\components\BaseController;
use app\common\events\order\AfterOrderAddressChangeEvent;
use app\common\exceptions\AppException;
use app\common\exceptions\ShopException;
use app\common\models\Address;
use app\common\models\order\Address as OrderAddress;
use app\common\models\order\AddressUpdateLog;
use app\common\models\Street;
use Illuminate\Support\Facades\DB;
class AddressUpdateController extends BaseController
{
public function index()
{
$order_id = intval(request()->input('order_id'));
$list = AddressUpdateLog::uniacid()->where('order_id', $order_id)->get();
return $this->successJson('list', $list);
}
public function update()
{
$data = request()->input('data');
$orderAddress = OrderAddress::where('order_id', $data['order_id'])->first();
$old_address = $orderAddress->address;
$new_address = $this->getAddressName($data);
$createData = [
'uniacid' => \YunShop::app()->uniacid,
'user_id' => intval(\YunShop::app()->uid),
'order_id' => $data['order_id'],
'province_id' => $data['province_id'],
'city_id' => $data['city_id'],
'district_id' => $data['district_id'],
'street_id' => intval($data['street_id']),
'realname' => $data['realname'],
'phone' => $data['phone'],
'old_phone' => $orderAddress->mobile,
'old_name' => $orderAddress->realname,
'old_address' => $old_address,
'new_address' => $new_address,
];
try {
DB::beginTransaction();
$updateData = [
'realname' => $data['realname'],
'mobile' => $data['phone'],
'address' => $new_address,
];
$orderAddress->fill($updateData);
if (!$orderAddress->save()) {
throw new AppException('修改订单地址失败');
}
//保存修改记录
$addressUpdate = new AddressUpdateLog();
$addressUpdate->fill($createData);
$addressUpdate->save();
event(new AfterOrderAddressChangeEvent($addressUpdate));
DB::commit();
return $this->successJson('修改成功');
}catch (AppException $e){
DB::rollBack();
return $this->errorJson($e->getMessage());
}
}
public function getAddressName($data)
{
$address['province_name'] = Address::where('id',$data['province_id'])->value('areaname');
$address['city_name'] = Address::where('id',$data['city_id'])->value('areaname');
$address['district_name'] = Address::where('id',$data['district_id'])->value('areaname');
if ($data['street_id']) {
$address['street_name'] = Street::where('id', $data['street_id'])->value('areaname');
}
$address['address'] = $data['address'];
return implode(' ', $address);
}
}