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

Commit 6918c965 authored by 姜秀龙's avatar 姜秀龙

收钱 goods 1

parent a2a2e25e
package com.liquidnet.service.goblin.service.manage;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbEditSkuParam;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import java.util.List;
/**
* 商品管理:收钱吧商品(独立接口)
*/
public interface IGoblinStoreMgtSqbGoodsService {
/**
* 商品管理:SPU添加-收钱吧商品
*/
void sqbGoodsAdd(GoblinGoodsInfoVo goodsInfoVo, List<GoblinGoodsSkuInfoVo> goodsSkuInfoVoList);
/**
* 商品管理:商品编辑:SPU编辑-收钱吧商品
*/
boolean sqbGoodsEditSpu(String uid, GoblinStoreMgtGoodsSqbAddParam mgtGoodsSqbParam, GoblinGoodsInfoVo goodsInfoVo);
/**
* 商品管理:商品编辑:SKU编辑-收钱吧商品
*/
boolean sqbGoodsEditSku(String uid, GoblinStoreMgtGoodsSqbEditSkuParam mgtGoodsSqbParam, GoblinGoodsInfoVo goodsInfoVo);
}
package com.liquidnet.service.goblin.controller.manage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.common.exception.constant.ErrorCode;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbAddSkuParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbEditSkuParam;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.service.manage.IGoblinStoreMgtExtraService;
import com.liquidnet.service.goblin.service.manage.IGoblinStoreMgtSqbGoodsService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* 收钱吧商品管理
*/
@ApiSupport(order = 149005)
@Api(tags = "收钱吧商品管理")
@Slf4j
@Validated
@RestController
@RequestMapping("store/mgt/sqb/goods")
public class GoblinStoreMgtSqbGoodsController {
@Autowired
private IGoblinStoreMgtSqbGoodsService goblinstoreMgtSqbGoodsService;
@Autowired
private IGoblinStoreMgtExtraService goblinStoreMgtExtraService;
@Autowired
private GoblinRedisUtils goblinRedisUtils;
@Autowired
private GoblinMongoUtils goblinMongoUtils;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "SPU添加-收钱吧商品")
@PostMapping("add")
public ResponseDto<Object> add(@Valid @RequestBody GoblinStoreMgtGoodsSqbAddParam mgtGoodsSqbAddParam) {
String currentUid = CurrentUtil.getCurrentUid(), storeId = mgtGoodsSqbAddParam.getStoreId();
if (!goblinRedisUtils.hasStoreId(currentUid, storeId)) return ResponseDto.failure(ErrorMapping.get("149002"));
if (log.isDebugEnabled()) {
log.debug("收钱吧商品管理:SPU添加:[GoblinStoreMgtGoodsSqbAddParam={}]", JsonUtils.toJson(mgtGoodsSqbAddParam));
}
GoblinStoreMgtGoodsSqbAddSkuParam skuParam = mgtGoodsSqbAddParam.getSkuParam();
if (Objects.isNull(skuParam)) {
return ResponseDto.failure(ErrorMapping.get("149006"));
}
if (Objects.isNull(skuParam.getEffectAt()) || Objects.isNull(skuParam.getExpireAt())) {
return ResponseDto.failure(ErrorMapping.get("149025"));
}
LocalDateTime effectAt = DateUtil.Formatter.yyyyMMddHHmmss.parse(skuParam.getEffectAt());
LocalDateTime expireAt = DateUtil.Formatter.yyyyMMddHHmmss.parse(skuParam.getExpireAt());
if (effectAt.isAfter(expireAt) || expireAt.isBefore(LocalDateTime.now())) {
return ResponseDto.failure(ErrorMapping.get("149026"));
}
if (CollectionUtils.isEmpty(mgtGoodsSqbAddParam.getImageList())) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品图片不能为空");
}
String cateFid = mgtGoodsSqbAddParam.getCateFid(), cateSid = mgtGoodsSqbAddParam.getCateSid(), cateTid = mgtGoodsSqbAddParam.getCateTid();
List<GoblinSelfGoodsCategoryVo> selfGoodsCategoryVos = goblinStoreMgtExtraService.listCategoryVo();
if (selfGoodsCategoryVos.stream().noneMatch(r -> r.getCateId().equals(cateFid) && r.getGrade().equals("1"))) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品一级分类无效");
}
if (StringUtils.isNotBlank(cateSid)
&& selfGoodsCategoryVos.stream().noneMatch(r -> r.getCateId().equals(cateSid) && r.getGrade().equals("2"))) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品二级分类无效");
}
if (StringUtils.isNotBlank(cateTid)
&& selfGoodsCategoryVos.stream().noneMatch(r -> r.getCateId().equals(cateTid) && r.getGrade().equals("3"))) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品三级分类无效");
}
if (goblinMongoUtils.countMgtGoodsInfoVo(mgtGoodsSqbAddParam.getName()) > 0) {
return ResponseDto.failure(ErrorMapping.get("149007"));
}
if (mgtGoodsSqbAddParam.getShelvesHandle().equals("3") && null == mgtGoodsSqbAddParam.getShelvesTime()) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "预约上架时间未指定");
}
GoblinGoodsInfoVo goodsInfoVo = mgtGoodsSqbAddParam.initGoodsInfoVo(currentUid, LocalDateTime.now());
ArrayList<GoblinGoodsSpecVo> goodsSpecVoList = ObjectUtil.getGoblinGoodsSpecVoArrayList();
List<GoblinGoodsSkuInfoVo> goodsSkuInfoVoList = ObjectUtil.getGoblinGoodsSkuInfoVoArrayList();
mgtGoodsSqbAddParam.initGoodsSkuInfoVo(goodsInfoVo, goodsSkuInfoVoList, goodsSpecVoList);
List<String> goodsTagIdList = mgtGoodsSqbAddParam.getTagList(),
goodsExtagIdList = mgtGoodsSqbAddParam.getExtagList(),
goodsArtagIdList = mgtGoodsSqbAddParam.getArtagList();
if (!CollectionUtils.isEmpty(goodsTagIdList)) {
List<GoblinSelfTagVo> selfGoodsTagVos = goblinRedisUtils.getSelfTagVos();
List<GoblinGoodsTagVo> goodsTagVoList = ObjectUtil.getGoblinGoodsTagVoArrayList();
for (int i = 0; i < goodsTagIdList.size(); i++)
for (GoblinSelfTagVo r : selfGoodsTagVos)
if (r.getTagId().equals(goodsTagIdList.get(i)) && r.getTagBelong().equals("0")) {
goodsTagVoList.add(GoblinGoodsTagVo.getNew().copy(r).setSort(i));
break;
}
goodsInfoVo.setTagVoList(goodsTagVoList);
}
if (!CollectionUtils.isEmpty(goodsExtagIdList)) {
List<GoblinSelfTagVo> selfExtagVos = goblinRedisUtils.getSelfExtagVos();
List<GoblinGoodsExtagVo> goodsExtagVoList = ObjectUtil.getGoblinGoodsExtagVoArrayList();
for (int i = 0; i < goodsExtagIdList.size(); i++)
for (GoblinSelfTagVo r : selfExtagVos)
if (r.getTagId().equals(goodsExtagIdList.get(i)) && r.getTagBelong().equals("1") && !r.getTagType().equals("5")) {
goodsExtagVoList.add(GoblinGoodsExtagVo.getNew().copy(r).setSort(i));
break;
}
goodsInfoVo.setExtagVoList(goodsExtagVoList);
}
if (!CollectionUtils.isEmpty(goodsArtagIdList)) {
List<GoblinSelfTagVo> selfExtagVos = goblinRedisUtils.getSelfExtagVos();
List<GoblinGoodsExtagVo> goodsArtagVoList = ObjectUtil.getGoblinGoodsExtagVoArrayList();
for (int i = 0; i < goodsArtagIdList.size(); i++)
for (GoblinSelfTagVo r : selfExtagVos)
if (r.getTagId().equals(goodsArtagIdList.get(i)) && r.getTagBelong().equals("1")) {
goodsArtagVoList.add(GoblinGoodsExtagVo.getNew().copy(r).setSort(i));
break;
}
goodsInfoVo.setArtagVoList(goodsArtagVoList);
}
List<String> ssidList = mgtGoodsSqbAddParam.getSsidList();
if (!CollectionUtils.isEmpty(ssidList)) {
goodsInfoVo.setServiceSupportVoList(goblinMongoUtils.getServiceSupportVos(ssidList));
}
goblinstoreMgtSqbGoodsService.sqbGoodsAdd(goodsInfoVo, goodsSkuInfoVoList);
return ResponseDto.success(goodsInfoVo.getSpuId());
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "商品编辑:SPU编辑-收钱吧商品", notes = "只修改商品信息,不包含价格库存相关信息")
@PutMapping("edit_spu")
public ResponseDto<Object> editSpu(@Valid @RequestBody GoblinStoreMgtGoodsSqbAddParam mgtGoodsSqbEditParam) {
String currentUid = CurrentUtil.getCurrentUid(), storeId = mgtGoodsSqbEditParam.getStoreId();
if (!goblinRedisUtils.hasStoreId(currentUid, storeId)) return ResponseDto.failure(ErrorMapping.get("149002"));
GoblinGoodsInfoVo mgtGoodsInfoVo;
if (StringUtils.isBlank(mgtGoodsSqbEditParam.getSpuId())
|| null == (mgtGoodsInfoVo = goblinRedisUtils.getGoodsInfoVo(mgtGoodsSqbEditParam.getSpuId()))
|| !mgtGoodsInfoVo.getStoreId().equals(storeId)
|| !mgtGoodsInfoVo.getDelFlg().equals("0")) {
return ResponseDto.failure(ErrorMapping.get("149010"));
}
if (mgtGoodsInfoVo.getSpuType() != 2) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品非券类商品");
}
if (!mgtGoodsInfoVo.getName().equals(mgtGoodsSqbEditParam.getName())
&& goblinMongoUtils.countMgtGoodsInfoVo(mgtGoodsSqbEditParam.getName()) > 0) {
return ResponseDto.failure(ErrorMapping.get("149007"));
}
if (!mgtGoodsSqbEditParam.getShelvesHandle().equals(mgtGoodsInfoVo.getShelvesHandle())
&& mgtGoodsInfoVo.getShelvesStatus().equals("3")) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "上架处理方式只限商品未上架时变更");
}
String cateFid = mgtGoodsSqbEditParam.getCateFid(), cateSid = mgtGoodsSqbEditParam.getCateSid(), cateTid = mgtGoodsSqbEditParam.getCateTid();
List<GoblinSelfGoodsCategoryVo> selfGoodsCategoryVos = goblinStoreMgtExtraService.listCategoryVo();
if (selfGoodsCategoryVos.stream().noneMatch(r -> r.getCateId().equals(cateFid) && r.getGrade().equals("1"))) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品一级分类无效");
}
if (StringUtils.isNotBlank(cateSid)
&& selfGoodsCategoryVos.stream().noneMatch(r -> r.getCateId().equals(cateSid) && r.getGrade().equals("2"))) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品二级分类无效");
}
if (StringUtils.isNotBlank(cateTid)
&& selfGoodsCategoryVos.stream().noneMatch(r -> r.getCateId().equals(cateTid) && r.getGrade().equals("3"))) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "商品三级分类无效");
}
if (log.isDebugEnabled()) {
log.debug("收钱吧商品管理:商品编辑:SPU编辑:[GoblinStoreMgtGoodsSqbAddParam={}]", JsonUtils.toJson(mgtGoodsSqbEditParam));
}
boolean resultFlg = goblinstoreMgtSqbGoodsService.sqbGoodsEditSpu(currentUid, mgtGoodsSqbEditParam, mgtGoodsInfoVo);
return resultFlg ? ResponseDto.success() : ResponseDto.failure();
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "商品编辑:SKU编辑-收钱吧商品", notes = "只修改单品信息,不包含商品信息")
@PostMapping("edit_sku")
public ResponseDto<Object> editSku(@Valid @RequestBody GoblinStoreMgtGoodsSqbEditSkuParam mgtGoodsSqbEditSkuParam) {
String currentUid = CurrentUtil.getCurrentUid(), storeId = mgtGoodsSqbEditSkuParam.getStoreId();
if (!goblinRedisUtils.hasStoreId(currentUid, storeId)) {
return ResponseDto.failure(ErrorMapping.get("149002"));
}
String paramSkuId = mgtGoodsSqbEditSkuParam.getSkuId();
GoblinGoodsSkuInfoVo mgtGoodsSkuInfoVo;
if (StringUtils.isBlank(paramSkuId)
|| null == (mgtGoodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(paramSkuId))
|| !mgtGoodsSkuInfoVo.getStoreId().equals(storeId)
|| !mgtGoodsSkuInfoVo.getDelFlg().equals("0")) {
return ResponseDto.failure(ErrorMapping.get("149011"));
}
if (mgtGoodsSkuInfoVo.getSkuType() != 2) {
return ResponseDto.failure(ErrorCode.HTTP_PARAM_ERROR.getCode(), "无效操作,该商品非券类商品");
}
if (log.isDebugEnabled()) {
log.debug("收钱吧商品管理:商品编辑:SKU编辑:[GoblinStoreMgtGoodsSqbEditSkuParam={}]", JsonUtils.toJson(mgtGoodsSqbEditSkuParam));
}
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(mgtGoodsSkuInfoVo.getSpuId());
mgtGoodsSqbEditSkuParam.setStock(mgtGoodsSkuInfoVo.getStock());
mgtGoodsSqbEditSkuParam.setSkuStock(mgtGoodsSkuInfoVo.getSkuStock());
Integer operStock = mgtGoodsSqbEditSkuParam.getOperStock();
if (null != operStock && operStock != 0) {
int operStockVal = Math.abs(operStock);
Integer stock = mgtGoodsSkuInfoVo.getStock();
Integer skuStock = mgtGoodsSkuInfoVo.getSkuStock();
int surplusStock = goblinRedisUtils.getSkuStock(null, paramSkuId);
if (operStock < 0 && surplusStock > 0 && surplusStock >= operStockVal) {
if (goblinRedisUtils.decrSkuStock(null, paramSkuId, operStockVal) < 0) {
goblinRedisUtils.incrSkuStock(null, paramSkuId, operStockVal);
return ResponseDto.failure(ErrorMapping.get("149012"));
} else {
mgtGoodsSqbEditSkuParam.setSkuStock(skuStock - operStockVal);
mgtGoodsSqbEditSkuParam.setStock(stock - operStockVal);
}
} else if (operStock > 0) {
goblinRedisUtils.incrSkuStock(null, paramSkuId, operStockVal);
mgtGoodsSqbEditSkuParam.setSkuStock(skuStock + operStockVal);
mgtGoodsSqbEditSkuParam.setStock(stock + operStockVal);
} else {
return ResponseDto.failure(ErrorMapping.get("149012"));
}
}
if (goblinstoreMgtSqbGoodsService.sqbGoodsEditSku(currentUid, mgtGoodsSqbEditSkuParam, goodsInfoVo)) {
mgtGoodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(paramSkuId);
mgtGoodsSkuInfoVo.setSurplusStock(goblinRedisUtils.getSkuStock(null, paramSkuId));
return ResponseDto.success(mgtGoodsSkuInfoVo);
} else {
if (null != operStock && operStock != 0) {
int operStockVal = Math.abs(operStock);
if (operStock > 0) {
goblinRedisUtils.decrSkuStock(null, paramSkuId, operStockVal);
} else {
goblinRedisUtils.incrSkuStock(null, paramSkuId, operStockVal);
}
}
return ResponseDto.failure(ErrorMapping.get("149013"));
}
}
}
package com.liquidnet.service.goblin.service.impl.manage;
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.service.manage.IGoblinStoreMgtSqbGoodsService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
import com.liquidnet.service.goblin.util.QueueUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* 商品管理:收钱吧商品服务实现
*/
@Slf4j
@Service
public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGoodsService {
@Autowired
QueueUtils queueUtils;
@Autowired
GoblinRedisUtils goblinRedisUtils;
@Autowired
GoblinMongoUtils goblinMongoUtils;
public void sqbGoodsAdd(GoblinGoodsInfoVo goodsInfoVo, List<GoblinGoodsSkuInfoVo> goodsSkuInfoVoList) {
goblinMongoUtils.setGoodsInfoVo(goodsInfoVo);
goblinMongoUtils.setGoodsSkuInfoVos(goodsSkuInfoVoList);
if (goodsInfoVo.getShelvesHandle().equals("2")) {
goblinRedisUtils.deleteKeyForSelectGoods();// 精选商品:商品上架、下架、删除 调用的方法
}
String createdBy = goodsInfoVo.getCreatedBy();
LocalDateTime createdAt = goodsInfoVo.getCreatedAt();
String spuId = goodsInfoVo.getSpuId();
LinkedList<Object[]> initGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> initGoodsSkuSpecValueObjs = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> initGoodsCategorySpecObjs = CollectionUtil.linkedListObjectArr();
{// 分类规格记录
String cateFid = goodsInfoVo.getCateFid(), cateSid = goodsInfoVo.getCateSid(),
cateTid = goodsInfoVo.getCateTid();
String filterCateId = StringUtils.isBlank(cateTid) ? (StringUtils.isBlank(cateSid) ? cateFid : cateSid)
: cateTid;
GoblinMgtCategorySpecVo mgtCategorySpecVoCache = goblinRedisUtils.getCategorySpec(filterCateId);// 分类绑定的规格信息
List<String> addSpecNameList = goodsSkuInfoVoList.get(0).getSkuSpecList().stream()
.map(GoblinGoodsSpecDto::getSpecName).collect(Collectors.toList());
if (null == mgtCategorySpecVoCache) {// 根据分类ID未查取到规格信息,则Cache、数据库新增
GoblinMgtCategorySpecVo initMgtCategorySpecVo = GoblinMgtCategorySpecVo.getNew().setCateId(filterCateId)
.setSpecNameList(addSpecNameList);
goblinMongoUtils.setCategorySpecVo(initMgtCategorySpecVo);
goblinRedisUtils.setCategorySpec(filterCateId, initMgtCategorySpecVo);
addSpecNameList.forEach(r -> initGoodsCategorySpecObjs.add(new Object[] { filterCateId, r }));
} else {// 根据分类ID查取到规格信息,则进一步比对判断是否新增
List<String> confirmAddSpecNameList = addSpecNameList.stream()
.filter(r -> !mgtCategorySpecVoCache.getSpecNameList().contains(r))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(confirmAddSpecNameList)) {// 不存在于`mgtCategorySpecVoCache`的,则更新Cache,数据库新增
mgtCategorySpecVoCache.getSpecNameList().addAll(confirmAddSpecNameList);
goblinMongoUtils.updateCategorySpecVo(mgtCategorySpecVoCache);
goblinRedisUtils.setCategorySpec(filterCateId, mgtCategorySpecVoCache);
confirmAddSpecNameList
.forEach(r -> initGoodsCategorySpecObjs.add(new Object[] { filterCateId, r }));
}
}
}
LinkedList<Object[]> initGoodsSkuCouponObjs = CollectionUtil.linkedListObjectArr();// 券类商品信息
LinkedList<Object[]> initCandyCouponObjs = CollectionUtil.linkedListObjectArr();// 券信息
LinkedList<Object[]> initCandyCouponRuleObjs = CollectionUtil.linkedListObjectArr();// 券规则信息
int skuSize = goodsSkuInfoVoList.size();
for (int i = 0; i < skuSize; i++) {
GoblinGoodsSkuInfoVo skuInfoVo = goodsSkuInfoVoList.get(i);
String skuId = skuInfoVo.getSkuId();
String buyRoster = skuInfoVo.getBuyRoster();
goblinRedisUtils.setSkuStock(null, skuId, skuInfoVo.getSkuStock());
initGoodsSkuObjs.add(new Object[] {
skuId, skuInfoVo.getSpuId(), skuInfoVo.getSkuNo(), skuInfoVo.getSkuBarCode(),
skuInfoVo.getSkuErpCode(),
skuInfoVo.getErpType(), skuInfoVo.getErpHosting(), skuInfoVo.getErpWarehouseNo(),
skuInfoVo.getSkuType(), skuInfoVo.getName(),
skuInfoVo.getSubtitle(), skuInfoVo.getSellPrice(), skuInfoVo.getSkuPic(), skuInfoVo.getSkuIsbn(),
skuInfoVo.getStock(),
skuInfoVo.getSkuStock(), skuInfoVo.getWarningStock(), skuInfoVo.getPrice(),
skuInfoVo.getPriceMember(), skuInfoVo.getWeight(),
skuInfoVo.getBuyFactor(), buyRoster, skuInfoVo.getBuyLimit(), skuInfoVo.getStoreId(),
skuInfoVo.getSkuValidity(),
skuInfoVo.getVirtualFlg(), skuInfoVo.getStatus(), skuInfoVo.getShelvesStatus(),
skuInfoVo.getSkuAppear(), skuInfoVo.getShelvesAt(),
createdBy, createdAt, skuInfoVo.getLogisticsTemplate()
});
if (2 == goodsInfoVo.getSpuType()) {// 券类商品为一个SPU对应一个SKU
initGoodsSkuCouponObjs.add(
new Object[] { skuId, skuInfoVo.getBusiType(), skuInfoVo.getCouType(), skuInfoVo.getUseScope(),
skuInfoVo.getValFace(), skuInfoVo.getIsTrueName(), skuInfoVo.getValidity(),
skuInfoVo.getEffectAt(), skuInfoVo.getExpireAt() });
initCandyCouponObjs.add(
new Object[] { skuId, goodsInfoVo.getName(), goodsInfoVo.getIntro(), skuInfoVo.getBusiType(),
skuInfoVo.getCouType(), skuInfoVo.getValFace(), skuInfoVo.getValidity(),
skuInfoVo.getIsTrueName(),
skuInfoVo.getEffectAt(), skuInfoVo.getExpireAt(), createdBy, createdAt
});
String busiName = "%s";
switch (skuInfoVo.getUseScope()) {// 适用范围[101-音乐节|102-小型演出(livehouse演出)|103-巡演]
case 101:// 音乐节
busiName = String.format(busiName, "草莓、M_DSK、五百里音乐节");// 按杨要求文案'音乐节'改'草莓、M_DSK、五百里音乐节'
break;
case 102:// 小型演出(LiveHouse演出)
busiName = String.format(busiName, "小型演出(LiveHouse演出)系列");
break;
case 103:// 巡演
busiName = String.format(busiName, "巡演 系列");
break;
}
initCandyCouponRuleObjs
.add(new Object[] { IDGenerator.nextTimeId2(), skuId, skuInfoVo.getUseScope(), busiName, "" });
}
skuInfoVo.getSkuSpecList().forEach(skuSpecDto -> initGoodsSkuSpecValueObjs.add(new Object[] {
spuId, skuId, skuSpecDto.getSpecName(), skuSpecDto.getSpecVname()
}));
if (skuInfoVo.getBuyFactor().equals("2") && StringUtils.isNotBlank(buyRoster)
&& buyRoster.startsWith("http")) {
queueUtils.sendMsgByRedisXls(buyRoster, "1", skuId);
}
}
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_goods.insert_for_coupon"));
LinkedList<Object[]> initGoodsObjs = CollectionUtil.linkedListObjectArr();
initGoodsObjs.add(new Object[] {
spuId, goodsInfoVo.getSpuNo(), goodsInfoVo.getSpuBarCode(), goodsInfoVo.getSpuErpCode(),
goodsInfoVo.getErpType(), goodsInfoVo.getSpuType(),
goodsInfoVo.getName(), goodsInfoVo.getSubtitle(), goodsInfoVo.getSellPrice(), goodsInfoVo.getPriceGe(),
goodsInfoVo.getPriceLe(),
goodsInfoVo.getIntro(), goodsInfoVo.getDetails(), goodsInfoVo.getCoverPic(), goodsInfoVo.getVideo(),
goodsInfoVo.getSpecMode(),
goodsInfoVo.getStoreId(), goodsInfoVo.getCateFid(), goodsInfoVo.getCateSid(), goodsInfoVo.getCateTid(),
goodsInfoVo.getStoreCateFid(),
goodsInfoVo.getStoreCateSid(), goodsInfoVo.getStoreCateTid(), goodsInfoVo.getBrandId(),
goodsInfoVo.getShelvesHandle(), goodsInfoVo.getShelvesTime(),
goodsInfoVo.getSpuValidity(), goodsInfoVo.getVirtualFlg(), goodsInfoVo.getStatus(),
goodsInfoVo.getShelvesStatus(), goodsInfoVo.getSpuAppear(),
goodsInfoVo.getShelvesAt(), createdBy, createdAt, goodsInfoVo.getLogisticsTemplate()
});
toMqSqls.add(SqlMapping.get("goblin_goods_sku.insert_for_coupon"));
toMqSqls.add(SqlMapping.get("goblin_goods_sku_coupon.insert"));
toMqSqls.add(SqlMapping.get("candy_coupon.goods_insert"));
toMqSqls.add(SqlMapping.get("candy_coupon_rule.goods_insert"));
toMqSqls.add(SqlMapping.get("goblin_goods_image.insert_byreplace"));
LinkedList<Object[]> initGoodsImageObjs = CollectionUtil.linkedListObjectArr();
if (CollectionUtils.isEmpty(goodsInfoVo.getImageList())) {
goodsInfoVo.getImageList().forEach(imageUrl -> initGoodsImageObjs.add(new Object[] { spuId, imageUrl }));
}
toMqSqls.add(SqlMapping.get("goblin_goods_tag.insert_byreplace"));
LinkedList<Object[]> initGoodsTagObjs = CollectionUtil.linkedListObjectArr();
if (!CollectionUtils.isEmpty(goodsInfoVo.getTagVoList())) {
goodsInfoVo.getTagVoList().forEach(
tagVo -> initGoodsTagObjs.add(new Object[] { spuId, tagVo.getTagId(), tagVo.getSort(), "0" }));
}
if (!CollectionUtils.isEmpty(goodsInfoVo.getExtagVoList())) {
goodsInfoVo.getExtagVoList().forEach(exTagVo -> initGoodsTagObjs
.add(new Object[] { spuId, exTagVo.getTagId(), exTagVo.getSort(), "1" }));
}
toMqSqls.add(SqlMapping.get("goblin_goods_artag.insert_byreplace"));
LinkedList<Object[]> initGoodsArTagObjs = CollectionUtil.linkedListObjectArr();
if (!CollectionUtils.isEmpty(goodsInfoVo.getArtagVoList())) {
goodsInfoVo.getArtagVoList().forEach(arTagVo -> initGoodsArTagObjs
.add(new Object[] { spuId, arTagVo.getTagId(), arTagVo.getSort(), "1" }));
}
toMqSqls.add(SqlMapping.get("goblin_goods_service_support.insert_byreplace"));
LinkedList<Object[]> initGoodsServiceSupportObjs = CollectionUtil.linkedListObjectArr();
if (!CollectionUtils.isEmpty(goodsInfoVo.getServiceSupportVoList())) {
goodsInfoVo.getServiceSupportVoList()
.forEach(ssvo -> initGoodsServiceSupportObjs.add(new Object[] { spuId, ssvo.getSsid() }));
}
toMqSqls.add(SqlMapping.get("goblin_goods_spec.insert_byreplace"));
LinkedList<Object[]> initGoodsSpecObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_spec_value.insert_byreplace"));
LinkedList<Object[]> initGoodsSpecValueObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_spu_spec_value.insert_byreplace"));// SPU规格信息
LinkedList<Object[]> initGoodsSpuSpecValueObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_sku_spec_value.insert_byreplace"));// SKU规格信息
{// 规格记录
List<GoblinGoodsSpecVo> specVoList = goodsInfoVo.getSpecVoList();
specVoList.forEach(s -> {
initGoodsSpecObjs.add(new Object[] { s.getSpecName(), createdAt });
s.getSpecValues().forEach(sv -> {
initGoodsSpecValueObjs.add(new Object[] { s.getSpecName(), sv.getSpecVname(), createdAt });
initGoodsSpuSpecValueObjs
.add(new Object[] { spuId, s.getSpecName(), sv.getSpecVname(), sv.getSpecVsort() });
});
});
}
toMqSqls.add(SqlMapping.get("goblin_goods_category_spec.insert_byreplace"));// 分类关联规格信息
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, initGoodsObjs, initGoodsSkuObjs, initGoodsSkuCouponObjs, initCandyCouponObjs,
initCandyCouponRuleObjs,
initGoodsImageObjs, initGoodsTagObjs, initGoodsArTagObjs, initGoodsServiceSupportObjs,
initGoodsSpecObjs,
initGoodsSpecValueObjs, initGoodsSpuSpecValueObjs, initGoodsSkuSpecValueObjs,
initGoodsCategorySpecObjs));
}
public boolean sqbGoodsEditSpu(String uid, GoblinStoreMgtGoodsSqbAddParam mgtGoodsAddParam,
GoblinGoodsInfoVo mgtGoodsInfoVo) {
String spuId = mgtGoodsAddParam.getSpuId();
GoblinGoodsInfoVo updateSpuInfoVo = mgtGoodsAddParam.initEditGoodsInfoVo();
boolean updateTagFlg = false, updateExtagFlg = false, updateArtagFlg = false;
List<GoblinGoodsTagVo> befTagVoList = mgtGoodsInfoVo.getTagVoList();
boolean befTagIsEmptyFlg = CollectionUtils.isEmpty(befTagVoList);
List<GoblinGoodsExtagVo> befExtagVoList = mgtGoodsInfoVo.getExtagVoList();
boolean befExtagIsEmptyFlg = CollectionUtils.isEmpty(befExtagVoList);
List<GoblinGoodsExtagVo> befArtagVoList = mgtGoodsInfoVo.getArtagVoList();
boolean befArtagIsEmptyFlg = CollectionUtils.isEmpty(befArtagVoList);
boolean paramTagIsEmptyFlg, paramExtagIsEmptyFlg, paramArtagIsEmptyFlg;
List<GoblinGoodsTagVo> paramTagVoList = ObjectUtil.getGoblinGoodsTagVoArrayList();
List<GoblinGoodsExtagVo> paramExtagVoList = ObjectUtil.getGoblinGoodsExtagVoArrayList();
List<GoblinGoodsExtagVo> paramArtagVoList = ObjectUtil.getGoblinGoodsExtagVoArrayList();
{// 标签处理
List<String> goodsTagIdList = mgtGoodsAddParam.getTagList(),
goodsExtagIdList = mgtGoodsAddParam.getExtagList(),
goodsArtagIdList = mgtGoodsAddParam.getArtagList();
if (!CollectionUtils.isEmpty(goodsTagIdList)) {
List<GoblinSelfTagVo> selfGoodsTagVos = goblinRedisUtils.getSelfTagVos();
for (int i = 0; i < goodsTagIdList.size(); i++)
for (GoblinSelfTagVo r : selfGoodsTagVos)
if (r.getTagId().equals(goodsTagIdList.get(i)) && r.getTagBelong().equals("0")) {
paramTagVoList.add(GoblinGoodsTagVo.getNew().copy(r).setSort(i));
break;
}
}
List<GoblinSelfTagVo> selfExtagVos = null;
if (!CollectionUtils.isEmpty(goodsExtagIdList)) {
selfExtagVos = goblinRedisUtils.getSelfExtagVos();
for (int i = 0; i < goodsExtagIdList.size(); i++)
for (GoblinSelfTagVo r : selfExtagVos)
if (r.getTagId().equals(goodsExtagIdList.get(i)) && r.getTagBelong().equals("1")
&& !r.getTagType().equals("5")) {
paramExtagVoList.add(GoblinGoodsExtagVo.getNew().copy(r).setSort(i));
break;
}
}
if (!CollectionUtils.isEmpty(goodsArtagIdList)) {
selfExtagVos = CollectionUtils.isEmpty(selfExtagVos) ? goblinRedisUtils.getSelfExtagVos()
: selfExtagVos;
for (int i = 0; i < goodsArtagIdList.size(); i++)
for (GoblinSelfTagVo r : selfExtagVos)
if (r.getTagId().equals(goodsArtagIdList.get(i)) && r.getTagBelong().equals("1")) {
paramArtagVoList.add(GoblinGoodsExtagVo.getNew().copy(r).setSort(i));
break;
}
}
paramTagIsEmptyFlg = CollectionUtils.isEmpty(paramTagVoList);
paramExtagIsEmptyFlg = CollectionUtils.isEmpty(paramExtagVoList);
paramArtagIsEmptyFlg = CollectionUtils.isEmpty(paramArtagVoList);
if (!befTagIsEmptyFlg || !paramTagIsEmptyFlg) {
if (!befTagIsEmptyFlg && !paramTagIsEmptyFlg) {
if (paramTagVoList.size() != befTagVoList.size()) {
updateTagFlg = true;
} else {
List<String> befTagIdList = befTagVoList.stream().map(GoblinGoodsTagVo::getTagId)
.collect(Collectors.toList());
for (GoblinGoodsTagVo vo : paramTagVoList) {
if (!befTagIdList.contains(vo.getTagId())) {
updateTagFlg = true;
break;
}
}
}
} else {
updateTagFlg = true;
}
}
if (updateTagFlg) {
updateSpuInfoVo
.setTagVoList(paramTagIsEmptyFlg ? ObjectUtil.getGoblinGoodsTagVoArrayList() : paramTagVoList);
}
if (!befExtagIsEmptyFlg || !paramExtagIsEmptyFlg) {
if (!befExtagIsEmptyFlg && !paramExtagIsEmptyFlg) {
if (paramExtagVoList.size() != befExtagVoList.size()) {
updateExtagFlg = true;
} else {
List<String> befExtagIdList = befExtagVoList.stream().map(GoblinGoodsExtagVo::getTagId)
.collect(Collectors.toList());
for (GoblinGoodsExtagVo vo : paramExtagVoList) {
if (!befExtagIdList.contains(vo.getTagId())) {
updateExtagFlg = true;
break;
}
}
}
} else {
updateExtagFlg = true;
}
}
if (updateExtagFlg) {
updateSpuInfoVo.setExtagVoList(
paramExtagIsEmptyFlg ? ObjectUtil.getGoblinGoodsExtagVoArrayList() : paramExtagVoList);
}
if (!befArtagIsEmptyFlg || !paramArtagIsEmptyFlg) {
if (!befArtagIsEmptyFlg && !paramArtagIsEmptyFlg) {
if (paramArtagVoList.size() != befArtagVoList.size()) {
updateArtagFlg = true;
} else {
List<String> befArtagIdList = befArtagVoList.stream().map(GoblinGoodsExtagVo::getTagId)
.collect(Collectors.toList());
for (GoblinGoodsExtagVo vo : paramArtagVoList) {
if (!befArtagIdList.contains(vo.getTagId())) {
updateArtagFlg = true;
break;
}
}
}
} else {
updateArtagFlg = true;
}
}
if (updateArtagFlg) {
updateSpuInfoVo.setArtagVoList(
paramArtagIsEmptyFlg ? ObjectUtil.getGoblinGoodsExtagVoArrayList() : paramArtagVoList);
}
}
boolean updateSsidFlg = false;
List<String> ssidList = mgtGoodsAddParam.getSsidList();
boolean paramSsidListIsEmptyFlg = CollectionUtils.isEmpty(ssidList);
List<GoblinServiceSupportVo> serviceSupportVoList = mgtGoodsInfoVo.getServiceSupportVoList();
boolean befServiceSupportVoListIsEmptyFlg = CollectionUtils.isEmpty(serviceSupportVoList);
{// 服务支持处理
if (!befServiceSupportVoListIsEmptyFlg || !paramSsidListIsEmptyFlg) {
if (!befServiceSupportVoListIsEmptyFlg && !paramSsidListIsEmptyFlg) {
if (serviceSupportVoList.size() != ssidList.size()) {
updateSsidFlg = true;
} else {
List<String> befSsidList = serviceSupportVoList.stream().map(GoblinServiceSupportVo::getSsid)
.collect(Collectors.toList());
for (String ssid : ssidList) {
if (!befSsidList.contains(ssid)) {
updateSsidFlg = true;
break;
}
}
}
} else {
updateSsidFlg = true;
}
}
if (updateSsidFlg) {
updateSpuInfoVo.setServiceSupportVoList(
paramSsidListIsEmptyFlg ? ObjectUtil.getGoblinServiceSupportVoArrayList()
: goblinMongoUtils.getServiceSupportVos(ssidList));
}
}
boolean updateImageFlg = false;
List<String> paramImageList = mgtGoodsAddParam.getImageList();
List<String> befImageList = mgtGoodsInfoVo.getImageList();
{// 图片处理
if (befImageList.size() != paramImageList.size()) {
updateImageFlg = true;
} else {
for (String imageUrl : paramImageList) {
if (!befImageList.contains(imageUrl)) {
updateImageFlg = true;
break;
}
}
}
if (updateImageFlg) {
updateSpuInfoVo.setImageList(paramImageList);
}
}
updateSpuInfoVo.setUpdatedBy(uid);
updateSpuInfoVo.setUpdatedAt(LocalDateTime.now());
if (goblinMongoUtils.updateGoodsInfoVo(updateSpuInfoVo)) {
goblinRedisUtils.delGoodsInfoVo(updateSpuInfoVo.getSpuId());
log.info("商品管理:SPU编辑[UID={},PARAMS={}]", uid, JsonUtils.toJson(mgtGoodsAddParam));
GoblinGoodsSkuInfoVo updateSkuInfoVo = GoblinGoodsSkuInfoVo.getNew();
updateSkuInfoVo.setSpuId(updateSpuInfoVo.getSpuId());
updateSkuInfoVo.setSkuNo(updateSpuInfoVo.getSpuNo());
// updateSkuInfoVo.setName(updateSpuInfoVo.getName());
// updateSkuInfoVo.setSubtitle(updateSpuInfoVo.getSubtitle());
updateSkuInfoVo.setVirtualFlg(updateSpuInfoVo.getVirtualFlg());
updateSkuInfoVo.setLogisticsTemplate(updateSpuInfoVo.getLogisticsTemplate());
updateSkuInfoVo.setSkuPic(updateSpuInfoVo.getCoverPic());// 默认使用SPU的
updateSkuInfoVo.setUpdatedBy(updateSpuInfoVo.getUpdatedBy());
updateSkuInfoVo.setUpdatedAt(updateSpuInfoVo.getUpdatedAt());
LinkedList<Object[]> updateGoodsInfoObjs = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> updateGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
// 参与活动的同一商品更新处理
List<String> marketSpuIdList = goblinMongoUtils.updateGoodsInfoVoForMarket(spuId, mgtGoodsInfoVo.getSpuNo(),
updateSpuInfoVo);
if (!CollectionUtils.isEmpty(marketSpuIdList)) {
marketSpuIdList.forEach(marketSpuId -> {
goblinRedisUtils.delGoodsInfoVo(marketSpuId);
updateGoodsInfoObjs.add(new Object[] {
updateSpuInfoVo.getSpuNo(), updateSpuInfoVo.getName(), updateSpuInfoVo.getSubtitle(),
updateSpuInfoVo.getSellPrice(),
updateSpuInfoVo.getIntro(), updateSpuInfoVo.getDetails(), updateSpuInfoVo.getCoverPic(),
updateSpuInfoVo.getVideo(),
"2", updateSpuInfoVo.getCateFid(), updateSpuInfoVo.getCateSid(),
updateSpuInfoVo.getCateTid(),
updateSpuInfoVo.getShelvesHandle(), updateSpuInfoVo.getShelvesTime(),
updateSpuInfoVo.getSpuValidity(), updateSpuInfoVo.getVirtualFlg(),
updateSpuInfoVo.getLogisticsTemplate(), updateSpuInfoVo.getUpdatedBy(),
updateSpuInfoVo.getUpdatedAt(), updateSpuInfoVo.getSpuErpCode(),
marketSpuId
});
updateGoodsSkuObjs.add(new Object[] {
updateSkuInfoVo.getSkuNo(), updateSkuInfoVo.getVirtualFlg(),
updateSkuInfoVo.getLogisticsTemplate(),
updateSkuInfoVo.getSkuPic(), updateSkuInfoVo.getUpdatedBy(), updateSkuInfoVo.getUpdatedAt(),
marketSpuId
});
});
}
// goblinMongoUtils.updateGoodsSkuInfoVoBySpuId(updateSkuInfoVo);
goblinMongoUtils.updateGoodsSkuInfoVoPropBySpuId(updateSkuInfoVo);
goblinRedisUtils.delGoodsSkuInfoVo(mgtGoodsInfoVo.getSkuIdList().get(0));
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_goods.update_by_edit"));
updateGoodsInfoObjs.add(new Object[] {
updateSpuInfoVo.getSpuNo(), updateSpuInfoVo.getName(), updateSpuInfoVo.getSubtitle(),
updateSpuInfoVo.getSellPrice(),
updateSpuInfoVo.getIntro(), updateSpuInfoVo.getDetails(), updateSpuInfoVo.getCoverPic(),
updateSpuInfoVo.getVideo(),
updateSpuInfoVo.getSpecMode(), updateSpuInfoVo.getCateFid(), updateSpuInfoVo.getCateSid(),
updateSpuInfoVo.getCateTid(),
updateSpuInfoVo.getShelvesHandle(), updateSpuInfoVo.getShelvesTime(),
updateSpuInfoVo.getSpuValidity(), updateSpuInfoVo.getVirtualFlg(),
updateSpuInfoVo.getLogisticsTemplate(), updateSpuInfoVo.getUpdatedBy(),
updateSpuInfoVo.getUpdatedAt(), updateSpuInfoVo.getSpuErpCode(),
updateSpuInfoVo.getSpuId()
});
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_edit_coupon_spu"));
updateGoodsSkuObjs.add(new Object[] {
updateSkuInfoVo.getSkuNo(), updateSkuInfoVo.getVirtualFlg(), updateSkuInfoVo.getLogisticsTemplate(),
updateSkuInfoVo.getSkuPic(), updateSkuInfoVo.getUpdatedBy(), updateSkuInfoVo.getUpdatedAt(),
updateSkuInfoVo.getSpuId()
});
toMqSqls.add(SqlMapping.get("candy_coupon.goods_spu_update"));
LinkedList<Object[]> updateCandyCouponObjs = CollectionUtil.linkedListObjectArr();
updateCandyCouponObjs.add(new Object[] { updateSpuInfoVo.getName(), updateSpuInfoVo.getIntro(),
updateSpuInfoVo.getUpdatedBy(), updateSpuInfoVo.getUpdatedAt(), spuId });
toMqSqls.add(SqlMapping.get("goblin_goods_tag.delete"));
LinkedList<Object[]> deleteGoodsTagObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_tag.insert_byreplace"));
LinkedList<Object[]> initGoodsTagObjs = CollectionUtil.linkedListObjectArr();
if (updateTagFlg) {
if (!befTagIsEmptyFlg) {
deleteGoodsTagObjs.add(new Object[] { spuId, '0' });
}
if (!paramTagIsEmptyFlg) {
updateSpuInfoVo.getTagVoList().forEach(
vo -> initGoodsTagObjs.add(new Object[] { spuId, vo.getTagId(), vo.getSort(), "0" }));
}
}
if (updateExtagFlg) {
if (!befExtagIsEmptyFlg) {
deleteGoodsTagObjs.add(new Object[] { spuId, '1' });
}
if (!paramExtagIsEmptyFlg) {
updateSpuInfoVo.getExtagVoList().forEach(
vo -> initGoodsTagObjs.add(new Object[] { spuId, vo.getTagId(), vo.getSort(), "1" }));
}
}
toMqSqls.add(SqlMapping.get("goblin_goods_artag.delete"));
LinkedList<Object[]> deleteGoodsArTagObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_artag.insert_byreplace"));
LinkedList<Object[]> initGoodsArTagObjs = CollectionUtil.linkedListObjectArr();
if (updateArtagFlg) {
if (!befArtagIsEmptyFlg) {
deleteGoodsArTagObjs.add(new Object[] { spuId, '1' });
}
if (!paramArtagIsEmptyFlg) {
updateSpuInfoVo.getArtagVoList().forEach(
vo -> initGoodsArTagObjs.add(new Object[] { spuId, vo.getTagId(), vo.getSort(), "1" }));
}
}
toMqSqls.add(SqlMapping.get("goblin_goods_service_support.delete"));
LinkedList<Object[]> deleteServiceSupportObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_service_support.insert_byreplace"));
LinkedList<Object[]> initServiceSupportObjs = CollectionUtil.linkedListObjectArr();
if (updateSsidFlg) {
if (!befServiceSupportVoListIsEmptyFlg) {
deleteServiceSupportObjs.add(new Object[] { spuId });
}
if (!paramSsidListIsEmptyFlg) {
updateSpuInfoVo.getServiceSupportVoList()
.forEach(vo -> initServiceSupportObjs.add(new Object[] { spuId, vo.getSsid() }));
}
}
toMqSqls.add(SqlMapping.get("goblin_goods_image.delete"));
LinkedList<Object[]> deleteGoodsImageObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_image.insert_byreplace"));
LinkedList<Object[]> initGoodsImageObjs = CollectionUtil.linkedListObjectArr();
if (updateImageFlg) {
deleteGoodsImageObjs.add(new Object[] { spuId });
updateSpuInfoVo.getImageList()
.forEach(imageUrl -> initGoodsImageObjs.add(new Object[] { spuId, imageUrl }));
}
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, updateGoodsInfoObjs, updateGoodsSkuObjs, updateCandyCouponObjs,
deleteGoodsTagObjs, initGoodsTagObjs, deleteGoodsArTagObjs, initGoodsArTagObjs,
deleteServiceSupportObjs, initServiceSupportObjs, deleteGoodsImageObjs,
initGoodsImageObjs));
return true;
}
return false;
}
public boolean sqbGoodsEditSku(String uid, GoblinStoreMgtGoodsSqbEditSkuParam mgtGoodsEditSkuParam,
GoblinGoodsInfoVo goodsInfoVo) {
LocalDateTime nowTime = LocalDateTime.now();
GoblinGoodsSkuInfoVo updateSkuInfoVo = mgtGoodsEditSkuParam.initEditGoodsSkuInfoVo();
updateSkuInfoVo.setUpdatedBy(uid);
updateSkuInfoVo.setUpdatedAt(nowTime);
String skuId = updateSkuInfoVo.getSkuId();
if (goblinMongoUtils.updateGoodsSkuInfoVo(updateSkuInfoVo)) {
goblinRedisUtils.delGoodsSkuInfoVo(skuId);
log.info("商品管理:SKU编辑[UID={},PARAMS={}]", uid, JsonUtils.toJson(mgtGoodsEditSkuParam));
LinkedList<Object[]> updateGoodsSkuForMarketObjs = CollectionUtil.linkedListObjectArr();
// 参与活动的同一商品更新处理
List<String> marketSkuIdList = goblinRedisUtils.getSkuRe(updateSkuInfoVo.getSkuId());
if (!CollectionUtils.isEmpty(marketSkuIdList)) {
goblinMongoUtils.updateGoodsSkuInfoVoForMarket(marketSkuIdList, updateSkuInfoVo);
marketSkuIdList.forEach(marketSkuId -> {
goblinRedisUtils.delGoodsSkuInfoVo(marketSkuId);
updateGoodsSkuForMarketObjs.add(new Object[] {
updateSkuInfoVo.getStock(), updateSkuInfoVo.getIsTrueName(), updateSkuInfoVo.getUseScope(),
updateSkuInfoVo.getValFace(), updateSkuInfoVo.getEffectAt(), updateSkuInfoVo.getExpireAt(),
updateSkuInfoVo.getUpdatedBy(), updateSkuInfoVo.getUpdatedAt(), marketSkuId
});
});
}
BigDecimal priceGe = BigDecimal.ZERO, priceLe = BigDecimal.ZERO;
for (String skuIdStr : goodsInfoVo.getSkuIdList()) {
GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuIdStr);
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;
}
}
boolean updateGoodsInfoVoFlg = false;
LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
if (priceGe.compareTo(goodsInfoVo.getPriceGe()) != 0 || priceLe.compareTo(goodsInfoVo.getPriceLe()) != 0) {
updateGoodsInfoVoFlg = true;
goodsInfoVo.setPriceGe(priceGe);
goodsInfoVo.setPriceLe(priceLe);
goodsInfoVo.setUpdatedBy(uid);
goodsInfoVo.setUpdatedAt(nowTime);
updateGoodsObjs.add(new Object[] { priceGe, priceLe, uid, nowTime, goodsInfoVo.getSpuId() });
}
if (updateGoodsInfoVoFlg) {
goblinMongoUtils.updateGoodsInfoVo(goodsInfoVo);
goblinRedisUtils.delGoodsInfoVo(goodsInfoVo.getSpuId());
}
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_edit_for_market2"));
// LinkedList<Object[]> updateGoodsSkuForMarketObjs =
// CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("goblin_goods_sku.update_by_edit_for_coupon"));
LinkedList<Object[]> updateGoodsSkuObjs = CollectionUtil.linkedListObjectArr();
updateGoodsSkuObjs.add(new Object[] {
updateSkuInfoVo.getPrice(), updateSkuInfoVo.getPriceMember(), updateSkuInfoVo.getStock(),
updateSkuInfoVo.getSkuStock(),
updateSkuInfoVo.getBuyLimit(), updateSkuInfoVo.getUpdatedBy(), updateSkuInfoVo.getUpdatedAt(), skuId
});
toMqSqls.add(SqlMapping.get("goblin_goods_sku_coupon.update"));
LinkedList<Object[]> updateGoodsSkuCouponObjs = CollectionUtil.linkedListObjectArr();
updateGoodsSkuCouponObjs.add(new Object[] {
updateSkuInfoVo.getUseScope(), updateSkuInfoVo.getValFace(), updateSkuInfoVo.getIsTrueName(),
updateSkuInfoVo.getEffectAt(), updateSkuInfoVo.getExpireAt(), skuId });
toMqSqls.add(SqlMapping.get("candy_coupon.goods_sku_update"));
LinkedList<Object[]> updateCandyCouponObjs = CollectionUtil.linkedListObjectArr();
updateCandyCouponObjs.add(new Object[] {
updateSkuInfoVo.getValFace(), updateSkuInfoVo.getIsTrueName(), updateSkuInfoVo.getEffectAt(),
updateSkuInfoVo.getExpireAt(), updateSkuInfoVo.getUpdatedBy(), updateSkuInfoVo.getUpdatedAt(), skuId
});
toMqSqls.add(SqlMapping.get("candy_coupon_rule.goods_sku_update"));
LinkedList<Object[]> updateCandyCouponRuleObjs = CollectionUtil.linkedListObjectArr();
String busiName = "%s";
switch (updateSkuInfoVo.getUseScope()) {// 适用范围[101-音乐节|102-小型演出(livehouse演出)|103-巡演]
case 101:// 音乐节
busiName = String.format(busiName, "草莓、M_DSK、五百里音乐节");// 按杨要求文案'音乐节'改'草莓、M_DSK、五百里音乐节'
break;
case 102:// 小型演出(LiveHouse演出)
busiName = String.format(busiName, "小型演出(LiveHouse演出)系列");
break;
case 103:// 巡演
busiName = String.format(busiName, "巡演 系列");
break;
}
updateCandyCouponRuleObjs.add(new Object[] { updateSkuInfoVo.getUseScope(), busiName, skuId });
toMqSqls.add(SqlMapping.get("goblin_goods.update_by_edit_sku"));
// LinkedList<Object[]> updateGoodsObjs = CollectionUtil.linkedListObjectArr();
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(toMqSqls, updateGoodsSkuForMarketObjs, updateGoodsSkuObjs, updateGoodsSkuCouponObjs,
updateCandyCouponObjs, updateCandyCouponRuleObjs, updateGoodsObjs));
return true;
}
return false;
}
}
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