Art.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Db;
  4. use app\common\util\Pinyin;
  5. class Art extends Base
  6. {
  7. public function __construct()
  8. {
  9. parent::__construct();
  10. }
  11. public function data()
  12. {
  13. $param = input();
  14. $param['page'] = intval($param['page']) < 1 ? 1 : $param['page'];
  15. $param['limit'] = intval($param['limit']) < 1 ? $this->_pagesize : $param['limit'];
  16. $where = [];
  17. if (!empty($param['type'])) {
  18. $where['type_id|type_id_1'] = ['eq', $param['type']];
  19. }
  20. if (!empty($param['level'])) {
  21. $where['art_level'] = ['eq', $param['level']];
  22. }
  23. if (in_array($param['status'], ['0', '1'])) {
  24. $where['art_status'] = ['eq', $param['status']];
  25. }
  26. if (!empty($param['lock'])) {
  27. $where['art_lock'] = ['eq', $param['lock']];
  28. }
  29. if(!empty($param['pic'])){
  30. if($param['pic'] == '1'){
  31. $where['art_pic'] = ['eq',''];
  32. }
  33. elseif($param['pic'] == '2'){
  34. $where['art_pic'] = ['like','http%'];
  35. }
  36. elseif($param['pic'] == '3'){
  37. $where['art_pic'] = ['like','%#err%'];
  38. }
  39. }
  40. if(!empty($param['wd'])){
  41. $param['wd'] = urldecode($param['wd']);
  42. $param['wd'] = mac_filter_xss($param['wd']);
  43. $where['art_name'] = ['like','%'.$param['wd'].'%'];
  44. }
  45. if(!empty($param['repeat'])){
  46. if($param['page'] ==1){
  47. Db::execute('DROP TABLE IF EXISTS '.config('database.prefix').'tmpart');
  48. Db::execute('CREATE TABLE `'.config('database.prefix').'tmpart` (`id1` int unsigned DEFAULT NULL, `name1` varchar(1024) NOT NULL DEFAULT \'\') ENGINE=MyISAM');
  49. Db::execute('INSERT INTO `'.config('database.prefix').'tmpart` (SELECT min(art_id)as id1,art_name as name1 FROM '.config('database.prefix').'art GROUP BY name1 HAVING COUNT(name1)>1)');
  50. }
  51. $order='art_name asc';
  52. $res = model('Art')->listRepeatData($where,$order,$param['page'],$param['limit']);
  53. }
  54. else{
  55. $order='art_time desc';
  56. $res = model('Art')->listData($where,$order,$param['page'],$param['limit']);
  57. }
  58. foreach($res['list'] as $k=>&$v){
  59. $v['ismake'] = 1;
  60. if($GLOBALS['config']['view']['art_detail'] >0 && $v['art_time_make'] < $v['art_time']){
  61. $v['ismake'] = 0;
  62. }
  63. }
  64. $this->assign('list', $res['list']);
  65. $this->assign('total', $res['total']);
  66. $this->assign('page', $res['page']);
  67. $this->assign('limit', $res['limit']);
  68. $param['page'] = '{page}';
  69. $param['limit'] = '{limit}';
  70. $this->assign('param', $param);
  71. $type_tree = model('Type')->getCache('type_tree');
  72. $this->assign('type_tree', $type_tree);
  73. $this->assign('title', lang('admin/art/title'));
  74. return $this->fetch('admin@art/index');
  75. }
  76. public function batch()
  77. {
  78. $param = input();
  79. if (!empty($param)) {
  80. mac_echo('<style type="text/css">body{font-size:12px;color: #333333;line-height:21px;}span{font-weight:bold;color:#FF0000}</style>');
  81. if(empty($param['ck_del']) && empty($param['ck_level']) && empty($param['ck_status']) && empty($param['ck_lock']) && empty($param['ck_hits']) ){
  82. return $this->error(lang('param_err'));
  83. }
  84. $where = [];
  85. if(!empty($param['type'])){
  86. $where['type_id'] = ['eq',$param['type']];
  87. }
  88. if(!empty($param['level'])){
  89. $where['art_level'] = ['eq',$param['level']];
  90. }
  91. if(in_array($param['status'],['0','1'])){
  92. $where['art_status'] = ['eq',$param['status']];
  93. }
  94. if(!empty($param['lock'])){
  95. $where['art_lock'] = ['eq',$param['lock']];
  96. }
  97. if(!empty($param['pic'])){
  98. if($param['pic'] == '1'){
  99. $where['art_pic'] = ['eq',''];
  100. }
  101. elseif($param['pic'] == '2'){
  102. $where['art_pic'] = ['like','http%'];
  103. }
  104. elseif($param['pic'] == '3'){
  105. $where['art_pic'] = ['like','%#err%'];
  106. }
  107. }
  108. if(!empty($param['wd'])){
  109. $param['wd'] = htmlspecialchars(urldecode($param['wd']));
  110. $where['art_name'] = ['like','%'.$param['wd'].'%'];
  111. }
  112. if($param['ck_del'] == 1){
  113. $res = model('Art')->delData($where);
  114. mac_echo(lang('multi_del_ok'));
  115. mac_jump( url('art/batch') ,3);
  116. exit;
  117. }
  118. if(empty($param['page'])){
  119. $param['page'] = 1;
  120. }
  121. if(empty($param['limit'])){
  122. $param['limit'] = 100;
  123. }
  124. if(empty($param['total'])) {
  125. $param['total'] = model('Art')->countData($where);
  126. $param['page_count'] = ceil($param['total'] / $param['limit']);
  127. }
  128. if($param['page'] > $param['page_count']) {
  129. mac_echo(lang('multi_set_ok'));
  130. mac_jump( url('art/batch') ,3);
  131. exit;
  132. }
  133. mac_echo( "<font color=red>".lang('admin/batch_tip',[$param['total'],$param['limit'],$param['page_count'],$param['page']])."</font>");
  134. $page = $param['page_count'] - $param['page'] + 1;
  135. $order='art_id desc';
  136. $res = model('Art')->listData($where,$order,$page,$param['limit']);
  137. foreach($res['list'] as $k=>$v){
  138. $where2 = [];
  139. $where2['art_id'] = $v['art_id'];
  140. $update = [];
  141. $des = $v['art_id'].','.$v['art_name'];
  142. if(!empty($param['ck_level']) && !empty($param['val_level'])){
  143. $update['art_level'] = $param['val_level'];
  144. $des .= '&nbsp;'.lang('level').':'.$param['val_level'].';';
  145. }
  146. if(!empty($param['ck_status']) && isset($param['val_status'])){
  147. $update['art_status'] = $param['val_status'];
  148. $des .= '&nbsp;'.lang('status').':'.($param['val_status'] ==1 ? '['.lang('reviewed').']':'['.lang('reviewed_not').']') .';';
  149. }
  150. if(!empty($param['ck_lock']) && isset($param['val_lock'])){
  151. $update['art_lock'] = $param['val_lock'];
  152. $des .= '&nbsp;'.lang('lock').':'.($param['val_lock']==1 ? '['.lang('lock').']':'['.lang('unlock').']').';';
  153. }
  154. if(!empty($param['ck_hits']) && !empty($param['val_hits_min']) && !empty($param['val_hits_max']) ){
  155. $update['art_hits'] = rand($param['val_hits_min'],$param['val_hits_max']);
  156. $des .= '&nbsp;'.lang('hits').':'.$update['art_hits'].';';
  157. }
  158. mac_echo($des);
  159. $res2 = model('Art')->where($where2)->update($update);
  160. }
  161. $param['page']++;
  162. $url = url('art/batch') .'?'. http_build_query($param);
  163. mac_jump( $url ,3);
  164. exit;
  165. }
  166. $type_tree = model('Type')->getCache('type_tree');
  167. $this->assign('type_tree',$type_tree);
  168. $this->assign('title',lang('admin/art/title'));
  169. return $this->fetch('admin@art/batch');
  170. }
  171. public function info()
  172. {
  173. if (Request()->isPost()) {
  174. $param = input('post.');
  175. $res = model('Art')->saveData($param);
  176. if($res['code']>1){
  177. return $this->error($res['msg']);
  178. }
  179. return $this->success($res['msg']);
  180. }
  181. $id = input('id');
  182. $where=[];
  183. $where['art_id'] = ['eq',$id];
  184. $res = model('Art')->infoData($where);
  185. $info = $res['info'];
  186. $this->assign('info',$info);
  187. $this->assign('art_page_list',(array)$info['art_page_list']);
  188. $type_tree = model('Type')->getCache('type_tree');
  189. $this->assign('type_tree',$type_tree);
  190. $this->assign('title',lang('admin/art/title'));
  191. return $this->fetch('admin@art/info');
  192. }
  193. public function del()
  194. {
  195. $param = input();
  196. $ids = $param['ids'];
  197. if(!empty($ids)){
  198. $where=[];
  199. $where['art_id'] = ['in',$ids];
  200. $res = model('Art')->delData($where);
  201. if($res['code']>1){
  202. return $this->error($res['msg']);
  203. }
  204. return $this->success($res['msg']);
  205. }
  206. elseif(!empty($param['repeat'])){
  207. $st = ' not in ';
  208. if($param['retain']=='max'){
  209. $st=' in ';
  210. }
  211. $sql = 'delete from '.config('database.prefix').'art where art_name in(select name1 from '.config('database.prefix').'tmpart) and art_id '.$st.'(select id1 from '.config('database.prefix').'tmpart)';
  212. $res = model('Art')->execute($sql);
  213. if($res===false){
  214. return $this->success(lang('del_err'));
  215. }
  216. return $this->success(lang('del_ok'));
  217. }
  218. return $this->error(lang('param_err'));
  219. }
  220. public function field()
  221. {
  222. $param = input();
  223. $ids = $param['ids'];
  224. $col = $param['col'];
  225. $val = $param['val'];
  226. $start = $param['start'];
  227. $end = $param['end'];
  228. if ($col == 'type_id' && $val==''){
  229. return $this->error("请选择分类提交");
  230. }
  231. if(!empty($ids) && in_array($col,['art_status','art_lock','art_level','art_hits','type_id'])){
  232. $where=[];
  233. $where['art_id'] = ['in',$ids];
  234. $update = [];
  235. if(empty($start)) {
  236. $update[$col] = $val;
  237. if($col == 'type_id'){
  238. $type_list = model('Type')->getCache();
  239. $id1 = intval($type_list[$val]['type_pid']);
  240. $update['type_id_1'] = $id1;
  241. }
  242. $res = model('Art')->fieldData($where, $update);
  243. }
  244. else{
  245. if(empty($end)){$end = 9999;}
  246. $ids = explode(',',$ids);
  247. foreach($ids as $k=>$v){
  248. $val = rand($start,$end);
  249. $where['art_id'] = ['eq',$v];
  250. $update[$col] = $val;
  251. $res = model('Art')->fieldData($where, $update);
  252. }
  253. }
  254. if($res['code']>1){
  255. return $this->error($res['msg']);
  256. }
  257. return $this->success($res['msg']);
  258. }
  259. return $this->error(lang('param_err'));
  260. }
  261. public function updateToday()
  262. {
  263. $param = input();
  264. $flag = $param['flag'];
  265. $res = model('Art')->updateToday($flag);
  266. return json($res);
  267. }
  268. }