DeliveryRule.php 1.6 KB

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