diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mapper/product/TbProductMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mapper/product/TbProductMapper.java index 20480852..760e1498 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mapper/product/TbProductMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mapper/product/TbProductMapper.java @@ -52,7 +52,4 @@ public interface TbProductMapper extends BaseMapper { .map(String::valueOf) .collect(Collectors.joining(",")); } - - @Select("select * from tb_product where id=#{id}") - TbProduct selectById(@Param("id") Integer productId); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mapper/product/TbProductSkuMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mapper/product/TbProductSkuMapper.java index 7a9735a9..1655ecbc 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mapper/product/TbProductSkuMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mapper/product/TbProductSkuMapper.java @@ -18,6 +18,8 @@ package cn.ysk.cashier.mapper.product; import cn.ysk.cashier.base.BaseMapper; import cn.ysk.cashier.pojo.product.TbProductSku; import cn.ysk.cashier.dto.product.TbProductSkuDto; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; @@ -29,4 +31,4 @@ import org.mapstruct.ReportingPolicy; @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface TbProductSkuMapper extends BaseMapper { -} \ No newline at end of file +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java index 2e250a2a..4538c363 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java @@ -51,4 +51,8 @@ public interface TbProductRepository extends JpaRepository, @Query("update FROM TbProduct pro set pro.stockNumber=:stocktakinNum where pro.id=:id and pro.stockNumber=:stockNumber") Integer updateStock(@Param("id") Integer id,@Param("stockNumber") Integer stockNumber, @Param("stocktakinNum") Integer stocktakinNum); + + @Modifying + @Query("update TbProduct set stockNumber=stockNumber+:num where id=:id") + void incrStock(@Param("id") Integer id, @Param("num") Integer num); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java index 3e1b3909..d3036f39 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java @@ -3,6 +3,7 @@ package cn.ysk.cashier.repository.product; import cn.ysk.cashier.pojo.product.TbProductSku; import cn.ysk.cashier.vo.StockV2Vo; import cn.ysk.cashier.vo.StockVo; +import org.apache.ibatis.annotations.Update; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @@ -151,4 +152,8 @@ public interface TbProductSkuRepository extends JpaRepository keys = new HashSet<>(); for (TbOrderDetail detail : details) { detail.setStatus("cancelled"); - skuRepository.updateStockNumber(detail.getId(), new Double(detail.getNum())); + // 返还库存 + productService.returnStockByPro(detail.getProductId(), detail.getProductSkuId(), detail.getNum()); tbOrderDetailRepository.save(detail); keys.add(CacheKey.PRODUCT_SKU + detail.getShopId() + ":" + detail.getId()); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java index a26846c8..677c0db5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java @@ -9,6 +9,7 @@ import cn.ysk.cashier.dto.product.TbProductSortCriteria; import cn.ysk.cashier.dto.shop.TbCouponCategoryDto; import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.mapper.product.TbProductMapper; +import cn.ysk.cashier.mapper.product.TbProductSkuMapper; import cn.ysk.cashier.mybatis.entity.TagProductDepts; import cn.ysk.cashier.mybatis.service.TagProductDeptsService; import cn.ysk.cashier.pojo.product.*; @@ -61,6 +62,7 @@ public class TbProductServiceImpl implements TbProductService { private final TbProductSkuRepository tbProductSkuRepository; private final TbShopUnitRepository tbShopUnitRepository; private final TbProductSpecRepository tbProductSpecRepository; + private final TbProductSkuMapper TbProductSkuMapper; private final TbProductSkuResultRepository tbProductSkuResultRepository; private final TbShopCategoryRepository tbShopCategoryRepository; private final TbShopUserDutyDetailRepository tbShopUserDutyDetailRe; @@ -650,4 +652,19 @@ public class TbProductServiceImpl implements TbProductService { public void incrStockNumber(String productId, Integer number) { tbProductRepository.incrProductStockNumber(Integer.valueOf(productId), number); } + + @Override + public void returnStockByPro(Integer productId, Integer productSkuId, Integer num) { + log.info("开始返还库存,订单超时取消,商品id:{}", productId); + TbProduct product = tbProductRepository.findById(productId).orElse(null); + if (product == null) { + log.info("返还库存失败,商品不存在: {}", productId); + return; + } + if (product.getIsDistribute() == 1) { + tbProductRepository.incrStock(productId, num); + }else { + tbProductSkuRepository.incrStock(productSkuId, Double.valueOf(num)); + } + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java index 022146a9..d9e55502 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java @@ -5,58 +5,64 @@ import cn.ysk.cashier.pojo.product.TbProduct; import cn.ysk.cashier.vo.TbProductVo; import cn.ysk.cashier.dto.product.TbProductDto; import cn.ysk.cashier.dto.product.TbProductQueryCriteria; + import java.util.Map; import java.util.List; import java.io.IOException; import javax.servlet.http.HttpServletResponse; /** -* @website https://eladmin.vip -* @description 服务接口 -* @author lyf -* @date 2023-12-11 -**/ + * @author lyf + * @website https://eladmin.vip + * @description 服务接口 + * @date 2023-12-11 + **/ public interface TbProductService { /** - * 查询数据分页 - * @param criteria 条件 - * @param isAdmin 是否为后台查询 - * @return Map - */ - Map queryAll(TbProductQueryCriteria criteria, boolean isAdmin); + * 查询数据分页 + * + * @param criteria 条件 + * @param isAdmin 是否为后台查询 + * @return Map + */ + Map queryAll(TbProductQueryCriteria criteria, boolean isAdmin); /** - * 查询所有数据不分页 - * @param criteria 条件参数 - * @return List - */ - List queryAlls(TbProductQueryCriteria criteria); + * 查询所有数据不分页 + * + * @param criteria 条件参数 + * @return List + */ + List queryAlls(TbProductQueryCriteria criteria); /** * 根据ID查询 + * * @param id ID * @return TbProductDto */ TbProductDto findById(Integer id); - TbProductVo findByProductId(Integer id)throws Exception; + TbProductVo findByProductId(Integer id) throws Exception; - ListfindByProductList(List productList); + List findByProductList(List productList); /** - * 创建 - * @param resources / - * @return TbProductDto - */ + * 创建 + * + * @param resources / + * @return TbProductDto + */ Object create(TbProductVo resources); /** - * 编辑 - * @param resources / - */ + * 编辑 + * + * @param resources / + */ void update(TbProductVo resources); void upProSort(TbProductSortCriteria param); @@ -64,26 +70,38 @@ public interface TbProductService { void updateStockNumber(Integer id, Double stockNumber); /** - * 多选删除 - * @param ids / - */ + * 多选删除 + * + * @param ids / + */ void deleteAll(Integer[] ids); /** - * 导出数据 - * @param all 待导出的数据 - * @param response / - * @throws IOException / - */ + * 导出数据 + * + * @param all 待导出的数据 + * @param response / + * @throws IOException / + */ void download(List all, HttpServletResponse response) throws IOException; void updateIsHot(Integer id, String shopId); - void updateIsStock(Integer proId, String shopId,Integer isStock); + + void updateIsStock(Integer proId, String shopId, Integer isStock); /** * 增加库存 + * * @param productId 商品id - * @param number 增加数量 + * @param number 增加数量 */ void incrStockNumber(String productId, Integer number); + + /** + * 返还库存 + * @param productId 商品 + * @param productSkuId sku + * @param num 数量 + */ + void returnStockByPro(Integer productId, Integer productSkuId, Integer num); }