Article.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\AdminBaseController;
  4. use app\common\model\ArticleModel;
  5. use app\common\model\ArticleCateModel;
  6. use app\admin\validate\ArticleCateValidate;
  7. use app\admin\validate\ArticleValidate;
  8. use think\exception\ValidateException;
  9. class Article extends AdminBaseController
  10. {
  11. /**
  12. * 列表
  13. */
  14. public function index()
  15. {
  16. $cate_list = ArticleCateModel::order(['priority' => 'desc', 'id' => 'desc'])->select();
  17. return view('', [
  18. 'cate_list' => $cate_list,
  19. 'type_list' => ArticleModel::TYPE,
  20. 'status_list' => ArticleModel::STATUS,
  21. ]);
  22. }
  23. public function articleForm()
  24. {
  25. $cate_list = ArticleCateModel::order(['priority' => 'desc', 'id' => 'desc'])->select();
  26. $id = input('id/d, 0');
  27. $info = ArticleModel::find($id);
  28. return view('', [
  29. 'cate_list' => $cate_list,
  30. 'info' => $info,
  31. 'type_list' => ArticleModel::TYPE,
  32. 'status_list' => ArticleModel::STATUS,
  33. ]);
  34. }
  35. public function listArticle()
  36. {
  37. $map = $this->dealEqualInput(['cate_id', 'type', 'status'], $this->dealLikeInput(['title']));
  38. $list = ArticleModel::with('cate')
  39. ->where($map)
  40. ->order(['priority' => 'desc', 'id' => 'desc'])
  41. ->limit(input('limit'))
  42. ->page(input('page'))
  43. ->append(['type_text', 'status_text'])
  44. ->select();
  45. $count = ArticleModel::where($map)->count();
  46. if ($count == 0) {
  47. ajax_return(1, '未查询到数据');
  48. }
  49. list_return($list, $count);
  50. }
  51. public function delArticle()
  52. {
  53. $id_arr = input('id_arr/a');
  54. ArticleModel::destroy($id_arr);
  55. ajax_return();
  56. }
  57. public function editArticle()
  58. {
  59. $data = input('post.');
  60. try {
  61. validate(ArticleValidate::class)->check($data);
  62. } catch (ValidateException $e) {
  63. ajax_return(1, $e->getError());
  64. }
  65. if ($data['type'] == 1 && empty($data['content'])) {
  66. ajax_return(1, '详情不能为空');
  67. }
  68. if ($data['type'] == 2 && empty($data['url'])) {
  69. ajax_return(1, '链接不能为空');
  70. }
  71. if (empty($data['id'])) {
  72. ArticleModel::create($data, ArticleModel::EDIT_ALLOW);
  73. } else {
  74. ArticleModel::update($data, ['id' => $data['id']], ArticleModel::EDIT_ALLOW);
  75. }
  76. ajax_return();
  77. }
  78. public function fieldArticle()
  79. {
  80. $id = input('id/d', 0);
  81. $article = ArticleModel::find($id);
  82. if (empty($article)) {
  83. ajax_return(1, '信息不存在');
  84. } else {
  85. $article->save([
  86. input('field/s') => input('value/s', ""),
  87. ]);
  88. }
  89. ajax_return();
  90. }
  91. /**
  92. * 分类
  93. */
  94. public function cate()
  95. {
  96. return view('', [
  97. 'status_list' => ArticleCateModel::STATUS,
  98. ]);
  99. }
  100. public function cateForm()
  101. {
  102. $id = input('id/d, 0');
  103. $info = ArticleCateModel::find($id);
  104. return view('', [
  105. 'info' => $info,
  106. 'status_list' => ArticleCateModel::STATUS,
  107. ]);
  108. }
  109. public function listCate()
  110. {
  111. $map = $this->dealEqualInput(['status']);
  112. $list = ArticleCateModel::where($map)
  113. ->order(['priority' => 'desc', 'id' => 'desc'])
  114. ->limit(input('limit'))
  115. ->page(input('page'))
  116. ->append(['status_text'])
  117. ->select();
  118. $count = ArticleCateModel::where($map)->count();
  119. if ($count == 0) {
  120. ajax_return(1, '未查询到数据');
  121. }
  122. list_return($list, $count);
  123. }
  124. public function fieldCate()
  125. {
  126. $id = input('id/d');
  127. $cate = ArticleCateModel::find($id);
  128. if (empty($cate)) {
  129. ajax_return(1, '分类信息不存在');
  130. } else {
  131. $cate->save([
  132. input('field/s') => input('value/s', ""),
  133. ]);
  134. }
  135. ajax_return();
  136. }
  137. public function editCate()
  138. {
  139. $data = input('post.');
  140. try {
  141. validate(ArticleCateValidate::class)->check($data);
  142. } catch (ValidateException $e) {
  143. ajax_return(1, $e->getError());
  144. }
  145. if (empty($data['id'])) {
  146. ArticleCateModel::create($data, ArticleCateModel::EDIT_ALLOW);
  147. } else {
  148. ArticleCateModel::update($data, ['id' => $data['id']], ArticleCateModel::EDIT_ALLOW);
  149. }
  150. ajax_return();
  151. }
  152. public function delCate()
  153. {
  154. $id = input('id/d');
  155. $check = ArticleModel::where('cate_id', $id)->find();
  156. if (!empty($check)) {
  157. ajax_return(1, '该分类下还有文章,无法删除');
  158. }
  159. ArticleCateModel::destroy($id);
  160. ajax_return();
  161. }
  162. public function importCate()
  163. {
  164. return view('public/import', [
  165. 'url' => url('article/importCatePost'),
  166. 'last_table' => 'lay-article-cate-table',
  167. 'template_file' => '/static/common/exl/article_cate.xls',
  168. ]);
  169. }
  170. public function importCatePost()
  171. {
  172. $file_url = input('file_url/s', "");
  173. if (!file_exists($file_url)) {
  174. ajax_return(1, '文件不存在');
  175. }
  176. $data = ['title', 'priority'];
  177. $list = import_exl($file_url, $data, 1);
  178. $empty_check = [
  179. 'title' => '分类名称',
  180. ];
  181. foreach ($list as $k => $v) {
  182. foreach ($empty_check as $key => $value) {
  183. if (empty($v[$key])) {
  184. return ajax_return(1, '第' . ($k + 2) . '行的' . $value . '不能为空');
  185. }
  186. }
  187. $list[$k]['priority'] = empty($v['priority']) ? 255 : (int)$v['priority'];
  188. }
  189. ArticleCateModel::insertAll($list);
  190. ajax_return(0);
  191. }
  192. public function exportCate()
  193. {
  194. $map = $this->dealInInput(['id'],$this->dealEqualInput(['status']));
  195. $list = ArticleCateModel::where($map)
  196. ->order(['priority' => 'desc', 'id' => 'desc'])
  197. ->select();
  198. $xlsCell = [
  199. ['id', '表ID'],
  200. ['title', '分类名称'],
  201. ['status_text', '状态'],
  202. ['priority', '排序'],
  203. ];
  204. export_exl("文章分类", $xlsCell, $list);
  205. }
  206. }