超市扣减库存
This commit is contained in:
1 parent
b302738589
commit
3a5067deb0
9 files changed
+113
-1
No files matched your search
+47
@@ -0,0 +1,47 @@
|
||||
package com.bsd.pjcloud.supermarket.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商品 SKU 更新库存 Request DTO
|
||||
*
|
||||
* @author LeeYan9
|
||||
* @since 2022-08-26
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SupermarketSpuUpdateStockReqDTO {
|
||||
|
||||
/**
|
||||
* 商品 SKU
|
||||
*/
|
||||
@NotNull(message = "商品 SPU 不能为空")
|
||||
private List<Item> items;
|
||||
|
||||
@Data
|
||||
public static class Item {
|
||||
|
||||
/**
|
||||
* 商品 SKU 编号
|
||||
*/
|
||||
@NotNull(message = "商品 SPU 编号不能为空")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 库存变化数量
|
||||
*
|
||||
* 正数:增加库存
|
||||
* 负数:扣减库存
|
||||
*/
|
||||
@NotNull(message = "库存变化数量不能为空")
|
||||
private Integer incrCount;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+7
-1
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.log.annotation.SysLog;
|
||||
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
|
||||
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
||||
import com.bsd.pjcloud.supermarket.service.SupermarketSpuService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
@@ -21,7 +22,6 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 商品spu
|
||||
@@ -120,4 +120,10 @@ public class SupermarketSpuController {
|
||||
public List<SupermarketSpuEntity> export(SupermarketSpuEntity supermarketSpu,Long[] ids) {
|
||||
return supermarketSpuService.list(Wrappers.lambdaQuery(supermarketSpu).in(ArrayUtil.isNotEmpty(ids), SupermarketSpuEntity::getId, ids));
|
||||
}
|
||||
|
||||
@PostMapping("/ad/updateSpuStock")
|
||||
@SysLog("更新商品库存")
|
||||
public R updateSkuStock(@RequestBody SupermarketSpuUpdateStockReqDTO updateStockReqDTO){
|
||||
return supermarketSpuService.updateSpuStock(updateStockReqDTO);
|
||||
}
|
||||
}
|
||||
+3
@@ -119,4 +119,7 @@ public class SupermarketUnitController {
|
||||
public List<SupermarketUnitEntity> export(SupermarketUnitEntity supermarketUnit,Long[] ids) {
|
||||
return supermarketUnitService.list(Wrappers.lambdaQuery(supermarketUnit).in(ArrayUtil.isNotEmpty(ids), SupermarketUnitEntity::getId, ids));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+4
@@ -309,6 +309,10 @@ public class SupermarketSpuEntity extends Model<SupermarketSpuEntity> {
|
||||
@Schema(description="租户编号")
|
||||
private Long tenantId;
|
||||
|
||||
|
||||
@Schema(description = "销量")
|
||||
private Integer salesCount;
|
||||
|
||||
@Schema(description = "辅助条码集合对象")
|
||||
@TableField(exist = false)
|
||||
private List<SupermarketAuxiliaryCodeEntity> supermarketAuxiliaryCodeEntityList;
|
||||
|
||||
+24
@@ -1,5 +1,6 @@
|
||||
package com.bsd.pjcloud.supermarket.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -8,4 +9,27 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
public interface SupermarketSpuMapper extends PjcloudBaseMapper<SupermarketSpuEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 更新商品 SPU 库存
|
||||
*
|
||||
* @param id 商品 SPU 编号
|
||||
* @param incrCount 增加的库存数量
|
||||
*/
|
||||
default int updateStock(Long id, Integer incrCount) {
|
||||
// 拼接 SQL
|
||||
if (incrCount == 0) {
|
||||
return 0;
|
||||
}
|
||||
String sql;
|
||||
if (incrCount > 0) {
|
||||
sql = " stock = stock + " + incrCount + ", sales_count = sales_count - " + incrCount;
|
||||
} else {
|
||||
sql = " stock = stock - " + Math.abs(incrCount) + ", sales_count = sales_count + " + Math.abs(incrCount);
|
||||
}
|
||||
// 执行更新
|
||||
LambdaUpdateWrapper<SupermarketSpuEntity> updateWrapper = new LambdaUpdateWrapper<SupermarketSpuEntity>()
|
||||
.setSql(sql)
|
||||
.eq(SupermarketSpuEntity::getId, id);
|
||||
return update(null, updateWrapper);
|
||||
}
|
||||
}
|
||||
+9
@@ -2,6 +2,7 @@ package com.bsd.pjcloud.supermarket.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
|
||||
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -16,4 +17,12 @@ public interface SupermarketSpuService extends IService<SupermarketSpuEntity> {
|
||||
|
||||
|
||||
Object removeSpuBatchByIds(ArrayList<Long> list);
|
||||
|
||||
|
||||
/**
|
||||
* 更新商品库存
|
||||
* @param updateStockReqDTO
|
||||
* @return
|
||||
*/
|
||||
R updateSpuStock(SupermarketSpuUpdateStockReqDTO updateStockReqDTO);
|
||||
}
|
||||
+1
@@ -5,4 +5,5 @@ import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity;
|
||||
|
||||
public interface SupermarketUnitService extends IService<SupermarketUnitEntity> {
|
||||
|
||||
|
||||
}
|
||||
+17
@@ -3,6 +3,7 @@ package com.bsd.pjcloud.supermarket.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
|
||||
import com.bsd.pjcloud.supermarket.entity.SupermarketAuxiliaryCodeEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity;
|
||||
@@ -106,4 +107,20 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
|
||||
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public R updateSpuStock(SupermarketSpuUpdateStockReqDTO updateStockReqDTO) {
|
||||
// 更新 SKU 库存
|
||||
updateStockReqDTO.getItems().forEach(item -> {
|
||||
int i = baseMapper.updateStock(item.getId(), item.getIncrCount());
|
||||
if (item.getIncrCount() < 0) {
|
||||
if (i == 0) {
|
||||
R.failed("商品库存不足");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
+1
@@ -50,5 +50,6 @@
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
<result property="salesCount" column="sales_count"/>
|
||||
</resultMap>
|
||||
</mapper>
|
||||
Reference in new issue
Block a user