/**
* 获取搜索条件
* @param $request 搜索条件
* @param $condition 已有条件
*/
public function getSearchCondStr($request, $condition = array()) {
$validRequest = array();
$objMActivity = new MActivity();
$mark_type = isset($request['mark_type']) ? $request['mark_type'] : '';
if($mark_type) {
$aids = $objMActivity->getsIdsByCondition(array('mark_type' => $mark_type, 'is_delete' => DActivity::IS_DELETE_FALSE));
if(isset($condition['aid'])) {
$tmpAid = is_array($condition['aid']) ? $condition['aid'] : array($condition['aid']);
$aids = array_intersect($tmpAid, $aids);
}
$condition['aid'] = $aids;
$validRequest['mark_type'] = $request['mark_type'];
}
// 活动名称模糊搜索
$activity_name = isset($request['activity_name']) ? $request['activity_name'] : '';
if ($activity_name){
$con = "`activity_name` LIKE '%{$activity_name}%'";
if($mark_type) {
$con .= " && mark_type='{$mark_type}'";
}
$aids = $objMActivity->getsIdsByCondition($con);
$condition['aid'] = $aids;
$validRequest['activity_name'] = $request['activity_name'];
}
// 用户昵称 模糊搜索
$nickname= isset($request['nickname']) ? $request['nickname'] : '';
if ($nickname){
$objMUser = new MUser();
$con = "`nickname` LIKE '%{$nickname}%'";
$uids = $objMUser->getsIdsByCondition($con);
$condition['uid'] = $uids;
$validRequest['nickname'] = $request['nickname'];
}
// 渠道名称模糊搜索 + 渠道地区搜索 begin
$channel_name = isset($request['channel_name']) ? $request['channel_name'] : '';
$c_province= isset($request['c_pid']) ? $request['c_pid'] : '';
$c_city= isset($request['c_cid']) ? $request['c_cid'] : '';
$c_part= isset($request['c_did']) ? $request['c_did'] : '';
$channel_condition = '1';
if ($c_province){
$channel_condition .= " and province = '{$c_province}'";
$validRequest['c_pid'] = $request['c_pid'];
}
if ($c_city){
$channel_condition .= " and city = '{$c_city}'";
$validRequest['c_cid'] = $request['c_cid'];
}
if ($c_part){
$channel_condition .= " and country = '{$c_part}'";
$validRequest['c_did'] = $request['c_did'];
}
if (!empty($channel_name)){
$channel_condition .= " and `channel_name` LIKE '%{$channel_name}%'";
$validRequest['channel_name'] = $request['channel_name'];
}
if($channel_condition != '1') {
$channel_condition .= " and is_delete=" . DChannel::IS_DELETE_FALSE;
$ojbMChannel = new MChannel();
$condition['cid'] = $ojbMChannel->getsIdsByCondition($channel_condition);
}
// 渠道名称模糊搜索 + 渠道地区搜索 end
$intFields = array(
'win_type' => 'win_status',
'lottery_type' => 'status',
);
foreach($intFields as $field => $reqField) {
if(isset($request[$reqField]) && Verify::naturalNumber($request[$reqField])) {
$condition[$field] = $request[$reqField];
$validRequest[$reqField] = $request[$reqField];
}
}
// 数据库真实字段 => 搜索字段
$normalFields = array(
'province' => 'pid',
'city' => 'cid',
'part' => 'did',
'aid' => 'aid',
'teacher_phone' => 'teacher_phone',
'teacher_email' => 'teacher_email',
'teacher' => 'teacher',
'is_use' => 'is_use',
'is_delete' => 'is_delete',
);
foreach($normalFields as $field => $reqField) {
if(isset($request[$reqField]) && $request[$reqField]) {
$condition[$field] = $request[$reqField];
$validRequest[$reqField] = $request[$reqField];
}
}
// 报名起止时间
$s_create_time = isset($request['s_create_time']) ? $request['s_create_time'] : '';
$e_create_time = isset($request['e_create_time']) ? $request['e_create_time'] : '';
if ($s_create_time && $e_create_time){
$condition[]['create_time'] = SqlHelper::addCompareOperator('>=', strtotime($s_create_time));
$condition[]['create_time'] = SqlHelper::addCompareOperator('<=', strtotime($e_create_time));
$validRequest['s_create_time'] = $request['s_create_time'];
$validRequest['e_create_time'] = $request['e_create_time'];
}
// 宝宝起止年龄
$baby_age_min= isset($request['baby_age_min']) ? $request['baby_age_min'] : '';
if ($baby_age_min){
$condition[]['baby_age'] = SqlHelper::addCompareOperator('>=',$baby_age_min);
}
$baby_age_max= isset($request['baby_age_max']) ? $request['baby_age_max'] : '';
if ($baby_age_max){
$condition[]['baby_age'] = SqlHelper::addCompareOperator('<=',$baby_age_max);
}
$condition = $this->objDao->parseCondition($condition);
$condition = str_replace('WHERE','', $condition);
$likeFields = array(
'works_name' => 'works_name',
'baby_name' => 'baby_name',
'school_address' => 'school_address',
'school_name' => 'school_name',
);
foreach($likeFields as $field => $reqField) {
if(isset($request[$reqField]) && $request[$reqField]) {
$condition .= ($condition ? ' && ' : '') . "`{$field}` LIKE '%" . $request[$reqField] . "%'";
$validRequest[$reqField] = $request[$reqField];
}
}
return array($condition, $validRequest);
}