Show.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. <?php
  2. namespace app\newhome\controller;
  3. use think\Controller;
  4. use think\Db;
  5. class Show extends Controller {
  6. private $userModel, $showModel;
  7. public function _initialize(){
  8. $this->userModel = new \app\user\model\User();
  9. $this->showModel = new \app\user\model\UserShow();
  10. }
  11. public function add()
  12. {
  13. $data = decode($this->request->post());
  14. $user_id = $data['u'];
  15. if(!$user_id)
  16. return json(array("error"=>1));
  17. $res = array();
  18. try
  19. {
  20. $info = array();
  21. $info['user_id'] = $data['u'];
  22. $info['title'] = urlencode($data['tl']);
  23. $info['content'] = urlencode($data['ct']);
  24. $info['head'] = $data['hd'];
  25. $info['headwear'] = $data['hw'];
  26. $info['eyes'] = $data['ey'];
  27. $info['mouth'] = $data['mo'];
  28. $info['clothes'] = $data['cl'];
  29. $info['skirt'] = $data['sk'];
  30. $info['shoes'] = $data['sh'];
  31. $info['wing'] = $data['wi'];
  32. $info['create_time'] = getCurrentTime();
  33. $info['del_time'] = getCurrentTime();
  34. $result = $this->showModel->insert($info, false, true);
  35. $info['id'] = $result;
  36. $info['title'] = $data['tl'];
  37. $info['content'] = $data['ct'];
  38. $res['error'] = $result ? 0 : 2;
  39. $res['info'] = $info;
  40. }
  41. catch (\Exception $e)
  42. {
  43. $res['error'] = 3;
  44. $res['reason'] = $e;
  45. }
  46. return json($res);
  47. }
  48. public function modify()
  49. {
  50. $data = decode($this->request->post());
  51. $user_id = $data['u'];
  52. $show_id = $data['s'];
  53. $title = urlencode($data['tl']);
  54. $content = urlencode($data['ct']);
  55. $this->showModel->updateInfo($show_id, $title, $content);
  56. $show = Db::name("user_show")->where('id', $show_id)->find();
  57. $show['title'] = urldecode($show['title']);
  58. $show['content'] = urldecode($show['content']);
  59. $res = array();
  60. $res['info'] = $show;
  61. return json($res);
  62. }
  63. public function delete()
  64. {
  65. $data = decode($this->request->post());
  66. $user_id = $data['u'];
  67. $show_id = $data['s'];
  68. $info = array();
  69. $info['del'] = 1;
  70. $info['del_time'] = getCurrentTime();
  71. $this->showModel->where("id=$show_id AND user_id=$user_id")->update($info);
  72. $res = array();
  73. $res['error'] = 0;
  74. return json($res);
  75. }
  76. public function score()
  77. {
  78. $data = decode($this->request->post());
  79. $user_id = $data['u'];
  80. $show_id = intval($data['s']);
  81. $score = Db::name("user_show_score")->where("user_id=$user_id AND show_id=$show_id")->find();
  82. if($score)
  83. {
  84. $res['error'] = 1;
  85. $res['info'] = "already scored";
  86. return json($res);
  87. }
  88. $show = Db::name("user_show")->where('id', $show_id)->find();
  89. if($user_id != $show['user_id'])
  90. {
  91. $score1 = $data['s1'];
  92. $score2 = $data['s2'];
  93. $score3 = $data['s3'];
  94. $score4 = $data['s4'];
  95. $score5 = $data['s5'];
  96. $info = array();
  97. $info['user_id'] = $user_id;
  98. $info['show_id'] = $show_id;
  99. $info['score1'] = $score1;
  100. $info['score2'] = $score2;
  101. $info['score3'] = $score3;
  102. $info['score4'] = $score4;
  103. $info['score5'] = $score5;
  104. $info['create_time'] = getCurrentTime();
  105. Db::name("user_show_score")->insert($info, false, true);
  106. $this->showModel->addScore($show_id, $score1, $score2, $score3, $score4, $score5);
  107. }
  108. $show = Db::name("user_show")->where('id', $show_id)->find();
  109. $show['title'] = urldecode($show['title']);
  110. $show['content'] = urldecode($show['content']);
  111. $res = array();
  112. $res['error'] = 0;
  113. $res['info'] = $show;
  114. return json($res);
  115. }
  116. public function like()
  117. {
  118. $data = decode($this->request->post());
  119. $user_id = $data['u'];
  120. $show_id = intval($data['s']);
  121. $like_db = Db::name("user_show_like");
  122. $show_like = $like_db->where("user_id=$user_id AND show_id=$show_id")->find();
  123. $res = array();
  124. if(!$show_like)
  125. {
  126. $info = array();
  127. $info['user_id'] = $user_id;
  128. $info['show_id'] = $show_id;
  129. $info['like'] = 1;
  130. $info['update_time'] = getCurrentTime();
  131. $result = $like_db->insert($info, false, true);
  132. $info['id'] = $result;
  133. $liked = 1;
  134. }
  135. else
  136. {
  137. $liked = $show_like['like'] > 0 ? 0 : 1;
  138. $info = array();
  139. $info['like'] = $liked;
  140. $like_db->where("user_id=$user_id AND show_id=$show_id")->update($info);
  141. $show_like['like'] = $liked;
  142. }
  143. $count = $like_db->where("`like`=1 AND show_id=$show_id")->count();
  144. $this->showModel->where("id", $show_id)->update(['likes'=>$count]);
  145. $show = Db::name("user_show")->where("id", $show_id)->find();
  146. $show['title'] = urldecode($show['title']);
  147. $show['content'] = urldecode($show['content']);
  148. $res['error'] = 0;
  149. $res['info'] = $show;
  150. $res['liked'] = $liked;
  151. return json($res);
  152. }
  153. public function comment()
  154. {
  155. $data = decode($this->request->post());
  156. $user_id = $data['u'];
  157. $show_id = $data['s'];
  158. $target_id = $data['t'];
  159. $content = $data['c'];
  160. $info = array();
  161. $info['user_id'] = $user_id;
  162. $info['target_id'] = $target_id;
  163. $info['show_id'] = $show_id;
  164. $info['content'] = urlencode($content);
  165. $info['create_time'] = getCurrentTime();
  166. $comment_db = Db::name("user_show_comment");
  167. $result = $comment_db->insert($info, false, true);
  168. $info['id'] = $result;
  169. $info['content'] = $content;
  170. $this->showModel->where('id', $show_id)->setInc('comments');
  171. $res = array();
  172. $res['error'] = $result ? 0 : 2;
  173. $res['info'] = $info;
  174. return json($res);
  175. }
  176. public function show_list()
  177. {
  178. $data = decode($this->request->post());
  179. $uid = $data['u'];
  180. $sort = $data['s'];
  181. $page = $data['p'];
  182. $list = $this->showModel->infoList($sort, $page);
  183. $users = array();
  184. foreach ($list as &$value)
  185. {
  186. $value['title'] = urldecode($value['title']);
  187. $value['content'] = urldecode($value['content']);
  188. $user_id = $value['user_id'];
  189. if(!array_key_exists($user_id, $users))
  190. {
  191. $user = $this->userModel->where('id', $user_id)->field('nickname')->find();
  192. $users[$user_id] = $user;
  193. }
  194. else
  195. {
  196. $user = $users[$user_id];
  197. }
  198. if($user && isset($user['nickname']))
  199. {
  200. $value['nickname'] = $user['nickname'];
  201. }
  202. else
  203. {
  204. $value['nickname'] = "";
  205. }
  206. $show_id = $value['id'];
  207. $like_db = Db::name("user_show_like");
  208. $like = $like_db->where("user_id=$uid AND show_id=$show_id AND `like`=1")->find();
  209. if($like)
  210. {
  211. $value['liked'] = 1;
  212. }
  213. else
  214. {
  215. $value['liked'] = 0;
  216. }
  217. $score_db = Db::name("user_show_score");
  218. $score = $score_db->where("user_id=$uid AND show_id=$show_id")->find();
  219. if($score)
  220. {
  221. $value['scored'] = 1;
  222. }
  223. else
  224. {
  225. $value['scored'] = 0;
  226. }
  227. }
  228. $res = array();
  229. $res['list'] = $list;
  230. return json($res);
  231. }
  232. public function show_list_user()
  233. {
  234. $data = decode($this->request->post());
  235. $uid = $data['mu'];
  236. $user_id = $data['u'];
  237. $page = $data['p'];
  238. $list = $this->showModel->infoListByUser($user_id, $page);
  239. $users = array();
  240. foreach ($list as &$value)
  241. {
  242. $value['title'] = urldecode($value['title']);
  243. $value['content'] = urldecode($value['content']);
  244. $user_id = $value['user_id'];
  245. if(!array_key_exists($user_id, $users))
  246. {
  247. $user = $this->userModel->where('id', $user_id)->field('nickname')->find();
  248. $users[$user_id] = $user;
  249. }
  250. else
  251. {
  252. $user = $users[$user_id];
  253. }
  254. if($user && isset($user['nickname']))
  255. {
  256. $value['nickname'] = $user['nickname'];
  257. }
  258. else
  259. {
  260. $value['nickname'] = "";
  261. }
  262. $like_db = Db::name("user_show_like");
  263. $show_id = $value['id'];
  264. $like = $like_db->where("user_id=$uid AND show_id=$show_id AND `like`=1")->find();
  265. if($like)
  266. {
  267. $value['liked'] = 1;
  268. }
  269. else
  270. {
  271. $value['liked'] = 0;
  272. }
  273. $score_db = Db::name("user_show_score");
  274. $score = $score_db->where("user_id=$uid AND show_id=$show_id")->find();
  275. if($score)
  276. {
  277. $value['scored'] = 1;
  278. }
  279. else
  280. {
  281. $value['scored'] = 0;
  282. }
  283. }
  284. $res['list'] = $list;
  285. return json($res);
  286. }
  287. public function show()
  288. {
  289. $data = decode($this->request->post());
  290. $show_id = $data['s'];
  291. $user_id = $data['u'];
  292. $show_db = Db::name("user_show");
  293. $show = $show_db->where("id=$show_id AND user_id=$user_id")->find();
  294. if(!$show)
  295. return json(array('error', 1));
  296. $show['title'] = urldecode($show['title']);
  297. $show['content'] = urldecode($show['content']);
  298. $user = $this->userModel->where('id', $user_id)->field('nickname')->find();
  299. $show['nickname'] = $user['nickname'] ? $user['nickname'] : "";
  300. return json($show);
  301. }
  302. public function comment_list()
  303. {
  304. $data = decode($this->request->post());
  305. $show_id = $data['s'];
  306. $page = $data['p'];
  307. $page = max($page, 1);
  308. $num_pre_page = 10;
  309. $start = ($page-1) * $num_pre_page;
  310. $comment_db = Db::name("user_show_comment");
  311. $list = $comment_db->where("show_id", $show_id)->order('create_time desc')->limit("$start, $num_pre_page")->select();
  312. $users = array();
  313. foreach ($list as &$value)
  314. {
  315. $value['content'] = urldecode($value['content']);
  316. $user_id = $value['user_id'];
  317. if(!array_key_exists($user_id, $users))
  318. {
  319. $user = $this->userModel->where('id', $user_id)->field('nickname')->find();
  320. $users[$user_id] = $user;
  321. }
  322. else
  323. {
  324. $user = $users[$user_id];
  325. }
  326. if($user && isset($user['nickname']))
  327. {
  328. $value['nickname'] = $user['nickname'];
  329. }
  330. else
  331. {
  332. $value['nickname'] = "";
  333. }
  334. $target_id = $value['target_id'];
  335. if(!array_key_exists($target_id, $users))
  336. {
  337. $user = $this->userModel->where('id', $target_id)->field('nickname')->find();
  338. $users[$target_id] = $user;
  339. }
  340. else
  341. {
  342. $user = $users[$target_id];
  343. }
  344. if($user && isset($user['nickname']))
  345. {
  346. $value['nickname_target'] = $user['nickname'];
  347. }
  348. else
  349. {
  350. $value['nickname_target'] = "";
  351. }
  352. }
  353. $res['list'] = $list;
  354. return json($res);
  355. }
  356. }