* @version : HUOSDK 8.0 */ namespace huomp\logic\posts; use huo\model\common\CommonModel; use huo\model\posts\PostsModel; use huolib\constant\CommonConst; use huolib\tool\StrUtils; class PostsLogic extends CommonModel { protected $base_field = [ 'id' => 'id', 'post_title' => 'title', 'post_excerpt' => 'excerpt', 'post_content' => 'content', ]; /** * 获取问答列表 * * @param array $where * @param string $page * @param string $order * * @return array|int */ public function getList($where = [], $page = '1,10', $order = '') { $_map = []; if (!empty($where['post_type'])) { $_map['post_type'] = $where['post_type']; } $_posts_model = new PostsModel(); $_count = $_posts_model->where($_map)->count(); if (empty($_count)) { return [ 'count' => 0, 'list' => [] ]; } $_field = $this->base_field; $_order = $this->orderFilter($order); $_datas = $_posts_model->field($_field)->where($_map)->page($page)->order($_order)->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } $_rdata['count'] = $_count; $_rdata['list'] = $_datas; return $_rdata; } /** * 后台猎人平台列表 * * @param array $where * @param string $page * @param string $order * * @return array */ public function getHunterList($where = [], $page = '1,10', $order = '-published_time') { $_map = []; if (!empty($param['start_time']) && !empty($param['start_time'])) { $_map['published_time'] = ['between', [strtotime($param['start_time']), CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time'])]]; } else if (!empty($param['start_time'])) { $_map['published_time'] = ['gt', strtotime($param['start_time'])]; } else if (!empty($param['end_time'])) { $_map['published_time'] = ['lt', CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time'])]; } if (!empty($where['post_type'])) { $_map['post_type'] = $where['post_type']; } if (!empty($where['keyword'])) { $_map['post_title'] = ['like', $where['keyword'].'%']; } $_map['delete_time'] = 0; $_posts_model = new PostsModel(); $_count = $_posts_model->useGlobalScope(false)->where($_map)->count(); if (empty($_count)) { return [ 'count' => 0, 'list' => [] ]; } $_order = $this->orderFilter($order); $_datas = $_posts_model->useGlobalScope(false) ->with('user') ->where($_map) ->page($page) ->order($_order) ->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } $_rdata['count'] = $_count; $_rdata['list'] = $_datas; return $_rdata; } /** * 获取列表用于生成静态页面 * * @param string $post_type * @param string $order * * @return array */ public function getHtmlList($post_type, $order = '-published_time') { $_map = []; $_map['post_type'] = $post_type; $_posts_model = new PostsModel(); $_count = $_posts_model->where($_map)->count(); if (empty($_count)) { return [ 'count' => 0, 'list' => [] ]; } $_field = 'id,is_top,post_like,url,post_title,post_keywords,post_source,post_excerpt,more,update_time'; $_order = $this->orderFilter($order); $_datas = $_posts_model->field($_field)->where($_map)->order($_order)->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } if (empty($_datas)) { return [ 'count' => 0, 'list' => [] ]; } foreach ($_datas as $_k => $_v) { $_datas[$_k]['id'] = $_v['id']; $_datas[$_k]['title'] = $_v['post_title']; $_datas[$_k]['img'] = empty($_v['more']['thumbnail']) ? '' : $_v['more']['thumbnail']; $_datas[$_k]['down_cnt'] = StrUtils::formatNumber($_v['post_like'] / 1000); $_datas[$_k]['size'] = $_v['post_source']; $_datas[$_k]['post_excerpt'] = $_v['post_excerpt']; $_datas[$_k]['url'] = $_v['url']; $_datas[$_k]['update_time'] = $_v['update_time']; $_datas[$_k]['tags'] = empty($_v['post_keywords']) ? [] : explode(',', $_v['post_keywords']); } $_rdata['count'] = $_count; $_rdata['list'] = $_datas; return $_rdata; } /** * 获取所有可显示的id * * @param array $post_type * * @return array */ public function getAllIds($post_type = []) { $_map = [ 'post_type' => ['in', $post_type], ]; $_ids = (new PostsModel())->where($_map)->column('id'); return $_ids; } }