|
@@ -1,5 +1,7 @@
|
|
|
package com.slodon.b2b2c.model.goods;
|
|
|
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.slodon.b2b2c.core.constant.*;
|
|
|
import com.slodon.b2b2c.core.uid.GoodsIdGenerator;
|
|
@@ -18,6 +20,7 @@ import com.slodon.b2b2c.dao.write.goods.GoodsSpecWriteMapper;
|
|
|
import com.slodon.b2b2c.dao.write.seller.StoreLabelBindGoodsWriteMapper;
|
|
|
import com.slodon.b2b2c.dao.write.seller.StoreWriteMapper;
|
|
|
import com.slodon.b2b2c.enums.SeoTypeConstant;
|
|
|
+import com.slodon.b2b2c.enums.WebSiteConstant;
|
|
|
import com.slodon.b2b2c.goods.dto.GoodsPlatformImportDTO;
|
|
|
import com.slodon.b2b2c.goods.dto.GoodsPublishFrontParamDTO;
|
|
|
import com.slodon.b2b2c.goods.dto.GoodsPublishInsertDTO;
|
|
@@ -25,7 +28,11 @@ import com.slodon.b2b2c.goods.example.*;
|
|
|
import com.slodon.b2b2c.goods.pojo.*;
|
|
|
import com.slodon.b2b2c.member.example.GoodsAnnexExample;
|
|
|
import com.slodon.b2b2c.model.seller.StoreModel;
|
|
|
+import com.slodon.b2b2c.model.seller.StoreNameModel;
|
|
|
+import com.slodon.b2b2c.model.seller.VendorModel;
|
|
|
import com.slodon.b2b2c.seller.example.StoreLabelBindGoodsExample;
|
|
|
+import com.slodon.b2b2c.seller.example.StoreNameExample;
|
|
|
+import com.slodon.b2b2c.seller.example.VendorExample;
|
|
|
import com.slodon.b2b2c.seller.pojo.*;
|
|
|
import com.slodon.b2b2c.system.pojo.SysSeo;
|
|
|
import io.swagger.annotations.ApiModelProperty;
|
|
@@ -105,6 +112,12 @@ public class GoodsSellerModel {
|
|
|
@Resource
|
|
|
private GoodsAnnexModel goodsAnnexModel;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private StoreNameModel storeNameModel;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private VendorModel vendorModel;
|
|
|
+
|
|
|
//region 发布商品
|
|
|
|
|
|
/**
|
|
@@ -123,7 +136,7 @@ public class GoodsSellerModel {
|
|
|
* @param insertDTO 商品信息
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void saveGoods(Vendor vendor, GoodsPublishInsertDTO insertDTO) {
|
|
|
+ public Goods saveGoods(Vendor vendor, GoodsPublishInsertDTO insertDTO) {
|
|
|
List<GoodsPublishFrontParamDTO.ProductInfo> productList = insertDTO.getProductList();//货品列表
|
|
|
//-校验sku是否重复
|
|
|
this.checkSku(productList,insertDTO.getWebSite());
|
|
@@ -157,6 +170,8 @@ public class GoodsSellerModel {
|
|
|
|
|
|
//-增加店铺商品数量(商品状态为上架时操作)
|
|
|
this.addStoreGoodsNum(vendor.getStoreId(), goods.getState());
|
|
|
+
|
|
|
+ return goods;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -241,6 +256,13 @@ public class GoodsSellerModel {
|
|
|
goods.setOnlineTime(goods.getState().equals(GoodsConst.GOODS_STATE_UPPER) ? new Date() : null);
|
|
|
goods.setStoreId(vendor.getStoreId());
|
|
|
goods.setStoreName(vendor.getStore().getStoreName());
|
|
|
+ if (WebSiteConstant.MEMBER_DISTRIBUTOR.equals(insertDTO.getWebSite())) {
|
|
|
+ StoreNameExample storeNameExample = new StoreNameExample();
|
|
|
+ storeNameExample.setStoreId(vendor.getStoreId());
|
|
|
+ storeNameExample.setWebSite(insertDTO.getWebSite());
|
|
|
+ StoreName storeName = storeNameModel.getStoreNameByExample(storeNameExample);
|
|
|
+ goods.setStoreName(storeName != null ? storeName.getStoreName() : "");
|
|
|
+ }
|
|
|
goods.setStoreIsRecommend(insertDTO.getStoreIsRecommend());
|
|
|
goods.setMainImage(defaultProduct.getMainImage());
|
|
|
goods.setGoodsVideo(insertDTO.getGoodsVideo());
|
|
@@ -584,7 +606,7 @@ public class GoodsSellerModel {
|
|
|
* @param goodsDb
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void editGoods(Vendor vendor, GoodsPublishInsertDTO insertDTO, Goods goodsDb) {
|
|
|
+ public Goods editGoods(Vendor vendor, GoodsPublishInsertDTO insertDTO, Goods goodsDb) {
|
|
|
List<GoodsPublishFrontParamDTO.ProductInfo> productList = insertDTO.getProductList();//前端传来的货品列表
|
|
|
List<GoodsPublishInsertDTO.ProductInsertInfo> addProductList = new ArrayList<>();//要新增的货品
|
|
|
List<GoodsPublishInsertDTO.ProductInsertInfo> updateProductList = new ArrayList<>();//要删除的货品
|
|
@@ -619,7 +641,6 @@ public class GoodsSellerModel {
|
|
|
this.updateGoodsAnnex(insertDTO.getGoodsAnnexList(),updateGoods,vendor);
|
|
|
// }
|
|
|
|
|
|
-
|
|
|
//-保存商品绑定店铺内部分类表
|
|
|
this.updateGoodsBindStoreInnerLabels(insertDTO.getStoreInnerLabelList(), updateGoods.getGoodsId(), vendor);
|
|
|
|
|
@@ -633,6 +654,7 @@ public class GoodsSellerModel {
|
|
|
//原商品的状态为上架,删除商品缓存数据
|
|
|
objectRedisTemplate.opsForHash().delete(RedisConst.GOODS_DETAIL, String.valueOf(goodsDb.getGoodsId()));
|
|
|
}
|
|
|
+ return updateGoods;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -777,6 +799,13 @@ public class GoodsSellerModel {
|
|
|
goods.setOnlineTime(goods.getState().equals(GoodsConst.GOODS_STATE_UPPER) ? new Date() : null);
|
|
|
goods.setStoreId(vendor.getStoreId());
|
|
|
goods.setStoreName(vendor.getStore().getStoreName());
|
|
|
+ if (WebSiteConstant.MEMBER_DISTRIBUTOR.equals(insertDTO.getWebSite())) {
|
|
|
+ StoreNameExample storeNameExample = new StoreNameExample();
|
|
|
+ storeNameExample.setStoreId(vendor.getStoreId());
|
|
|
+ storeNameExample.setWebSite(insertDTO.getWebSite());
|
|
|
+ StoreName storeName = storeNameModel.getStoreNameByExample(storeNameExample);
|
|
|
+ goods.setStoreName(storeName != null ? storeName.getStoreName() : "");
|
|
|
+ }
|
|
|
goods.setStoreIsRecommend(insertDTO.getStoreIsRecommend());
|
|
|
goods.setMainImage(defaultProduct.getMainImage());
|
|
|
goods.setGoodsVideo(StringUtils.isEmpty(insertDTO.getGoodsVideo()) ? "" : insertDTO.getGoodsVideo());
|
|
@@ -1107,7 +1136,18 @@ public class GoodsSellerModel {
|
|
|
example.setGoodsIdIn(goodsIds);
|
|
|
example.setStateIn(GoodsConst.GOODS_STATE_WAREHOUSE_NO_AUDIT + "," + GoodsConst.GOODS_STATE_WAREHOUSE_AUDIT_PASS + "," + GoodsConst.GOODS_STATE_LOWER_BY_STORE);
|
|
|
example.setStoreId(storeId);
|
|
|
- return goodsModel.updateGoodsByExample(goodsUpdate, example);
|
|
|
+ List<Goods> goodsList = goodsModel.getGoodsList(example, null);
|
|
|
+ int num = goodsModel.updateGoodsByExample(goodsUpdate, example);
|
|
|
+ goodsList.forEach(goods -> {
|
|
|
+ VendorExample vendorExample = new VendorExample();
|
|
|
+ vendorExample.setStoreId(goods.getStoreId());
|
|
|
+ vendorExample.setIsStoreAdmin(VendorConst.IS_STORE_ADMIN_1);
|
|
|
+ List<Vendor> vendorList =vendorModel.getVendorList(vendorExample, null);
|
|
|
+ AssertUtil.isTrue(CollectionUtils.isEmpty(vendorList), "获取店铺信息失败");
|
|
|
+ goods.setState(GoodsConst.GOODS_STATE_UPPER);
|
|
|
+ productModel.upsertProduct(goods, vendorList.get(0));
|
|
|
+ });
|
|
|
+ return num;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1125,8 +1165,17 @@ public class GoodsSellerModel {
|
|
|
example.setGoodsIdIn(goodsIds);
|
|
|
example.setState(GoodsConst.GOODS_STATE_UPPER);
|
|
|
example.setStoreId(storeId);
|
|
|
+ List<Goods> goodsList = goodsModel.getGoodsList(example, null);
|
|
|
int number = goodsModel.updateGoodsByExample(goodsUpdate, example);
|
|
|
-
|
|
|
+ goodsList.forEach(goods -> {
|
|
|
+ VendorExample vendorExample = new VendorExample();
|
|
|
+ vendorExample.setStoreId(goods.getStoreId());
|
|
|
+ vendorExample.setIsStoreAdmin(VendorConst.IS_STORE_ADMIN_1);
|
|
|
+ List<Vendor> vendorList = vendorModel.getVendorList(vendorExample, null);
|
|
|
+ AssertUtil.isTrue(CollectionUtils.isEmpty(vendorList), "获取店铺信息失败");
|
|
|
+ goods.setState(GoodsConst.GOODS_STATE_LOWER_BY_STORE);
|
|
|
+ productModel.upsertProduct(goods, vendorList.get(0));
|
|
|
+ });
|
|
|
return number;
|
|
|
}
|
|
|
|
|
@@ -1149,7 +1198,20 @@ public class GoodsSellerModel {
|
|
|
example.setGoodsIdIn(goodsIds);
|
|
|
// example.setStateIn(GoodsConst.GOODS_STATE_WAREHOUSE_NO_AUDIT + "," + GoodsConst.GOODS_STATE_LOWER_BY_STORE + "," + GoodsConst.GOODS_STATE_LOWER_BY_SYSTEM);
|
|
|
example.setStoreId(storeId);
|
|
|
+ //先查询出待删除的商品列表
|
|
|
+ List<Goods> goodsList = goodsModel.getGoodsList(example, null);
|
|
|
+
|
|
|
number = goodsModel.updateGoodsByExample(goodsUpdate, example);
|
|
|
+ goodsList.forEach(goods -> {
|
|
|
+ VendorExample vendorExample = new VendorExample();
|
|
|
+ vendorExample.setStoreId(storeId);
|
|
|
+ vendorExample.setIsStoreAdmin(VendorConst.IS_STORE_ADMIN_1);
|
|
|
+ List<Vendor> vendorList = vendorModel.getVendorList(vendorExample, null);
|
|
|
+ AssertUtil.isTrue(CollectionUtils.isEmpty(vendorList), "获取店铺信息失败");
|
|
|
+ //设置状态为删除
|
|
|
+ goods.setState(GoodsConst.GOODS_STATE_DELETE);
|
|
|
+ productModel.upsertProduct(goods, vendorList.get(0));
|
|
|
+ });
|
|
|
return number;
|
|
|
}
|
|
|
|