Prechádzať zdrojové kódy

Make vendor optional in products: vendorId/vendorName/vendorVisible now nullable; remove vendorVisible switch from product edit form; preserve supplier system infrastructure

Sisyphus 1 deň pred
rodič
commit
6c7cdfb1ce

+ 2 - 0
cfc-backend/src/main/java/com/etotem/cfc/entity/Product.java

@@ -34,7 +34,9 @@ public class Product implements Serializable {
     private String productType;
     private String growthCategory;
     private Long vendorId;
+
     private String vendorName;
+
     private String status;
     private String rejectReason;
     private Integer memberPrice; // 会员价(分)

+ 17 - 10
cfc-backend/src/main/java/com/etotem/cfc/service/ProductService.java

@@ -235,15 +235,17 @@ wrapper.in(Product::getId, productIds)
     }
 
     public Result<ProductDTO> create(Product product, Long vendorId) {
-        if (vendorId == null) {
-            return Result.error("请先登录");
-        }
-        User vendor = userMapper.selectById(vendorId);
-        if (vendor == null || !"approved".equals(vendor.getVendorStatus())) {
-            return Result.error("仅审核通过的服务商可发布商品");
+        if (vendorId != null) {
+            User vendor = userMapper.selectById(vendorId);
+            if (vendor == null || !"approved".equals(vendor.getVendorStatus())) {
+                return Result.error("仅审核通过的服务商可发布商品");
+            }
+            product.setVendorId(vendorId);
+            product.setVendorName(vendor.getNickname() != null ? vendor.getNickname() : vendor.getRealName());
+        } else {
+            product.setVendorId(null);
+            product.setVendorName(null);
         }
-        product.setVendorId(vendorId);
-        product.setVendorName(vendor.getNickname() != null ? vendor.getNickname() : vendor.getRealName());
         product.setStatus("pending");
         product.setCreatedAt(new Date());
         product.setUpdatedAt(new Date());
@@ -256,8 +258,13 @@ wrapper.in(Product::getId, productIds)
         if (existing == null) {
             return Result.error("商品不存在");
         }
-        if (!existing.getVendorId().equals(vendorId)) {
-            return Result.error("无权修改此商品");
+        if (vendorId != null) {
+            if (!existing.getVendorId().equals(vendorId)) {
+                return Result.error("无权修改此商品");
+            }
+        } else {
+            product.setVendorId(null);
+            product.setVendorName(null);
         }
         product.setStatus("pending");
         product.setUpdatedAt(new Date());

+ 3 - 20
cfc-frontend/pages/vendor/product-edit/product-edit.vue

@@ -41,14 +41,7 @@
         <textarea class="form-textarea" v-model="form.description" placeholder="商品描述(可选,详细内容)" />
       </view>
 
-      <view class="form-item">
-        <text class="form-label">仅供应商可见</text>
-        <switch :checked="form.vendorVisible" @change="onVendorVisibleChange" color="#F97316" />
-        <text class="form-hint">开启后,该商品仅供应商体系内用户可在列表中看到,直接分享链接仍可访问</text>
-      </view>
-    </view>
-
-    <view class="form-actions">
+<view class="form-actions">
       <button class="btn-submit" :disabled="submitting" @click="onSubmit">
         {{ submitting ? '提交中...' : (isEdit ? '保存修改' : '立即发布') }}
       </button>
@@ -80,8 +73,7 @@ export default {
         stock: 0,
         coverImage: '',
         intro: '',
-        description: '',
-        vendorVisible: false
+        description: ''
       }
     }
   },
@@ -97,13 +89,6 @@ export default {
   },
   methods: {
     onTypeChange(e) {
-      this.typeIndex = e.detail.value
-      this.form.productType = this.typeOptions[e.detail.value].value
-    },
-    onVendorVisibleChange(e) {
-      this.form.vendorVisible = e.detail.value
-    },
-    loadProduct(id) {
       uni.showLoading({ title: '加载中...' })
       productDetail({ id: Number(id) }).then(res => {
         uni.hideLoading()
@@ -116,7 +101,6 @@ export default {
           this.form.price = p.price || 0
           this.form.stock = p.stock || 0
           this.form.productType = p.productType || 'physical'
-          this.form.vendorVisible = p.vendorVisible === true
           // sync picker index
           var idx = this.typeOptions.findIndex(function(t) { return t.value === this.form.productType }, this)
           if (idx >= 0) this.typeIndex = idx
@@ -149,8 +133,7 @@ export default {
         stock: Number(this.form.stock),
         coverImage: this.form.coverImage || '',
         intro: this.form.intro || '',
-        description: this.form.description || '',
-        vendorVisible: this.form.vendorVisible
+        description: this.form.description || ''
       }
       var apiCall = this.isEdit
         ? productUpdate(Object.assign({ id: this.productId }, data))