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

Commit f5c98313 authored by 胡佳晨's avatar 胡佳晨

Merge remote-tracking branch 'origin/dev_goblin' into dev_goblin

parents ae7aa6a8 43767c0b
......@@ -7,6 +7,7 @@ import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.util.CollectionUtils;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
......@@ -62,24 +63,31 @@ public class GoblinStoreMgtGoodsEditSkuParam implements Serializable {
private Integer operStock;
public GoblinGoodsSkuInfoVo initEditGoodsSkuInfoVo() {
GoblinGoodsSkuInfoVo vo = GoblinGoodsSkuInfoVo.getNew();
vo.setSkuId(this.getSkuId());
vo.setSkuPic(this.getSkuPic());
vo.setSkuSpecList(this.getSkuSpecList());
vo.setSellPrice(this.getSellPrice());
vo.setPrice(this.getPrice());
vo.setPriceMember(this.getPriceMember());
vo.setWeight(this.getWeight());
vo.setStock(this.getStock());
vo.setSkuStock(this.getSkuStock());
vo.setWarningStock(this.getWarningStock());
vo.setSkuAppear(this.getSkuAppear());
vo.setSkuIsbn(this.getSkuIsbn());
vo.setBuyFactor(this.getBuyFactor());
vo.setBuyRoster(this.getBuyRoster());
vo.setBuyLimit(this.getBuyLimit());
vo.setSkuValidity(DateUtil.Formatter.yyyyMMddHHmmss.parse(this.getSkuValidity()));
return vo;
GoblinGoodsSkuInfoVo goodsSkuInfoVo = GoblinGoodsSkuInfoVo.getNew();
List<GoblinGoodsSpecDto> skuSpecList = this.getSkuSpecList();
if (!CollectionUtils.isEmpty(skuSpecList)) {
goodsSkuInfoVo.setName("");
for (GoblinGoodsSpecDto goblinGoodsSpecDto : skuSpecList) {
goodsSkuInfoVo.setName(goodsSkuInfoVo.getName().concat(goblinGoodsSpecDto.getSpecVname()));
}
}
goodsSkuInfoVo.setSkuId(this.getSkuId());
goodsSkuInfoVo.setSkuPic(this.getSkuPic());
goodsSkuInfoVo.setSkuSpecList(skuSpecList);
goodsSkuInfoVo.setSellPrice(this.getSellPrice());
goodsSkuInfoVo.setPrice(this.getPrice());
goodsSkuInfoVo.setPriceMember(this.getPriceMember());
goodsSkuInfoVo.setWeight(this.getWeight());
goodsSkuInfoVo.setStock(this.getStock());
goodsSkuInfoVo.setSkuStock(this.getSkuStock());
goodsSkuInfoVo.setWarningStock(this.getWarningStock());
goodsSkuInfoVo.setSkuAppear(this.getSkuAppear());
goodsSkuInfoVo.setSkuIsbn(this.getSkuIsbn());
goodsSkuInfoVo.setBuyFactor(this.getBuyFactor());
goodsSkuInfoVo.setBuyRoster(this.getBuyRoster());
goodsSkuInfoVo.setBuyLimit(this.getBuyLimit());
goodsSkuInfoVo.setSkuValidity(DateUtil.Formatter.yyyyMMddHHmmss.parse(this.getSkuValidity()));
return goodsSkuInfoVo;
}
public GoblinGoodsSkuInfoVo initEditAddGoodsSkuInfoVo() {
......
......@@ -46,11 +46,12 @@ public interface IGoblinstoreMgtGoodsService {
/**
* 商品管理:商品编辑:SKU编辑
*
* @param uid UID
* @param storeMgtGoodsEditSkuParam GoblinStoreMgtGoodsEditSkuParam
* @param goodsInfoVo GoblinGoodsInfoVo
* @return boolean
*/
boolean goodsEditSku(GoblinStoreMgtGoodsEditSkuParam storeMgtGoodsEditSkuParam, GoblinGoodsInfoVo goodsInfoVo);
boolean goodsEditSku(String uid, GoblinStoreMgtGoodsEditSkuParam storeMgtGoodsEditSkuParam, GoblinGoodsInfoVo goodsInfoVo);
/**
* 商品管理:商品编辑:SKU添加
......
......@@ -214,7 +214,8 @@ public class GoblinStoreMgtGoodsController {
@ApiOperation(value = "商品编辑:SKU编辑", notes = "只修改单品信息,不包含商品信息")
@PostMapping("edit_sku")
public ResponseDto<Object> editSku(@Valid @RequestBody GoblinStoreMgtGoodsEditSkuParam storeMgtGoodsEditSkuParam) {
if (!goblinRedisUtils.hasStoreId(CurrentUtil.getCurrentUid(), storeMgtGoodsEditSkuParam.getStoreId())) {
String currentUid = CurrentUtil.getCurrentUid();
if (!goblinRedisUtils.hasStoreId(currentUid, storeMgtGoodsEditSkuParam.getStoreId())) {
return ResponseDto.failure(ErrorMapping.get("149002"));
}
GoblinGoodsSkuInfoVo mgtGoodsSkuInfoVo = goblinRedisUtils.getMgtGoodsSkuInfoVo(storeMgtGoodsEditSkuParam.getSkuId());
......@@ -252,15 +253,27 @@ public class GoblinStoreMgtGoodsController {
storeMgtGoodsEditSkuParam.setStock(stock + operStockVal);
}
}
List<GoblinGoodsSpecDto> paramSkuSpecList = storeMgtGoodsEditSkuParam.getSkuSpecList();
List<String> skuIdList = goodsInfoVo.getSkuIdList();
for (String skuId : skuIdList) {// 比对所有SKU规格信息
GoblinGoodsSkuInfoVo existMgtGoodsSkuInfoVo = goblinRedisUtils.getMgtGoodsSkuInfoVo(skuId);
Map<String, String> editBefSkuSpecMap = existMgtGoodsSkuInfoVo.getSkuSpecList().stream()
.collect(Collectors.toMap(GoblinGoodsSpecDto::getSpecName, GoblinGoodsSpecDto::getSpecVname, (k1, k2) -> k2));
boolean diffSpecFlg = false;
List<GoblinGoodsSpecDto> paramSkuSpecList = storeMgtGoodsEditSkuParam.getSkuSpecList();
if (paramSkuSpecList.size() != editBefSkuSpecMap.size()) {
log.warn("商品管理:商品编辑:SKU编辑:规格信息不一致[skuId={},editBefSkuSpecMap={},paramGoodsSpecDto={}]",
paramSkuId, editBefSkuSpecMap, paramSkuSpecList);
return ResponseDto.failure(ErrorMapping.get("149014"));
}
for (GoblinGoodsSpecDto paramGoodsSpecDto : paramSkuSpecList) {
if (!editBefSkuSpecMap.get(paramGoodsSpecDto.getSpecName()).equals(paramGoodsSpecDto.getSpecVname())) {
String editBefSkuSpecVname = editBefSkuSpecMap.get(paramGoodsSpecDto.getSpecName());
if (null == editBefSkuSpecVname) {// 入参规格不存在于原SKU中,则参数有误
log.warn("商品管理:商品编辑:SKU编辑:规格信息不一致[skuId={},editBefSkuSpecMap={},paramGoodsSpecDto={}]",
paramSkuId, editBefSkuSpecMap, paramGoodsSpecDto);
return ResponseDto.failure(ErrorMapping.get("149014"));
}
if (!editBefSkuSpecVname.equals(paramGoodsSpecDto.getSpecVname())) {
diffSpecFlg = true;// 多个规格中只要存在一个不一致,即可跳过,标记为允许添加
break;
}
......@@ -275,11 +288,11 @@ public class GoblinStoreMgtGoodsController {
if (specVo.getSpecName().equals(entry.getKey())) {
List<GoblinGoodsSpecValueVo> specValues = specVo.getSpecValues();
int idx = IntStream.range(0, specValues.size())
.filter(i -> specValues.get(i).getSpecVname().equals(entry.getValue()))
.findFirst().orElse(-1);
.filter(i -> specValues.get(i).getSpecVname().equals(entry.getValue())).findFirst().orElse(-1);
if (idx == -1) {
log.warn("商品管理:商品编辑:SKU编辑:规格信息不一致[specVoList={},editBefSkuSpecMap={}]", JsonUtils.toJson(specVoList), editBefSkuSpecMap);
return ResponseDto.failure(ErrorMapping.get("149013"));
log.warn("商品管理:商品编辑:SKU编辑:规格信息不一致[skuId={},specVoList={},editBefSkuSpecMap={}]",
paramSkuId, JsonUtils.toJson(specValues), editBefSkuSpecMap);
return ResponseDto.failure(ErrorMapping.get("149014"));
} else {
specValues.get(idx).setSpecVname(paramSkuSpecMap.get(specVo.getSpecName()));
}
......@@ -292,11 +305,12 @@ public class GoblinStoreMgtGoodsController {
continue;
}
if (!diffSpecFlg) {
log.warn("商品管理:商品编辑:SKU编辑:重复的规格信息[editBefSkuSpecMap={},paramSkuSpecMap={}]", editBefSkuSpecMap, JsonUtils.toJson(paramSkuSpecList));
return ResponseDto.failure(ErrorMapping.get("149014"));
log.warn("商品管理:商品编辑:SKU编辑:重复的规格信息[skuId={},editBefSkuSpecMap={},paramSkuSpecMap={}]",
paramSkuId, editBefSkuSpecMap, JsonUtils.toJson(paramSkuSpecList));
return ResponseDto.failure(ErrorMapping.get("149015"));
}
}
if (goblinstoreMgtGoodsService.goodsEditSku(storeMgtGoodsEditSkuParam, goodsInfoVo)) {
if (goblinstoreMgtGoodsService.goodsEditSku(currentUid, storeMgtGoodsEditSkuParam, goodsInfoVo)) {
return ResponseDto.success(goblinRedisUtils.getMgtGoodsSkuInfoVo(paramSkuId));
} else {
if (null != operStock && operStock != 0) {// 处理库存:回滚
......@@ -337,7 +351,7 @@ public class GoblinStoreMgtGoodsController {
}
if (!diffSpecFlg) {
log.warn("商品管理:商品编辑:SKU添加:重复的规格信息[skuSpecMap={},paramSkuSpecMap={}]", skuSpecMap, JsonUtils.toJson(skuSpecList));
return ResponseDto.failure(ErrorMapping.get("149014"));
return ResponseDto.failure(ErrorMapping.get("149015"));
}
}
List<GoblinGoodsSpecVo> specVoList = goodsInfoVo.getSpecVoList();
......
......@@ -209,12 +209,19 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
}
@Override
public boolean goodsEditSku(GoblinStoreMgtGoodsEditSkuParam storeMgtGoodsEditSkuParam, GoblinGoodsInfoVo goodsInfoVo) {
public boolean goodsEditSku(String uid, GoblinStoreMgtGoodsEditSkuParam storeMgtGoodsEditSkuParam, GoblinGoodsInfoVo goodsInfoVo) {
GoblinGoodsSkuInfoVo editGoodsSkuInfoVo = storeMgtGoodsEditSkuParam.initEditGoodsSkuInfoVo();
editGoodsSkuInfoVo.setUpdatedBy(uid);
editGoodsSkuInfoVo.setUpdatedAt(LocalDateTime.now());
if (goblinMongoUtils.updateGoodsSkuInfoVo(editGoodsSkuInfoVo)) {
goblinRedisUtils.setSkuStock(null, editGoodsSkuInfoVo.getSkuId(), editGoodsSkuInfoVo.getSkuStock());
Integer operStock = storeMgtGoodsEditSkuParam.getOperStock();
if (null != operStock && operStock != 0) {
goblinRedisUtils.setSkuStock(null, editGoodsSkuInfoVo.getSkuId(), editGoodsSkuInfoVo.getSkuStock());
}
if (!CollectionUtils.isEmpty(storeMgtGoodsEditSkuParam.getSkuSpecList())) {// 更改了规格,需要同步SPU里的规格信息
goodsInfoVo.setUpdatedBy(uid);
goodsInfoVo.setUpdatedAt(editGoodsSkuInfoVo.getUpdatedAt());
goblinMongoUtils.updateGoodsInfoVo(goodsInfoVo);
}
// TODO: 2022/1/5 zhanggb redis+sql
......
......@@ -28,7 +28,8 @@
149011=SKU不存在,请核实
149012=SKU库存不足,请核实
149013=SKU编辑失败
149014=SKU添加失败,重复的规格信息
149014=SKU编辑失败,规格信息有误
149015=SKU添加失败,重复的规格信息
148001=库存不足
......
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