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

Commit ee537f0b authored by 姜秀龙's avatar 姜秀龙

收钱 goods add edit

parent 3a8884fc
......@@ -10,7 +10,6 @@ import com.liquidnet.service.goblin.param.shouqianba.response.data.MallProductsQ
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
......@@ -125,11 +124,8 @@ public class GoblinStoreMgtGoodsSqbAddParam implements Serializable {
public GoblinGoodsInfoVo initGoodsInfoVo(String storeId, GoblinSqbPerfGoodsVo sqbGoods, String currentUid, LocalDateTime nowTime) {
GoblinGoodsInfoVo vo = GoblinGoodsInfoVo.getNew();
vo.setStoreId(storeId);
if (StringUtils.isBlank(sqbGoods.getSpuId())) {
vo.setSpuId(IDGenerator.nextMilliId2());
} else {
vo.setSpuId(sqbGoods.getSpuId());
}
// 主表使用系统ID,收钱吧ID仅通过`goblin_sqb_goods_ext`映射
vo.setSpuId(IDGenerator.nextMilliId2());
vo.setSpuNo(vo.getSpuId());
vo.setSpuType(33);
vo.setName(sqbGoods.getTitle());
......@@ -182,13 +178,18 @@ public class GoblinStoreMgtGoodsSqbAddParam implements Serializable {
public void initGoodsSkuInfoVo(GoblinGoodsInfoVo goodsInfoVo, List<GoblinGoodsSkuInfoVo> skuInfoVos,
List<GoblinGoodsSpecVo> goodsSpecVos, GoblinSqbPerfGoodsVo sqbGoods) {
List<MallProductsQueryData.Sku> addSkuParamSqb = sqbGoods.getSkuResults();
if (CollectionUtil.isEmpty(addSkuParamSqb)) {
addSkuParamSqb = new ArrayList<>();
}
List<String> skuIdList = CollectionUtil.arrayListString();
for (MallProductsQueryData.Sku sku : addSkuParamSqb) {
GoblinGoodsSkuInfoVo skuInfoVo = GoblinGoodsSkuInfoVo.getNew();
String systemSkuId = IDGenerator.nextMilliId2();
skuInfoVo.setSpuId(goodsInfoVo.getSpuId());
skuInfoVo.setSkuId(sku.getSkuId());
skuInfoVo.setSkuNo(sku.getSkuId());
skuInfoVo.setSkuBarCode(sku.getSkuId());
// 主表使用系统SKU_ID,收钱吧SKU_ID仅通过`goblin_sqb_goods_ext`映射
skuInfoVo.setSkuId(systemSkuId);
skuInfoVo.setSkuNo(systemSkuId);
skuInfoVo.setSkuBarCode(systemSkuId);
skuInfoVo.setSkuType(33);
skuInfoVo.setName(sku.getSkuName());
skuInfoVo.setSubtitle("");
......@@ -223,7 +224,7 @@ public class GoblinStoreMgtGoodsSqbAddParam implements Serializable {
skuSpecList.add(goblinGoodsSpecDto);
skuInfoVo.setSkuSpecList(skuSpecList);
}
skuIdList.add(skuInfoVo.getSkuId());
skuIdList.add(systemSkuId);
skuInfoVos.add(skuInfoVo);
}
......
package com.liquidnet.service.goblin.service.impl.manage;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.GoblinGoodsSpecDto;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbEditSkuParam;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinMgtCategorySpecVo;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.GoblinSqbGoodsExt;
import com.liquidnet.service.goblin.mapper.GoblinSqbGoodsExtMapper;
import com.liquidnet.service.goblin.param.shouqianba.response.data.MallProductsQueryData;
import com.liquidnet.service.goblin.service.manage.IGoblinStoreMgtSqbGoodsService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
......@@ -40,6 +41,8 @@ public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGood
GoblinRedisUtils goblinRedisUtils;
@Autowired
GoblinMongoUtils goblinMongoUtils;
@Autowired
GoblinSqbGoodsExtMapper goblinSqbGoodsExtMapper;
public void sqbGoodsAdd(GoblinGoodsInfoVo goodsInfoVo, List<GoblinGoodsSkuInfoVo> goodsSkuInfoVoList) {
goblinMongoUtils.setGoodsInfoVo(goodsInfoVo);
......@@ -130,7 +133,7 @@ public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGood
toMqSqls.add(SqlMapping.get("goblin_goods_sku.insert_for_coupon"));
toMqSqls.add(SqlMapping.get("goblin_goods_image.insert_byreplace"));
LinkedList<Object[]> initGoodsImageObjs = CollectionUtil.linkedListObjectArr();
if (CollectionUtils.isEmpty(goodsInfoVo.getImageList())) {
if (!CollectionUtils.isEmpty(goodsInfoVo.getImageList())) {
goodsInfoVo.getImageList().forEach(imageUrl -> initGoodsImageObjs.add(new Object[] { spuId, imageUrl }));
}
toMqSqls.add(SqlMapping.get("goblin_goods_tag.insert_byreplace"));
......@@ -185,7 +188,7 @@ public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGood
public boolean sqbGoodsEditSpu(String uid, GoblinSqbPerfGoodsVo mgtGoodsAddParam,
GoblinGoodsInfoVo mgtGoodsInfoVo) {
String spuId = mgtGoodsAddParam.getSpuId();
String spuId = mgtGoodsInfoVo.getSpuId();
GoblinStoreMgtGoodsSqbAddParam initParam = new GoblinStoreMgtGoodsSqbAddParam();
GoblinGoodsInfoVo updateSpuInfoVo = initParam.initEditGoodsInfoVo(mgtGoodsAddParam, mgtGoodsInfoVo);
......@@ -257,47 +260,64 @@ public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGood
GoblinGoodsInfoVo goodsInfoVo) {
LocalDateTime nowTime = LocalDateTime.now();
List<MallProductsQueryData.Sku> skuResults = mgtGoodsAddParam.getSkuResults();
if (goodsInfoVo == null || CollectionUtils.isEmpty(goodsInfoVo.getSkuIdList())) {
if (goodsInfoVo == null || CollectionUtils.isEmpty(goodsInfoVo.getSkuIdList()) || CollectionUtils.isEmpty(skuResults)) {
return false;
}
LambdaQueryWrapper<GoblinSqbGoodsExt> wrapper = new LambdaQueryWrapper<GoblinSqbGoodsExt>()
.eq(GoblinSqbGoodsExt::getSpuId, goodsInfoVo.getSpuId())
.eq(GoblinSqbGoodsExt::getDelFlg, "0");
if (StringUtils.isNotBlank(mgtGoodsAddParam.getMallSn())) {
wrapper.eq(GoblinSqbGoodsExt::getMallSn, mgtGoodsAddParam.getMallSn());
}
List<GoblinSqbGoodsExt> extList = goblinSqbGoodsExtMapper.selectList(wrapper);
if (CollectionUtils.isEmpty(extList)) {
return false;
}
// 先拿到 spu 下所有 sku 详情,后续只更新命中的 skuId,其余仅参与价格区间重算
for (String spuSkuId : goodsInfoVo.getSkuIdList()) {
String skuId = spuSkuId;
if (StringUtils.isBlank(spuSkuId)) {
Map<String, String> sqbSkuToLocalSkuMap = extList.stream()
.filter(ext -> StringUtils.isNotBlank(ext.getSqbSkuId()) && StringUtils.isNotBlank(ext.getSkuId()))
.collect(Collectors.toMap(GoblinSqbGoodsExt::getSqbSkuId, GoblinSqbGoodsExt::getSkuId, (a, b) -> a));
boolean updated = false;
LinkedList<Object[]> updateGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
for (MallProductsQueryData.Sku sqbSku : skuResults) {
if (sqbSku == null || StringUtils.isBlank(sqbSku.getSkuId())) {
continue;
}
String localSkuId = sqbSkuToLocalSkuMap.get(sqbSku.getSkuId());
if (StringUtils.isBlank(localSkuId)) {
continue;
}
GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(spuSkuId);
if (skuInfoVo != null && "0".equals(skuInfoVo.getDelFlg())) {
for (MallProductsQueryData.Sku sku : skuResults) {
if (sku.getSkuId().equals(spuSkuId)) {
skuInfoVo.setName(sku.getSkuName());
skuInfoVo.setPrice(BigDecimal.valueOf(sku.getPrice()));
skuInfoVo.setUpdatedBy(uid);
skuInfoVo.setUpdatedAt(nowTime);
if (goblinMongoUtils.updateGoodsSkuInfoVo(skuInfoVo)) {
goblinRedisUtils.delGoodsSkuInfoVo(sku.getSkuId());
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_edit_for_coupon"));
LinkedList<Object[]> updateGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
updateGoodsSkuObjs.add(new Object[] {
skuInfoVo.getPrice(), skuInfoVo.getPriceMember(), skuInfoVo.getStock(),
skuInfoVo.getSkuStock(),
skuInfoVo.getBuyLimit(), skuInfoVo.getUpdatedBy(), skuInfoVo.getUpdatedAt(), skuId
});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, updateGoodsSkuObjs));
return true;
}
break;
}
}
GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(localSkuId);
if (skuInfoVo == null || !"0".equals(skuInfoVo.getDelFlg())) {
continue;
}
skuInfoVo.setName(sqbSku.getSkuName());
if (sqbSku.getPrice() != null) {
skuInfoVo.setPrice(BigDecimal.valueOf(sqbSku.getPrice()));
skuInfoVo.setPriceMember(BigDecimal.valueOf(sqbSku.getPrice()));
}
skuInfoVo.setUpdatedBy(uid);
skuInfoVo.setUpdatedAt(nowTime);
if (goblinMongoUtils.updateGoodsSkuInfoVo(skuInfoVo)) {
goblinRedisUtils.delGoodsSkuInfoVo(localSkuId);
updateGoodsSkuObjs.add(new Object[] {
skuInfoVo.getPrice(), skuInfoVo.getPriceMember(), skuInfoVo.getStock(),
skuInfoVo.getSkuStock(),
skuInfoVo.getBuyLimit(), skuInfoVo.getUpdatedBy(), skuInfoVo.getUpdatedAt(), localSkuId
});
updated = true;
}
}
return false;
if (updated) {
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_edit_for_coupon"));
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, updateGoodsSkuObjs));
}
return updated;
}
}
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