area_helper.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2017/3/23
  6. * Time: 下午12:09
  7. */
  8. require_once(BASE_ROOT_PATH . '/helper/area/area_upgrade.php');
  9. require_once(BASE_ROOT_PATH . '/helper/area/area_check.php');
  10. require_once(BASE_ROOT_PATH . '/helper/area/area_validator.php');
  11. class area_helper
  12. {
  13. static private $stInstance = null;
  14. private $mValidator;
  15. private function __construct()
  16. {
  17. $this->mValidator = new area\area_validator('area_origion');
  18. }
  19. static public function instance()
  20. {
  21. if (self::$stInstance == null) {
  22. self::$stInstance = new area_helper();
  23. }
  24. return self::$stInstance;
  25. }
  26. public function province($areaid)
  27. {
  28. return $this->mValidator->province($areaid);
  29. }
  30. //让'其它区' 排到最后
  31. public static function uplast_country()
  32. {
  33. $items = Db::getAll("SELECT max(area_id) as max_id FROM lrlz_area;");
  34. $maxid = $items[0]['max_id'];
  35. $mod_area = Model('area');
  36. $success_count = 0;
  37. $fail_count = 0;
  38. if($maxid > 0)
  39. {
  40. $items = $mod_area->where(array('area_name' => array('like',"%其它区%")))->field('area_id')->limit(false)->select();
  41. foreach ($items as $item)
  42. {
  43. $maxid += 1;
  44. $area_id = $item['area_id'];
  45. $ret = $mod_area->where(array('area_id' => $area_id))->update(array('area_id' => $maxid));
  46. if($ret == false) {
  47. $fail_count++;
  48. } else {
  49. $success_count++;
  50. }
  51. }
  52. }
  53. Log::record("area_helper uplast_country total update success {$success_count},fail {$fail_count}");
  54. return true;
  55. }
  56. public static function fix_areaid()
  57. {
  58. $validator = new area\area_validator('area_origion');
  59. $mod_addr = Model('address');
  60. $addres = $mod_addr->where(array('handled' => 0))->field('address_id,area_id,city_id,area_info')->order('address_id asc')->limit(false)->select();
  61. foreach ($addres as $addr)
  62. {
  63. $address_id = $addr['address_id'];
  64. $area_info = trim($addr['area_info']);
  65. $area_info = str_replace(array(" "),array("\t"),$area_info);
  66. $areas = explode("\t",$area_info);
  67. $count = count($areas);
  68. if($count == 3)
  69. {
  70. $result_name = $validator->from_name($areas[0],$areas[1],$areas[2]);
  71. if($result_name != false)
  72. {
  73. $city_id = $result_name['city']['area_id'];
  74. $country_id = $result_name['country']['area_id'];
  75. $narea_info = "{$result_name['province']['area_name']}\t{$result_name['city']['area_name']}\t{$result_name['country']['area_name']}";
  76. $ret = $mod_addr->where(array('address_id' => $address_id))->update(array('city_id' => $city_id,
  77. 'area_id' => $country_id,
  78. 'handled' => 10,
  79. 'area_info' => $narea_info));
  80. Log::record("fix_areaid address_id = {$address_id} handled",Log::DEBUG);
  81. }
  82. }
  83. elseif($count == 2) {
  84. Log::record("address_id = {$address_id} 信息不全",Log::ERR);
  85. }
  86. else {
  87. Log::record("address_id = {$address_id} 信息不全",Log::ERR);
  88. }
  89. }
  90. }
  91. public static function fix_areainfo()
  92. {
  93. $validator = new area\area_validator('area');
  94. $mod_addr = Model('address');
  95. $addres = $mod_addr->where(array('handled' => 10))->field('address_id,area_id,city_id,area_info')->order('address_id asc')->limit(false)->select();
  96. foreach ($addres as $addr)
  97. {
  98. $address_id = $addr['address_id'];
  99. $area_id = $addr['area_id'];
  100. $area = $validator->country($area_id);
  101. $area_info = "{$area['province']['area_name']}\t{$area['city']['area_name']}\t{$area['country']['area_name']}";
  102. $mod_addr->where(array('address_id' => $address_id))->update(array('handled' => 11,'area_info' => $area_info));
  103. Log::record("fix_areainfo address_id = {$address_id} handled",Log::DEBUG);
  104. }
  105. }
  106. }