SlideLogic.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. /**
  3. * SlideLogic.php UTF-8
  4. * 广告逻辑图处理
  5. *
  6. * @date : 2017/11/25 15:07
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\logic\slide;
  13. use huo\logic\posts\PostsLogic;
  14. use huo\model\common\CommonModel;
  15. use huo\model\slide\SlideItemModel;
  16. use huo\model\slide\SlideModel;
  17. use huolib\constant\NewsConst;
  18. use huolib\constant\SlideConst;
  19. use huolib\status\AdsStatus;
  20. use think\db\exception\DataNotFoundException;
  21. use think\db\exception\ModelNotFoundException;
  22. use think\exception\DbException;
  23. class SlideLogic extends CommonModel {
  24. /**
  25. * 获取广告列表
  26. *
  27. * @param array $where
  28. * @param string $page
  29. *
  30. * @return array|int
  31. */
  32. public function getList($where = [], $page = '1,10') {
  33. if (empty($where['type'])) {
  34. return AdsStatus::ADSTYPE_EMPTY;
  35. }
  36. $_map['code'] = $where['type'];
  37. $_obj = new SlideModel();
  38. try {
  39. $_slides = $_obj->getSlideList($_map, $page);
  40. if (is_object($_slides)) {
  41. $_slides = $_slides->toArray();
  42. }
  43. if (empty($_slides[0]['items'])) {
  44. return AdsStatus::ADSTYPE_NOT_EXISTS;
  45. }
  46. $_list = [];
  47. foreach ($_slides[0]['items'] as $_slide) {
  48. $_data = [];
  49. $_data['name'] = $_slide['title'];
  50. $_data['type_name'] = $_slide['table_name'];
  51. $_data['target_id'] = $_slide['target_id'];
  52. $_data['url'] = $_slide['url'];
  53. $_data['image'] = $_slide['image'];
  54. $_data['content'] = $_slide['content'];
  55. $_data['desc'] = $_slide['description'];
  56. $_list[] = $_data;
  57. }
  58. $_rdata = [
  59. 'count' => count($_list),
  60. 'list' => $_list,
  61. ];
  62. return $_rdata;
  63. } catch (DataNotFoundException $e) {
  64. return AdsStatus::DATA_NOT_FOUND_EXCEPTION;
  65. } catch (ModelNotFoundException $e) {
  66. return AdsStatus::MODEL_NOT_FOUND_EXCEPTION;
  67. } catch (DbException $e) {
  68. return AdsStatus::DB_EXCEPTION;
  69. }
  70. }
  71. /**
  72. * 静态页面需要加载的轮播
  73. */
  74. public function getHtmlSlide() {
  75. $_code = SlideConst::SLIDE_HUNTER_INDEX;
  76. $_slide_id = (new SlideModel())->getSlideIdByCode($_code);
  77. $_map = [];
  78. $_map['slide_id'] = $_slide_id;
  79. $_map['slide_item_model.status'] = SlideConst::SLIDE_STATUS_SHOW;
  80. $_slide_items = (new SlideItemModel())->with('slide')
  81. ->where($_map)
  82. ->order('list_order DESC')
  83. ->select();
  84. if (is_object($_slide_items)) {
  85. $_slide_items = $_slide_items->toArray();
  86. }
  87. if (empty($_slide_items)) {
  88. return [];
  89. }
  90. foreach ($_slide_items as $_k => $_v) {
  91. $_slide_items[$_k]['image'] = cmf_get_image_preview_url($_v['image']).'?'.$_v['description'];
  92. $_slide_items[$_k]['url'] = $_v['url'];
  93. if ('posts' == $_v['table_name']) { //链接文章类
  94. if (!empty($_v['target_id'])) {
  95. $_posts = (new PostsLogic())->getInfoById($_v['target_id']);
  96. if (!empty($_posts) && empty($_posts['delete_time'])
  97. && NewsConst::NEWS_PUBLISHED == $_posts['post_status']) {
  98. $_slide_items[$_k]['url'] = $_posts['id'].'.html?'.$_posts['update_time'];
  99. }
  100. }
  101. }
  102. }
  103. return $_slide_items;
  104. }
  105. }