商品修改库存

This commit is contained in:
Tankaikai
2025-03-20 16:39:54 +08:00
parent 606e4da36c
commit 6ffbef791f
3 changed files with 65 additions and 0 deletions

View File

@@ -234,6 +234,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
}
@Override
@Transactional(rollbackFor = Exception.class)
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#dto.shopId", allEntries = true)
public void updateProduct(ProductDTO dto) {
Long shopId = StpKit.USER.getShopId(0L);
@@ -321,6 +322,52 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
productStockFlowService.saveFlow(flow);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateProductStock(ProductModifyStockParam param) {
Product entity = super.getById(param.getId());
if (entity.getIsStock() == YesNoEnum.NO.value()) {
return;
}
if(!entity.getShopId().equals(param.getShopId())) {
return;
}
UpdateChain.of(Product.class)
.set(Product::getStockNumber, param.getStockNumber())
.set(Product::getShopId, param.getShopId())
.eq(Product::getId, param.getId())
.update();
// 记录商品库存流水
ProductStockFlow flow = new ProductStockFlow();
Long createUserId = StpKit.USER.getLoginIdAsLong();
String createUserName = StpKit.USER.getAccount();
flow.setCreateUserId(createUserId);
flow.setCreateUserName(createUserName);
flow.setShopId(param.getShopId());
flow.setProductId(entity.getId());
flow.setProductName(entity.getName());
flow.setBeforeNumber(NumberUtil.toBigDecimal(entity.getStockNumber()));
BigDecimal inOutNumber = NumberUtil.sub(NumberUtil.toBigDecimal(entity.getStockNumber()), flow.getBeforeNumber());
// 盘亏
if (NumberUtil.isLess(inOutNumber, BigDecimal.ZERO)) {
flow.setInOutNumber(inOutNumber);
flow.setInOutType(InOutTypeEnum.OUT.value());
flow.setInOutItem(InOutItemEnum.LOSS_OUT.value());
}
// 盘盈
if (NumberUtil.isGreater(inOutNumber, BigDecimal.ZERO)) {
flow.setInOutNumber(inOutNumber);
flow.setInOutType(InOutTypeEnum.IN.value());
flow.setInOutItem(InOutItemEnum.WIN_IN.value());
}
// 盘平
if (NumberUtil.equals(inOutNumber, BigDecimal.ZERO)) {
return;
}
flow.setAfterNumber(NumberUtil.toBigDecimal(entity.getStockNumber()));
productStockFlowService.saveFlow(flow);
}
@Override
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true)
public void deleteProduct(Long shopId, Long id) {