コード例 #1
0
 /**
  * Creates a new Shipping model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new Shipping();
     $model->isdel = 0;
     if (Yii::$app->request->post()) {
         $post = Yii::$app->request->post();
         $data = [];
         if (isset($post['Shipping']['data'])) {
             $data = $post['Shipping']['data'];
             $post['Shipping']['data'] = json_encode($data);
         }
         $model->load($post);
         if ($model->save()) {
             //return $this->redirect(['view', 'id' => $model->id]);
             return $this->redirect(['admin']);
         } else {
             $model->data = json_encode($data);
         }
     }
     return $this->render('create', ['model' => $model]);
 }
コード例 #2
0
ファイル: Helpers.php プロジェクト: highestgoodlikewater/yes
 public static function importCsv($f, $data = false, $dn = false)
 {
     $session = Yii::$app->session;
     if (!$data) {
         $header = false;
         $data = [];
         while ($row = fgetcsv($f)) {
             if (!$header) {
                 foreach ($row as $r) {
                     $header[] = $r;
                 }
             } else {
                 $d = [];
                 foreach ($row as $i => $r) {
                     $h = $header[$i];
                     $d[$h] = $r;
                 }
                 $data[] = $d;
             }
         }
         $session["yes-shipping-f"] = $data;
     }
     $dno = $dn ? $dn : $session["yes-shipping-dn"];
     $transaction = Yii::$app->db->beginTransaction();
     $res = true;
     $error = [];
     try {
         if ($dno >= 0) {
             //foreach ($data as $d)
             for ($dni = 0; $dni < 100; $dni++) {
                 $dn = $dno + $dni;
                 if (isset($data[$dn])) {
                     $d = $data[$dn];
                     if (isset($d["cost"]) && isset($d["provider"]) && isset($d["remarks"]) && isset($d["city"]) && isset($d["area"]) && isset($d["code"])) {
                         if (floatval($d["cost"]) > 0) {
                             $model = Shipping::find()->where('code = :code OR (city = :city AND area = :area)', [':code' => $d["code"], ':city' => $d["city"], ':area' => $d["area"]])->one();
                             if (!$model) {
                                 $model = new Shipping();
                             }
                             $old = empty($model->data) ? [] : json_decode($model->data, true);
                             $exists = false;
                             $n = 1;
                             $new = [];
                             foreach ($old as $o) {
                                 if ($o["provider"] == $d["provider"]) {
                                     $exists = true;
                                     $o["cost"] = $d["cost"];
                                     $o["remarks"] = $d["remarks"];
                                 }
                                 $new[] = $o;
                                 $n += 1;
                             }
                             if (!$exists) {
                                 $new[$n . ""] = ["provider" => $d["provider"], "cost" => $d["cost"], "remarks" => $d["remarks"]];
                             }
                             $model->code = $d["code"];
                             $model->city = $d["city"];
                             $model->area = $d["area"];
                             $model->data = json_encode($new);
                             $model->isdel = 0;
                             $model->status = 1;
                             if (!$model->save()) {
                                 $res = $res ? false : $res;
                                 $error[] = [$model->attributes, $model->getErrors()];
                             }
                         }
                     }
                 }
             }
         }
         if ($dn >= count($data) || $dn < 0) {
             unset($session["yes-shipping-f"]);
             unset($session["yes-shipping-dn"]);
             $data = [];
         }
         if ($res) {
             $transaction->commit();
         } else {
             $transaction->rollBack();
         }
     } catch (Exception $e) {
         $transaction->rollBack();
     }
     $session["yes-shipping-dn"] = $dn;
     if ($res) {
         return ["status" => $res, "count" => count($data), "n" => $dn];
     } else {
         return ["status" => $res, "count" => count($data), "n" => $dn, "error" => $error];
     }
 }