new-admin-api/app/common/dao/user/VipExchangeCodeDao.php

78 lines
3.4 KiB
PHP

<?php
namespace app\common\dao\user;
use app\common\dao\BaseDao;
use app\common\model\user\UserVipExchangeCode;
class VipExchangeCodeDao extends BaseDao{
protected function getModel(): string{
return UserVipExchangeCode::class;
}
/**
* Common: 公共搜索模型
* Author: wu-hui
* Time: 2024/03/02 14:09
* @param array $params
* @return UserVipExchangeCode
*/
public function searchList(array $params){
return (new UserVipExchangeCode())
->when(isset($params['id']) && $params['id'] !== '',function($query) use ($params){
$query->where('id', (int)$params['id']);
})
->when(isset($params['batch_title']) && $params['batch_title'] !== '',function($query) use ($params){
$query->where('batch_title', $params['batch_title']);
})
->when(isset($params['batch_unique']) && $params['batch_unique'] !== '',function($query) use ($params){
$query->where('batch_unique', $params['batch_unique']);
})
->when(isset($params['exchange_code']) && $params['exchange_code'] !== '',function($query) use ($params){
$query->where('exchange_code', $params['exchange_code']);
})
->when(isset($params['status']) && $params['status'] !== '',function($query) use ($params){
$query->where('status', (int)$params['status']);
})
->when(isset($params['mer_id']) && $params['mer_id'] !== '' && (int)$params['mer_id'] > 0,function($query) use ($params){
$query->where('mer_id', (int)$params['mer_id']);
})
->when(isset($params['staff_id']) && $params['staff_id'] !== '' && (int)$params['staff_id'] > 0,function($query) use ($params){
$query->where('staff_id', (int)$params['staff_id']);
})
->when(isset($params['group_data_id']) && $params['group_data_id'] !== '',function($query) use ($params){
$query->where('group_data_id', (int)$params['group_data_id']);
})
->with([
'mer' => function($query){
$query->field(['mer_id','mer_name'])->bind(['mer_name']);
},
'vipInfo' => function($query){
$query->field(['group_data_id','value','value as svip_name','value as svip_price','value as svip_info'])->withAttr('svip_name',function($val){
$value = json_decode($val,TRUE);
return $value['svip_name'] ?? '';
})->withAttr('svip_price',function($val){
$value = json_decode($val,TRUE);
return $value['price'] ?? '';
})->withAttr('svip_info',function($val){
$value = json_decode($val,TRUE);
return $value ?? [];
})->bind(['svip_name','svip_price','svip_info']);
},
'user' => function($query){
$query->field('uid,nickname,avatar');
},
'staff' => function($query){
$query->field('service_id,nickname as staff_nickname,avatar as staff_avatar')->bind(['staff_nickname','staff_avatar']);
},
])
->order('create_time DESC,id DESC')
->append(['qr_code_text']);
}
}