77 lines
2.8 KiB
PHP
77 lines
2.8 KiB
PHP
<?php
|
|
namespace app\common\dao\system\merchant;
|
|
|
|
|
|
use app\common\dao\BaseDao;
|
|
use app\common\model\system\merchant\MerchantShareholder;
|
|
use app\common\repositories\system\merchant\MerchantShareholderLevelRepository;
|
|
use app\common\repositories\user\UserRepository;
|
|
|
|
class MerchantShareholderDao extends BaseDao{
|
|
|
|
protected function getModel(): string{
|
|
return MerchantShareholder::class;
|
|
}
|
|
/**
|
|
* Common: 公共查询模型
|
|
* Author: wu-hui
|
|
* Time: 2024/06/13 11:31
|
|
* @param array $params
|
|
* @return MerchantShareholder
|
|
*/
|
|
public function searchModel(array $params){
|
|
return (new MerchantShareholder())
|
|
->when(isset($params['id']) && $params['id'] !== '',function($query) use ($params){
|
|
$query->where('id', (int)$params['id']);
|
|
})
|
|
->when(isset($params['uid']) && $params['uid'] !== '',function($query) use ($params){
|
|
$query->where('uid', (int)$params['uid']);
|
|
})
|
|
->when(isset($params['mer_id']) && $params['mer_id'] !== '',function($query) use ($params){
|
|
$query->where('mer_id', (int)$params['mer_id']);
|
|
})
|
|
->when(isset($params['level_id']) && $params['level_id'] !== '',function($query) use ($params){
|
|
$query->where('level_id', (int)$params['level_id']);
|
|
})
|
|
->when(isset($params['status']) && $params['status'] !== '',function($query) use ($params){
|
|
$query->where('status', (int)$params['status']);
|
|
})
|
|
->when(isset($params['merchant_type']) && $params['merchant_type'] !== '',function($query) use ($params){
|
|
$levelIds = app()->make(MerchantShareholderLevelRepository::class)
|
|
->getSearchModel(['merchant_type'=>$params['merchant_type']])
|
|
->column('id');
|
|
|
|
$query->whereIn('level_id', $levelIds);
|
|
})
|
|
->when(isset($params['search_text']) && $params['search_text'] !== '',function($query) use ($params){
|
|
$uids = app()
|
|
->make(UserRepository::class)
|
|
->getSearch([])
|
|
->where('uid|nickname|phone','like',"%{$params['search_text']}%")
|
|
->column('uid');
|
|
$query->whereIn('uid', $uids);
|
|
})
|
|
->with([
|
|
'user' => function($query){
|
|
$query->field('uid,nickname,avatar,phone');
|
|
},
|
|
'merchant' => function($query){
|
|
$query->field('mer_id,mer_avatar,mer_name');
|
|
},
|
|
'level' => function($query){
|
|
$query->field('id,title as level_name')->bind(['level_name']);
|
|
}
|
|
])
|
|
->order('create_time DESC,id DESC');
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|