CloudStockAgentOrderService.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace addons\CloudStock\api\services;
  3. use addons\CloudStock\common\models\CloudStockAgentOrder;
  4. use common\enums\StatusEnum;
  5. use RuntimeException;
  6. class CloudStockAgentOrderService extends \addons\CloudStock\common\services\CloudStockAgentOrderService
  7. {
  8. /**
  9. * 修改收货地址
  10. *
  11. * @param array $params
  12. * @param bool $isCheckOnlyOnce
  13. * @param callable|null $callback
  14. *
  15. * @return bool
  16. */
  17. public function modifyAddress(array $params, bool $isCheckOnlyOnce = true, callable $callback = null): bool
  18. {
  19. $callback = function (CloudStockAgentOrder $order, array &$params) use ($callback) {
  20. if ($order['user_id'] != $this->user_id) {
  21. throw new RuntimeException('订单不存在');
  22. }
  23. // 验证新地址的运费
  24. $address = $this->checkNewAddressFreight($order, $params['address_id']);
  25. $params = array_merge($params, $address);
  26. if ($callback !== null) {
  27. $callback($order, $params);
  28. }
  29. };
  30. return parent::modifyAddress($params, $isCheckOnlyOnce, $callback);
  31. }
  32. /**
  33. * 获取订单订单明细
  34. *
  35. * @param int $id
  36. *
  37. * @return array
  38. */
  39. public function getOrderDetail(int $id): array
  40. {
  41. return CloudStockAgentOrder::find()
  42. ->where([
  43. 'mall_id' => $this->mall_id,
  44. 'id' => $id,
  45. 'status' => StatusEnum::ENABLED,
  46. 'user_id' => $this->user_id
  47. ])
  48. ->asArray()
  49. ->select('id, address, mobile, name')
  50. ->one() ?: [];
  51. }
  52. }