/** * Creates a new Comercios model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Comercios(); if ($model->load(Yii::$app->request->post())) { $cantProd = count($model->productos); $productos = ArrayHelper::map(Productos::find()->all(), 'idProd', 'nombre'); /*se crea el stock inicial para el comercio*/ for ($i = 0; $i < $cantProd; $i++) { $id = $model->productos[$i]; $modelStock = new Stock(); $modelStock->nombreComercio = $model->nombre; $modelStock->cantidadEnStock = 0; $modelStock->nombreProducto = $productos[$id]; $modelStock->save(); } $address = urlencode($model->direccion); $url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=" . $address; $response = file_get_contents($url); $json = json_decode($response, true); if ($json['status'] == 'ZERO_RESULTS') { return array(); } $model->latitud = json_encode($json['results'][0]['geometry']['location']['lat']); $model->longitud = json_encode($json['results'][0]['geometry']['location']['lng']); if ($model->save()) { return $this->redirect(['view', 'id' => $model->idComercio]); } } else { return $this->render('create', ['model' => $model]); } }
/** * Creates a new Stock model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Stock(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->idStock]); } else { return $this->render('create', ['model' => $model]); } }
/** * 同步当前股票信息 */ public function actionSyncStock() { $sleep = 5; while (true) { try { $hourm = intval(date('Hm')); if ($hourm > 900 && $hourm < 1135 || $hourm > 1300 && $hourm < 1510) { $pici = time(); $url_arr = ['http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1&num=10000&sort=changepercent&asc=0&node=sz_a&symbol=&_s_r_a=page&time=' . time(), 'http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1&num=10000&sort=changepercent&asc=0&node=sh_a&symbol=&_s_r_a=page']; foreach ($url_arr as $url) { $return_arr = Common::reqUrl($url, [], true, 30, true); if ($return_arr['content']) { $arr = Common::ext_json_decode(mb_convert_encoding($return_arr['content'], "utf-8", "gbk"), true); if ($arr) { foreach ($arr as $row) { $Stock = Stock::find()->where(['symbol' => $row['symbol']])->one(); if ($Stock) { $Stock->scenario = 'update'; } else { $Stock = new Stock(['scenario' => 'create']); $Stock->updated_at = time(); } $save_arr = []; $save_arr['Stock'] = $row; if ($Stock->id && $row['trade'] != $Stock->trade) { $StockLog = new StockLog(['scenario' => 'create']); $StockLog->stock_id = $Stock->id; $StockLog->pici = $pici; $StockLog->setAttributes($Stock->attributes); $StockLog->id = ''; $StockLog->save(); } if ($Stock->load($save_arr) && $Stock->save()) { } } } } } } sleep($sleep); } catch (Exception $e) { } } }
public function actionStock() { $params = Yii::$app->getRequest()->post(); $user = User::findIdentityByAccessToken($params['muli_token']); $valid = false; //return $params; $arrayStock = $params['stock']; foreach ($arrayStock as $stockEnv) { $rutaDiaria = RutaDiaria::find()->where(['id_usuario' => $user->id])->andWhere(['fecha' => date('Y-m-d')])->one(); $rutaDiariaComercio = RutaDiariaComercio::find()->where(['id_comercio' => $params['id_comercio']])->andWhere(['id_ruta_diaria' => $rutaDiaria->id])->one(); $stockIdProd = Stock::find()->where(['id_producto' => $stockEnv['id_producto']])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercio->id])->one(); if ($stockIdProd != null) { $stock = $stockIdProd; $stock->setAttribute('cantidad', $stockEnv['cant']); } else { $stock = new Stock(); $stock->setAttribute('id_ruta_diaria_com', $rutaDiariaComercio->id); $stock->setAttribute('id_producto', $stockEnv['id_producto']); $stock->setAttribute('cantidad', $stockEnv['cant']); } if ($stock->cantidad != 0) { if ($stock->validate()) { if ($stockIdProd != null) { //es un update del Stock, podemos haber realizado ya el calculo de la venta. $rutaDiariaComercioFecha = RutaDiariaComercio::find()->where('ruta_diaria_comercio.id !=' . $rutaDiariaComercio->id)->andWhere('ruta_diaria_comercio.id_ruta_diaria!=' . $rutaDiariaComercio->id_ruta_diaria)->andWhere(['ruta_diaria_comercio.id_comercio' => $rutaDiariaComercio->id_comercio])->joinWith(['idRutaDiaria' => function ($query) { //$query->where('MAX(ruta_diaria.fecha)'); $query->groupBy('ruta_diaria.id')->having('MAX(ruta_diaria.fecha)')->orderBy('fecha DESC'); }])->one(); $stockAnterior = Stock::find()->where(['id_producto' => $stock->id_producto])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercioFecha->id])->one(); $pedidoAnterior = Pedido::find()->where(['id_producto' => $stock->id_producto])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercioFecha->id])->one(); if ($stockAnterior != null) { $vendidos = $stockAnterior->cantidad - $stock->cantidad; if ($pedidoAnterior != null) { $vendidos = $vendidos + $pedidoAnterior->cantidad; } $compraProducto = ComercioProducto::find()->where(['id_comercio' => $params['id_comercio']])->andWhere(['id_producto' => $stock->id_producto])->andWhere(['fecha' => date('Y-m-d')])->one(); $compraProducto->setAttribute('vendidos', $vendidos); $compraProducto->save(); } } else { $rutaDiariaComercioFecha = RutaDiariaComercio::find()->where('ruta_diaria_comercio.id !=' . $rutaDiariaComercio->id)->andWhere('ruta_diaria_comercio.id_ruta_diaria!=' . $rutaDiariaComercio->id_ruta_diaria)->andWhere(['ruta_diaria_comercio.id_comercio' => $rutaDiariaComercio->id_comercio])->joinWith(['idRutaDiaria' => function ($query) { //$query->where('MAX(ruta_diaria.fecha)'); $query->groupBy('ruta_diaria.id')->having('MAX(ruta_diaria.fecha)')->orderBy('fecha DESC'); }])->one(); if ($rutaDiariaComercioFecha != null) { //return "existe?:".$stock->id_producto; $stockAnterior = Stock::find()->where(['id_producto' => $stock->id_producto])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercioFecha->id])->one(); $pedidoAnterior = Pedido::find()->where(['id_producto' => $stock->id_producto])->andWhere(['id_ruta_diaria_com' => $rutaDiariaComercioFecha->id])->one(); if ($stockAnterior != null) { $vendidos = $stockAnterior->cantidad - $stock->cantidad; if ($pedidoAnterior != null) { $vendidos = $vendidos + $pedidoAnterior->cantidad; } $compraProducto = new ComercioProducto(); $compraProducto->setAttribute('vendidos', $vendidos); $compraProducto->setAttribute('id_comercio', $params['id_comercio']); $compraProducto->setAttribute('id_producto', $stock->id_producto); $compraProducto->setAttribute('fecha', date('Y-m-d')); $compraProducto->save(); } } } if ($stock->save()) { $valid = true; } else { $valid = false; } } else { throw new BadRequestHttpException(Yii::t('mobile', 'Failed to save orders data...')); } } else { if ($stock->validate()) { $valid = true; } else { throw new BadRequestHttpException(Yii::t('mobile', 'Failed to save orders data...')); } } } return $valid; }