/** * 根据条件过滤基金 */ public function actionFundFilter() { @set_time_limit(0); @ini_set('memory_limit', '1280M'); //清空数据表 try { $connection = \Yii::$app->db; $command = $connection->createCommand('TRUNCATE TABLE fund_filter'); $post = $command->execute(); var_dump($post); } catch (\Exception $e) { echo $e->getMessage() . PHP_EOL; } //执行类型1:基金总体盈利 FundFilter::saveType1(); //执行类型2:基金半年盈利 FundFilter::saveType2(); //执行类型3:基金成立超过半年 FundFilter::saveType3(); //执行类型4:最大涨幅大于最大跌幅 FundFilter::saveType4(); //执行类型5:涨幅超过5%的天数是跌幅超过5%的天数的2倍 FundFilter::saveType5(); //执行类型6:增长天数是下跌天数5倍 FundFilter::saveType6(); //执行类型7:80%周数在上涨 FundFilter::saveType7(); //执行类型8:2015年1月到6月每月涨幅排名都在前100的基金 //FundFilter::saveType8(); //执行类型9:2015年9月到12月每月涨幅排名都在前100的基金 //FundFilter::saveType9(); }
/** * 获取根据基金筛选条件进行筛选的结果 * @return array|string */ public function actionFundFilter() { Yii::$app->response->format = Response::FORMAT_JSON; if (Yii::$app->request->isPost) { $type = Yii::$app->request->post('type'); if (!$type) { return ''; } $num = []; foreach ($type as $v) { $data = FundFilter::find()->select('fund_num')->distinct()->where(['type' => $v])->all(); $n = ArrayHelper::getColumn($data, 'fund_num'); $num = array_merge($n, $num); } $res = array_count_values($num); $array = []; foreach ($res as $num => $v) { if ($v === count($type)) { $array[] = $num; } } return $array; } return ''; }
/** * 根据基金筛选条件进行筛选 * @return string */ public function actionIndex() { $init = [FundFilter::TYPE_1, FundFilter::TYPE_2, FundFilter::TYPE_3, FundFilter::TYPE_4, FundFilter::TYPE_7]; $types = FundFilter::getAllTypeName(); return $this->render('index', ['types' => $types, 'init' => $init]); }
/** * 执行类型1:基金总体盈利 */ public static function saveType1() { $sql = "SELECT fund_num,SUM(rate+0) AS r FROM fund_history GROUP BY fund_num HAVING r>0"; $connection = \Yii::$app->db; $command = $connection->createCommand($sql); $posts = $command->queryAll(); $nums = ArrayHelper::getColumn($posts, 'fund_num'); FundFilter::saveFilter(self::TYPE_1, $nums); }