Article.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\article;
  11. use app\model\BaseModel;
  12. /**
  13. * 文章
  14. */
  15. class Article extends BaseModel
  16. {
  17. /**
  18. * 添加文章
  19. * @param $data
  20. * @return array
  21. */
  22. public function addArticle($data)
  23. {
  24. $data[ 'create_time' ] = time();
  25. model('article')->startTrans();
  26. try {
  27. //添加文章
  28. model('article')->add($data);
  29. //更新分组文章数等信息
  30. if ($data[ 'status' ] == 1) {
  31. model('article_category')->setInc([ [ 'category_id', '=', $data[ 'category_id' ] ] ], 'article_num');
  32. } else {
  33. model('article_category')->setInc([ [ 'category_id', '=', $data[ 'category_id' ] ] ], 'article_num');
  34. }
  35. model('article')->commit();
  36. return $this->success();
  37. } catch (\Exception $e) {
  38. model('article')->rollback();
  39. return $this->error('', $e->getMessage());
  40. }
  41. }
  42. /**
  43. * 编辑文章
  44. * @param $condition
  45. * @param $data
  46. * @return array
  47. */
  48. public function editArticle($data)
  49. {
  50. $data[ 'update_time' ] = time();
  51. $info = model('article')->getInfo([ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'article_id', '=', $data[ 'article_id' ] ] ], 'category_id');
  52. $category_id = $info[ 'category_id' ] ?? 0;
  53. model('article')->startTrans();
  54. try {
  55. //添加文章
  56. model('article')->update($data, [ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'article_id', '=', $data[ 'article_id' ] ] ]);
  57. //减掉原文章类的文章数量
  58. if ($category_id != $data[ 'category_id' ]) {
  59. //新分类增加
  60. model('article_category')->setInc([ [ 'category_id', '=', $data[ 'category_id' ] ] ], 'article_num');
  61. //旧分类减少
  62. model('article_category')->setDec([ [ 'category_id', '=', $category_id ] ], 'article_num');
  63. }
  64. model('article')->commit();
  65. return $this->success();
  66. } catch (\Exception $e) {
  67. model('article')->rollback();
  68. return $this->error('', $e->getMessage());
  69. }
  70. }
  71. /**
  72. * 删除文章
  73. * @param $article_id
  74. * @param $site_id
  75. * @return array|\multitype
  76. */
  77. public function deleteArticle($condition)
  78. {
  79. //文章数
  80. $article_info = model('article')->getInfo($condition, 'category_id,status');
  81. if (empty($article_info)) {
  82. return $this->success('', '数据不合法');
  83. } else {
  84. model('article')->startTrans();
  85. try {
  86. //删除文章
  87. model('article')->delete($condition);
  88. //更新分组文章数等信息
  89. if ($article_info[ 'status' ] == 1) {
  90. model('article_category')->setDec([ [ 'category_id', '=', $article_info[ 'category_id' ] ] ], 'article_num');
  91. } else {
  92. model('article_category')->setDec([ [ 'category_id', '=', $article_info[ 'category_id' ] ] ], 'article_num');
  93. }
  94. model('article')->commit();
  95. return $this->success();
  96. } catch (\Exception $e) {
  97. model('article')->rollback();
  98. return $this->error('', $e->getMessage());
  99. }
  100. }
  101. }
  102. /**
  103. * 修改排序
  104. * @param $sort
  105. * @param $article_id
  106. * @param $site_id
  107. * @return array
  108. */
  109. public function modifyArticleSort($sort, $article_id, $site_id)
  110. {
  111. $res = model('article')->update([ 'sort' => $sort ], [ [ 'article_id', '=', $article_id ], [ 'site_id', '=', $site_id ] ]);
  112. return $this->success($res);
  113. }
  114. /**
  115. * 获取文章信息
  116. * @param array $condition
  117. * @param string $field
  118. * @return array
  119. */
  120. public function getArticleInfo($condition = [], $field = '*')
  121. {
  122. $info = model("article")->getInfo($condition, $field);
  123. return $this->success($info);
  124. }
  125. /**
  126. * 获取文章信息
  127. * @param array $condition
  128. * @param string $field
  129. * @param int $type
  130. * @return array
  131. */
  132. public function getArticleDetailInfo($condition = [], $field = '*', $type = 1)
  133. {
  134. $info = model('article')->getInfo($condition, $field);
  135. //添加浏览记录
  136. if ($type == 2) {
  137. model('article')->setInc($condition, 'read_num', 1);
  138. }
  139. return $this->success($info);
  140. }
  141. /**
  142. * 获取文章列表
  143. * @param array $condition
  144. * @param string $field
  145. * @param string $order
  146. * @param string $limit
  147. */
  148. public function getArticleList($condition = [], $field = '*', $order = '', $limit = null, $alias = '', $join = [])
  149. {
  150. $list = model('article')->getList($condition, $field, $order, $alias, $join, '', $limit);
  151. return $this->success($list);
  152. }
  153. /**
  154. * 获取文章分页列表
  155. * @param array $condition
  156. * @param int $page
  157. * @param int $page_size
  158. * @param string $order
  159. * @param string $field
  160. * @return array
  161. */
  162. public function getArticlePageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'pn.sort asc', $field = 'pn.*,png.category_name')
  163. {
  164. $alias = 'pn';
  165. $join = [
  166. [
  167. 'article_category png',
  168. 'png.category_id = pn.category_id',
  169. 'left'
  170. ]
  171. ];
  172. $list = model('article')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
  173. return $this->success($list);
  174. }
  175. /**
  176. * 生成推广二维码链接
  177. * @param $qrcode_param
  178. * @param $site_id
  179. * @return array
  180. */
  181. public function urlQrcode($qrcode_param, $site_id)
  182. {
  183. $h5_page = '/pages_tool/article/detail';
  184. $pc_page = '/cms/article/detail';
  185. $params = [
  186. 'site_id' => $site_id,
  187. 'data' => $qrcode_param,
  188. 'pc_data' => [ 'id' => $qrcode_param[ 'article_id' ] ],
  189. 'page' => $h5_page,
  190. 'h5_path' => $h5_page . '?article_id=' . $qrcode_param[ 'article_id' ],
  191. 'pc_page' => $pc_page,
  192. 'pc_path' => $pc_page . '?id=' . $qrcode_param[ 'article_id' ],
  193. 'qrcode_path' => 'upload/qrcode/article',
  194. 'qrcode_name' => [
  195. 'h5_name' => 'article_qrcode' . '_h5_' . $qrcode_param[ 'article_id' ] . '_' . $site_id,
  196. 'weapp_name' => 'article_qrcode' . '_weapp_' . $qrcode_param[ 'article_id' ] . '_' . $site_id,
  197. 'pc_name' => 'article_qrcode' . '_pc_' . $qrcode_param[ 'article_id' ] . '_' . $site_id
  198. ]
  199. ];
  200. $solitaire = event('ExtensionInformation', $params);
  201. return $this->success($solitaire[ 0 ]);
  202. }
  203. }