91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\model;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use app\exception\RepositoryException;
							 | 
						||
| 
								 | 
							
								use think\db\exception\DataNotFoundException;
							 | 
						||
| 
								 | 
							
								use think\db\exception\DbException;
							 | 
						||
| 
								 | 
							
								use think\db\exception\ModelNotFoundException;
							 | 
						||
| 
								 | 
							
								use think\model\relation\HasMany;
							 | 
						||
| 
								 | 
							
								use think\model\relation\HasOne;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Archives extends Base
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public const ORIGINAL_TABLE = 'bee_archives';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public const STATUS_NORMAL  = 1;//正常
							 | 
						||
| 
								 | 
							
								    public const STATUS_DISABLE = 0;//禁用
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //根据栏目ID获取文章分页列表
							 | 
						||
| 
								 | 
							
								    public static function getListPageByCategory($categoryId, $per = 20, $keyword = '')
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $where = [
							 | 
						||
| 
								 | 
							
								            ['category_id', '=', $categoryId],
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								        $param  = [];
							 | 
						||
| 
								 | 
							
								        //$param['category_id'] = $categoryId;
							 | 
						||
| 
								 | 
							
								        if ($keyword != '') {
							 | 
						||
| 
								 | 
							
								            $where[] = ['title', 'like', '%' . $keyword . '%'];
							 | 
						||
| 
								 | 
							
								            $param['keyword'] = $keyword;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $paginate = [
							 | 
						||
| 
								 | 
							
								            'list_rows' => $per,
							 | 
						||
| 
								 | 
							
								            'query' => $param
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								        return self::with(["archivesCategory"])->where($where)
							 | 
						||
| 
								 | 
							
								            ->order(["sort"=>"desc"])
							 | 
						||
| 
								 | 
							
								            ->paginate($paginate, false);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 创建人信息
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return HasOne
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function member(): HasOne
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->hasOne(Member::class, 'id', 'created_by')->bind(['nickname']);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 栏目 后台用
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return HasOne
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function category(): HasOne
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->hasOne(ArchivesCategory::class, 'id', 'category_id')->bind(['category' => 'title']);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 栏目
							 | 
						||
| 
								 | 
							
								     * @return HasOne
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function archivesCategory(): HasOne
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->hasOne(ArchivesCategory::class, 'id', 'category_id');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public static function onAfterInsert( $archives)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $archives->sort = ceil(self::max("sort")+1);
							 | 
						||
| 
								 | 
							
								        $archives->save();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public static function onBeforeUpdate( $archives)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        //检查sort
							 | 
						||
| 
								 | 
							
								        $hasFlag = self::where([
							 | 
						||
| 
								 | 
							
								            ["sort","=",$archives->sort],
							 | 
						||
| 
								 | 
							
								            ["id","<>",$archives->id]
							 | 
						||
| 
								 | 
							
								        ])->find();
							 | 
						||
| 
								 | 
							
								        if(!empty($hasFlag)){
							 | 
						||
| 
								 | 
							
								            throw  new RepositoryException('sort不能重复,保留小数点后2位');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |