WIN-2308041133\Administrator 1 miesiąc temu
rodzic
commit
19c42409b2

+ 5 - 1
app/admin/controller/store/StoreProduct.php

@@ -651,7 +651,7 @@ class StoreProduct extends AuthController
 //            sort($item['detail'], SORT_STRING);
             $suk = implode(',', $item['detail']);
             if ($id) {
-                $sukValue = StoreProductAttrValue::where('product_id', $id)->where('type', 0)->where('suk', $suk)->column('bar_code,cost,price,ot_price,integral,stock,image as pic,weight,volume,brokerage,brokerage_two', 'suk');
+                $sukValue = StoreProductAttrValue::where('product_id', $id)->where('type', 0)->where('suk', $suk)->column('bar_code,cost,price,ot_price,integral,stock,image as pic,weight,volume,brokerage,brokerage_two,dealer_visible_grade', 'suk');
                 if (!count($sukValue)) {
                     $sukValue[$suk]['pic'] = '';
                     $sukValue[$suk]['price'] = 0;
@@ -664,6 +664,7 @@ class StoreProduct extends AuthController
                     $sukValue[$suk]['volume'] = 0;
                     $sukValue[$suk]['brokerage'] = 0;
                     $sukValue[$suk]['brokerage_two'] = 0;
+                    $sukValue[$suk]['dealer_visible_grade'] = 0;
                 }
             } else {
                 $sukValue[$suk]['pic'] = '';
@@ -677,6 +678,7 @@ class StoreProduct extends AuthController
                 $sukValue[$suk]['volume'] = 0;
                 $sukValue[$suk]['brokerage'] = 0;
                 $sukValue[$suk]['brokerage_two'] = 0;
+                $sukValue[$suk]['dealer_visible_grade'] = 0;
             }
             foreach (array_keys($detail) as $k => $title) {
                 $header[$k]['title'] = $title;
@@ -699,6 +701,7 @@ class StoreProduct extends AuthController
             $valueNew[$count]['volume'] = $sukValue[$suk]['volume'] ?? 0;
             $valueNew[$count]['brokerage'] = $sukValue[$suk]['brokerage'] ?? 0;
             $valueNew[$count]['brokerage_two'] = $sukValue[$suk]['brokerage_two'] ?? 0;
+            $valueNew[$count]['dealer_visible_grade'] = $sukValue[$suk]['dealer_visible_grade'] ?? 0;
             $count++;
         }
         $header[] = ['title' => '图片', 'slot' => 'pic', 'align' => 'center', 'minWidth' => 80];
@@ -710,6 +713,7 @@ class StoreProduct extends AuthController
         $header[] = ['title' => '产品编号', 'slot' => 'bar_code', 'align' => 'center', 'minWidth' => 140];
         $header[] = ['title' => '重量(KG)', 'slot' => 'weight', 'align' => 'center', 'minWidth' => 140];
         $header[] = ['title' => '体积(m³)', 'slot' => 'volume', 'align' => 'center', 'minWidth' => 140];
+        $header[] = ['title' => '特供', 'slot' => 'dealer_visible_grade', 'align' => 'center', 'minWidth' => 80];
         $header[] = ['title' => '操作', 'slot' => 'action', 'align' => 'center', 'minWidth' => 70];
         $info = ['attr' => $attr, 'value' => $valueNew, 'header' => $header];
         return Json::successful($info);

+ 1 - 0
app/admin/model/store/StoreProductAttr.php

@@ -99,6 +99,7 @@ class StoreProductAttr extends BaseModel
                 'volume' => $value['volume'] ?? 0,
                 'brokerage' => $value['brokerage'] ?? 0,
                 'brokerage_two' => $value['brokerage_two'] ?? 0,
+                'dealer_visible_grade' => $value['dealer_visible_grade'] ?? 0,
                 'type' => $type,
                 'quota' => $value['quota'] ?? 0,
                 'integral' => $value['integral'] ?? 0,

+ 2 - 1
app/admin/model/store/StoreProductAttrValue.php

@@ -98,7 +98,7 @@ class StoreProductAttrValue extends BaseModel
             $detail = $item['detail'];
 //            sort($item['detail'], SORT_STRING);
             $suk = implode(',', $item['detail']);
-            $sukValue = self::where('product_id', $productId)->where('type', 0)->where('suk', $suk)->column('bar_code,cost,price,stock as sales,image as pic', 'suk');
+            $sukValue = self::where('product_id', $productId)->where('type', 0)->where('suk', $suk)->column('bar_code,cost,price,stock as sales,image as pic,dealer_visible_grade', 'suk');
             if (!count($sukValue)) {
                 unset($value[$key]);
             } else {
@@ -108,6 +108,7 @@ class StoreProductAttrValue extends BaseModel
                 $valueNew[$count]['sales'] = $sukValue[$suk]['sales'];
                 $valueNew[$count]['pic'] = $sukValue[$suk]['pic'];
                 $valueNew[$count]['bar_code'] = $sukValue[$suk]['bar_code'] ?? '';
+                $valueNew[$count]['dealer_visible_grade'] = $sukValue[$suk]['dealer_visible_grade'] ?? 0;
                 $valueNew[$count]['check'] = false;
                 $count++;
             }

+ 8 - 0
app/admin/view/store/store_product/create.php

@@ -612,6 +612,13 @@
                                                                     <input type="number" v-model="item.volume"
                                                                            class="layui-input">
                                                                 </td>
+                                                                <td>
+                                                                    <button class="layui-btn layui-btn-xs" type="button"
+                                                                            :class="item.dealer_visible_grade > 0 ? 'layui-btn-danger' : ''"
+                                                                            @click="item.dealer_visible_grade = item.dealer_visible_grade > 0 ? 0 : 1">
+                                                                        {{ item.dealer_visible_grade > 0 ? '特供' : '普通' }}
+                                                                    </button>
+                                                                </td>
                                                                 <td>
                                                                     <button class="layui-btn layui-btn-sm" type="button"
                                                                             @click="deleteAttrs(index)">删除
@@ -1859,6 +1866,7 @@
                         weight: that.formData.attr.weight,
                         brokerage: that.formData.attr.brokerage,
                         brokerage_two: that.formData.attr.brokerage_two,
+                        dealer_visible_grade: 0,
                     };
                     that.formData.attrs = [attr];
                 } else {

+ 21 - 0
app/api/controller/store/StoreProductController.php

@@ -4,6 +4,8 @@ namespace app\api\controller\store;
 
 use app\admin\model\store\StoreDescription;
 use app\admin\model\system\SystemAttachment;
+use app\admin\model\system\SystemDealerLevel;
+use app\admin\model\user\UserDealer;
 use app\models\routine\RoutineCode;
 use app\models\store\StoreOrder;
 use app\models\store\StoreVisit;
@@ -141,6 +143,25 @@ class StoreProductController
         $storeInfo['userCollect'] = StoreProductRelation::isProductRelation($id, $uid, 'collect');
         $storeInfo['userLike'] = StoreProductRelation::isProductRelation($id, $uid, 'like');
         list($productAttr, $productValue) = StoreProductAttr::getProductAttrDetail($id, $uid, $type);
+        // 过滤特供规格:非经销商用户不可见 dealer_visible_grade > 0 的SKU
+        $canSeeSpecial = false;
+        if ($uid) {
+            $dealerGrade = User::where('uid', $uid)->value('dealer');
+            if ($dealerGrade > 0) {
+                $levelId = UserDealer::where('uid', $uid)->where('is_del', 0)
+                    ->order('grade desc')->value('level_id');
+                if ($levelId) {
+                    $canSeeSpecial = SystemDealerLevel::where('id', $levelId)->value('can_see_special') > 0;
+                }
+            }
+        }
+        if (!$canSeeSpecial) {
+            foreach ($productValue as $suk => $value) {
+                if (($value['dealer_visible_grade'] ?? 0) > 0) {
+                    unset($productValue[$suk]);
+                }
+            }
+        }
         StoreVisit::setView($uid, $id, $storeInfo['cate_id'], 'viwe');
         $data['storeInfo'] = StoreProduct::setLevelPrice($storeInfo, $uid, true);
         $data['similarity'] = StoreProduct::cateIdBySimilarityProduct($storeInfo['cate_id'], 'id,store_name,image,price,sales,ficti', 4);