CustomClass.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace bizMall\custom\classes;
  3. use bizMall\base\classes\BaseClass;
  4. /**
  5. * 商城侧客户(xhCustom)业务类
  6. * 用途:按 userId 维护多门店客户档案;默认收货地址回写等共用能力放这里。
  7. */
  8. class CustomClass extends BaseClass
  9. {
  10. public static $baseFile = '\bizMall\custom\models\Custom';
  11. /**
  12. * 将商城默认收货地址同步到同一 userId 下全部 xhCustom
  13. * 解决:用户在地址簿设默认后,各门店客户档案仍是旧地址,开单取不到最新收货信息。
  14. *
  15. * @param int $userId 用户 id(xhUser.id / xhCustom.userId)
  16. * @param array|object $address 地址数据;phone 映射为 custom.mobile
  17. * @return int 受影响行数(updateByCondition 返回值)
  18. */
  19. public static function syncFromUserDefaultAddress($userId, $address)
  20. {
  21. $userId = (int)$userId;
  22. if ($userId <= 0 || empty($address)) {
  23. return 0;
  24. }
  25. // 兼容 AR 模型与数组入参
  26. $get = function ($key, $default = '') use ($address) {
  27. if (is_array($address)) {
  28. return $address[$key] ?? $default;
  29. }
  30. return isset($address->$key) ? $address->$key : $default;
  31. };
  32. $province = (string)$get('province', '');
  33. $city = (string)$get('city', '');
  34. $dist = (string)$get('dist', '');
  35. $addr = (string)$get('address', '');
  36. $floor = (string)$get('floor', '');
  37. $fullAddress = (string)$get('fullAddress', '');
  38. // 缺完整地址时按省市区+街道+门牌拼接,保证 xhCustom.fullAddress 可用
  39. if ($fullAddress === '') {
  40. $fullAddress = $province . $city . $dist . $addr . $floor;
  41. }
  42. $data = [
  43. 'name' => (string)$get('name', ''),
  44. 'mobile' => (string)$get('phone', $get('mobile', '')),
  45. 'province' => $province,
  46. 'city' => $city,
  47. 'dist' => $dist,
  48. 'address' => $addr,
  49. 'floor' => $floor,
  50. 'fullAddress' => $fullAddress,
  51. 'showAddress' => (string)$get('showAddress', ''),
  52. 'lat' => (string)$get('lat', ''),
  53. 'long' => (string)$get('long', ''),
  54. ];
  55. return self::updateByCondition(['userId' => $userId], $data);
  56. }
  57. }