From 527ddb706336d66a4116ceabb4cef7740911afa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=96=E5=8F=AB?= <392494244@qq.com> Date: Mon, 29 Jan 2024 16:03:12 +0800 Subject: [PATCH] 1 --- models/common/CommonGoodsEditForm.php | 24 ++++-- models/common/CommonGoodsListForm.php | 14 ++-- .../mall/CommonIntegralMallGoodsListForm.php | 76 +++++++++++-------- .../controllers/mall/GoodsController.php | 37 +++++++-- modules/admin/views/mall/goods/edit.php | 12 +++ .../mall/integral/GoodsController.php | 21 +++-- widgets/views/goods-sku.php | 58 ++------------ 7 files changed, 129 insertions(+), 113 deletions(-) diff --git a/models/common/CommonGoodsEditForm.php b/models/common/CommonGoodsEditForm.php index 5763bd2..58bcef7 100644 --- a/models/common/CommonGoodsEditForm.php +++ b/models/common/CommonGoodsEditForm.php @@ -72,7 +72,7 @@ class CommonGoodsEditForm extends Model { return [ [['name', 'subtitle', 'detail', 'cover_pic', 'video_url', 'unit', 'plugin_sign', 'goods_no',], 'trim'], - [['name', 'subtitle', 'detail', 'cover_pic', 'video_url', 'video_banner_urls', 'banner_urls', 'unit', 'plugin_sign', 'goods_no', 'date','signing_head_img','signing_foot_img'], 'string'], + [['name', 'subtitle', 'detail', 'cover_pic', 'video_url', 'video_banner_urls', 'banner_urls', 'unit', 'plugin_sign', 'goods_no', 'date', 'signing_head_img', 'signing_foot_img'], 'string'], [['original_price', 'cost_price', 'price', 'goods_weight'], 'number'], [['type', 'use_attr', 'goods_stock', 'virtual_sales', 'confine_count', 'freight_id', 'sort', 'cx_mch_id'], 'integer'], @@ -131,10 +131,16 @@ class CommonGoodsEditForm extends Model $this->model->freight_id = $this->freight_id; $this->model->sort = $this->sort; $this->model->status = 1; -// $this->handleAttrGroups(); -// $this->model->attr_groups = json_encode($this->attrGroups,JSON_UNESCAPED_UNICODE); - $this->model->attr_groups = 1; //商品规格组 用不到看表 0 不需要规格组 + $this->handleAttrGroups(); + + if ($this->attrGroups) { + $this->model->attr_groups = json_encode($this->attrGroups, JSON_UNESCAPED_UNICODE); + + $this->use_attr = 1; + $this->model->use_attr = $this->use_attr; +// $this->model->attr_groups = 1; //商品规格组 用不到看表 0 不需要规格组 + } $this->model->date = strtotime($this->date); //保存商品基础信息 @@ -142,7 +148,11 @@ class CommonGoodsEditForm extends Model //保存商品基础信息 $res1 = $this->saveGoodsCat(); - + $res2 = $this->saveGoodsAttr(); + if ($res2['code'] != 0) { + $t->rollBack(); + return $res; + } if ($res['code'] != 0 || $res1['code'] != 0) { $t->rollBack(); @@ -273,7 +283,7 @@ class CommonGoodsEditForm extends Model } $goodsAttr->goods_id = $this->model->id; $goodsAttr->sign_id = $signIds; - $goodsAttr->stock = $newAttr['stock']; + $goodsAttr->stock = 0; $goodsAttr->price = $newAttr['price']; $goodsAttr->serial_no = $newAttr['serial_no']; $goodsAttr->weight = $newAttr['weight'] ?: 0; @@ -290,7 +300,7 @@ class CommonGoodsEditForm extends Model if ($goodsStock > 9999999) { return $this->apiReturnError('商品总库存不能大于9999999'); } - $this->model->goods_stock = $goodsStock; + $this->model->goods_stock = 0; $res = $this->model->save(); if (!$res) { return $this->getModelError($this->model); diff --git a/models/common/CommonGoodsListForm.php b/models/common/CommonGoodsListForm.php index 09b85d9..297c1f6 100644 --- a/models/common/CommonGoodsListForm.php +++ b/models/common/CommonGoodsListForm.php @@ -165,10 +165,12 @@ class CommonGoodsListForm extends Model $item['cover_pic'] = SiteHelper::getFullUrl($item['cover_pic']); if ($this->scenario == 'detail') { - $item['detail'] = SiteHelper::repairContent($item['detail']); - $item['pic_urls'] = $this->fixPicUrls($item['pic_urls']); - $item['video_url'] = SiteHelper::getFullUrl($item['video_url']); - $item['goods_sales'] = $item['virtaul_sales'] + $item['sales']; + + +// $item['detail'] = SiteHelper::repairContent($item['detail']); +// $item['pic_urls'] = $this->fixPicUrls($item['pic_urls']); +// $item['video_url'] = SiteHelper::getFullUrl($item['video_url']); +// $item['goods_sales'] = $item['virtaul_sales'] + $item['sales']; $item['attr_groups'] = empty($item['attr_groups']) ? [] : json_decode($item['attr_groups'], true); $item['attr'] = $this->getAttr($item['id']); } @@ -300,10 +302,6 @@ class CommonGoodsListForm extends Model ]) ->select('gr.id,gr.goods_id,gr.price,gr.sign_id,gr.stock,gr.serial_no,gr.weight,gr.cover_pic') ->asArray()->all(); - foreach ($attr as $index => $item) { - $item['cover_pic'] = SiteHelper::getFullUrl($item['cover_pic']); - $attr[$index] = $item; - } return $attr; } diff --git a/models/common/integral/mall/CommonIntegralMallGoodsListForm.php b/models/common/integral/mall/CommonIntegralMallGoodsListForm.php index d573dde..cc8619a 100644 --- a/models/common/integral/mall/CommonIntegralMallGoodsListForm.php +++ b/models/common/integral/mall/CommonIntegralMallGoodsListForm.php @@ -5,10 +5,11 @@ * @description KISS * @date 2021年10月12日 * @version 1.0.0 - * + * * _____LOG_____ - * + * */ + namespace app\models\common\integral\mall; use app\models\common\CommonGoodsListForm; @@ -25,59 +26,72 @@ use app\components\Serializer; class CommonIntegralMallGoodsListForm extends CommonGoodsListForm { - - protected function getQuery($cat_query) + + protected function getQuery($cat_query) { $query = Goods::find()->alias('g') - ->leftJoin(['gh' => GoodsHub::tableName()],'gh.id=g.goods_hub_id') - ->leftJoin(['img' => IntegralMallGoods::tableName()],'img.goods_id=g.id') + ->leftJoin(['gh' => GoodsHub::tableName()], 'gh.id=g.goods_hub_id') + ->leftJoin(['img' => IntegralMallGoods::tableName()], 'img.goods_id=g.id') ->leftJoin(['gc' => $cat_query], 'gc.goods_hub_id=gh.id'); return $query; - } - + } + protected function handleList($list) { - foreach ($list as $index => $item){ - if(isset($item['status'])){ + foreach ($list as $index => $item) { + if (isset($item['status'])) { $item['status_cn'] = $item['status'] == Goods::STATUS_ONLINE ? '已上架' : '已下架'; } - $item['created_at_cn'] = date('Y-m-d H:i:s',$item['created_at']); - if(isset($item['goods_hub_id'])){ + $item['created_at_cn'] = date('Y-m-d H:i:s', $item['created_at']); + if (isset($item['goods_hub_id'])) { $item['cat_list'] = $this->getCatList($item['goods_hub_id']); } $item['cover_pic'] = SiteHelper::getFullUrl($item['cover_pic']); - if($this->scenario == 'detail'){ - $item['detail'] = SiteHelper::repairContent($item['detail']); - $item['pic_urls'] = $this->fixPicUrls($item['pic_urls']); - $item['video_url'] = SiteHelper::getFullUrl($item['video_url']); - $item['goods_sales'] = $item['virtaul_sales'] + $item['sales']; - $item['attr_groups'] = empty($item['attr_groups']) ? [] : json_decode($item['attr_groups'],true); - $item['attr'] = $this->getAttr($item['id']); - } + if ($this->scenario == 'detail') { +// $item['detail'] = SiteHelper::repairContent($item['detail']); +// $item['pic_urls'] = $this->fixPicUrls($item['pic_urls']); +// $item['video_url'] = SiteHelper::getFullUrl($item['video_url']); +// $item['goods_sales'] = $item['virtaul_sales'] + $item['sales']; + $item['attr_groups'] = empty($item['attr_groups']) ? [] : json_decode($item['attr_groups'], true); + $attr = $this->getAttr($item['id']); + + $attr = array_column($attr, 'price', 'sign_id'); + + if (is_array($item['attr_groups'])) { + + foreach ($item['attr_groups'] as $key => $value) { + +// unset($value['attr_group_name']); + unset($value['attr_group_id']); + + foreach ($value['attr_list'] as $key1 => $value1) { + $value['attr_list'][$key1]['price'] = $attr[$value1['attr_id']]; + } + $item['attr_groups'][$key] = $value; + } + } + + + } $list[$index] = $item; - } + } return $list; - } - + } + //获取商品规格 private function getAttr($goods_id) { $attr = GoodsAttr::find()->alias('gr') - ->leftJoin(['imgr' => IntegralMallGoodsAttr::tableName()],'imgr.goods_attr_id=gr.id') ->where([ 'gr.goods_id' => $goods_id, 'gr.is_delete' => 0, - 'imgr.is_delete' => 0 ]) - ->select('gr.id,gr.goods_id,gr.price,gr.sign_id,gr.stock,gr.serial_no,gr.weight,gr.cover_pic,imgr.integral_num') + ->select('gr.id,gr.goods_id,gr.price,gr.sign_id') ->asArray()->all(); - foreach($attr as $index => $item){ - $item['cover_pic'] = SiteHelper::getFullUrl($item['cover_pic']); - $attr[$index] = $item; - } + return $attr; - + } } diff --git a/modules/admin/controllers/mall/GoodsController.php b/modules/admin/controllers/mall/GoodsController.php index f7cefc2..b59c0ed 100644 --- a/modules/admin/controllers/mall/GoodsController.php +++ b/modules/admin/controllers/mall/GoodsController.php @@ -137,8 +137,6 @@ class GoodsController extends Controller if (\Yii::$app->request->isPost) { $form = new CommonGoodsEditForm(); $post = \Yii::$app->request->post(); - - $form->attributes = $post; $form->cx_mch_id = $this->cx_mch_id; $form->model = $model; @@ -196,17 +194,42 @@ class GoodsController extends Controller $model->date = date('Y', $model->date); -// var_dump($model->goodsHub->video_url); -// var_dump($model->goodsHub->video_banner_urls); -// -// die(); + + + $attr = []; + $attr_groups = []; + if ($model->use_attr == 1) { + $attr_groups = !empty($model->attr_groups) ? json_decode($model->attr_groups, true) : []; + $attr = GoodsAttr::find()->alias('ga') + ->where([ + 'ga.goods_id' => $model->id, + 'ga.is_delete' => 0 + ]) + ->select('ga.id,ga.price,ga.stock,ga.serial_no,ga.weight,ga.cover_pic,ga.sign_id') + ->asArray()->all(); + foreach ($attr as $index => $item) { + $item['attr_list'] = []; + $sign_ids = explode(':', $item['sign_id']); + foreach ($sign_ids as $attr_id) { + $attr_info = $this->getAttrInfo($attr_id, $attr_groups); + if (!empty($attr_info)) { + $item['attr_list'][] = $attr_info; + } + } + $attr[$index] = $item; + } + } + + + return $this->render('edit', [ 'cat_list' => $cat_list, 'cat_list1' => $cat_list1, 'cat_list2' => $cat_list2, 'cat_list3' => $cat_list3, 'cat_list4' => $cat_list4, - + 'attr' => $attr, + 'attr_groups' => $attr_groups, 'model' => $model, 'return_url' => $return_url, ]); diff --git a/modules/admin/views/mall/goods/edit.php b/modules/admin/views/mall/goods/edit.php index f532e08..f74d205 100644 --- a/modules/admin/views/mall/goods/edit.php +++ b/modules/admin/views/mall/goods/edit.php @@ -51,6 +51,12 @@ $this->params['breadcrumbs'][] = $this->title; ]) ?> +