SystemCity.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace app\adminapi\controller\v1\setting;
  3. use app\adminapi\controller\AuthController;
  4. use think\Request;
  5. use think\facade\Route as Url;
  6. use crmeb\services\{CacheService, FormBuilder as Form, UtilService as Util};
  7. use app\models\system\SystemCity as CityModel;
  8. class SystemCity extends AuthController
  9. {
  10. /**
  11. * 城市列表
  12. * @return string
  13. * @throws \Exception
  14. */
  15. public function index()
  16. {
  17. $params = Util::getMore([
  18. [['parent_id','d'], 0]
  19. ], $this->request);
  20. return $this->success(CityModel::getList($params));
  21. }
  22. /**
  23. * 添加城市
  24. * @return string
  25. * @throws \think\db\exception\DataNotFoundException
  26. * @throws \think\db\exception\DbException
  27. * @throws \think\db\exception\ModelNotFoundException
  28. */
  29. public function add()
  30. {
  31. $data = Util::getMore([
  32. [['parent_id','d'], 0]
  33. ]);
  34. if ($data['parent_id'] != 0) {
  35. $info = CityModel::where('city_id', $data['parent_id'])->find()->toArray();
  36. } else {
  37. $info = [
  38. "level" => 0,
  39. "city_id" => 0,
  40. "name" => '中国'
  41. ];
  42. }
  43. $field[] = Form::hidden('level', $info['level']);
  44. $field[] = Form::hidden('parent_id', $info['city_id']);
  45. $field[] = Form::input('parent_name', '上级名称', $info['name'])->readonly(true);
  46. $field[] = Form::input('name', '名称')->required('请填写城市名称');
  47. // $field[] = Form::input('merger_name', '合并名称')->placeholder('格式:陕西,西安,雁塔')->required('请填写合并名称');
  48. // $field[] = Form::input('area_code', '区号');
  49. // $field[] = Form::input('lng', '经度');
  50. // $field[] = Form::input('lat', '纬度');
  51. return $this->makePostForm('添加城市', $field, Url::buildUrl('/setting/city/save')->suffix(false));
  52. }
  53. /**
  54. * 保存
  55. */
  56. public function save()
  57. {
  58. $data = Util::postMore([
  59. [['id','d'], 0],
  60. [['name','s'], ''],
  61. [['merger_name','s'], ''],
  62. [['area_code','s'], ''],
  63. [['lng','s'], ''],
  64. [['lat','s'], ''],
  65. [['level','d'], 0],
  66. [['parent_id','d'], 0],
  67. ]);
  68. $this->validate($data, \app\adminapi\validates\setting\SystemCityValidate::class, 'save');
  69. if($data['parent_id'] == 0){
  70. $data['merger_name'] = $data['name'];
  71. } else {
  72. $data['merger_name'] = CityModel::where('id',$data['parent_id'])->value('name').','.$data['name'];
  73. }
  74. if ($data['id'] == 0) {
  75. unset($data['id']);
  76. $data['level'] = $data['level'] + 1;
  77. $data['city_id'] = intval(CityModel::max('city_id') + 1);
  78. CityModel::create($data);
  79. return $this->success('添加城市成功!');
  80. } else {
  81. unset($data['level']);
  82. unset($data['parent_id']);
  83. CityModel::where('id', $data['id'])->update($data);
  84. return $this->success('修改城市成功!');
  85. }
  86. }
  87. /**
  88. * 修改城市
  89. * @return string
  90. * @throws \think\db\exception\DataNotFoundException
  91. * @throws \think\db\exception\DbException
  92. * @throws \think\db\exception\ModelNotFoundException
  93. */
  94. public function edit()
  95. {
  96. $data = Util::getMore([
  97. [['id','d'], 0]
  98. ]);
  99. $info = CityModel::get($data['id'])->toArray();
  100. $info['parent_name'] = CityModel::where('city_id', $info['parent_id'])->value('name') ?: '中国';
  101. $field[] = Form::hidden('id', $info['id']);
  102. $field[] = Form::hidden('level', $info['level']);
  103. $field[] = Form::hidden('parent_id', $info['parent_id']);
  104. $field[] = Form::input('parent_name', '上级名称', $info['parent_name'])->readonly(true);
  105. $field[] = Form::input('name', '名称', $info['name'])->required('请填写城市名称');
  106. $field[] = Form::input('merger_name', '合并名称', $info['merger_name'])->placeholder('格式:陕西,西安,雁塔')->required('请填写合并名称');
  107. // $field[] = Form::input('area_code', '区号', $info['area_code']);
  108. // $field[] = Form::input('lng', '经度', $info['lng']);
  109. // $field[] = Form::input('lat', '纬度', $info['lat']);
  110. return $this->makePostForm('修改城市', $field, Url::buildUrl('/setting/city/save')->suffix(false));
  111. }
  112. /**
  113. * 删除城市
  114. * @throws \Exception
  115. */
  116. public function delete()
  117. {
  118. $data = Util::getMore([
  119. [['city_id','d'], 0]
  120. ]);
  121. CityModel::where('city_id', $data['city_id'])->whereOr('parent_id', $data['city_id'])->delete();
  122. return $this->success('删除成功!');
  123. }
  124. /**
  125. * 清除城市缓存
  126. * @throws \Psr\SimpleCache\InvalidArgumentException
  127. */
  128. public function clean_cache()
  129. {
  130. $res = CacheService::delete('CITY_LIST');
  131. if ($res) {
  132. return $this->success('清除成功!');
  133. } else {
  134. return $this->fail('清除失败或缓存未生成!');
  135. }
  136. }
  137. }