AddressUpdateController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2020/7/27
  6. * Time: 15:24
  7. */
  8. namespace app\backend\modules\order\controllers;
  9. use app\common\components\BaseController;
  10. use app\common\events\order\AfterOrderAddressChangeEvent;
  11. use app\common\exceptions\AppException;
  12. use app\common\exceptions\ShopException;
  13. use app\common\models\Address;
  14. use app\common\models\order\Address as OrderAddress;
  15. use app\common\models\order\AddressUpdateLog;
  16. use app\common\models\Street;
  17. use Illuminate\Support\Facades\DB;
  18. class AddressUpdateController extends BaseController
  19. {
  20. public function index()
  21. {
  22. $order_id = intval(request()->input('order_id'));
  23. $list = AddressUpdateLog::uniacid()->where('order_id', $order_id)->get();
  24. return $this->successJson('list', $list);
  25. }
  26. public function update()
  27. {
  28. $data = request()->input('data');
  29. $orderAddress = OrderAddress::where('order_id', $data['order_id'])->first();
  30. $old_address = $orderAddress->address;
  31. $new_address = $this->getAddressName($data);
  32. $createData = [
  33. 'uniacid' => \YunShop::app()->uniacid,
  34. 'user_id' => intval(\YunShop::app()->uid),
  35. 'order_id' => $data['order_id'],
  36. 'province_id' => $data['province_id'],
  37. 'city_id' => $data['city_id'],
  38. 'district_id' => $data['district_id'],
  39. 'street_id' => intval($data['street_id']),
  40. 'realname' => $data['realname'],
  41. 'phone' => $data['phone'],
  42. 'old_phone' => $orderAddress->mobile,
  43. 'old_name' => $orderAddress->realname,
  44. 'old_address' => $old_address,
  45. 'new_address' => $new_address,
  46. ];
  47. try {
  48. DB::beginTransaction();
  49. $updateData = [
  50. 'realname' => $data['realname'],
  51. 'mobile' => $data['phone'],
  52. 'address' => $new_address,
  53. ];
  54. $orderAddress->fill($updateData);
  55. if (!$orderAddress->save()) {
  56. throw new AppException('修改订单地址失败');
  57. }
  58. //保存修改记录
  59. $addressUpdate = new AddressUpdateLog();
  60. $addressUpdate->fill($createData);
  61. $addressUpdate->save();
  62. event(new AfterOrderAddressChangeEvent($addressUpdate));
  63. DB::commit();
  64. return $this->successJson('修改成功');
  65. }catch (AppException $e){
  66. DB::rollBack();
  67. return $this->errorJson($e->getMessage());
  68. }
  69. }
  70. public function getAddressName($data)
  71. {
  72. $address['province_name'] = Address::where('id',$data['province_id'])->value('areaname');
  73. $address['city_name'] = Address::where('id',$data['city_id'])->value('areaname');
  74. $address['district_name'] = Address::where('id',$data['district_id'])->value('areaname');
  75. if ($data['street_id']) {
  76. $address['street_name'] = Street::where('id', $data['street_id'])->value('areaname');
  77. }
  78. $address['address'] = $data['address'];
  79. return implode(' ', $address);
  80. }
  81. }