예제 #1
0
 /**
  * 获取制定基金类型名称
  * @param $num
  * @return string
  */
 public static function getTypeName($num)
 {
     $fund = FundNum::find()->where(['fund_num' => $num])->one();
     if (!$fund) {
         return '';
     }
     $type = $fund->fund_type;
     switch ($type) {
         case self::TYPE_ZQ:
             $name = '债券';
             break;
         case self::TYPE_GG:
             $name = '股票';
             break;
         case self::TYPE_ZS:
             $name = '指数';
             break;
         case self::TYPE_HH:
             $name = '混合';
             break;
         case self::TYPE_BB:
             $name = '保本';
             break;
         default:
             $name = '';
     }
     return $name;
 }
예제 #2
0
 /**
  * 查看一段时间基金排名
  * @param string $type
  * @return array|string
  */
 public function actionSort($type = '')
 {
     if (\Yii::$app->request->isPost) {
         $start = Html::encode(Yii::$app->request->post('start'));
         $end = Html::encode(Yii::$app->request->post('end'));
         if ($start && $end) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             $connection = Yii::$app->db;
             if ($type) {
                 $nums = FundNum::find()->select('fund_num')->distinct()->where(['fund_type' => $type])->asArray()->all();
                 $nums = ArrayHelper::getColumn($nums, 'fund_num');
                 $nums = '(\'' . implode('\',\'', $nums) . '\')';
                 $sql = "SELECT `fund_num`,sum(rate+0) as rate FROM fund_history WHERE fund_num IN " . $nums . " AND  ( UNIX_TIMESTAMP(`date`) BETWEEN UNIX_TIMESTAMP('" . $start . "') AND UNIX_TIMESTAMP('" . $end . "')) GROUP BY fund_num ORDER BY rate DESC LIMIT 100";
             } else {
                 $sql = "SELECT `fund_num`,sum(rate+0) as rate FROM fund_history WHERE  ( UNIX_TIMESTAMP(`date`) BETWEEN UNIX_TIMESTAMP('" . $start . "') AND UNIX_TIMESTAMP('" . $end . "')) GROUP BY fund_num ORDER BY rate DESC LIMIT 100";
             }
             $command = $connection->createCommand($sql);
             $posts = $command->queryAll();
             return $posts;
         } else {
             return '';
         }
     } else {
         return $this->render('sort', ['datas' => [], 'type' => $type]);
     }
 }
예제 #3
0
 public function actionNum()
 {
     @set_time_limit(0);
     @ini_set('memory_limit', '1280M');
     $client = new Client();
     foreach ($this->url as $type => $u) {
         $crawler = $client->request('GET', $u);
         $result = $crawler->text();
         $result = trim($result, 'g');
         $result = trim($result, '(');
         $result = trim($result, ')');
         $data_area = json_decode($result, true);
         foreach ($data_area['data']['data'] as $key => $v) {
             $model = FundNum::find()->where(['fund_num' => $v['code'], 'fund_type' => $type])->one();
             if (!$model) {
                 $model = new FundNum(['fund_num' => $v['code'], 'fund_type' => $type]);
                 $model->save();
             }
         }
     }
 }
예제 #4
0
 /**
  * ajax处理每周重复数据
  * @return array|string
  */
 public function actionGetWeekDuplicate()
 {
     $nums = FundNum::find()->select('fund_num')->distinct()->where(['fund_type' => FundNum::TYPE_HH])->asArray()->all();
     $nums = ArrayHelper::getColumn($nums, 'fund_num');
     $nums = '(\'' . implode('\',\'', $nums) . '\')';
     if (Yii::$app->request->isPost) {
         $w = Yii::$app->request->post('w');
         if (count($w) > 0) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             $posts = [];
             foreach ($w as $k => $v) {
                 if ($k == 5) {
                     break;
                 }
                 $connection = Yii::$app->db;
                 $command = $connection->createCommand("SELECT `fund_num`,WEEK(`date`) as `week`,sum(rate+0) as rate FROM fund_history WHERE fund_num IN " . $nums . " AND YEAR(`date`) = 2016 AND WEEK(`date`)=" . $v . " GROUP BY fund_num,`week` ORDER BY rate DESC LIMIT 100");
                 $posts = array_merge($posts, ArrayHelper::getColumn($command->queryAll(), 'fund_num'));
             }
             $count = array_count_values($posts);
             foreach ($count as $key => $v) {
                 if ($v !== count($w)) {
                     unset($count[$key]);
                 }
             }
             return array_keys($count);
         }
     }
     return '';
 }
예제 #5
0
 /**
  * 执行类型5:涨幅超过5%的天数是跌幅超过5%的天数的2倍
  */
 public static function saveType5()
 {
     $fund_nums = FundNum::find()->all();
     foreach ($fund_nums as $v) {
         $biggerCount = FundHistory::biggerCount($v->fund_num, 5);
         $smallerCount = FundHistory::smallerCount($v->fund_num, -5);
         if ($biggerCount >= $smallerCount * 2) {
             $model = new self(['type' => self::TYPE_5, 'date' => date('Y-m-d'), 'fund_num' => $v->fund_num]);
             $model->save();
         }
     }
 }