quanwei
2025-11-01 121b714d710cf3c865f4a1b5efe81abec11056d1
admin/app/common/model/plus/business/Business.php
@@ -1,6 +1,7 @@
<?php
namespace app\common\model\plus\business;
use app\common\model\BaseModel;
use app\common\model\settings\Region;
@@ -9,7 +10,7 @@
 */
class Business extends BaseModel
{
    protected $name='business_card';
    protected $name = 'business_card';
    /**
     * 追加字段
     * @var string[]
@@ -30,60 +31,88 @@
            'region' => $data['region_id'] == 0 ? '' : Region::getNameById($data['region_id']),
        ];
    }
    public function getSexAttr($value){
        $data=[10=>'未知',20=>'男',30=>'女'];
    public function getSexAttr($value)
    {
        $data = [10 => '未知', 20 => '男', 30 => '女'];
        return $data[$value];
    }
    /**
     * 关联用户
     * @return \think\model\relation\HasOne
     */
    public function user(){
        $model=self::getCalledModule()?:'common';
        return $this->hasOne("app\\$model\\model\\user\\User",'user_id','user_id');
    public function user()
    {
        $model = self::getCalledModule() ?: 'common';
        return $this->hasOne("app\\$model\\model\\user\\User", 'user_id', 'user_id');
    }
    /**
     * 头像
     * @return \think\model\relation\HasOne
     */
    public function image(){
        $model=self::getCalledModule()?:'common';
        return $this->hasOne("app\\$model\\model\\file\\UploadFile",'file_id','file_id')->bind(['file_path']);
    public function image()
    {
        $model = self::getCalledModule() ?: 'common';
        return $this->hasOne("app\\$model\\model\\file\\UploadFile", 'file_id', 'file_id')->bind(['file_path']);
    }
    /**
     * logo
     * @return \think\model\relation\HasOne
     */
    public function logoImage(){
        $model=self::getCalledModule()?:'common';
        return $this->hasOne("app\\$model\\model\\file\\UploadFile",'file_id','logo')->bind(['file_path']);
    public function logoImage()
    {
        $model = self::getCalledModule() ?: 'common';
        return $this->hasOne("app\\$model\\model\\file\\UploadFile", 'file_id', 'logo');
    }
    /**
     * 等级
     * @return \think\model\relation\HasOne
     */
    public function grade()
    {
        $model = self::getCalledModule() ?: 'common';
        return $this->hasOne("app\\$model\\model\\plus\\business\\Grade", 'grade_id', 'grade_id');
    }
    public function industry()
    {
        $model = self::getCalledModule() ?: 'common';
        return $this->hasOne("app\\$model\\model\\plus\\business\\Industry", 'industry_id', 'industry_id');
    }
    /**
     * 添加
     * @param $data
     * @return false|int
     */
    public function add($data){
        $data['app_id']=self::$app_id;
        $data['grade_id']=(new Grade())->getDefaultGradeId();
    public function add($data)
    {
        $data['app_id'] = self::$app_id;
        $data['grade_id'] = (new Grade())->getDefaultGradeId();
        return $this->save($data);
    }
    public function getUnitAttr($name)
    {
        return json_decode($name);
    }
    public function getDutiesAttr($name)
    {
        return json_decode($name);
    }
    public function getAddressAttr($name)
    {
        return json_decode($name);
    }
    public function getPositionAttr($name)
    {
        return $name?json_decode($name):[];
        return $name ? json_decode($name) : [];
    }
    /**
@@ -92,32 +121,53 @@
     * @return \think\Paginator
     * @throws \think\db\exception\DbException
     */
    public function getList($param=[]){
        $paramr=array_merge(['listRow'=>15],$param);
        $where=[];
        !empty($paramr['name'])&&$where['name']=['like','%'.$paramr['name'].'%'];
        !empty($paramr['search'])&&$where['name|duties|unit']=['like','%'.$paramr['search'].'%'];
        !empty($paramr['user_id'])&&$where['user_id']=$paramr['user_id'];
        if(!empty($paramr['sort'])){
            if($paramr['sort']=='name'){
                $order=['name'=>"asc"];
            }else if($paramr['sort']=='time'){
                $order=['create_time'=>"asc"];
            }else{
                $order=['unit'=>"asc"];
    public function getList($param = [])
    {
        $paramr = array_merge(['listRow' => 15], $param);
        $where = [];
        !empty($paramr['name']) && $where['name'] = ['like', '%' . $paramr['name'] . '%'];
        !empty($paramr['search']) && $where['name|duties|unit'] = ['like', '%' . $paramr['search'] . '%'];
        !empty($paramr['user_id']) && $where['user_id'] = $paramr['user_id'];
        !empty($paramr['industry_id']) && $where['industry_id'] = $paramr['industry_id'];
        !empty($paramr['province_id']) && $where['province_id'] = $paramr['province_id'];
        !empty($paramr['city_id']) && $where['city_id'] = $paramr['city_id'];
        !empty($paramr['region_id']) && $where['region_id'] = $paramr['region_id'];
        if (!empty($paramr['sort'])) {
            if ($paramr['sort'] == 'name') {
                $order = ['name' => "asc"];
            } else if ($paramr['sort'] == 'time') {
                $order = ['create_time' => "asc"];
            } else {
                $order = ['unit' => "asc"];
            }
        }else{
            $order=['is_default'=>'desc','create_time'=>'desc'];
        } else {
            // 检查置顶时间是否过期,如果过期则设置为非置顶
            $this->checkTopExpire();
            // 按置顶状态和创建时间排序
            $order = ['is_top' => 'desc', 'top_time' => 'desc', 'create_time' => 'desc'];
        }
        return $this->with(['user','image','logoImage'])->order($order)->where($where)->paginate($paramr);
        return $this->with(['user', 'image', 'logoImage', 'grade'])->order($order)->where($where)->paginate($paramr);
    }
    /**
     * 检查并更新过期的置顶名片
     */
    private function checkTopExpire()
    {
        $this->where('is_top', 1)
            ->where('top_time', '<', time())
            ->update(['is_top' => 0]);
    }
    /**
     * 获取名片详情
     * @param $business_card_id
     * @return array|false|\think\Model|null
     * @throws \think\db\exception\DbException
     */
    public function detail($business_card_id){
        return $this->with(['user','image','logoImage'])->where(['business_card_id'=>$business_card_id])->find();
    public static function detail($business_card_id)
    {
        return (new self())->with(['user', 'image', 'logoImage', 'grade', 'industry'])->where(['business_card_id' => $business_card_id])->find();
    }
}