SystemCity.php 5.0 KB

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