| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 | <?php/** * PostLogic.php UTF-8 * 文章逻辑 * * @date    : 2017/11/23 21:22 * * @license 这不是一个自由软件,未经授权不许任何使用和传播。 * @author  : wuyonghong <wyh@huosdk.com> * @version : HUOSDK 8.0 */namespace huo\logic\posts;use huo\model\common\CommonModel;use huo\model\posts\PostsModel;use huolib\constant\CommonConst;use huolib\constant\NewsConst;use huolib\status\CommonStatus;use think\db\exception\DataNotFoundException;use think\db\exception\ModelNotFoundException;use think\exception\DbException;use think\Log;class PostsLogic extends CommonModel {    protected $base_field        = [            'id'             => 'news_id',            'post_title'     => 'title',            'post_excerpt'   => 'excerpt',            'app_id'         => 'game_id',            'published_time' => 'pub_time',            'more'           => 'more',            'post_type'      => 'type',            'start_time'     => 'start_time',            'end_time'       => 'end_time',            'url'            => 'url',            'cost_integral'  => 'cost_integral',            'is_top'         => 'is_top',        ];    /**     * 获取资讯列表     *     * @param array  $where     * @param string $page     * @param string $order     *     * @return array|int     */    public function getList($where = [], $page = '1,10', $order = '') {        $_rdata = [            'count' => 0,            'list'  => []        ];        $_map = [];        if (!empty($where['app_id'])) {            $_map['app_id'] = $where['app_id'];        }        if (!empty($where['post_type'])) {            $_map['post_type'] = $where['post_type'];        }        $_map['id'] = array('neq', 0);        $_param['where'] = $_map;        $_param['page'] = $page;        $_param['order'] = $order;        $_posts_model = new PostsModel();        $_rdata['count'] = $_posts_model->where($_map)->count();        if (empty($_rdata['count'])) {            return $_rdata;        }        $_field = $this->base_field;        $_order = $this->orderFilter($order);//        try {        $_datas = $_posts_model->field($_field)->where($_map)->page($page)->order($_order)->select();        if (is_object($_datas)) {            $_datas = $_datas->toArray();        }        if (empty($_datas)) {            return $_rdata;        }        foreach ($_datas as $_k => $_data) {            $_datas[$_k]['img'] = isset($_data['more']['thumbnail']) ? $_data['more']['thumbnail'] : '';            if ($_data['start_time'] > time()) {                $_datas[$_k]['status'] = 1;            } elseif ($_data['end_time'] < time()) {                $_datas[$_k]['status'] = 2;            } else {                $_datas[$_k]['status'] = 3;            }        }        $_rdata['list'] = $_datas;        return $_rdata;//        } catch (DataNotFoundException $_e) {//            Log::write(//                "func=".__FUNCTION__."&class=".__CLASS__."&code=".CommonStatus::DATA_NOT_FOUND_EXCEPTION."&Exception"//                .$_e->getMessage(),//                LOG::ERROR//            );////            return $_rdata;//        } catch (ModelNotFoundException $_e) {//            Log::write(//                "func=".__FUNCTION__."&class=".__CLASS__."&code=".CommonStatus::MODEL_NOT_FOUND_EXCEPTION."&Exception"//                .$_e->getMessage(),//                LOG::ERROR//            );////            return $_rdata;//        } catch (DbException $_e) {//            Log::write(//                "func=".__FUNCTION__."&class=".__CLASS__."&code=".CommonStatus::DB_EXCEPTION."&Exception"//                .$_e->getMessage(),//                LOG::ERROR//            );////            return $_rdata;//        }    }    /**     * 获取详情,post_id和type必须传入一个     *     * @param int $post_id     *     * @param int $type     *     * @return int     */    public function getDetail($post_id = 0, $type = 0) {        $_rdata = null;        $_field = $this->base_field;        $_field['post_content'] = 'content';        $_field['post_status'] = 'status';        $_map['id'] = $post_id;        if (!empty($type)) {            $_map['post_type'] = $type;        }        $_posts_model = new PostsModel();        try {            $_data = $_posts_model->useGlobalScope(false)->field($_field)->where($_map)->limit(1)->find();            if (is_object($_data)) {                $_data = $_data->toArray();            }            if (empty($_data)) {                return $_rdata;            }            $_data['img'] = isset($_data['more']['thumbnail']) ? $_data['more']['thumbnail'] : '';            $_data['pointer'] = isset($_data['more']['pointer']) ? $_data['more']['pointer'] : '';            $_data['turntable'] = isset($_data['more']['turntable']) ? $_data['more']['turntable'] : '';            if ($_data['start_time'] > time()) {                $_data['status'] = 1;            } elseif ($_data['end_time'] < time()) {                $_data['status'] = 2;            } else {                $_data['status'] = 3;            }            return $_data;        } catch (DataNotFoundException $_e) {            Log::write(                "func=".__FUNCTION__."&class=".__CLASS__."&code=".CommonStatus::DATA_NOT_FOUND_EXCEPTION."&Exception"                .$_e->getMessage(),                LOG::ERROR            );            return $_rdata;        } catch (ModelNotFoundException $_e) {            Log::write(                "func=".__FUNCTION__."&class=".__CLASS__."&code=".CommonStatus::MODEL_NOT_FOUND_EXCEPTION."&Exception"                .$_e->getMessage(),                LOG::ERROR            );            return $_rdata;        } catch (DbException $_e) {            Log::write(                "func=".__FUNCTION__."&class=".__CLASS__."&code=".CommonStatus::DB_EXCEPTION."&Exception"                .$_e->getMessage(),                LOG::ERROR            );            return $_rdata;        }    }    /***     * 后台获取资讯列表     *     * @param $where     *     * @return \think\Paginator     * @throws DbException     */    public function getListByAdmin($where) {        $_map = [];        if (!empty($where['app_id'])) {            $_map['posts_model.app_id'] = $where['app_id'];        }        if (!empty($where['post_type'])) {            $_map['posts_model.post_type'] = $where['post_type'];        }        if (!empty($where['keyword'])) {            $_map['posts_model.post_title'] = ['like', '%'.$where['keyword'].'%'];        }        if (!empty($where['start_time']) && !empty($where['end_time'])) {            $_map['posts_model.published_time']                = [                'between',                [                    strtotime($where['start_time']),                    CommonConst::CONST_DAY_SECONDS + strtotime($where['end_time'])                ]            ];        } elseif (!empty($where['start_time'])) {            $_map['posts_model.published_time'] = ['egt', strtotime($where['start_time'])];        } elseif (!empty($where['end_time'])) {            $_map['posts_model.published_time'] = ['elt',                                                   CommonConst::CONST_DAY_SECONDS + strtotime($where['end_time'])];        }        if (!empty($where['id'])) {            $_map['posts_model.id'] = $where['id'];        } elseif (!empty($where['except_id'])) {            $_map['posts_model.id'] = ['not in', [0, $where['except_id']]];        }        $_map['posts_model.delete_time'] = 0;        $_posts_model = new PostsModel();        $_datas = $_posts_model            ->useGlobalScope(false)            ->with('user')            ->where($_map)            ->order('post_status ASC,published_time DESC')            ->paginate();        return $_datas;    }    /***     * 获取文章详情     *     * @param $id     *     * @return array|false|\PDOStatement|string|\think\Model     */    public function getInfoById($id) {        $_data = (new PostsModel())->useGlobalScope(false)->where('id', $id)->limit(1)->find();        if (is_object($_data)) {            $_data = $_data->toArray();        }        return $_data;    }    /**     * 通过ID获取ID 与title     *     * @param       $app_id     * @param array $types 类型     *     * @return array     */    public function getTitleByAppId(        $app_id, $types    = [NewsConst::NEWS_TYPE_NEWS, NewsConst::NEWS_TYPE_STRATEGY, NewsConst::NEWS_TYPE_ACTIVITY,       NewsConst::NEWS_TYPE_NOTICE]    ) {        if (empty($app_id)) {            return ['title' => '', 'news_id' => null];        }        $_field = 'post_title title, id news_id';        $_map['app_id'] = $app_id;        $_map['post_type'] = ['in', $types];        $_data = (new PostsModel())->field($_field)->where($_map)->order('published_time desc')->find();        if (empty($_data)) {            return ['title' => '', 'news_id' => null];        }        return $_data;    }    /**     * 获取上一篇 和下一篇 id,name     *     * @param       $id     * @param array $type     * @param int   $limit     *     * @return array     */    public function getTop($id, $type = [], $limit = 2) {        $_map = [];        if (!empty($type)) {            $_map['post_type'] = ['in', $type];        }        $_map['id'] = ['neq', $id];        $_data = (new PostsModel())->where($_map)                                   ->order('published_time DESC')                                   ->limit($limit)                                   ->column('id,post_title,published_time');        return $_data;    }}
 |