DeliveryRule.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /**
  3. *
  4. * @copyright ©2020 点小铺
  5. * @author hanj
  6. * @link: https://dyuit.com
  7. * Created by VSCode
  8. */
  9. namespace app\store\model;
  10. use app\common\model\DeliveryRule as DeliveryRuleModel;
  11. /**
  12. * 配送模板区域及运费模型
  13. * Class DeliveryRule
  14. * @package app\store\model
  15. */
  16. class DeliveryRule extends DeliveryRuleModel
  17. {
  18. protected $append = ['region_content'];
  19. static $regionAll;
  20. static $regionTree;
  21. /**
  22. * 可配送区域
  23. * @param $value
  24. * @param $data
  25. * @return string
  26. */
  27. public function getRegionContentAttr($value, $data)
  28. {
  29. // 当前区域记录转换为数组
  30. $regionIds = explode(',', $data['region']);
  31. if (count($regionIds) === 373) return '全国';
  32. // 所有地区
  33. if (empty(self::$regionAll)) {
  34. self::$regionAll = Region::getCacheAll();
  35. self::$regionTree = Region::getCacheTree();
  36. }
  37. // 将当前可配送区域格式化为树状结构
  38. $alreadyTree = [];
  39. foreach ($regionIds as $regionId)
  40. $alreadyTree[self::$regionAll[$regionId]['pid']][] = $regionId;
  41. $str = '';
  42. foreach ($alreadyTree as $provinceId => $citys) {
  43. $str .= self::$regionTree[$provinceId]['name'];
  44. if (count($citys) !== count(self::$regionTree[$provinceId]['city'])) {
  45. $cityStr = '';
  46. foreach ($citys as $cityId)
  47. $cityStr .= self::$regionTree[$provinceId]['city'][$cityId]['name'];
  48. $str .= ' (<span class="am-link-muted">' . mb_substr($cityStr, 0, -1, 'utf-8') . '</span>)';
  49. }
  50. $str .= '、';
  51. }
  52. return mb_substr($str, 0, -1, 'utf-8');
  53. }
  54. }