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

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

~API:藏品SKU管理;

parent d2de582d
package com.liquidnet.service.goblin.dto.manage;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
import io.swagger.annotations.ApiModel;
......@@ -90,6 +91,7 @@ public class GoblinStoreMgtDigitalGoodsAddParam implements Serializable {
vo.setShelvesStatus("0");
vo.setSpuAppear("1");
vo.setDelFlg("0");
vo.setSkuIdList(CollectionUtil.linkedListString());
return vo;
}
......@@ -101,6 +103,7 @@ public class GoblinStoreMgtDigitalGoodsAddParam implements Serializable {
public GoblinGoodsInfoVo initEditGoodsInfoVo() {
GoblinGoodsInfoVo vo = GoblinGoodsInfoVo.getNew();
vo.setSpuId(this.getSpuId());
vo.setSpuType(1);
vo.setName(this.getName());
vo.setIntro(this.getIntro());
vo.setCateFid(this.getCateFid());
......
package com.liquidnet.service.goblin.dto.manage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "GoblinStoreMgtGoodsActionParam", description = "商品管理:商品列表操作入参")
@Data
public class GoblinStoreMgtGoodsSkuActionParam implements Serializable {
private static final long serialVersionUID = 6564996671833040261L;
@ApiModelProperty(position = 10, required = true, value = "店铺ID[64]")
@NotBlank(message = "店铺ID不能为空")
private String storeId;
@ApiModelProperty(position = 11, required = true, value = "商品ID[64]")
@NotBlank(message = "商品ID不能为空")
private String spuId;
@ApiModelProperty(position = 12, required = true, value = "操作类型[ONSHELVES-上架|UNSHELVE-下架|REMOVE-删除]")
@Pattern(regexp = "\\b(ONSHELVES|UNSHELVE|REMOVE)\\b", message = "操作类型无效")
private String action;
@ApiModelProperty(position = 13, required = true, value = "单品ID列表")
private List<String> skuIdList;
}
......@@ -17,6 +17,8 @@ public class GoblinStoreMgtGoodsListVo implements Serializable, Cloneable {
private String spuId;
@ApiModelProperty(position = 12, value = "商品编码[45]")
private String spuNo;
@ApiModelProperty(position = 12, value = "商品类型[0-常规|1-数字藏品]")
private int spuType;
@ApiModelProperty(position = 13, value = "封面图片地址[256]")
private String coverPic;
@ApiModelProperty(position = 14, value = "商品名称[100]")
......
......@@ -11,9 +11,6 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@ApiModel(value = "GoblinGoodsInfoVo", description = "商品SPU详情[不包含具体SKU,SKU详情参见'GoblinGoobsSkuInfoVo']")
......@@ -28,7 +25,7 @@ public class GoblinGoodsInfoVo implements Serializable, Cloneable {
@ApiModelProperty(position = 12, value = "商品编码[默认为系统编码,也可手动输入商家自己的编码]")
private String spuNo;
@ApiModelProperty(position = 12, value = "商品类型[0-常规|1-数字藏品]")
private Integer spuType;
private int spuType;
@ApiModelProperty(position = 13, value = "商品名称[100]")
private String name;
@ApiModelProperty(position = 14, value = "商品副标题[128]")
......
......@@ -136,6 +136,16 @@ public interface IGoblinstoreMgtGoodsService {
*/
boolean goodsShelvesProcessing(GoblinStoreMgtGoodsActionParam mgtGoodsActionParam, String uid, boolean shelvesFlg, List<String> spuNoList);
/**
* 商品管理:上下架商品-单品
*
* @param mgtGoodsSkuActionParam GoblinStoreMgtGoodsSkuActionParam
* @param uid UID
* @param shelvesFlg true:上架|false:下架
* @return boolean
*/
boolean goodsSkuShelvesProcessing(GoblinStoreMgtGoodsSkuActionParam mgtGoodsSkuActionParam, String uid, boolean shelvesFlg);
/**
* 商品管理:删除商品
*
......@@ -145,4 +155,13 @@ public interface IGoblinstoreMgtGoodsService {
* @return boolean
*/
boolean goodsRemove(GoblinStoreMgtGoodsActionParam mgtGoodsActionParam, String uid, List<String> spuNoList);
/**
* 商品管理:删除商品-单品
*
* @param mgtGoodsSkuActionParam GoblinStoreMgtGoodsSkuActionParam
* @param uid UID
* @return boolean
*/
boolean goodsSkuRemove(GoblinStoreMgtGoodsSkuActionParam mgtGoodsSkuActionParam, String uid);
}
......@@ -151,9 +151,9 @@ public class GoblinStoreMgtGoodsController {
log.warn("商品管理:SPU管理:上架警告:请先将商品下架后操作[UID={},spuId={}]", currentUid, spuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,商品已上架");
}
if (goodsInfoVo.getSpuType().equals(1)) {
if (goodsInfoVo.getSpuType() == 1) {
log.warn("商品管理:SPU管理:上架警告:数字藏品不支持此操作[UID={},spuId={}]", currentUid, spuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,商品为数字藏品");
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,商品为数字藏品");
}
spuNoList.add(goodsInfoVo.getSpuNo());
}
......@@ -193,10 +193,6 @@ public class GoblinStoreMgtGoodsController {
log.warn("商品管理:SPU管理:删除警告:请先将商品下架后操作[UID={},spuId={}]", currentUid, spuId);
return ResponseDto.failure(ErrorMapping.get("149016"));
}
if (goodsInfoVo.getSpuType().equals(1)) {
log.warn("商品管理:SPU管理:上架警告:数字藏品不支持此操作[UID={},spuId={}]", currentUid, spuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品为数字藏品");
}
spuNoList.add(goodsInfoVo.getSpuNo());
}
resultFlg = goblinstoreMgtGoodsService.goodsRemove(mgtGoodsActionParam, currentUid, spuNoList);
......@@ -208,6 +204,112 @@ public class GoblinStoreMgtGoodsController {
return resultFlg ? ResponseDto.success() : ResponseDto.failure();
}
@ApiOperationSupport(order = 31)
@ApiOperation(value = "SKU管理-数字藏品")
@PostMapping("digital/operate")
public ResponseDto<Object> digitalAction(@Valid @RequestBody GoblinStoreMgtGoodsSkuActionParam mgtGoodsSkuActionParam) {
String currentUid = CurrentUtil.getCurrentUid(), storeId = mgtGoodsSkuActionParam.getStoreId(), spuId = mgtGoodsSkuActionParam.getSpuId();
if (!goblinRedisUtils.hasStoreId(currentUid, storeId)) {
return ResponseDto.failure(ErrorMapping.get("149002"));
}
List<String> skuIdList = mgtGoodsSkuActionParam.getSkuIdList();
if (CollectionUtils.isEmpty(skuIdList)) {
return ResponseDto.failure(ErrorMapping.get("149009"));
}
if (log.isDebugEnabled()) {
log.debug("商品管理:SPU管理:[UID={},GoblinStoreMgtGoodsActionParam={}]", currentUid, JsonUtils.toJson(mgtGoodsSkuActionParam));
}
boolean resultFlg;
switch (mgtGoodsSkuActionParam.getAction()) {
case "ONSHELVES":
for (String skuId : skuIdList) {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
if (null == goodsSkuInfoVo || !goodsSkuInfoVo.getDelFlg().equals("0")) {
log.warn("商品管理:SPU管理:上架警告:商品不存在或已删除[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品不存在或已删除");
}
if (!goodsSkuInfoVo.getStoreId().equals(storeId)) {
log.warn("商品管理:SPU管理:上架警告:非本店铺商品,无权操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "非本店铺商品,无权操作");
}
if (!goodsSkuInfoVo.getSpuId().equals(spuId)) {
log.warn("商品管理:SPU管理:上架警告:非法操作,参数有误[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "参数有误");
}
if (goodsSkuInfoVo.getShelvesStatus().equals("3")) {
log.warn("商品管理:SPU管理:上架警告:请先将商品下架后操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,商品已上架");
}
if (goodsSkuInfoVo.getSkuType() == 0) {
log.warn("商品管理:SPU管理:上架警告:数字藏品不支持此操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,商品非数字藏品");
}
if (goodsSkuInfoVo.getUpchain().equals(1)) {
log.warn("商品管理:SPU管理:上架警告:数字藏品不支持此操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "数字藏品未完成NFT上传声明");
}
}
resultFlg = goblinstoreMgtGoodsService.goodsSkuShelvesProcessing(mgtGoodsSkuActionParam, currentUid, true);
break;
case "UNSHELVE":
for (String skuId : skuIdList) {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
if (null == goodsSkuInfoVo || !goodsSkuInfoVo.getDelFlg().equals("0")) {
log.warn("商品管理:SPU管理:下架警告:商品不存在或已删除[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品不存在或已删除");
}
if (!goodsSkuInfoVo.getStoreId().equals(storeId)) {
log.warn("商品管理:SPU管理:下架警告:非本店铺商品,无权操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "非本店铺商品,无权操作");
}
if (!goodsSkuInfoVo.getSpuId().equals(spuId)) {
log.warn("商品管理:SPU管理:上架警告:非法操作,参数有误[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "参数有误");
}
if (!goodsSkuInfoVo.getShelvesStatus().equals("3")) {// 非上架中不允许下架
log.warn("商品管理:SPU管理:下架警告:非上架中商品不允许此操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "非上架中商品不允许此操作");
}
if (goodsSkuInfoVo.getSkuType() == 0) {
log.warn("商品管理:SPU管理:上架警告:数字藏品不支持此操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,商品非数字藏品");
}
}
resultFlg = goblinstoreMgtGoodsService.goodsSkuShelvesProcessing(mgtGoodsSkuActionParam, currentUid, false);
break;
case "REMOVE":
for (String skuId : skuIdList) {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
if (null == goodsSkuInfoVo || !goodsSkuInfoVo.getDelFlg().equals("0")) {
log.warn("商品管理:SPU管理:删除警告:商品不存在或已删除[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品不存在或已删除");
}
if (!goodsSkuInfoVo.getStoreId().equals(storeId)) {
log.warn("商品管理:SPU管理:删除警告:非本店铺商品,无权操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "非本店铺商品,无权操作");
}
if (!goodsSkuInfoVo.getSpuId().equals(spuId)) {
log.warn("商品管理:SPU管理:上架警告:非法操作,参数有误[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "参数有误");
}
if (goodsSkuInfoVo.getShelvesStatus().equals("3")) {// 上架中不允许删除
log.warn("商品管理:SPU管理:删除警告:请先将商品下架后操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorMapping.get("149016"));
}
if (goodsSkuInfoVo.getSkuType() == 0) {
log.warn("商品管理:SPU管理:上架警告:数字藏品不支持此操作[UID={},skuId={}]", currentUid, skuId);
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,商品非数字藏品");
}
}
resultFlg = goblinstoreMgtGoodsService.goodsSkuRemove(mgtGoodsSkuActionParam, currentUid);
break;
default:
log.warn("商品管理:SPU管理:Invalid operation[UID={},mgtGoodsSkuActionParam={}]", currentUid, JsonUtils.toJson(mgtGoodsSkuActionParam));
return ResponseDto.failure(ErrorMapping.get("149001"));
}
return resultFlg ? ResponseDto.success() : ResponseDto.failure();
}
@ApiOperationSupport(order = 4)
@ApiOperation(value = "SPU添加")
@PutMapping("add")
......@@ -415,6 +517,9 @@ public class GoblinStoreMgtGoodsController {
|| !mgtGoodsInfoVo.getDelFlg().equals("0")) {
return ResponseDto.failure(ErrorMapping.get("149010"));
}
if (mgtGoodsInfoVo.getSpuType() == 1) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品为数字藏品");
}
if (!mgtGoodsInfoVo.getName().equals(mgtGoodsAddParam.getName())
// && null != goblinMongoUtils.getMgtGoodsInfoVo(storeId, mgtGoodsAddParam.getName())) {
&& goblinMongoUtils.countMgtGoodsInfoVo(mgtGoodsAddParam.getName()) > 0) {
......@@ -490,6 +595,9 @@ public class GoblinStoreMgtGoodsController {
|| !mgtGoodsInfoVo.getDelFlg().equals("0")) {
return ResponseDto.failure(ErrorMapping.get("149010"));
}
if (mgtGoodsInfoVo.getSpuType() == 0) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品非数字藏品");
}
if (!mgtGoodsInfoVo.getName().equals(mgtDigitalGoodsEditParam.getName())
&& goblinMongoUtils.countMgtGoodsInfoVo(mgtDigitalGoodsEditParam.getName()) > 0) {
return ResponseDto.failure(ErrorMapping.get("149007"));
......@@ -533,6 +641,9 @@ public class GoblinStoreMgtGoodsController {
if (null == goodsInfoVo || !goodsInfoVo.getDelFlg().equals("0")) {
return ResponseDto.failure(ErrorMapping.get("149010"));
}
if (goodsInfoVo.getSpuType() == 1) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品为数字藏品");
}
{// 分类、ISBN校验
String cateFid = goodsInfoVo.getCateFid(), cateSid = goodsInfoVo.getCateSid(), cateTid = goodsInfoVo.getCateTid();
List<GoblinSelfGoodsCategoryVo> selfGoodsCategoryVos = goblinStoreMgtExtraService.listCategoryVo();
......@@ -724,6 +835,9 @@ public class GoblinStoreMgtGoodsController {
if (null == mgtGoodsInfoVo || !mgtGoodsInfoVo.getDelFlg().equals("0")) {
return ResponseDto.failure(ErrorMapping.get("149010"));
}
if (mgtGoodsInfoVo.getSpuType() == 0) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品非数字藏品");
}
if ("3".equals(mgtDigitalGoodsEditSkuParam.getShelvesHandle()) && StringUtils.isEmpty(mgtDigitalGoodsEditSkuParam.getShelvesTime())) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "请指定预约上架时间");
}
......@@ -785,6 +899,9 @@ public class GoblinStoreMgtGoodsController {
|| !goodsInfoVo.getStoreId().equals(storeId)) {
return ResponseDto.failure(ErrorMapping.get("149010"));
}
if (goodsInfoVo.getSpuType() == 1) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品为数字藏品");
}
{// 分类、ISBN校验
String cateFid = goodsInfoVo.getCateFid(), cateSid = goodsInfoVo.getCateSid(), cateTid = goodsInfoVo.getCateTid();
List<GoblinSelfGoodsCategoryVo> selfGoodsCategoryVos = goblinStoreMgtExtraService.listCategoryVo();
......@@ -884,6 +1001,9 @@ public class GoblinStoreMgtGoodsController {
if (null == goodsInfoVo || !goodsInfoVo.getDelFlg().equals("0") || !goodsInfoVo.getStoreId().equals(storeId)) {
return ResponseDto.failure(ErrorMapping.get("149010"));
}
if (goodsInfoVo.getSpuType() == 0) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品非数字藏品");
}
String unbox = mgtDigitalGoodsAddSkuParam.getUnbox();
boolean notUnboxFlg = StringUtils.isEmpty(unbox) || unbox.equals("0");
if (notUnboxFlg) {// 非盲盒校验
......@@ -955,6 +1075,9 @@ public class GoblinStoreMgtGoodsController {
if (null == mgtGoodsSkuInfoVo || !mgtGoodsSkuInfoVo.getDelFlg().equals("0") || !mgtGoodsSkuInfoVo.getStoreId().equals(storeId)) {
return ResponseDto.failure(ErrorMapping.get("149011"));
}
if (mgtGoodsSkuInfoVo.getSkuType() == 1) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品为数字藏品");
}
if (mgtGoodsSkuInfoVo.getShelvesStatus().equals("3")) {
return ResponseDto.failure(ErrorMapping.get("149016"));
}
......
......@@ -976,13 +976,14 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
if (priceGe.compareTo(mgtGoodsInfoVo.getPriceGe()) != 0 || priceLe.compareTo(mgtGoodsInfoVo.getPriceLe()) != 0) {
mgtGoodsInfoVo.setPriceGe(priceGe);
mgtGoodsInfoVo.setPriceLe(priceLe);
mgtGoodsInfoVo.setUpdatedBy(uid);
mgtGoodsInfoVo.setUpdatedAt(now);
updateGoodsObjs.add(new Object[]{priceGe, priceLe, uid, now, spuId});
goblinMongoUtils.updateGoodsInfoVo(mgtGoodsInfoVo);
goblinRedisUtils.delGoodsInfoVo(spuId);
}
mgtGoodsInfoVo.setUpdatedBy(uid);
mgtGoodsInfoVo.setUpdatedAt(now);
goblinMongoUtils.updateGoodsInfoVo(mgtGoodsInfoVo);
goblinRedisUtils.delGoodsInfoVo(spuId);
log.info("藏品管理:SKU添加[UID={},PARAMS={}]", uid, JsonUtils.toJson(initGoodsSkuInfoVo));
goblinMongoUtils.setGoodsSkuInfoVo(initGoodsSkuInfoVo);
goblinRedisUtils.setSkuStock(null, initGoodsSkuInfoVo.getSkuId(), initGoodsSkuInfoVo.getSkuStock());
......@@ -1074,7 +1075,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
if (log.isDebugEnabled()) {
log.debug("商品管理:商品编辑:SKU删除[delSkuId={},skuReId={}]", delSkuId, JsonUtils.toJson(delSkuIdList));
}
if (goblinMongoUtils.delGoodsSkuInfoVo(delGoodsSkuInfoVo, delSkuIdList)) {
if (goblinMongoUtils.delGoodsSkuInfoVo(delSkuIdList, uid, now)) {
delSkuIdList.forEach(skuId -> {
goblinRedisUtils.delGoodsSkuInfoVo(skuId);
goblinRedisUtils.delGoodsSkuInfoVoByUnShelves(skuId);
......@@ -1181,6 +1182,67 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
return false;
}
@Override
public boolean goodsSkuShelvesProcessing(GoblinStoreMgtGoodsSkuActionParam mgtGoodsSkuActionParam, String uid, boolean shelvesFlg) {
LocalDateTime now = LocalDateTime.now();
String storeId = mgtGoodsSkuActionParam.getStoreId(), spuId = mgtGoodsSkuActionParam.getSpuId();
List<String> skuIdList = mgtGoodsSkuActionParam.getSkuIdList();
if (goblinMongoUtils.updateGoodsSkuInfoVoByShelvesSku(storeId, skuIdList, shelvesFlg, uid, now)) {
log.info("藏品管理:SKU管理:上下架处理[UID={},SHELVES={},PARAMS={}]", uid, shelvesFlg, JsonUtils.toJson(mgtGoodsSkuActionParam));
LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
if (!shelvesFlg) {// 下架,判断是否全部下架以更改SPU上架状态
boolean toUpdateSpuShelvesFlg = true;
GoblinGoodsInfoVo mgtGoodsInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId);
List<String> remainSkuIdList = mgtGoodsInfoVo.getSkuIdList();
remainSkuIdList.removeAll(skuIdList);
if (!CollectionUtils.isEmpty(remainSkuIdList)) {
List<GoblinGoodsSkuInfoVo> remainSkuInfoVoList = goblinMongoUtils.getGoodsSkuInfoVos(remainSkuIdList);
for (int i = 0; i < remainSkuInfoVoList.size(); i++) {
GoblinGoodsSkuInfoVo remainSkuInfoVo = remainSkuInfoVoList.get(i);
if (remainSkuInfoVo.getDelFlg().equals("0") && remainSkuInfoVo.getShelvesStatus().equals("3")) {
toUpdateSpuShelvesFlg = false;
break;
}
}
}
if (toUpdateSpuShelvesFlg) {
goblinMongoUtils.updateGoodsInfoVoByShelves(storeId, Collections.singletonList(spuId), shelvesFlg, uid, now);
goblinRedisUtils.delGoodsInfoVo(spuId);
goblinRedisUtils.delGoodsInfoVoByUnShelves(spuId);
updateGoodsObjs.add(new Object[]{"1", "1", now, uid, now, spuId, storeId});
}
}
skuIdList.forEach(skuId -> {
goblinRedisUtils.delGoodsSkuInfoVo(skuId);
goblinRedisUtils.delGoodsSkuInfoVoByUnShelves(skuId);
});
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
// String shelvesStatus = shelvesFlg ? "3" : "1";
// LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
if (shelvesFlg) {
toMqSqls.add(SqlMapping.get("goblin_goods.update_by_shelves"));
updateGoodsObjs.add(new Object[]{"3", now, uid, now, spuId, storeId});
} else {
toMqSqls.add(SqlMapping.get("goblin_goods.update_by_unshelves"));
// updateGoodsObjs.add(new Object[]{"1", "1", now, uid, now, spuId, storeId});
}
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_shelves"));
LinkedList<Object[]> updateGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
String shelvesStatus = shelvesFlg ? "3" : "1";
skuIdList.forEach(skuId -> updateGoodsSkuObjs.add(new Object[]{shelvesStatus, now, uid, now, skuId, storeId}));
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, updateGoodsObjs, updateGoodsSkuObjs));
return true;
}
return false;
}
@Override
public boolean goodsRemove(GoblinStoreMgtGoodsActionParam mgtGoodsActionParam, String uid, List<String> spuNoList) {
LocalDateTime now = LocalDateTime.now();
......@@ -1194,9 +1256,13 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
log.info("商品管理:SPU管理:删除处理[UID={},PARAMS={}]", uid, JsonUtils.toJson(mgtGoodsActionParam));
goblinRedisUtils.deleteKeyForSelectGoods();// 精选商品:商品上架、下架、删除 调用的方法
LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> updateGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
spuIdList.forEach(spuId -> {
goblinRedisUtils.delGoodsInfoVo(spuId);
goblinRedisUtils.delGoodsInfoVoByUnShelves(spuId);
updateGoodsObjs.add(new Object[]{uid, now, uid, now, spuId});
updateGoodsSkuObjs.add(new Object[]{uid, now, uid, now, spuId});
});
List<String> skuIdList = goblinMongoUtils.getMgtGoodsSkuIds(storeId, spuIdList);
skuIdList.forEach(skuId -> {
......@@ -1206,11 +1272,11 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_goods.update_by_del"));
LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
spuIdList.forEach(spuId -> updateGoodsObjs.add(new Object[]{uid, now, uid, now, spuId}));
// LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
// spuIdList.forEach(spuId -> updateGoodsObjs.add(new Object[]{uid, now, uid, now, spuId}));
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_del_spu"));
LinkedList<Object[]> updateGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
spuIdList.forEach(spuId -> updateGoodsSkuObjs.add(new Object[]{uid, now, uid, now, spuId}));
// LinkedList<Object[]> updateGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
// spuIdList.forEach(spuId -> updateGoodsSkuObjs.add(new Object[]{uid, now, uid, now, spuId}));
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, updateGoodsObjs, updateGoodsSkuObjs));
......@@ -1218,4 +1284,61 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
}
return false;
}
@Override
public boolean goodsSkuRemove(GoblinStoreMgtGoodsSkuActionParam mgtGoodsSkuActionParam, String uid) {
List<String> delSkuIdList = mgtGoodsSkuActionParam.getSkuIdList();
String spuId = mgtGoodsSkuActionParam.getSpuId();
GoblinGoodsInfoVo mgtGoodsInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId);
List<String> remainSkuIdList = mgtGoodsInfoVo.getSkuIdList();
remainSkuIdList.removeAll(delSkuIdList);
LocalDateTime now = LocalDateTime.now();
LinkedList<Object[]> updateGoodsInfoObjs = CollectionUtil.linkedListObjectArr();
if (CollectionUtils.isEmpty(remainSkuIdList)) {
mgtGoodsInfoVo.setPriceGe(BigDecimal.ZERO);
mgtGoodsInfoVo.setPriceLe(BigDecimal.ZERO);
} else {
List<GoblinGoodsSkuInfoVo> remainGoodsSkuInfoVoList = goblinMongoUtils.getGoodsSkuInfoVos(remainSkuIdList);
BigDecimal priceGe = BigDecimal.ZERO, priceLe = BigDecimal.ZERO;
for (GoblinGoodsSkuInfoVo skuInfoVo : remainGoodsSkuInfoVoList) {
if (null != skuInfoVo && skuInfoVo.getDelFlg().equals("0")) {
priceGe = priceGe.compareTo(BigDecimal.ZERO) == 0 ? skuInfoVo.getPrice() : (priceGe.compareTo(skuInfoVo.getPrice()) > 0 ? skuInfoVo.getPrice() : priceGe);
priceLe = priceLe.compareTo(skuInfoVo.getPrice()) < 0 ? skuInfoVo.getPrice() : priceLe;
}
}
if (priceGe.compareTo(mgtGoodsInfoVo.getPriceGe()) != 0 || priceLe.compareTo(mgtGoodsInfoVo.getPriceLe()) != 0) {
mgtGoodsInfoVo.setPriceGe(priceGe);
mgtGoodsInfoVo.setPriceLe(priceLe);
updateGoodsInfoObjs.add(new Object[]{priceGe, priceLe, uid, now, spuId});
}
}
if (goblinMongoUtils.delGoodsSkuInfoVo(delSkuIdList, uid, now)) {
delSkuIdList.forEach(skuId -> {
goblinRedisUtils.delGoodsSkuInfoVo(skuId);
goblinRedisUtils.delGoodsSkuInfoVoByUnShelves(skuId);
});
mgtGoodsInfoVo.setUpdatedBy(uid);
mgtGoodsInfoVo.setUpdatedAt(now);
goblinMongoUtils.updateGoodsInfoVo(mgtGoodsInfoVo);
goblinRedisUtils.delGoodsInfoVo(spuId);
goblinRedisUtils.delGoodsInfoVoByUnShelves(spuId);
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_del"));
LinkedList<Object[]> delGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
delSkuIdList.forEach(skuId -> delGoodsSkuObjs.add(new Object[]{uid, now, uid, now, skuId}));
toMqSqls.add(SqlMapping.get("goblin_goods.update_by_del_sku"));
// LinkedList<Object[]> updateGoodsInfoObjs = CollectionUtil.linkedListObjectArr();
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, delGoodsSkuObjs, updateGoodsInfoObjs));
return true;
}
return false;
}
}
......@@ -537,11 +537,11 @@ public class GoblinMongoUtils {
return (List<GoblinGoodsSkuInfoVo>) mongoTemplate.insert(vos, GoblinGoodsSkuInfoVo.class.getSimpleName());
}
public boolean delGoodsSkuInfoVo(GoblinGoodsSkuInfoVo vo, List<String> skuIdList) {
public boolean delGoodsSkuInfoVo(List<String> skuIdList, String operator, LocalDateTime time) {
return mongoTemplate.getCollection(GoblinGoodsSkuInfoVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("skuId").in(skuIdList).and("delFlg").is("0")).getQueryObject(),
Update.update("delFlg", "1").set("updatedBy", vo.getUpdatedBy()).set("updatedAt", vo.getUpdatedAt())
.set("deletedBy", vo.getDeletedBy()).set("deletedAt", vo.getDeletedAt()).getUpdateObject()
Update.update("delFlg", "1").set("updatedBy", operator).set("updatedAt", time)
.set("deletedBy", operator).set("deletedAt", time).getUpdateObject()
).getModifiedCount() > 0;
}
......@@ -639,6 +639,12 @@ public class GoblinMongoUtils {
GoblinGoodsSkuInfoVo.class.getSimpleName()).getModifiedCount() > 0;
}
public boolean updateGoodsSkuInfoVoByShelvesSku(String storeId, List<String> skuIdList, boolean shelvesFlg, String uid, LocalDateTime time) {
return mongoTemplate.updateMulti(Query.query(Criteria.where("storeId").is(storeId).and("delFlg").is("0").and("skuId").in(skuIdList)),
Update.update("shelvesStatus", shelvesFlg ? "3" : "1").set("shelvesAt", time).set("updatedBy", uid).set("updatedAt", time),
GoblinGoodsSkuInfoVo.class.getSimpleName()).getModifiedCount() > 0;
}
/* ---------------------------------------- ---------------------------------------- */
/**
......
......@@ -30,7 +30,7 @@
149004=身份认证失败,请核实
149005=
149006=添加商品失败,规格信息无效
149007=添加商品失败,商品名称重复
149007=商品名称重复,请核实
149008=商品分类名称重复,请核实
149009=请点选商品后操作
149010=商品不存在或已删除,请核实
......
......@@ -52,7 +52,7 @@ goblin_goods_sku.update_by_edit=UPDATE goblin_goods_sku SET name=?,sku_pic=?,sel
goblin_goods_sku.update_by_edit_for_digital=UPDATE goblin_goods_sku SET hit_ratio=?,buy_factor=?,buy_roster=?,buy_limit=?,shelves_handle=?,shelves_time=?,sale_start_time=?,updated_by=?,updated_at=? WHERE sku_id=? AND del_flg='0'
goblin_goods_sku.update_by_edit_box_digital=UPDATE goblin_goods_sku SET name=?,subtitle=?,sku_pic=?,sku_watch=?,watch_type=?,price=?,price_member=?,intro=?,details=?,shelves_handle=?,shelves_time=?,sale_start_time=?,opening_time=?,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_shelves=UPDATE goblin_goods_sku SET shelves_status=?,shelves_at=?,updated_by=?,updated_at=? WHERE spu_id=? AND store_id=? AND del_flg='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=? 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'
......
......@@ -41,7 +41,7 @@ public class PlatformGoblinGoodsService extends ServiceImpl<GoblinGoodsMapper, G
LambdaQueryWrapper<GoblinGoods> queryWrapper = Wrappers.lambdaQuery(GoblinGoods.class);
queryWrapper.eq(GoblinGoods::getDelFlg, "0");
queryWrapper.eq(GoblinGoods::getStatus, "3");
// queryWrapper.eq(GoblinGoods::getSpuAppear, "0");
queryWrapper.eq(GoblinGoods::getSpuAppear, "0");
queryWrapper.eq(GoblinGoods::getShelvesHandle, "3");
queryWrapper.le(GoblinGoods::getShelvesTime, now);
// queryWrapper.eq(GoblinGoods::getShelvesStatus, "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