179 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace app\common\model\dyqc;
 | 
						|
 | 
						|
use app\common\model\school\classes\ClassesLib;
 | 
						|
use app\common\model\school\classes\Teacher;
 | 
						|
use think\Model;
 | 
						|
 | 
						|
 | 
						|
class ManystoreShop extends Model
 | 
						|
{
 | 
						|
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
 | 
						|
    // 表名
 | 
						|
    protected $name = 'manystore_shop';
 | 
						|
    
 | 
						|
    // 自动写入时间戳字段
 | 
						|
    protected $autoWriteTimestamp = false;
 | 
						|
 | 
						|
    // 定义时间戳字段名
 | 
						|
    protected $createTime = false;
 | 
						|
    protected $updateTime = false;
 | 
						|
    protected $deleteTime = false;
 | 
						|
 | 
						|
    // 追加属性
 | 
						|
    protected $append = [
 | 
						|
        'status_text',
 | 
						|
        'auth_time_text',
 | 
						|
        'create_time_text',
 | 
						|
        'update_time_text'
 | 
						|
    ];
 | 
						|
 | 
						|
    /** 专家团队
 | 
						|
     * @return \think\model\relation\HasMany
 | 
						|
     */
 | 
						|
    public function teachers()
 | 
						|
    {
 | 
						|
        return $this->hasMany(Teacher::class,'shop_id')->where("status","1")->order("weigh desc");
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    public function getLogoAttr($value, $data)
 | 
						|
    {
 | 
						|
        if (!empty($value)) return cdnurl($value, true);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getImageAttr($value, $data)
 | 
						|
    {
 | 
						|
        if (!empty($value)) return cdnurl($value, true);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getImagesAttr($value, $data)
 | 
						|
    {
 | 
						|
        $imagesArray = [];
 | 
						|
        if (!empty($value)) {
 | 
						|
            $imagesArray = explode(',', $value);
 | 
						|
            foreach ($imagesArray as &$v) {
 | 
						|
                $v = cdnurl($v, true);
 | 
						|
            }
 | 
						|
            return $imagesArray;
 | 
						|
        }
 | 
						|
        return $imagesArray;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getYyzzImagesAttr($value, $data)
 | 
						|
    {
 | 
						|
        $imagesArray = [];
 | 
						|
        if (!empty($value)) {
 | 
						|
            $imagesArray = explode(',', $value);
 | 
						|
            foreach ($imagesArray as &$v) {
 | 
						|
                $v = cdnurl($v, true);
 | 
						|
            }
 | 
						|
            return $imagesArray;
 | 
						|
        }
 | 
						|
        return $imagesArray;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    public function getStatusList()
 | 
						|
    {
 | 
						|
        return ['0' => __('Status 0'), '1' => __('Status 1'), '2' => __('Status 2')];
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getStatusTextAttr($value, $data)
 | 
						|
    {
 | 
						|
        $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
 | 
						|
        $list = $this->getStatusList();
 | 
						|
        return isset($list[$value]) ? $list[$value] : '';
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getAuthTimeTextAttr($value, $data)
 | 
						|
    {
 | 
						|
        $value = $value ? $value : (isset($data['auth_time']) ? $data['auth_time'] : '');
 | 
						|
        return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getCreateTimeTextAttr($value, $data)
 | 
						|
    {
 | 
						|
        $value = $value ? $value : (isset($data['create_time']) ? $data['create_time'] : '');
 | 
						|
        return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getUpdateTimeTextAttr($value, $data)
 | 
						|
    {
 | 
						|
        $value = $value ? $value : (isset($data['update_time']) ? $data['update_time'] : '');
 | 
						|
        return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
 | 
						|
    }
 | 
						|
 | 
						|
    protected function setAuthTimeAttr($value)
 | 
						|
    {
 | 
						|
        return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
 | 
						|
    }
 | 
						|
 | 
						|
    protected function setCreateTimeAttr($value)
 | 
						|
    {
 | 
						|
        return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
 | 
						|
    }
 | 
						|
 | 
						|
    protected function setUpdateTimeAttr($value)
 | 
						|
    {
 | 
						|
        return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function admin()
 | 
						|
    {
 | 
						|
        return $this->belongsTo('app\admin\model\Admin', 'admin_id', 'id', [], 'LEFT')->setEagerlyType(0);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    /** 机构详情
 | 
						|
     * @param $id
 | 
						|
     * @throws \think\exception\DbException
 | 
						|
     */
 | 
						|
    public function detail($id){
 | 
						|
        $self = $this->get($id,['teachers']);
 | 
						|
        //一对多隐藏字段方法
 | 
						|
//        foreach ($self['teachers'] as $k=>$v){
 | 
						|
//            $v->visible(['id','name','expert_image','expert_content']);
 | 
						|
//        }
 | 
						|
//        $self->visible(['id','name','expert_image','expert_content']);
 | 
						|
        $self["hot"] = $this->getHotClasses($id,$limit=5);
 | 
						|
        return $self;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getHotClasses($id,$limit=5){
 | 
						|
          $data = ClassesLib::where("shop_id",$id)
 | 
						|
              ->where("status",'1')
 | 
						|
              ->limit($limit)
 | 
						|
              ->order("hot desc,weigh desc")
 | 
						|
              ->field("title,headimage,price,hot,weigh")
 | 
						|
              ->select();
 | 
						|
       return $data;
 | 
						|
    }
 | 
						|
 | 
						|
}
 |