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

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

+API:商品规格编辑;

parent b07a660e
...@@ -22,7 +22,7 @@ public class GoblinStoreMgtGoodsAddSkuParam implements Serializable { ...@@ -22,7 +22,7 @@ public class GoblinStoreMgtGoodsAddSkuParam implements Serializable {
@ApiModelProperty(position = 10, required = false, value = "单品ID[编辑时必传]") @ApiModelProperty(position = 10, required = false, value = "单品ID[编辑时必传]")
private String skuId; private String skuId;
@ApiModelProperty(position = 11, required = true, value = "单品默认图片的url[256]") @ApiModelProperty(position = 11, required = true, value = "单品默认图片的url[256]")
@NotBlank(message = "图片不能为空") @NotBlank(message = "单品图片不能为空")
private String skuPic; private String skuPic;
@ApiModelProperty(position = 12, required = true, value = "单品规格信息") @ApiModelProperty(position = 12, required = true, value = "单品规格信息")
@NotNull(message = "规格信息不能为空") @NotNull(message = "规格信息不能为空")
......
...@@ -83,6 +83,7 @@ public class GoblinStoreMgtGoodsEditSkuParam implements Serializable { ...@@ -83,6 +83,7 @@ public class GoblinStoreMgtGoodsEditSkuParam implements Serializable {
for (GoblinGoodsSpecDto goblinGoodsSpecDto : skuSpecList) { for (GoblinGoodsSpecDto goblinGoodsSpecDto : skuSpecList) {
goodsSkuInfoVo.setName(goodsSkuInfoVo.getName().concat(goblinGoodsSpecDto.getSpecVname())); goodsSkuInfoVo.setName(goodsSkuInfoVo.getName().concat(goblinGoodsSpecDto.getSpecVname()));
} }
goodsSkuInfoVo.setSkuSpecList(skuSpecList);
} }
goodsSkuInfoVo.setSkuId(this.getSkuId()); goodsSkuInfoVo.setSkuId(this.getSkuId());
goodsSkuInfoVo.setSkuPic(this.getSkuPic()); goodsSkuInfoVo.setSkuPic(this.getSkuPic());
......
...@@ -53,11 +53,11 @@ public interface IGoblinstoreMgtGoodsService { ...@@ -53,11 +53,11 @@ public interface IGoblinstoreMgtGoodsService {
* @param mgtGoodsEditSkuParam GoblinStoreMgtGoodsEditSkuParam * @param mgtGoodsEditSkuParam GoblinStoreMgtGoodsEditSkuParam
* @param goodsInfoVo GoblinGoodsInfoVo * @param goodsInfoVo GoblinGoodsInfoVo
* @param delSpuSpecMap Map<String, String> * @param delSpuSpecMap Map<String, String>
* @param beUpdateSpuSpecFlg boolean * @param addSpuSpecMap Map<String, String>
* @return boolean * @return boolean
*/ */
boolean goodsEditSku(String uid, GoblinStoreMgtGoodsEditSkuParam mgtGoodsEditSkuParam, boolean goodsEditSku(String uid, GoblinStoreMgtGoodsEditSkuParam mgtGoodsEditSkuParam,
GoblinGoodsInfoVo goodsInfoVo, Map<String, String> delSpuSpecMap, boolean beUpdateSpuSpecFlg); GoblinGoodsInfoVo goodsInfoVo, Map<String, String> delSpuSpecMap, Map<String, String> addSpuSpecMap);
/** /**
* 商品管理:商品编辑:SKU添加 * 商品管理:商品编辑:SKU添加
......
...@@ -79,6 +79,9 @@ public class GoblinSelfTagServiceImpl extends ServiceImpl<GoblinSelfTagMapper, G ...@@ -79,6 +79,9 @@ public class GoblinSelfTagServiceImpl extends ServiceImpl<GoblinSelfTagMapper, G
updateWrapper.set(GoblinSelfTag::getTagName, selfTag.getTagName()); updateWrapper.set(GoblinSelfTag::getTagName, selfTag.getTagName());
updateWrapper.set(GoblinSelfTag::getTagPic, selfTag.getTagPic()); updateWrapper.set(GoblinSelfTag::getTagPic, selfTag.getTagPic());
if (this.update(updateWrapper)) { if (this.update(updateWrapper)) {
AbstractRedisUtil redisGoblinUtil = redisDataSourceUtil.getRedisGoblinUtil();
redisGoblinUtil.del(GoblinRedisConst.BASIC_SELF_TAG);
redisGoblinUtil.del(GoblinRedisConst.BASIC_SELF_EXTAG);
UpdateResult updateResult = mongoTemplate.getCollection(GoblinSelfTagVo.class.getSimpleName()).updateOne( UpdateResult updateResult = mongoTemplate.getCollection(GoblinSelfTagVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("tagId").is(selfTag.getTagId()).and("tagBelong").is(selfTag.getTagBelong()).and("delFlg").is("0")).getQueryObject(), Query.query(Criteria.where("tagId").is(selfTag.getTagId()).and("tagBelong").is(selfTag.getTagBelong()).and("delFlg").is("0")).getQueryObject(),
Update.update("tagType", selfTag.getTagType()).set("tagName", selfTag.getTagName()).set("tagPic", selfTag.getTagPic()).getUpdateObject() Update.update("tagType", selfTag.getTagType()).set("tagName", selfTag.getTagName()).set("tagPic", selfTag.getTagPic()).getUpdateObject()
...@@ -89,10 +92,6 @@ public class GoblinSelfTagServiceImpl extends ServiceImpl<GoblinSelfTagMapper, G ...@@ -89,10 +92,6 @@ public class GoblinSelfTagServiceImpl extends ServiceImpl<GoblinSelfTagMapper, G
} }
log.info("店铺管理:标签管理:编辑[selfTag={},MONGO.UpdateResult={}]", JsonUtils.toJson(selfTag), JsonUtils.toJson(updateResult)); log.info("店铺管理:标签管理:编辑[selfTag={},MONGO.UpdateResult={}]", JsonUtils.toJson(selfTag), JsonUtils.toJson(updateResult));
AbstractRedisUtil redisGoblinUtil = redisDataSourceUtil.getRedisGoblinUtil();
redisGoblinUtil.del(GoblinRedisConst.BASIC_SELF_TAG);
redisGoblinUtil.del(GoblinRedisConst.BASIC_SELF_EXTAG);
try { try {
boolean isTagFlg = selfTag.getTagBelong().equals("0"); boolean isTagFlg = selfTag.getTagBelong().equals("0");
String subDocName = isTagFlg ? "tagVoList" : "extagVoList"; String subDocName = isTagFlg ? "tagVoList" : "extagVoList";
...@@ -136,6 +135,9 @@ public class GoblinSelfTagServiceImpl extends ServiceImpl<GoblinSelfTagMapper, G ...@@ -136,6 +135,9 @@ public class GoblinSelfTagServiceImpl extends ServiceImpl<GoblinSelfTagMapper, G
); );
if (rmvResultFlg) { if (rmvResultFlg) {
AbstractRedisUtil redisGoblinUtil = redisDataSourceUtil.getRedisGoblinUtil();
redisGoblinUtil.del(GoblinRedisConst.BASIC_SELF_TAG);
redisGoblinUtil.del(GoblinRedisConst.BASIC_SELF_EXTAG);
UpdateResult updateResult = mongoTemplate.updateMulti(Query.query(Criteria.where("tagId").in(tagIdArr).and("delFlg").is("0").and("tagBelong").is(tagBelong)), UpdateResult updateResult = mongoTemplate.updateMulti(Query.query(Criteria.where("tagId").in(tagIdArr).and("delFlg").is("0").and("tagBelong").is(tagBelong)),
Update.update("delFlg", "1"), Update.update("delFlg", "1"),
GoblinSelfTagVo.class.getSimpleName() GoblinSelfTagVo.class.getSimpleName()
...@@ -146,10 +148,6 @@ public class GoblinSelfTagServiceImpl extends ServiceImpl<GoblinSelfTagMapper, G ...@@ -146,10 +148,6 @@ public class GoblinSelfTagServiceImpl extends ServiceImpl<GoblinSelfTagMapper, G
} }
log.info("店铺管理:标签管理:删除[tagIdArr={},tagBelong={},MONGO.UpdateResult={}]", JsonUtils.toJson(tagIdArr), tagBelong, JsonUtils.toJson(updateResult)); log.info("店铺管理:标签管理:删除[tagIdArr={},tagBelong={},MONGO.UpdateResult={}]", JsonUtils.toJson(tagIdArr), tagBelong, JsonUtils.toJson(updateResult));
AbstractRedisUtil redisGoblinUtil = redisDataSourceUtil.getRedisGoblinUtil();
redisGoblinUtil.del(GoblinRedisConst.BASIC_SELF_TAG);
redisGoblinUtil.del(GoblinRedisConst.BASIC_SELF_EXTAG);
try { try {
int updateGoodsTagCount = -1, updateGoodsArtagCount = -1; int updateGoodsTagCount = -1, updateGoodsArtagCount = -1;
GoblinGoodsTag updateGoodsTag = new GoblinGoodsTag(); GoblinGoodsTag updateGoodsTag = new GoblinGoodsTag();
......
...@@ -46,7 +46,6 @@ import java.nio.charset.StandardCharsets; ...@@ -46,7 +46,6 @@ import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream;
@ApiSupport(order = 149004) @ApiSupport(order = 149004)
@Api(tags = "商品管理") @Api(tags = "商品管理")
...@@ -500,90 +499,106 @@ public class GoblinStoreMgtGoodsController { ...@@ -500,90 +499,106 @@ public class GoblinStoreMgtGoodsController {
} }
} }
List<GoblinGoodsSpecDto> paramSkuSpecList = mgtGoodsEditSkuParam.getSkuSpecList();
List<String> skuIdList = goodsInfoVo.getSkuIdList();
Map<String, List<GoblinGoodsSpecDto>> otherSkuSpecListMap = new HashMap<>();
Map<String, String> delSpuSpecMap = CollectionUtil.mapStringString(); Map<String, String> delSpuSpecMap = CollectionUtil.mapStringString();
boolean beUpdateSpuSpecFlg = false; Map<String, String> addSpuSpecMap = CollectionUtil.mapStringString();
for (String skuId : skuIdList) {// 比对所有SKU规格信息 {// 规格校验、处理
GoblinGoodsSkuInfoVo existMgtGoodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId); Map<String, String> befSkuSpecNameVnameMap = mgtGoodsSkuInfoVo.getSkuSpecList().stream()
List<GoblinGoodsSpecDto> skuSpecList = existMgtGoodsSkuInfoVo.getSkuSpecList(); .collect(Collectors.toMap(GoblinGoodsSpecDto::getSpecName, GoblinGoodsSpecDto::getSpecVname));
otherSkuSpecListMap.put(skuId, skuSpecList); List<GoblinGoodsSpecDto> paramSkuSpecList = mgtGoodsEditSkuParam.getSkuSpecList();
Map<String, String> editBefSkuSpecMap = skuSpecList.stream() Set<String> befSkuSpecNameSet = befSkuSpecNameVnameMap.keySet();
.collect(Collectors.toMap(GoblinGoodsSpecDto::getSpecName, GoblinGoodsSpecDto::getSpecVname, (k1, k2) -> k2)); Map<String, String> paramUpdateSkuSpecMap = CollectionUtil.mapStringString();
if (paramSkuSpecList.size() != editBefSkuSpecMap.size()) { Map<String, String> paramSkuSpecMap = CollectionUtil.mapStringString();
log.warn("商品管理:商品编辑:SKU编辑:规格信息不一致[skuId={},editBefSkuSpecMap={},paramGoodsSpecDto={}]", for (GoblinGoodsSpecDto paramSkuSpecDto : paramSkuSpecList) {
paramSkuId, editBefSkuSpecMap, paramSkuSpecList); String paramSkuSpecDtoSpecName = paramSkuSpecDto.getSpecName();
return ResponseDto.failure(ErrorMapping.get("149014")); String paramSkuSpecDtoSpecVname = paramSkuSpecDto.getSpecVname();
}
boolean diffSpecFlg = false; if (!befSkuSpecNameSet.contains(paramSkuSpecDtoSpecName)) return ResponseDto.failure(ErrorMapping.get("149014"));
for (GoblinGoodsSpecDto paramGoodsSpecDto : paramSkuSpecList) {// 入参规格逐个与当前商品所有SKU规格比对 paramSkuSpecMap.put(paramSkuSpecDtoSpecName, paramSkuSpecDtoSpecVname);
String editBefSkuSpecVname = editBefSkuSpecMap.get(paramGoodsSpecDto.getSpecName()); if (!befSkuSpecNameVnameMap.get(paramSkuSpecDtoSpecName).equals(paramSkuSpecDtoSpecVname)) {
if (null == editBefSkuSpecVname) {// 入参规格名称不存在于原SKU中,则参数有误 paramUpdateSkuSpecMap.put(paramSkuSpecDtoSpecName, paramSkuSpecDtoSpecVname);
log.warn("商品管理:商品编辑:SKU编辑:规格信息不一致[skuId={},editBefSkuSpecMap={},paramGoodsSpecDto={}]",
paramSkuId, editBefSkuSpecMap, paramGoodsSpecDto);
return ResponseDto.failure(ErrorMapping.get("149014"));
}
if (!editBefSkuSpecVname.equals(paramGoodsSpecDto.getSpecVname())) {
diffSpecFlg = true;// 多个规格中只要存在一个不一致,即可跳过,标记为允许添加
break;
} }
} }
if (skuId.equals(paramSkuId)) { if (!paramUpdateSkuSpecMap.isEmpty()) {
otherSkuSpecListMap.remove(skuId); List<String> skuIdList = goodsInfoVo.getSkuIdList();// SPU下所有SKUID
if (diffSpecFlg) {// 更改了规格,则同步修改SPU里的规格信息(新增 + 删除,不做更新) ArrayList<String> skuIdListTmp = CollectionUtil.arrayListString();
Map<String, String> paramSkuSpecMap = paramSkuSpecList.stream() skuIdListTmp.addAll(skuIdList);
.collect(Collectors.toMap(GoblinGoodsSpecDto::getSpecName, GoblinGoodsSpecDto::getSpecVname, (k1, k2) -> k2)); skuIdListTmp.removeIf(r -> r.equals(paramSkuId));
List<GoblinGoodsSpecVo> specVoList = goodsInfoVo.getSpecVoList();// SPU规格集
for (Map.Entry<String, String> entry : editBefSkuSpecMap.entrySet()) { Map<String, Set<String>> remainSkuSpecNameVnameMap = new HashMap<>();
String specName = entry.getKey(); List<GoblinGoodsSkuInfoVo> remainGoodsSkuInfoVos = CollectionUtils.isEmpty(skuIdListTmp)
String oldSpecVname = entry.getValue(); ? ObjectUtil.getGoblinGoodsSkuInfoVoArrayList() : goblinMongoUtils.getGoodsSkuInfoVos(skuIdListTmp);
for (GoblinGoodsSpecVo specVo : specVoList) {// SPU规格集遍历 int remainGoodsSkuInfoVoSize = remainGoodsSkuInfoVos.size();
if (specVo.getSpecName().equals(specName)) {// SPU规格集中筛选出当前所编辑SKU的规格 for (int i = 0; i < remainGoodsSkuInfoVoSize; i++) {
List<GoblinGoodsSpecValueVo> specValues = specVo.getSpecValues();// 筛选得到的SPU的规格对应值集合 GoblinGoodsSkuInfoVo remainGoodsSkuInfoVo = remainGoodsSkuInfoVos.get(i);
String newSpecVname = paramSkuSpecMap.get(specVo.getSpecName()); if (remainGoodsSkuInfoVo.getDelFlg().equals("0")) {// 有效SKU
if (!newSpecVname.equals(oldSpecVname)) { boolean existingSkuSpecFlg = true;
// 规格值集合中当前所编辑SKU规格值的索引 List<GoblinGoodsSpecDto> remainGoodsSkuSpecDtoList = remainGoodsSkuInfoVo.getSkuSpecList();
int idx = IntStream.range(0, specValues.size()) for (GoblinGoodsSpecDto remainGoodsSkuSpecDto : remainGoodsSkuSpecDtoList) {
.filter(i -> specValues.get(i).getSpecVname().equals(newSpecVname)).findFirst().orElse(-1); String remainGoodsSkuSpecDtoSpecName = remainGoodsSkuSpecDto.getSpecName();
if (idx == -1) {// 不存在则新增且处理旧规格值,存在则不做处理 String remainGoodsSkuSpecDtoSpecVname = remainGoodsSkuSpecDto.getSpecVname();
beUpdateSpuSpecFlg = true;
if (!paramSkuSpecMap.get(remainGoodsSkuSpecDtoSpecName).equals(remainGoodsSkuSpecDtoSpecVname)) {
specValues.add(GoblinGoodsSpecValueVo.getNew().setSpecVname(newSpecVname).setSpecVsort(specValues.size() + 2)); existingSkuSpecFlg = false;// 多个规格中只要又一个规格不一样即通过
}
boolean toDelOldSpecVnameFlg = true;// 其他SKU中只要存在该规格值,即不可删除该规格值
Set<Map.Entry<String, List<GoblinGoodsSpecDto>>> entries = otherSkuSpecListMap.entrySet();
for (Map.Entry<String, List<GoblinGoodsSpecDto>> ent : entries) {
for (GoblinGoodsSpecDto specDto : ent.getValue()) {
if (specDto.getSpecName().equals(specName) && specDto.getSpecVname().equals(oldSpecVname)) {
toDelOldSpecVnameFlg = false;
}
}
}
if (toDelOldSpecVnameFlg) {
specValues.removeIf(rmr -> rmr.getSpecVname().equals(oldSpecVname));
delSpuSpecMap.put(specName, oldSpecVname);
beUpdateSpuSpecFlg = true;
}
}
} }
Set<String> remainSkuSpecVnameTmpSet = remainSkuSpecNameVnameMap.get(remainGoodsSkuSpecDtoSpecName);
if (CollectionUtils.isEmpty(remainSkuSpecVnameTmpSet)) {
remainSkuSpecVnameTmpSet = CollectionUtil.getStringArraySet();
}
remainSkuSpecVnameTmpSet.add(remainGoodsSkuSpecDtoSpecVname);
remainSkuSpecNameVnameMap.put(remainGoodsSkuSpecDtoSpecName, remainSkuSpecVnameTmpSet);
}
if (existingSkuSpecFlg) {
log.warn("商品管理:商品编辑:SKU编辑:重复的规格信息[paramSkuId={},paramSkuSpecMap={} <==> existSkuId={},existSkuSpecDtoList={}]",
paramSkuId, paramSkuSpecMap, remainGoodsSkuInfoVo.getSkuId(), JsonUtils.toJson(remainGoodsSkuSpecDtoList));
return ResponseDto.failure(ErrorMapping.get("149015"));
} }
} }
} }
continue; List<GoblinGoodsSpecVo> spuSpecVoList = goodsInfoVo.getSpecVoList();// SPU规格集
} for (Map.Entry<String, String> entrie : paramUpdateSkuSpecMap.entrySet()) {
if (!diffSpecFlg) { String paramUpdateSkuSpecName = entrie.getKey(), paramUpdateSkuSpecVname = entrie.getValue();
log.warn("商品管理:商品编辑:SKU编辑:重复的规格信息[skuId={},editBefSkuSpecMap={},paramSkuSpecMap={}]",
paramSkuId, editBefSkuSpecMap, JsonUtils.toJson(paramSkuSpecList)); String befSkuSpecVname = befSkuSpecNameVnameMap.get(paramUpdateSkuSpecName);
return ResponseDto.failure(ErrorMapping.get("149015")); Set<String> remainSkuSpecVnameSet = remainSkuSpecNameVnameMap.get(paramUpdateSkuSpecName);
if (CollectionUtils.isEmpty(remainSkuSpecVnameSet) || !remainSkuSpecVnameSet.contains(befSkuSpecVname)) {// 其他SKU规格值中不存在当前编辑SKU旧规格值,则删除该规格值
delSpuSpecMap.put(paramUpdateSkuSpecName, befSkuSpecVname);
for (GoblinGoodsSpecVo spuSpecVo : spuSpecVoList) {
if (spuSpecVo.getSpecName().equals(paramUpdateSkuSpecName)) {
List<GoblinGoodsSpecValueVo> spuSpecVoSpecValueList = spuSpecVo.getSpecValues();
spuSpecVoSpecValueList.removeIf(r -> r.getSpecVname().equals(befSkuSpecVname));
spuSpecVoSpecValueList.sort(Comparator.comparing(GoblinGoodsSpecValueVo::getSpecVsort));
for (int i = 0; i < spuSpecVoSpecValueList.size(); i++)
spuSpecVoSpecValueList.get(i).setSpecVsort(i);
break;
}
}
}
if (CollectionUtils.isEmpty(remainSkuSpecVnameSet) || !remainSkuSpecVnameSet.contains(paramUpdateSkuSpecVname)) {// 其他SKU规格值中不存在当前编辑SKU新规格值,则新增该规格值
addSpuSpecMap.put(paramUpdateSkuSpecName, paramUpdateSkuSpecVname);
for (GoblinGoodsSpecVo spuSpecVo : spuSpecVoList) {
if (spuSpecVo.getSpecName().equals(paramUpdateSkuSpecName)) {
List<GoblinGoodsSpecValueVo> spuSpecVoSpecValueList = spuSpecVo.getSpecValues();
spuSpecVoSpecValueList.add(GoblinGoodsSpecValueVo.getNew().setSpecVname(paramUpdateSkuSpecVname).setSpecVsort(spuSpecVoSpecValueList.size() * 100));
spuSpecVoSpecValueList.sort(Comparator.comparing(GoblinGoodsSpecValueVo::getSpecVsort));
for (int i = 0; i < spuSpecVoSpecValueList.size(); i++)
spuSpecVoSpecValueList.get(i).setSpecVsort(i);
break;
}
}
}
}
} else {
mgtGoodsEditSkuParam.setSkuSpecList(null);
} }
} }
String buyRoster = mgtGoodsEditSkuParam.getBuyRoster(), befBuyRoster = mgtGoodsSkuInfoVo.getBuyRoster(); String buyRoster = mgtGoodsEditSkuParam.getBuyRoster(), befBuyRoster = mgtGoodsSkuInfoVo.getBuyRoster();
if (!mgtGoodsEditSkuParam.getBuyFactor().equals("2") || StringUtils.equals(befBuyRoster, buyRoster) || !buyRoster.startsWith("http")) { if (!mgtGoodsEditSkuParam.getBuyFactor().equals("2") || StringUtils.equals(befBuyRoster, buyRoster) || !buyRoster.startsWith("http")) {
mgtGoodsEditSkuParam.setBuyRoster(null); mgtGoodsEditSkuParam.setBuyRoster(null);
} }
if (goblinstoreMgtGoodsService.goodsEditSku(currentUid, mgtGoodsEditSkuParam, goodsInfoVo, delSpuSpecMap, beUpdateSpuSpecFlg)) { if (goblinstoreMgtGoodsService.goodsEditSku(currentUid, mgtGoodsEditSkuParam, goodsInfoVo, delSpuSpecMap, addSpuSpecMap)) {
mgtGoodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(paramSkuId); mgtGoodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(paramSkuId);
mgtGoodsSkuInfoVo.setSurplusStock(goblinRedisUtils.getSkuStock(null, paramSkuId)); mgtGoodsSkuInfoVo.setSurplusStock(goblinRedisUtils.getSkuStock(null, paramSkuId));
return ResponseDto.success(mgtGoodsSkuInfoVo); return ResponseDto.success(mgtGoodsSkuInfoVo);
......
...@@ -530,7 +530,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi ...@@ -530,7 +530,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
@Override @Override
public boolean goodsEditSku(String uid, GoblinStoreMgtGoodsEditSkuParam mgtGoodsEditSkuParam, GoblinGoodsInfoVo goodsInfoVo, public boolean goodsEditSku(String uid, GoblinStoreMgtGoodsEditSkuParam mgtGoodsEditSkuParam, GoblinGoodsInfoVo goodsInfoVo,
Map<String, String> updateSpuSpecMap, boolean beUpdateSpuSpecFlg) { Map<String, String> delSpuSpecMap, Map<String, String> addSpuSpecMap) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
GoblinGoodsSkuInfoVo updateSkuInfoVo = mgtGoodsEditSkuParam.initEditGoodsSkuInfoVo(); GoblinGoodsSkuInfoVo updateSkuInfoVo = mgtGoodsEditSkuParam.initEditGoodsSkuInfoVo();
...@@ -560,7 +560,6 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi ...@@ -560,7 +560,6 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
LinkedList<Object[]> updateSkuSpecValueObjs = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> updateSkuSpecValueObjs = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> initSpuSpecValueObjs = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> initSpuSpecValueObjs = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> delSpuSpecValueObjs = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> delSpuSpecValueObjs = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> updateSpuSpecValueObjs = CollectionUtil.linkedListObjectArr();
List<GoblinGoodsSpecVo> specVoList = goodsInfoVo.getSpecVoList(); List<GoblinGoodsSpecVo> specVoList = goodsInfoVo.getSpecVoList();
List<GoblinGoodsSpecDto> skuSpecList = mgtGoodsEditSkuParam.getSkuSpecList(); List<GoblinGoodsSpecDto> skuSpecList = mgtGoodsEditSkuParam.getSkuSpecList();
...@@ -568,35 +567,25 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi ...@@ -568,35 +567,25 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
String specName = spec.getSpecName(), specVname = spec.getSpecVname(); String specName = spec.getSpecName(), specVname = spec.getSpecVname();
GoblinGoodsSpecVo specVo = specVoList.stream().filter(r -> r.getSpecName().equals(specName)).findAny().get(); GoblinGoodsSpecVo specVo = specVoList.stream().filter(r -> r.getSpecName().equals(specName)).findAny().get();
GoblinGoodsSpecValueVo specValueVo = specVo.getSpecValues().stream().filter(rv -> rv.getSpecVname().equals(specVname)).findAny().get(); specVo.getSpecValues().forEach(r -> initSpuSpecValueObjs.add(new Object[]{spuId, specName, r.getSpecVname(), r.getSpecVsort()}));
initSpuSpecValueObjs.add(new Object[]{spuId, specName, specVname, specValueVo.getSpecVsort()});
updateSkuSpecValueObjs.add(new Object[]{specVname, skuId, specName}); updateSkuSpecValueObjs.add(new Object[]{specVname, skuId, specName});
if (!CollectionUtils.isEmpty(marketSkuIdList)) { if (!CollectionUtils.isEmpty(marketSkuIdList)) {
marketSkuIdList.forEach(marketSkuId -> updateSkuSpecValueObjs.add(new Object[]{specVname, marketSkuId, specName})); marketSkuIdList.forEach(marketSkuId -> updateSkuSpecValueObjs.add(new Object[]{specVname, marketSkuId, specName}));
} }
}); });
if (beUpdateSpuSpecFlg) { boolean updateGoodsInfoVoFlg = false;
for (GoblinGoodsSpecVo specVo : specVoList) { if (!delSpuSpecMap.isEmpty()) {// 删除了规格值,需要同步SPU里的规格信息
List<GoblinGoodsSpecValueVo> specValues = specVo.getSpecValues(); updateGoodsInfoVoFlg = true;
specValues.sort(Comparator.comparing(GoblinGoodsSpecValueVo::getSpecVsort)); goodsInfoVo.setUpdatedBy(uid);
for (int i = 0; i < specValues.size(); i++) { goodsInfoVo.setUpdatedAt(now);
GoblinGoodsSpecValueVo specValueVo = specValues.get(i);
specValueVo.setSpecVsort(i);
updateSpuSpecValueObjs.add(new Object[]{i, spuId, specVo.getSpecName(), specValueVo.getSpecVname()});
}
}
if (!CollectionUtils.isEmpty(updateSpuSpecMap)) {// 更改了规格,需要同步SPU里的规格信息
goodsInfoVo.setUpdatedBy(uid);
goodsInfoVo.setUpdatedAt(now);
goblinMongoUtils.updateGoodsInfoVo(goodsInfoVo);
goblinRedisUtils.delGoodsInfoVo(spuId);
updateSpuSpecMap.forEach((k, v) -> delSpuSpecValueObjs.add(new Object[]{spuId, k, v})); delSpuSpecMap.forEach((k, v) -> delSpuSpecValueObjs.add(new Object[]{spuId, k, v}));
} }
if (!addSpuSpecMap.isEmpty()) {// 新增了规格值,需要同步SPU里的规格信息
updateGoodsInfoVoFlg = true;
goodsInfoVo.setUpdatedBy(uid);
goodsInfoVo.setUpdatedAt(now);
} }
BigDecimal priceGe = BigDecimal.ZERO, priceLe = BigDecimal.ZERO; BigDecimal priceGe = BigDecimal.ZERO, priceLe = BigDecimal.ZERO;
...@@ -609,15 +598,17 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi ...@@ -609,15 +598,17 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
} }
LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
if (priceGe.compareTo(goodsInfoVo.getPriceGe()) != 0 || priceLe.compareTo(goodsInfoVo.getPriceLe()) != 0) { if (priceGe.compareTo(goodsInfoVo.getPriceGe()) != 0 || priceLe.compareTo(goodsInfoVo.getPriceLe()) != 0) {
updateGoodsInfoVoFlg = true;
goodsInfoVo.setPriceGe(priceGe); goodsInfoVo.setPriceGe(priceGe);
goodsInfoVo.setPriceLe(priceLe); goodsInfoVo.setPriceLe(priceLe);
goodsInfoVo.setUpdatedBy(uid); goodsInfoVo.setUpdatedBy(uid);
goodsInfoVo.setUpdatedAt(now); goodsInfoVo.setUpdatedAt(now);
updateGoodsObjs.add(new Object[]{priceGe, priceLe, uid, now, spuId});
}
if (updateGoodsInfoVoFlg) {
goblinMongoUtils.updateGoodsInfoVo(goodsInfoVo); goblinMongoUtils.updateGoodsInfoVo(goodsInfoVo);
goblinRedisUtils.delGoodsInfoVo(spuId); goblinRedisUtils.delGoodsInfoVo(spuId);
updateGoodsObjs.add(new Object[]{priceGe, priceLe, uid, now, spuId});
} }
String buyRoster = mgtGoodsEditSkuParam.getBuyRoster(); String buyRoster = mgtGoodsEditSkuParam.getBuyRoster();
if (StringUtils.isNotEmpty(buyRoster)) { if (StringUtils.isNotEmpty(buyRoster)) {
...@@ -642,14 +633,12 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi ...@@ -642,14 +633,12 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
// LinkedList<Object[]> initSpuSpecValueObjs = CollectionUtil.linkedListObjectArr(); // LinkedList<Object[]> initSpuSpecValueObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_spu_spec_value.update_by_editdel")); toMqSqls.add(SqlMapping.get("goblin_goods_spu_spec_value.update_by_editdel"));
// LinkedList<Object[]> delSpuSpecValueObjs = CollectionUtil.linkedListObjectArr(); // LinkedList<Object[]> delSpuSpecValueObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_spu_spec_value.update_by_edit"));
// LinkedList<Object[]> updateSpuSpecValueObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods.update_by_edit_sku")); toMqSqls.add(SqlMapping.get("goblin_goods.update_by_edit_sku"));
// LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr(); // LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(), queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, updateGoodsSkuForMarketObjs, updateGoodsSkuObjs, SqlMapping.gets(toMqSqls, updateGoodsSkuForMarketObjs, updateGoodsSkuObjs,
updateSkuSpecValueObjs, initSpuSpecValueObjs, delSpuSpecValueObjs, updateSpuSpecValueObjs, updateGoodsObjs)); updateSkuSpecValueObjs, initSpuSpecValueObjs, delSpuSpecValueObjs, updateGoodsObjs));
return true; return true;
} }
Integer operStock = mgtGoodsEditSkuParam.getOperStock(); Integer operStock = mgtGoodsEditSkuParam.getOperStock();
......
...@@ -122,7 +122,7 @@ public class GoblinRedisUtils { ...@@ -122,7 +122,7 @@ public class GoblinRedisUtils {
List<GoblinSelfTagVo> vos; List<GoblinSelfTagVo> vos;
if (valStrIsEmptyFlg) { if (valStrIsEmptyFlg) {
if (!CollectionUtils.isEmpty(vos = goblinMongoUtils.getSelfTagVos("0"))) { if (!CollectionUtils.isEmpty(vos = goblinMongoUtils.getSelfTagVos("0"))) {
redisUtil.set(GoblinRedisConst.BASIC_SELF_TAG, JsonUtils.toJson(vos)); redisUtil.set(GoblinRedisConst.BASIC_SELF_TAG, JsonUtils.toJson(vos), 60 * 60);
} }
} else { } else {
vos = JsonUtils.fromJson(valStr, new TypeReference<List<GoblinSelfTagVo>>() { vos = JsonUtils.fromJson(valStr, new TypeReference<List<GoblinSelfTagVo>>() {
...@@ -144,7 +144,7 @@ public class GoblinRedisUtils { ...@@ -144,7 +144,7 @@ public class GoblinRedisUtils {
List<GoblinSelfTagVo> vos; List<GoblinSelfTagVo> vos;
if (StringUtils.isEmpty(valStr)) { if (StringUtils.isEmpty(valStr)) {
if (!CollectionUtils.isEmpty(vos = goblinMongoUtils.getSelfTagVos("1"))) { if (!CollectionUtils.isEmpty(vos = goblinMongoUtils.getSelfTagVos("1"))) {
redisUtil.set(GoblinRedisConst.BASIC_SELF_TAG, JsonUtils.toJson(vos)); redisUtil.set(GoblinRedisConst.BASIC_SELF_TAG, JsonUtils.toJson(vos), 60 * 60);
} }
} else { } else {
vos = JsonUtils.fromJson(valStr, new TypeReference<List<GoblinSelfTagVo>>() { vos = JsonUtils.fromJson(valStr, new TypeReference<List<GoblinSelfTagVo>>() {
......
...@@ -29,7 +29,6 @@ goblin_goods_spec_value.insert_byreplace=REPLACE INTO goblin_goods_spec_value (s ...@@ -29,7 +29,6 @@ goblin_goods_spec_value.insert_byreplace=REPLACE INTO goblin_goods_spec_value (s
#---- 商品关联规格信息 #---- 商品关联规格信息
goblin_goods_spu_spec_value.insert_byreplace=REPLACE INTO goblin_goods_spu_spec_value (spu_id,spec_name,spec_vname,sort,del_flg)VALUES(?,?,?,?,'0') goblin_goods_spu_spec_value.insert_byreplace=REPLACE INTO goblin_goods_spu_spec_value (spu_id,spec_name,spec_vname,sort,del_flg)VALUES(?,?,?,?,'0')
goblin_goods_spu_spec_value.update_by_editdel=UPDATE goblin_goods_spu_spec_value SET del_flg='1' WHERE spu_id=? AND spec_name=? AND spec_vname=? AND del_flg='0' goblin_goods_spu_spec_value.update_by_editdel=UPDATE goblin_goods_spu_spec_value SET del_flg='1' WHERE spu_id=? AND spec_name=? AND spec_vname=? AND del_flg='0'
goblin_goods_spu_spec_value.update_by_edit=UPDATE goblin_goods_spu_spec_value SET sort=? WHERE spu_id=? AND spec_name=? AND spec_vname=? AND del_flg='0'
goblin_goods_spu_spec_value.update_by_del_sku=UPDATE goblin_goods_spu_spec_value SET sort=?,del_flg=? WHERE spu_id=? AND spec_name=? AND spec_vname=? goblin_goods_spu_spec_value.update_by_del_sku=UPDATE goblin_goods_spu_spec_value SET sort=?,del_flg=? WHERE spu_id=? AND spec_name=? AND spec_vname=?
goblin_goods_sku_spec_value.insert_byreplace=REPLACE INTO goblin_goods_sku_spec_value (spu_id,sku_id,spec_name,spec_vname,del_flg)VALUES(?,?,?,?,'0') goblin_goods_sku_spec_value.insert_byreplace=REPLACE INTO goblin_goods_sku_spec_value (spu_id,sku_id,spec_name,spec_vname,del_flg)VALUES(?,?,?,?,'0')
goblin_goods_sku_spec_value.update_by_edit=UPDATE goblin_goods_sku_spec_value SET spec_vname=? WHERE sku_id=? AND spec_name=? AND del_flg='0' goblin_goods_sku_spec_value.update_by_edit=UPDATE goblin_goods_sku_spec_value SET spec_vname=? WHERE sku_id=? AND spec_name=? AND del_flg='0'
......
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