public function actionUpdate($id)
{
$model = $this->loadModel($id);
$model->scenario = 'update';
$upload = new XUploadForm();
$image = new ItemImg();
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValisdation($model);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
$action = 'item';
$skuIds = array();
if (isset($_POST['Item'])) {
$model->attributes = $_POST['Item'];
if ($_POST['Item']['props']) {
$model->props = CJSON::encode($_POST['Item']['props']);
}
if ($_POST['Item']['skus']) {
$model->skus = CJSON::encode($_POST['Item']['skus']);
foreach ($_POST['Item']['skus']['table'] as $s_key => $s_value) {
if ($s_value['sku_id'] > 0) {
$sku = Sku::model()->findByPk($s_value['sku_id']);
$sku->props = CJSON::encode($s_value['props']);
$sku->quantity = $s_value['quantity'];
$sku->price = $s_value['price'];
$sku->outer_id = $s_value['outer_id'];
$sku->status = $s_value ? 'normal' : 'deleted';
$sku->save();
$skuIds[] = $sku->sku_id;
} else {
$jsp = CJSON::encode($s_value['props']);
$sku = Sku::model()->findByAttributes(array("props" => $jsp, "item_id" => $model->item_id));
if (!$sku) {
$sku = new Sku();
$sku->item_id = $model->item_id;
}
$sku->props = $jsp;
$sku->quantity = $s_value['quantity'];
$sku->price = $s_value['price'];
$sku->outer_id = $s_value['outer_id'];
$sku->status = $s_value ? 'normal' : 'deleted';
$sku->save();
if ($sku->sku_id > 0) {
$skuIds[] = $sku->sku_id;
}
}
}
//删除
$rawData = Sku::model()->findAll('item_id = ' . $model->item_id);
$delArr = array();
foreach ($rawData as $k1 => $v1) {
if (!in_array($v1->sku_id, $skuIds)) {
$delArr[] = $v1->sku_id;
}
}
if (count($delArr)) {
Sku::model()->updateAll(array("status" => "deleted"), 'sku_id IN (' . implode(', ', $delArr) . ')');
}
}
$model->skus_data = implode(",", $skuIds);
if ($model->save()) {
//$this->redirect(array('view', 'id' => $model->item_id));
}
}
$this->render('update', array('model' => $model, 'image' => $image, 'upload' => $upload));
}