记得上下班打卡 | git大法好,push需谨慎

Commit cb84177c authored by 张国柄's avatar 张国柄

~API:商品管理:管理SPU、SKU同步处理活动中的关联商品;

parent d96c9d86
......@@ -44,4 +44,6 @@ public class GoblinStoreMgtGoodsListVo implements Serializable, Cloneable {
private Integer surplusStock;
@ApiModelProperty(position = 25, value = "库存不足预警值")
private Integer warningStock;
@ApiModelProperty(position = 25, value = "关联活动标记[0-未关联|1-已关联],用于下架提示'商品正在参与活动,是否确认下架?'")
private Integer relateMarket;
}
......@@ -14,10 +14,10 @@ public interface IGoblinstoreMgtGoodsService {
/**
* 商品管理:SPU列表
*
* @param storeMgtGoodsFilterParam GoblinStoreMgtGoodsFilterParam
* @param mgtGoodsFilterParam GoblinStoreMgtGoodsFilterParam
* @return PagedResult<GoblinStoreMgtGoodsVo>
*/
PagedResult<GoblinStoreMgtGoodsListVo> goodsList(GoblinStoreMgtGoodsFilterParam storeMgtGoodsFilterParam);
PagedResult<GoblinStoreMgtGoodsListVo> goodsList(GoblinStoreMgtGoodsFilterParam mgtGoodsFilterParam);
/**
* 商品管理:SPU添加
......@@ -39,33 +39,34 @@ public interface IGoblinstoreMgtGoodsService {
/**
* 商品管理:商品编辑:SPU编辑
*
* @param uid UID
* @param storeMgtGoodsAddParam GoblinStoreMgtGoodsAddParam
* @param uid UID
* @param mgtGoodsAddParam GoblinStoreMgtGoodsAddParam
* @param goodsInfoVo GoblinGoodsInfoVo
* @return boolean
*/
boolean goodsEditSpu(String uid, GoblinStoreMgtGoodsAddParam storeMgtGoodsAddParam);
boolean goodsEditSpu(String uid, GoblinStoreMgtGoodsAddParam mgtGoodsAddParam, GoblinGoodsInfoVo goodsInfoVo);
/**
* 商品管理:商品编辑:SKU编辑
*
* @param uid UID
* @param storeMgtGoodsEditSkuParam GoblinStoreMgtGoodsEditSkuParam
* @param goodsInfoVo GoblinGoodsInfoVo
* @param delSpuSpecMap Map<String, String>
* @param beUpdateSpuSpecFlg boolean
* @param uid UID
* @param mgtGoodsEditSkuParam GoblinStoreMgtGoodsEditSkuParam
* @param goodsInfoVo GoblinGoodsInfoVo
* @param delSpuSpecMap Map<String, String>
* @param beUpdateSpuSpecFlg boolean
* @return boolean
*/
boolean goodsEditSku(String uid, GoblinStoreMgtGoodsEditSkuParam storeMgtGoodsEditSkuParam,
boolean goodsEditSku(String uid, GoblinStoreMgtGoodsEditSkuParam mgtGoodsEditSkuParam,
GoblinGoodsInfoVo goodsInfoVo, Map<String, String> delSpuSpecMap, boolean beUpdateSpuSpecFlg);
/**
* 商品管理:商品编辑:SKU添加
*
* @param uid UID
* @param storeMgtGoodsEditSkuParam GoblinStoreMgtGoodsEditSkuParam
* @param goodsInfoVo GoblinGoodsInfoVo
* @param uid UID
* @param mgtGoodsEditSkuParam GoblinStoreMgtGoodsEditSkuParam
* @param goodsInfoVo GoblinGoodsInfoVo
*/
void goodsEditSkuAdd(String uid, GoblinStoreMgtGoodsEditSkuParam storeMgtGoodsEditSkuParam, GoblinGoodsInfoVo goodsInfoVo);
void goodsEditSkuAdd(String uid, GoblinStoreMgtGoodsEditSkuParam mgtGoodsEditSkuParam, GoblinGoodsInfoVo goodsInfoVo);
/**
* 商品管理:商品编辑:SKU删除
......@@ -89,17 +90,19 @@ public interface IGoblinstoreMgtGoodsService {
/**
* 商品管理:上下架商品
*
* @param storeMgtGoodsActionParam GoblinStoreMgtGoodsActionParam
* @param uid UID
* @param shelvesFlg true:上架|false:下架
* @param mgtGoodsActionParam GoblinStoreMgtGoodsActionParam
* @param uid UID
* @param shelvesFlg true:上架|false:下架
* @param spuNoList 操作SPUID对应SPUNO列表
*/
void goodsShelvesProcessing(GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam, String uid, boolean shelvesFlg);
void goodsShelvesProcessing(GoblinStoreMgtGoodsActionParam mgtGoodsActionParam, String uid, boolean shelvesFlg, List<String> spuNoList);
/**
* 商品管理:删除商品
*
* @param storeMgtGoodsActionParam GoblinStoreMgtGoodsActionParam
* @param uid UID
* @param mgtGoodsActionParam GoblinStoreMgtGoodsActionParam
* @param uid UID
* @param spuNoList 操作SPUID对应SPUNO列表
*/
void goodsRemove(GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam, String uid);
void goodsRemove(GoblinStoreMgtGoodsActionParam mgtGoodsActionParam, String uid, List<String> spuNoList);
}
......@@ -89,18 +89,19 @@ public class GoblinPosController {
List<GoblinPosGoodsVo> posGoodsVoList = ObjectUtil.getGoblinPosGoodsVoArrayList();
for (String skuId : skuIdArr) {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
if (null != goodsSkuInfoVo && storeId.equals(goodsSkuInfoVo.getStoreId())) {
if (null != goodsSkuInfoVo && goodsSkuInfoVo.getDelFlg().equals("0") && storeId.equals(goodsSkuInfoVo.getStoreId())) {
String spuId = goodsSkuInfoVo.getSpuId();
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId);
if (null != goodsInfoVo && goodsInfoVo.getDelFlg().equals("0")) {
GoblinPosGoodsVo posGoodsVo = GoblinPosGoodsVo.getNew();
posGoodsVo.setSkuId(skuId);
posGoodsVo.setName(goodsSkuInfoVo.getName());
posGoodsVo.setPrice(goodsSkuInfoVo.getPrice());
posGoodsVo.setSpuId(spuId);
posGoodsVo.setSpuName(goodsInfoVo.getName());
GoblinPosGoodsVo posGoodsVo = GoblinPosGoodsVo.getNew();
posGoodsVo.setSkuId(skuId);
posGoodsVo.setName(goodsSkuInfoVo.getName());
posGoodsVo.setPrice(goodsSkuInfoVo.getPrice());
posGoodsVo.setSpuId(spuId);
posGoodsVo.setSpuName(goodsInfoVo.getName());
posGoodsVoList.add(posGoodsVo);
posGoodsVoList.add(posGoodsVo);
}
}
}
return ResponseDto.success(posGoodsVoList);
......
......@@ -159,10 +159,11 @@ public class GoblinStoreMgtController {
param.getConfMap().forEach((ck, cv) -> {
switch (ck) {
case "BUSINESS_STATUS":
// TODO: 2022/2/23 ==zhanggb 暂不启用停业功能
// if (Arrays.asList("4", "5").contains(cv)) {
if (Arrays.asList("4", "5").contains(cv)) {
// TODO: 2022/2/23 ==zhanggb 暂不启用停业功能
// updateConfMap.put(ck, cv);
// }
updateConfMap.put(ck, "5");
}
break;
case "ONOFF_CUSTOMER_SEV":
case "ONOFF_SOLD_OUT_SHOW":
......
......@@ -17,6 +17,7 @@ import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtCouponFilterParam;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtCouponInfoVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtCouponListVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsListVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinStoreCouponBasicVo;
import com.liquidnet.service.goblin.dto.vo.GoblinStoreCouponVo;
import com.liquidnet.service.goblin.service.manage.IGoblinstoreMgtCouponService;
......@@ -40,6 +41,7 @@ import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.List;
@ApiSupport(order = 149006)
......@@ -198,7 +200,14 @@ public class GoblinStoreMgtCouponController {
List<String> spuIdList = storeCouponBasicVo.getSpuIdList();
if (storeCouponBasicVo.getUseScope().equals("1") && !CollectionUtils.isEmpty(spuIdList)) {
spuIdList.removeIf(spuId -> null == goblinRedisUtils.getGoodsInfoVo(spuId));
Iterator<String> iterator = spuIdList.iterator();
while (iterator.hasNext()) {
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(iterator.next());
if (null == goodsInfoVo || !goodsInfoVo.getDelFlg().equals("0")) {
iterator.remove();
}
}
// spuIdList.removeIf(spuId -> null == goblinRedisUtils.getGoodsInfoVo(spuId));
storeCouponBasicVo.setSpuIdList(spuIdList);
}
......@@ -268,7 +277,14 @@ public class GoblinStoreMgtCouponController {
List<String> spuIdList = storeCouponBasicVo.getSpuIdList();
if (storeCouponBasicVo.getUseScope().equals("1") && null != spuIdList) {
spuIdList.removeIf(spuId -> null == goblinRedisUtils.getGoodsInfoVo(spuId));
Iterator<String> iterator = spuIdList.iterator();
while (iterator.hasNext()) {
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(iterator.next());
if (null == goodsInfoVo || !goodsInfoVo.getDelFlg().equals("0")) {
iterator.remove();
}
}
// spuIdList.removeIf(spuId -> null == goblinRedisUtils.getGoodsInfoVo(spuId));
storeCouponBasicVo.setSpuIdList(spuIdList);
}
......
......@@ -185,17 +185,18 @@ public class GoblinStoreMgtCouponServiceImpl implements IGoblinstoreMgtCouponSer
ArrayList<GoblinStoreMgtCouponSpuListVo> couponSpuListVos = ObjectUtil.getGoblinStoreMgtCouponSpuListVoArrayList();
spuIds.forEach(spuId -> {
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId);
String cateFid = goodsInfoVo.getCateFid(), cateSid = goodsInfoVo.getCateSid(), cateTid = goodsInfoVo.getCateTid();
List<GoblinSelfGoodsCategoryVo> categoryVoList = selfGoodsCategoryVos.stream()
.filter(cr -> Arrays.asList(cateFid, cateSid, cateTid).contains(cr.getCateId())).collect(Collectors.toList());
categoryVoList.forEach(cr -> {
if (cr.getCateId().equals(cateFid)) goodsInfoVo.setCateFid(cr.getName());
if (cr.getCateId().equals(cateSid)) goodsInfoVo.setCateSid(cr.getName());
if (cr.getCateId().equals(cateTid)) goodsInfoVo.setCateTid(cr.getName());
});
couponSpuListVos.add(GoblinStoreMgtCouponSpuListVo.getNew().copy(goodsInfoVo));
if (null != goodsInfoVo && goodsInfoVo.getDelFlg().equals("0")) {
String cateFid = goodsInfoVo.getCateFid(), cateSid = goodsInfoVo.getCateSid(), cateTid = goodsInfoVo.getCateTid();
List<GoblinSelfGoodsCategoryVo> categoryVoList = selfGoodsCategoryVos.stream()
.filter(cr -> Arrays.asList(cateFid, cateSid, cateTid).contains(cr.getCateId())).collect(Collectors.toList());
categoryVoList.forEach(cr -> {
if (cr.getCateId().equals(cateFid)) goodsInfoVo.setCateFid(cr.getName());
if (cr.getCateId().equals(cateSid)) goodsInfoVo.setCateSid(cr.getName());
if (cr.getCateId().equals(cateTid)) goodsInfoVo.setCateTid(cr.getName());
});
couponSpuListVos.add(GoblinStoreMgtCouponSpuListVo.getNew().copy(goodsInfoVo));
}
});
mgtCouponInfoVo.setSpuVoList(couponSpuListVos);
}
......
......@@ -89,12 +89,14 @@ public class GoblinZhengzaiServiceImpl implements IGoblinZhengzaiService {
GoblinMarketSpuListVo vo = GoblinMarketSpuListVo.getNew();
String marketSpuId = marketSpuList.get(i);
GoblinGoodsInfoVo spuVo = redisUtils.getGoodsInfoVo(marketSpuId);
vo.setMarketSpuId(marketSpuId.split(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue())[0]);
vo.setCoverPic(spuVo.getCoverPic());
vo.setName(spuVo.getName());
vo.setPriceGe(spuVo.getPriceGe());
vo.setPriceLe(spuVo.getPriceLe());
voList.add(vo);
if (null != spuVo && spuVo.getDelFlg().equals("0") && spuVo.getShelvesStatus().equals("3")) {
vo.setMarketSpuId(marketSpuId.split(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue())[0]);
vo.setCoverPic(spuVo.getCoverPic());
vo.setName(spuVo.getName());
vo.setPriceGe(spuVo.getPriceGe());
vo.setPriceLe(spuVo.getPriceLe());
voList.add(vo);
}
}
return ResponseDto.success(voList);
}
......
......@@ -392,6 +392,21 @@ public class GoblinMongoUtils {
return pagedResult.setList(goodsListVos).setTotal(count, filterParam.getPageSize());
}
public List<String> getMgtSpuNosForMarketBySpuNos(List<String> spuNos, Object... shelvesStatus) {
Query query = Query.query(Criteria.where("spuNo").in(spuNos.toArray())
.and("marketId").exists(true).and("delFlg").is("0").and("shelvesStatus").in(shelvesStatus));
query.fields().include("spuNo");
List<GoblinGoodsInfoVo> goblinGoodsInfoVos = mongoTemplate.find(query, GoblinGoodsInfoVo.class, GoblinGoodsInfoVo.class.getSimpleName());
return CollectionUtils.isEmpty(goblinGoodsInfoVos) ? CollectionUtil.arrayListString() : goblinGoodsInfoVos.stream().map(GoblinGoodsInfoVo::getSpuNo).distinct().collect(Collectors.toList());
}
public List<String> getMgtSpuIdsForMarketBySpuNos(List<String> spuNos, Object... shelvesStatus) {
Query query = Query.query(Criteria.where("spuNo").in(spuNos.toArray())
.and("marketId").exists(true).and("delFlg").is("0").and("shelvesStatus").in(shelvesStatus));
query.fields().include("spuId");
List<GoblinGoodsInfoVo> goblinGoodsInfoVos = mongoTemplate.find(query, GoblinGoodsInfoVo.class, GoblinGoodsInfoVo.class.getSimpleName());
return CollectionUtils.isEmpty(goblinGoodsInfoVos) ? CollectionUtil.arrayListString() : goblinGoodsInfoVos.stream().map(GoblinGoodsInfoVo::getSpuId).distinct().collect(Collectors.toList());
}
// SPU信息
public List<String> getMgtGoodsSpuIds(String storeId) {
Query query = Query.query(Criteria.where("storeId").is(storeId).and("delFlg").is("0"));
......@@ -419,10 +434,10 @@ public class GoblinMongoUtils {
}
// SPU信息
public GoblinGoodsInfoVo getMgtGoodsInfoVo(String spuId) {
return mongoTemplate.findOne(Query.query(Criteria.where("spuId").is(spuId).and("delFlg").is("0")),
GoblinGoodsInfoVo.class, GoblinGoodsInfoVo.class.getSimpleName());
}
// public GoblinGoodsInfoVo getMgtGoodsInfoVo(String spuId) {
// return mongoTemplate.findOne(Query.query(Criteria.where("spuId").is(spuId).and("delFlg").is("0")),
// GoblinGoodsInfoVo.class, GoblinGoodsInfoVo.class.getSimpleName());
// }
// SPU信息
public GoblinGoodsInfoVo getMgtGoodsInfoVo(String storeId, String name) {
......@@ -537,10 +552,10 @@ public class GoblinMongoUtils {
}
// SKU信息
public GoblinGoodsSkuInfoVo getMgtGoodsSkuInfoVo(String skuId) {
return mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId).and("delFlg").is("0")),
GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
}
// public GoblinGoodsSkuInfoVo getMgtGoodsSkuInfoVo(String skuId) {
// return mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId).and("delFlg").is("0")),
// GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
// }
// SKU信息
public boolean updateGoodsSkuInfoVo(GoblinGoodsSkuInfoVo vo) {
......
......@@ -397,14 +397,14 @@ public class GoblinRedisUtils {
return vo;
}
public GoblinGoodsInfoVo getMgtGoodsInfoVo(String spuId) {
String rk = GoblinRedisConst.BASIC_GOODS.concat(spuId);
GoblinGoodsInfoVo vo = (GoblinGoodsInfoVo) redisUtil.get(rk);
if (null == vo && null != (vo = goblinMongoUtils.getMgtGoodsInfoVo(spuId))) {
redisUtil.set(rk, vo);
}
return vo;
}
// public GoblinGoodsInfoVo getMgtGoodsInfoVo(String spuId) {
// String rk = GoblinRedisConst.BASIC_GOODS.concat(spuId);
// GoblinGoodsInfoVo vo = (GoblinGoodsInfoVo) redisUtil.get(rk);
// if (null == vo && null != (vo = goblinMongoUtils.getMgtGoodsInfoVo(spuId))) {
// redisUtil.set(rk, vo);
// }
// return vo;
// }
public boolean setGoodsSkuInfoVo(GoblinGoodsSkuInfoVo vo) {
return redisUtil.set(GoblinRedisConst.BASIC_GOODS_SKU.concat(vo.getSkuId()), vo);
......@@ -450,14 +450,14 @@ public class GoblinRedisUtils {
return vo;
}
public GoblinGoodsSkuInfoVo getMgtGoodsSkuInfoVo(String skuId) {
String rk = GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId);
GoblinGoodsSkuInfoVo vo = (GoblinGoodsSkuInfoVo) redisUtil.get(rk);
if (null == vo && null != (vo = goblinMongoUtils.getMgtGoodsSkuInfoVo(skuId))) {
redisUtil.set(rk, vo);
}
return vo;
}
// public GoblinGoodsSkuInfoVo getMgtGoodsSkuInfoVo(String skuId) {
// String rk = GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId);
// GoblinGoodsSkuInfoVo vo = (GoblinGoodsSkuInfoVo) redisUtil.get(rk);
// if (null == vo && null != (vo = goblinMongoUtils.getMgtGoodsSkuInfoVo(skuId))) {
// redisUtil.set(rk, vo);
// }
// return vo;
// }
/* ---------------------------------------- ---------------------------------------- */
......
......@@ -31,13 +31,14 @@
149006=添加商品失败,规格信息无效
149007=添加商品失败,商品名称重复
149008=商品分类名称重复,请核实
149009=
149009=请点选商品后操作
149010=商品不存在,请核实
149011=SKU不存在,请核实
149012=SKU库存不足,请核实
149013=SKU编辑失败
149014=SKU编辑失败,规格信息有误
149015=SKU添加失败,重复的规格信息
149016=请先将商品下架后操作
148001=库存不足
......
......@@ -41,15 +41,16 @@ goblin_goods.update_by_shelves=UPDATE goblin_goods SET shelves_status=?,shelves_
goblin_goods.update_by_status=UPDATE goblin_goods SET spu_appear=?,updated_by=?,updated_at=? WHERE store_id=? AND del_flg='0'
goblin_goods.update_by_edit_sku=UPDATE goblin_goods SET price_ge=?,price_le=?,updated_by=?,updated_at=? WHERE spu_id=? AND del_flg='0'
goblin_goods.update_by_del_sku=UPDATE goblin_goods SET price_ge=?,price_le=?,updated_by=?,updated_at=? WHERE spu_id=? AND del_flg='0'
goblin_goods.update_by_del_store=UPDATE goblin_goods SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE store_id=?
goblin_goods.update_by_del=UPDATE goblin_goods SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE spu_id=? AND store_id=?
goblin_goods.update_by_del_store=UPDATE goblin_goods SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE store_id=? AND del_flg='0'
goblin_goods.update_by_del=UPDATE goblin_goods SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE spu_id=? AND del_flg='0'
goblin_goods_sku.insert=INSERT INTO goblin_goods_sku (sku_id,spu_id,sku_no,name,subtitle, sell_price,sku_pic,sku_isbn,stock,sku_stock, warning_stock,price,price_member,weight,buy_factor, buy_roster,buy_limit,store_id,sku_validity,virtual_flg, status,shelves_status,sku_appear,shelves_at,created_by, created_at,logistics_template)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
goblin_goods_sku.update_by_edit_for_market=UPDATE goblin_goods_sku SET name=?,sku_pic=?,sell_price=?,weight=?,stock=?,warning_stock=?,sku_appear=?,sku_isbn=?,sku_validity=?,updated_by=?,updated_at=? WHERE sku_id=? AND del_flg='0'
goblin_goods_sku.update_by_edit=UPDATE goblin_goods_sku SET name=?,sku_pic=?,sell_price=?,price=?,price_member=?,weight=?,stock=?,sku_stock=?,warning_stock=?,sku_appear=?,sku_isbn=?,buy_factor=?,buy_roster=?,buy_limit=?,sku_validity=?,updated_by=?,updated_at=? WHERE sku_id=? AND del_flg='0'
goblin_goods_sku.update_by_edit_spu=UPDATE goblin_goods_sku SET sku_no=?,virtual_flg=?,logistics_template=?,updated_by=?,updated_at=? WHERE spu_id=? AND del_flg='0'
goblin_goods_sku.update_by_shelves=UPDATE goblin_goods_sku SET shelves_status=?,shelves_at=?,updated_by=?,updated_at=? WHERE spu_id=? AND store_id=? AND sku_appear='0'
goblin_goods_sku.update_by_del_store=UPDATE goblin_goods_sku SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE store_id=?
goblin_goods_sku.update_by_del=UPDATE goblin_goods_sku SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE spu_id=? AND store_id=?
goblin_goods_sku.update_by_del_store=UPDATE goblin_goods_sku SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE store_id=? AND del_flg='0'
goblin_goods_sku.update_by_del_spu=UPDATE goblin_goods_sku SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE spu_id=? AND del_flg='0'
goblin_goods_sku.update_by_del=UPDATE goblin_goods_sku SET del_flg='1',updated_by=?,updated_at=?,deleted_by=?,deleted_at=? WHERE sku_id=? AND del_flg='0'
goblin_goods_image.insert_byreplace=REPLACE INTO goblin_goods_image (spu_id,url)VALUES(?,?)
goblin_goods_image.delete=UPDATE goblin_goods_image SET del_flg='1' WHERE spu_id=? AND del_flg='0'
goblin_goods_tag.insert_byreplace=REPLACE INTO goblin_goods_tag (spu_id,tag_id,sort,tag_belong)VALUES(?,?,?,?)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment