/** * 获取搜索条件 * @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); }