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

Commit 3a8884fc authored by 姜秀龙's avatar 姜秀龙

收钱 goods add edit

parent 3ad34a00
......@@ -162,32 +162,13 @@ public class GoblinStoreMgtGoodsSqbAddParam implements Serializable {
*
* @return GoblinGoodsInfoVo
*/
public GoblinGoodsInfoVo initEditGoodsInfoVo() {
GoblinGoodsInfoVo vo = GoblinGoodsInfoVo.getNew();
vo.setStoreId(this.getStoreId());
vo.setSpuId(this.getSpuId());
if (StringUtils.isBlank(this.getSpuNo())) {
vo.setSpuNo(vo.getSpuId());
} else {
vo.setSpuNo(this.getSpuNo());
}
vo.setSpuType(2);
vo.setName(this.getName());
// vo.setSubtitle(this.getSubtitle());
// vo.setSellPrice(this.getSellPrice());
vo.setIntro(this.getIntro());
vo.setDetails(this.getDetails());
vo.setCoverPic(StringUtils.isBlank(this.getCoverPic()) ? this.getImageList().get(0) : this.getCoverPic());
vo.setVideo(this.getVideo());
vo.setSpecMode("1");
vo.setCateFid(this.getCateFid());
vo.setCateSid(this.getCateSid());
vo.setCateTid(this.getCateTid());
vo.setShelvesHandle(this.getShelvesHandle());
vo.setShelvesTime(this.getShelvesTime());
vo.setVirtualFlg("1");
vo.setImageList(this.getImageList());
vo.setLogisticsTemplate("");
public GoblinGoodsInfoVo initEditGoodsInfoVo(GoblinSqbPerfGoodsVo sqbGoods,
GoblinGoodsInfoVo mgtGoodsInfoVo) {
GoblinGoodsInfoVo vo = mgtGoodsInfoVo;
vo.setName(sqbGoods.getTitle());
vo.setDetails(sqbGoods.getProductIntroduction());
vo.setCoverPic(CollectionUtil.isEmpty(sqbGoods.getConverImages()) ? "" : sqbGoods.getConverImages().get(0));
// vo.setImageList(sqbGoods.getConverImages());
return vo;
}
......
package com.liquidnet.service.goblin.service;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinSqbPerfGoodsVo;
import com.liquidnet.service.goblin.param.shouqianba.request.GoblinSqbGoodsSyncParam;
import java.util.List;
/**
* 收钱吧商品同步服务接口
*/
public interface IGoblinSqbGoodsService {
/**
* 根据搜索条件拉取商城商品列表
*
* @return 过滤后的商品列表
*/
ResponseDto<List<GoblinSqbPerfGoodsVo>> getProductList();
/**
* 批量新增商品到 goblin 系统(不存在则新增)
*
* @param storeId 门店ID
* @param items 待新增商品列表
* @return 结果
*/
ResponseDto<String> addGoods(String storeId, List<GoblinSqbPerfGoodsVo> items);
/**
* 批量更新商品到 goblin 系统(仅更新已存在)
*
* @param storeId 门店ID
* @param items 待更新商品列表
* @return 结果
*/
ResponseDto<String> updateGoods(String storeId, List<GoblinSqbPerfGoodsVo> items);
/**
* 查询演出关联商品列表(先查 Redis 缓存,未命中则查 MySQL 并写入缓存)
*
* @param performancesId 演出ID
* @return 演出关联商品列表
*/
ResponseDto<List<GoblinSqbPerfGoodsVo>> getPerfGoods(String performancesId);
}
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 com.liquidnet.service.goblin.dto.vo.GoblinSqbPerfGoodsVo;
import java.util.List;
......@@ -20,10 +19,6 @@ public interface IGoblinStoreMgtSqbGoodsService {
/**
* 商品管理:商品编辑:SPU编辑-收钱吧商品
*/
boolean sqbGoodsEditSpu(String uid, GoblinStoreMgtGoodsSqbAddParam mgtGoodsSqbParam, GoblinGoodsInfoVo goodsInfoVo);
boolean sqbGoodsEditSpu(String uid, GoblinSqbPerfGoodsVo mgtGoodsSqbParam, GoblinGoodsInfoVo goodsInfoVo);
/**
* 商品管理:商品编辑:SKU编辑-收钱吧商品
*/
boolean sqbGoodsEditSku(String uid, GoblinStoreMgtGoodsSqbEditSkuParam mgtGoodsSqbParam, GoblinGoodsInfoVo goodsInfoVo);
}
package com.liquidnet.service.goblin.controller;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinSqbPerfGoodsVo;
import com.liquidnet.service.goblin.service.IGoblinSqbGoodsService;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import com.liquidnet.service.goblin.param.shouqianba.request.GoblinSqbGoodsSyncParam;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 收钱吧商品同步 Controller
*/
@Slf4j
@Api(tags = "收钱吧商品同步")
@RestController
@RequestMapping("/sqb/goods")
public class GoblinSqbGoodsController {
@Autowired
IGoblinSqbGoodsService goblinSqbGoodsService;
@Autowired
GoblinRedisUtils goblinRedisUtils;
/**
* 查询所有商城及商品列表
* 后端自动拉取所有商城,循环获取每个商城的商品列表,聚合返回前端
*/
@GetMapping("/list")
@ApiOperation("查询收钱吧所有商城及商品列表")
public ResponseDto<List<GoblinSqbPerfGoodsVo>> list() {
return goblinSqbGoodsService.getProductList();
}
/**
* 批量新增收钱吧商品
*/
@PostMapping("/add")
@ApiOperation("批量新增收钱吧商品")
public ResponseDto<String> addGoods(@RequestParam("storeId") String storeId,
@RequestBody @Validated List<GoblinSqbPerfGoodsVo> items) {
String currentUid = CurrentUtil.getCurrentUid();
if (!goblinRedisUtils.hasStoreId(currentUid, storeId)) {
log.warn("[收钱吧商品同步] 批量新增: 无权操作该店铺, uid={}, storeId={}", currentUid, storeId);
return ResponseDto.failure("无权操作该店铺");
}
return goblinSqbGoodsService.addGoods(storeId, items);
}
/**
* 批量更新收钱吧商品
*/
@PostMapping("/update")
@ApiOperation("批量更新收钱吧商品")
public ResponseDto<String> updateGoods(@RequestParam("storeId") String storeId,
@RequestBody @Validated List<GoblinSqbPerfGoodsVo> items) {
String currentUid = CurrentUtil.getCurrentUid();
if (!goblinRedisUtils.hasStoreId(currentUid, storeId)) {
log.warn("[收钱吧商品同步] 批量更新: 无权操作该店铺, uid={}, storeId={}", currentUid, storeId);
return ResponseDto.failure("无权操作该店铺");
}
return goblinSqbGoodsService.updateGoods(storeId, items);
}
/**
* 查询演出关联商品列表(C端)
* 先查 Redis 缓存(TTL 5min),未命中则查 MySQL 并写入缓存
*/
@GetMapping("/performance/goods/{performancesId}")
@ApiOperation("查询演出关联商品列表")
public ResponseDto<List<GoblinSqbPerfGoodsVo>> getPerfGoods(@PathVariable String performancesId) {
return goblinSqbGoodsService.getPerfGoods(performancesId);
}
}
......@@ -36,7 +36,6 @@ import java.util.Objects;
/**
* 收钱吧商品管理
*/
@ApiSupport(order = 1)
@Api(tags = "收钱吧商品管理")
@Slf4j
@Validated
......@@ -83,113 +82,21 @@ public class GoblinStoreMgtSqbGoodsController {
@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();
public ResponseDto<Object> editSpu(@RequestParam("storeId") String storeId,
@RequestBody @Validated List<GoblinSqbPerfGoodsVo> items) {
String currentUid = CurrentUtil.getCurrentUid();
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));
log.debug("收钱吧商品管理:商品编辑:SPU编辑:[GoblinStoreMgtGoodsSqbAddParam={}]", JsonUtils.toJson(items));
}
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"));
}
for (GoblinSqbPerfGoodsVo item : items) {
GoblinGoodsInfoVo mgtGoodsInfoVo = goblinRedisUtils.getGoodsInfoVo(item.getSpuId());
goblinstoreMgtSqbGoodsService.sqbGoodsEditSpu(currentUid, item, mgtGoodsInfoVo);
}
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"));
}
return ResponseDto.success();
}
}
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