AreaController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace app\admin\controller;
  3. use think\exception\ValidateException;
  4. use Overtrue\Pinyin\Pinyin;
  5. use app\model\Area;
  6. class AreaController extends Base
  7. {
  8. function index()
  9. {
  10. $keyword = input('post.keyword', '', 'serach_in');
  11. $parent_id = input('post.parent_id', '', 'serach_in');
  12. if (empty($parent_id)) {
  13. $parent_id = 0;
  14. }
  15. $query = Area::where('area_parent_id', $parent_id);
  16. if (!empty($keyword)) {
  17. $query->where('area_name|keyword', 'like', '%' . $keyword . '%');
  18. }
  19. $pages = getpage();
  20. $pages['list_rows'] = 50;
  21. $res = $query->order('area_sort asc,id asc')
  22. ->paginate($pages)
  23. ->toArray();
  24. $data['data'] = $res;
  25. return $this->json($data);
  26. }
  27. function listUpdate()
  28. {
  29. $data = only('id,area_sort');
  30. if (!$data['id']) throw new ValidateException('参数错误');
  31. Area::update($data);
  32. return $this->json(['msg' => '操作成功']);
  33. }
  34. public function update()
  35. {
  36. $id = $this->request->post('id');
  37. $data = input('post.');
  38. $data['area_parent_id'] = (int)$data['area_parent_id'];
  39. $pinyin = new Pinyin();
  40. $data['letter'] = strtoupper($pinyin->permalink($data['area_name'], '')[0]);
  41. $data['keyword'] = $data['area_name'] . strtoupper($pinyin->permalink($data['area_name'], ''));
  42. if (empty($id)) {
  43. try {
  44. $res = Area::create($data);
  45. if ($res->id && empty($data['area_sort'])) {
  46. Area::update(['area_sort' => $res->id, 'id' => $res->id]);
  47. }
  48. } catch (\Exception $e) {
  49. throw new ValidateException($e->getMessage());
  50. }
  51. return $this->json(['msg' => '添加成功', 'data' => $res->id]);
  52. } else {
  53. try {
  54. Area::update($data);
  55. } catch (\Exception $e) {
  56. throw new ValidateException($e->getMessage());
  57. }
  58. return $this->json(['msg' => '修改成功']);
  59. }
  60. }
  61. function getInfo()
  62. {
  63. $id = $this->request->post('id', '', 'serach_in');
  64. if (!$id) throw new ValidateException('参数错误');
  65. $res = Area::find($id);
  66. if ($res) {
  67. $res = $res->toArray();
  68. }
  69. return $this->json(['data' => $res]);
  70. }
  71. function delete()
  72. {
  73. return $this->del(new Area());
  74. }
  75. function getField()
  76. {
  77. $data['pids'] = _generateSelectTree(Area::getpcTree());
  78. return $this->json(['data' => $data]);
  79. }
  80. function getpcTree()
  81. {
  82. $data['data'] = Area::getpcTree();
  83. return $this->json($data);
  84. }
  85. public function geteltree()
  86. {
  87. $data = $this->eltree(0);
  88. return $this->json(['data' => $data]);
  89. }
  90. private function eltree($pid)
  91. {
  92. $field = 'id,area_name';
  93. $list = Area::field($field)
  94. ->where(['area_parent_id' => $pid])
  95. ->select()
  96. ->toArray();
  97. if ($list) {
  98. foreach ($list as $key => $val) {
  99. $datas[$key]['id'] = $val['id'];
  100. $datas[$key]['title'] = $val['area_name'];
  101. $sublist = Area::field($field)
  102. ->where(['area_parent_id' => $val['id']])
  103. ->select()
  104. ->toArray();
  105. if ($sublist) {
  106. $datas[$key]['children'] = $this->eltree($val['id']);
  107. }
  108. }
  109. if(is_array($datas)){
  110. $datas = array_values($datas);
  111. }
  112. return $datas;
  113. }
  114. }
  115. }