Merge branch 'master' into prod
This commit is contained in:
commit
79ac3bfadc
|
|
@ -61,7 +61,10 @@ public class ProductController {
|
||||||
@OperationLog("商品-列表")
|
@OperationLog("商品-列表")
|
||||||
//@SaAdminCheckPermission("product:list")
|
//@SaAdminCheckPermission("product:list")
|
||||||
public CzgResult<List<ProductDTO>> getProductList(ProductDTO param) {
|
public CzgResult<List<ProductDTO>> getProductList(ProductDTO param) {
|
||||||
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
|
param.setShopId(shopId);
|
||||||
List<ProductDTO> data = productService.getProductList(param);
|
List<ProductDTO> data = productService.getProductList(param);
|
||||||
|
productService.refreshProductStock(param, data);
|
||||||
return CzgResult.success(data);
|
return CzgResult.success(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -39,6 +40,7 @@ public class UProductController {
|
||||||
public CzgResult<List<ShopProductVo>> queryHotsProductList() {
|
public CzgResult<List<ShopProductVo>> queryHotsProductList() {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
List<ShopProductVo> list = uProductService.queryHotsProductList(shopId);
|
List<ShopProductVo> list = uProductService.queryHotsProductList(shopId);
|
||||||
|
uProductService.refreshProductStock(shopId, list);
|
||||||
return CzgResult.success(list);
|
return CzgResult.success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,6 +51,10 @@ public class UProductController {
|
||||||
public CzgResult<List<ShopGroupProductVo>> queryGroupProductList() {
|
public CzgResult<List<ShopGroupProductVo>> queryGroupProductList() {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
List<ShopGroupProductVo> list = uProductService.queryGroupProductList(shopId);
|
List<ShopGroupProductVo> list = uProductService.queryGroupProductList(shopId);
|
||||||
|
Map<Long, Integer> productStock = uProductService.findShopProductStock(shopId);
|
||||||
|
list.forEach(item -> {
|
||||||
|
uProductService.refreshProductStock(productStock, item.getProductList());
|
||||||
|
});
|
||||||
return CzgResult.success(list);
|
return CzgResult.success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,9 @@ public class ControllerAspect {
|
||||||
}
|
}
|
||||||
|
|
||||||
String params = JSONObject.toJSONString(args);
|
String params = JSONObject.toJSONString(args);
|
||||||
|
if(params.contains("jndi:rmi:")){
|
||||||
|
return new RuntimeException("gun");
|
||||||
|
}
|
||||||
// 执行被拦截的方法
|
// 执行被拦截的方法
|
||||||
Object result = pjp.proceed();
|
Object result = pjp.proceed();
|
||||||
long end = System.currentTimeMillis();
|
long end = System.currentTimeMillis();
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ public interface ProductService extends IService<Product> {
|
||||||
* 删除商品
|
* 删除商品
|
||||||
*
|
*
|
||||||
* @param shopId 店铺ID
|
* @param shopId 店铺ID
|
||||||
* @param id 商品ID
|
* @param id 商品ID
|
||||||
*/
|
*/
|
||||||
void deleteProduct(Long shopId, Long id);
|
void deleteProduct(Long shopId, Long id);
|
||||||
|
|
||||||
|
|
@ -114,9 +114,17 @@ public interface ProductService extends IService<Product> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品出入库流水查询
|
* 商品出入库流水查询
|
||||||
|
*
|
||||||
* @param param 查询参数
|
* @param param 查询参数
|
||||||
* @return 分页数据
|
* @return 分页数据
|
||||||
*/
|
*/
|
||||||
Page<ProductStockFlow> findProductStockFlowPage(ProductStockFlowParam param);
|
Page<ProductStockFlow> findProductStockFlowPage(ProductStockFlowParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新商品库存
|
||||||
|
*
|
||||||
|
* @param param 查询条件
|
||||||
|
* @param records 商品数据集合
|
||||||
|
*/
|
||||||
|
void refreshProductStock(ProductDTO param, List<ProductDTO> records);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import com.czg.product.vo.ShopProductVo;
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户端商品Service
|
* 用户端商品Service
|
||||||
|
|
@ -45,4 +46,24 @@ public interface UProductService extends IService<Product> {
|
||||||
* @return 商品详情
|
* @return 商品详情
|
||||||
*/
|
*/
|
||||||
ShopProductSkuInfoVo getProductSkuInfo(ShopProductSkuParam param);
|
ShopProductSkuInfoVo getProductSkuInfo(ShopProductSkuParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新商品库存
|
||||||
|
* @param shopId 店铺id
|
||||||
|
*/
|
||||||
|
Map<Long, Integer> findShopProductStock(Long shopId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新商品库存
|
||||||
|
* @param shopId 店铺id
|
||||||
|
* @param productList 商品列表
|
||||||
|
*/
|
||||||
|
void refreshProductStock(Long shopId,List<ShopProductVo> productList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新商品库存
|
||||||
|
* @param productStock 商品库存
|
||||||
|
* @param productList 商品列表
|
||||||
|
*/
|
||||||
|
void refreshProductStock(Map<Long, Integer> productStock,List<ShopProductVo> productList);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,10 @@ public interface CacheConstant {
|
||||||
* 用户端商品信息
|
* 用户端商品信息
|
||||||
*/
|
*/
|
||||||
String USER_CLIENT_PRODUCT_INFO = "user_client_product_info:";
|
String USER_CLIENT_PRODUCT_INFO = "user_client_product_info:";
|
||||||
|
/**
|
||||||
|
* ADMIN端商品信息
|
||||||
|
*/
|
||||||
|
String ADMIN_CLIENT_PRODUCT_INFO = "admin_client_product_info:";
|
||||||
/**
|
/**
|
||||||
* 热销商品
|
* 热销商品
|
||||||
*/
|
*/
|
||||||
|
|
@ -19,4 +23,8 @@ public interface CacheConstant {
|
||||||
* 分组商品
|
* 分组商品
|
||||||
*/
|
*/
|
||||||
String USER_CLIENT_GROUPS_PRODUCT = USER_CLIENT_PRODUCT_INFO + "groups";
|
String USER_CLIENT_GROUPS_PRODUCT = USER_CLIENT_PRODUCT_INFO + "groups";
|
||||||
|
/**
|
||||||
|
* 点餐机PC端商品列表
|
||||||
|
*/
|
||||||
|
String ADMIN_CLIENT_PRODUCT_LIST = ADMIN_CLIENT_PRODUCT_INFO + "list";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.czg.constant.CacheConstant.ADMIN_CLIENT_PRODUCT_LIST;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品分组
|
* 商品分组
|
||||||
*
|
*
|
||||||
|
|
@ -86,7 +88,7 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#dto.shopId", allEntries = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#dto.shopId", allEntries = true)
|
||||||
public void addProdGroup(ProdGroupDTO dto) {
|
public void addProdGroup(ProdGroupDTO dto) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
boolean exists = super.exists(query().eq(ProdGroup::getName, dto.getName()).eq(ProdGroup::getShopId, shopId));
|
boolean exists = super.exists(query().eq(ProdGroup::getName, dto.getName()).eq(ProdGroup::getShopId, shopId));
|
||||||
|
|
@ -112,7 +114,7 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#dto.shopId", allEntries = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#dto.shopId", allEntries = true)
|
||||||
public void updateProdGroup(ProdGroupDTO dto) {
|
public void updateProdGroup(ProdGroupDTO dto) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
dto.setShopId(shopId);
|
dto.setShopId(shopId);
|
||||||
|
|
@ -139,14 +141,14 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true)
|
||||||
public void deleteProdGroup(Long shopId, Long id) {
|
public void deleteProdGroup(Long shopId, Long id) {
|
||||||
super.remove(query().eq(ProdGroup::getId, id).eq(ProdGroup::getShopId, shopId));
|
super.remove(query().eq(ProdGroup::getId, id).eq(ProdGroup::getShopId, shopId));
|
||||||
prodGroupRelationMapper.deleteByQuery(query().eq(ProdGroupRelation::getProdGroupId, id));
|
prodGroupRelationMapper.deleteByQuery(query().eq(ProdGroupRelation::getProdGroupId, id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true)
|
||||||
public void disableProdGroup(Long shopId, Long id) {
|
public void disableProdGroup(Long shopId, Long id) {
|
||||||
UpdateChain.of(ProdGroup.class)
|
UpdateChain.of(ProdGroup.class)
|
||||||
.set(ProdGroup::getStatus, StatusEnum.DISABLE.value())
|
.set(ProdGroup::getStatus, StatusEnum.DISABLE.value())
|
||||||
|
|
@ -158,7 +160,7 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true)
|
||||||
public void enableProdGroup(Long shopId, Long id) {
|
public void enableProdGroup(Long shopId, Long id) {
|
||||||
UpdateChain.of(ProdGroup.class)
|
UpdateChain.of(ProdGroup.class)
|
||||||
.set(ProdGroup::getStatus, StatusEnum.ENABLED.value())
|
.set(ProdGroup::getStatus, StatusEnum.ENABLED.value())
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import com.czg.config.RabbitPublisher;
|
import com.czg.config.RabbitPublisher;
|
||||||
import com.czg.constant.CacheConstant;
|
|
||||||
import com.czg.enums.YesNoEnum;
|
import com.czg.enums.YesNoEnum;
|
||||||
import com.czg.product.dto.ProductStockSubtractDTO;
|
import com.czg.product.dto.ProductStockSubtractDTO;
|
||||||
import com.czg.product.entity.*;
|
import com.czg.product.entity.*;
|
||||||
|
|
@ -20,7 +19,6 @@ import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
@ -56,7 +54,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true, beforeInvocation = true)
|
//@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true, beforeInvocation = true)
|
||||||
public void paySuccessSubtractStock(Long shopId, Long orderId, List<Map<String, Object>> dataList) {
|
public void paySuccessSubtractStock(Long shopId, Long orderId, List<Map<String, Object>> dataList) {
|
||||||
List<ProductStockSubtractDTO> list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class);
|
List<ProductStockSubtractDTO> list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class);
|
||||||
if (CollUtil.isEmpty(list)) {
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
|
@ -131,7 +129,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true, beforeInvocation = true)
|
//@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true, beforeInvocation = true)
|
||||||
public void orderCancelRecoverStock(Long shopId, Long orderId, List<Map<String, Object>> dataList) {
|
public void orderCancelRecoverStock(Long shopId, Long orderId, List<Map<String, Object>> dataList) {
|
||||||
List<ProductStockSubtractDTO> list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class);
|
List<ProductStockSubtractDTO> list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class);
|
||||||
if (CollUtil.isEmpty(list)) {
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
|
@ -203,6 +201,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void orderRefundReturnStock(Long shopId, Long orderId, List<Map<String, Object>> dataList) {
|
public void orderRefundReturnStock(Long shopId, Long orderId, List<Map<String, Object>> dataList) {
|
||||||
List<ProductStockSubtractDTO> list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class);
|
List<ProductStockSubtractDTO> list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class);
|
||||||
if (CollUtil.isEmpty(list)) {
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
@ -43,7 +44,9 @@ import java.time.LocalDate;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.time.format.TextStyle;
|
import java.time.format.TextStyle;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static com.czg.constant.CacheConstant.ADMIN_CLIENT_PRODUCT_LIST;
|
||||||
import static com.czg.product.entity.table.ProductTableDef.PRODUCT;
|
import static com.czg.product.entity.table.ProductTableDef.PRODUCT;
|
||||||
import static com.czg.product.entity.table.ShopProdCategoryTableDef.SHOP_PROD_CATEGORY;
|
import static com.czg.product.entity.table.ShopProdCategoryTableDef.SHOP_PROD_CATEGORY;
|
||||||
import static com.czg.product.entity.table.ShopProdSpecTableDef.SHOP_PROD_SPEC;
|
import static com.czg.product.entity.table.ShopProdSpecTableDef.SHOP_PROD_SPEC;
|
||||||
|
|
@ -155,6 +158,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Cacheable(value = ADMIN_CLIENT_PRODUCT_LIST, key = "#param.shopId", unless = "#result.isEmpty()")
|
||||||
public List<ProductDTO> getProductList(ProductDTO param) {
|
public List<ProductDTO> getProductList(ProductDTO param) {
|
||||||
QueryWrapper queryWrapper = buildFullQueryWrapper(param);
|
QueryWrapper queryWrapper = buildFullQueryWrapper(param);
|
||||||
//queryWrapper.eq(Product::getIsSale, YesNoEnum.YES.value());
|
//queryWrapper.eq(Product::getIsSale, YesNoEnum.YES.value());
|
||||||
|
|
@ -203,7 +207,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
||||||
param.setId(id);
|
param.setId(id);
|
||||||
QueryWrapper queryWrapper = buildFullQueryWrapper(param);
|
QueryWrapper queryWrapper = buildFullQueryWrapper(param);
|
||||||
ProductDTO dto = super.getOneAs(queryWrapper, ProductDTO.class);
|
ProductDTO dto = super.getOneAs(queryWrapper, ProductDTO.class);
|
||||||
if(dto == null) {
|
if (dto == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<ProdSkuDTO> skuList = prodSkuMapper.selectListByQueryAs(query().eq(ProdSku::getProductId, id).eq(ProdSku::getIsDel, DeleteEnum.NORMAL.value()), ProdSkuDTO.class);
|
List<ProdSkuDTO> skuList = prodSkuMapper.selectListByQueryAs(query().eq(ProdSku::getProductId, id).eq(ProdSku::getIsDel, DeleteEnum.NORMAL.value()), ProdSkuDTO.class);
|
||||||
|
|
@ -215,10 +219,10 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#dto.shopId", allEntries = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#dto.shopId", allEntries = true)
|
||||||
public void addProduct(ProductDTO dto) {
|
public void addProduct(ProductDTO dto) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
boolean exists = super.exists(query().eq(Product::getName, dto.getName()).eq(Product::getShopId, shopId).eq(Product::getIsDel,DeleteEnum.NORMAL.value()));
|
boolean exists = super.exists(query().eq(Product::getName, dto.getName()).eq(Product::getShopId, shopId).eq(Product::getIsDel, DeleteEnum.NORMAL.value()));
|
||||||
if (exists) {
|
if (exists) {
|
||||||
throw new CzgException("名称已存在");
|
throw new CzgException("名称已存在");
|
||||||
}
|
}
|
||||||
|
|
@ -274,11 +278,11 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#dto.shopId", allEntries = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#dto.shopId", allEntries = true)
|
||||||
public void updateProduct(ProductDTO dto) {
|
public void updateProduct(ProductDTO dto) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
dto.setShopId(shopId);
|
dto.setShopId(shopId);
|
||||||
boolean exists = super.exists(query().eq(Product::getName, dto.getName()).eq(Product::getShopId, shopId).eq(Product::getIsDel,DeleteEnum.NORMAL.value()).ne(Product::getId, dto.getId()));
|
boolean exists = super.exists(query().eq(Product::getName, dto.getName()).eq(Product::getShopId, shopId).eq(Product::getIsDel, DeleteEnum.NORMAL.value()).ne(Product::getId, dto.getId()));
|
||||||
if (exists) {
|
if (exists) {
|
||||||
throw new CzgException("名称已存在");
|
throw new CzgException("名称已存在");
|
||||||
}
|
}
|
||||||
|
|
@ -412,7 +416,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true)
|
||||||
public void deleteProduct(Long shopId, Long id) {
|
public void deleteProduct(Long shopId, Long id) {
|
||||||
UpdateChain.of(Product.class)
|
UpdateChain.of(Product.class)
|
||||||
.set(Product::getIsDel, DeleteEnum.DELETED.value())
|
.set(Product::getIsDel, DeleteEnum.DELETED.value())
|
||||||
|
|
@ -423,7 +427,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#param.shopId", allEntries = true, beforeInvocation = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#param.shopId", allEntries = true, beforeInvocation = true)
|
||||||
public void onOffProduct(ProductIsSaleParam param) {
|
public void onOffProduct(ProductIsSaleParam param) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
String type = param.getType();
|
String type = param.getType();
|
||||||
|
|
@ -476,7 +480,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#param.shopId", allEntries = true, beforeInvocation = true)
|
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#param.shopId", allEntries = true, beforeInvocation = true)
|
||||||
public void markProductIsSoldOut(ProductIsSoldOutParam param) {
|
public void markProductIsSoldOut(ProductIsSoldOutParam param) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
String type = param.getType();
|
String type = param.getType();
|
||||||
|
|
@ -618,11 +622,25 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
param.setShopId(shopId);
|
param.setShopId(shopId);
|
||||||
PageHelper.startPage(PageUtil.buildPageHelp());
|
PageHelper.startPage(PageUtil.buildPageHelp());
|
||||||
if(InOutItemEnum.ORDER_IN.value().equals(param.getInOutItem())){
|
if (InOutItemEnum.ORDER_IN.value().equals(param.getInOutItem())) {
|
||||||
param.setInOutType(InOutTypeEnum.OUT.value());
|
param.setInOutType(InOutTypeEnum.OUT.value());
|
||||||
param.setInOutItem(InOutItemEnum.ORDER_OUT.value());
|
param.setInOutItem(InOutItemEnum.ORDER_OUT.value());
|
||||||
param.setIsGreaterZero(YesNoEnum.YES.value());
|
param.setIsGreaterZero(YesNoEnum.YES.value());
|
||||||
}
|
}
|
||||||
return PageUtil.convert(new PageInfo<>(productStockFlowMapper.getProductStockFlowList(param)));
|
return PageUtil.convert(new PageInfo<>(productStockFlowMapper.getProductStockFlowList(param)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refreshProductStock(ProductDTO param, List<ProductDTO> records) {
|
||||||
|
QueryWrapper queryWrapper = buildQueryWrapper(param);
|
||||||
|
queryWrapper.select(PRODUCT.ID, PRODUCT.STOCK_NUMBER);
|
||||||
|
List<Product> list = super.list(queryWrapper);
|
||||||
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<Long, Integer> stock = list.stream().collect(Collectors.toMap(Product::getId, Product::getStockNumber));
|
||||||
|
records.parallelStream().forEach(record -> {
|
||||||
|
record.setStockNumber(stock.getOrDefault(record.getId(), 0));
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.czg.service.product.service.impl;
|
package com.czg.service.product.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
@ -145,6 +146,36 @@ public class UProductServiceImpl extends ServiceImpl<ProductMapper, Product> imp
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Long, Integer> findShopProductStock(Long shopId) {
|
||||||
|
List<Product> list = productMapper.selectListByQuery(query().select(Product::getId, Product::getStockNumber).eq(Product::getShopId, shopId));
|
||||||
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return list.stream().collect(Collectors.toMap(Product::getId, Product::getStockNumber));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refreshProductStock(Long shopId, List<ShopProductVo> productList) {
|
||||||
|
Map<Long, Integer> stock = findShopProductStock(shopId);
|
||||||
|
if (MapUtil.isEmpty(stock)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
productList.parallelStream().forEach(record -> {
|
||||||
|
record.setStockNumber(stock.getOrDefault(record.getId(), 0));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refreshProductStock(Map<Long, Integer> productStock, List<ShopProductVo> productList) {
|
||||||
|
if (MapUtil.isEmpty(productStock)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
productList.parallelStream().forEach(record -> {
|
||||||
|
record.setStockNumber(productStock.getOrDefault(record.getId(), 0));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算是否在可售时间内
|
* 计算是否在可售时间内
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue