bztang-admin/app/backend/modules/goods/models/GoodsSpec.php

103 lines
4.0 KiB
PHP

<?php
/**
* Created by PhpStorm.
* Author:
* Date: 2017/2/22
* Time: 下午18:16
*/
namespace app\backend\modules\goods\models;
//use \app\common\models\GoodsSpecItem;
class GoodsSpec extends \app\common\models\GoodsSpec
{
static protected $needLog = true;
public static $spec_items = [];
public static function saveSpec($specPost, $goods_id, $uniacid)
{
$data['type'] = 1; //todo, 需要传递商品信息进来
$spec_ids = $specPost->spec_id;
//dd($spec_ids);
$spec_titles = $specPost->spec_title;
$specids = [];
$spenLen = count($spec_ids);
$specids = [];
$spec_items = [];
for ($specIndex = 0; $specIndex < $spenLen; $specIndex++) {
$spec_id = "";
$get_spec_id = $spec_ids[$specIndex];
$spec = array(
"uniacid" => $uniacid,
"goods_id" => $goods_id,
"display_order" => $specIndex,
"title" => $spec_titles[$get_spec_id]
);
if (is_numeric($get_spec_id)) {
static::updateOrCreate(['id' => $get_spec_id], $spec);
$spec_id = $get_spec_id;
} else {
$goods_spec = static::Create($spec);
//dd($goods_spec);
$spec_id = $goods_spec->id;
}
$spec_ids_attr = "spec_item_id_" . $get_spec_id;
$spec_item_titles_attr = "spec_item_title_" . $get_spec_id;
$spec_item_shows_attr = "spec_item_show_" . $get_spec_id;
$spec_item_thumbs_attr = "spec_item_thumb_" . $get_spec_id;
$spec_item_oldthumbs_attr = "spec_item_oldthumb_" . $get_spec_id;
$spec_item_virtuals_attr = "spec_item_virtual_" . $get_spec_id;
$spec_item_ids = $specPost->$spec_ids_attr;
$spec_item_titles = $specPost->$spec_item_titles_attr;
//dd($specPost);
$spec_item_shows = $specPost->$spec_item_shows_attr;
$spec_item_thumbs = $specPost->$spec_item_thumbs_attr;
$spec_item_oldthumbs = $specPost->$spec_item_oldthumbs_attr;
$spec_item_virtuals = $specPost->$spec_item_virtuals_attr;
$itemlen = count($spec_item_ids);
$itemids = [];
for ($n = 0; $n < $itemlen; $n++) {
$item_id = "";
$get_item_id = $spec_item_ids[$n];
$specItem = [
"uniacid" => $uniacid,
"specid" => $spec_id,
"display_order" => $n,
"title" => $spec_item_titles[$n],
"show" => $spec_item_shows[$n],
"thumb" => $spec_item_thumbs[$n],
"virtual" => $data['type'] == 3 ? $spec_item_virtuals[$n] : 0
];
//$f = "spec_item_thumb_" . $get_item_id;
if (is_numeric($get_item_id)) {
GoodsSpecItem::updateOrCreate(['id' => $get_item_id], $specItem);
$item_id = $get_item_id;
} else {
$goods_spec_item = GoodsSpecItem::Create($specItem);
//dd($goods_spec_item);
$item_id = $goods_spec_item->id;
}
$itemids[] = $item_id;
$specItem['get_id'] = $get_item_id;
$specItem['id'] = $item_id;
$spec_items[] = $specItem;
self::$spec_items = $spec_items;
}
if (count($itemids) > 0) {
GoodsSpecItem::where('specid', '=', $spec_id)->whereNotIn('id', $itemids )->delete();
} else {
GoodsSpecItem::where('specid', '=', $spec_id)->delete();
}
static::updateOrCreate(['id' => $spec_id], ['content' => serialize($itemids)]);
$specids[] = $spec_id;
}
if (count($specids) > 0) {
static::where('goods_id', '=', $goods_id)->whereNotIn('id', $specids )->delete();
} else {
static::where('goods_id', '=', $goods_id)->delete();
}
}
}