购物车后台
parent
51049930ec
commit
9de78c669b
|
@ -5,6 +5,7 @@ import com.muyu.product.cache.datasource.ProjectInfoData;
|
||||||
import com.muyu.product.domain.ProjectInfo;
|
import com.muyu.product.domain.ProjectInfo;
|
||||||
import com.muyu.product.remote.RemoteProjectInfoService;
|
import com.muyu.product.remote.RemoteProjectInfoService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.muyu.product.cache.datasource.ProjectSkuData;
|
||||||
import com.muyu.product.domain.ProjectSkuInfo;
|
import com.muyu.product.domain.ProjectSkuInfo;
|
||||||
import com.muyu.product.remote.RemoteProjectSkuService;
|
import com.muyu.product.remote.RemoteProjectSkuService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
|
@ -11,24 +11,23 @@ import org.springframework.stereotype.Service;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ProjectSkuStockDataImpl
|
* @author DongZl
|
||||||
*
|
* @description: sku库存实现类
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-2 上午 10:53
|
||||||
* on 2024/4/8
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class ProjectSkuStockDataRemoteImpl implements ProjectSkuStockData {
|
public class ProjectSkuStockDataRemoteImpl implements ProjectSkuStockData {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RemoteProjectSkuService remoteProjectSkuService;
|
private RemoteProjectSkuService remoteProjectSkuService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long getData (SkuStockKey key) {
|
public Long getData (SkuStockKey key) {
|
||||||
Result<ProjectSkuInfo> result =
|
Result<ProjectSkuInfo> result
|
||||||
remoteProjectSkuService.getInfoByProjectIdAndSku(key.getProjectId(), key.getSku());
|
= remoteProjectSkuService.getInfoByProjectIdAndSku(key.getProjectId(), key.getSku());
|
||||||
|
|
||||||
if (Result.isSuccess(result)){
|
if (Result.isSuccess(result)){
|
||||||
ProjectSkuInfo projectSkuInfo = result.getData();
|
ProjectSkuInfo projectSkuInfo = result.getData();
|
||||||
if (Objects.isNull(projectSkuInfo)){
|
if (!Objects.isNull(projectSkuInfo)){
|
||||||
return projectSkuInfo.getStock();
|
return projectSkuInfo.getStock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import com.muyu.product.domain.RuleInfo;
|
||||||
import com.muyu.product.remote.RemoteRuleAttrService;
|
import com.muyu.product.remote.RemoteRuleAttrService;
|
||||||
import com.muyu.product.remote.RemoteRuleService;
|
import com.muyu.product.remote.RemoteRuleService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
|
@ -9,10 +9,9 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RemoteProjectInfoService
|
* @author DongZl
|
||||||
*
|
* @description: 规格远程调用业务层
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-7 上午 10:58
|
||||||
* on 2024/4/8
|
|
||||||
*/
|
*/
|
||||||
@FeignClient(
|
@FeignClient(
|
||||||
contextId = "remoteProjectInfoService",
|
contextId = "remoteProjectInfoService",
|
||||||
|
@ -21,10 +20,10 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||||
path = "/info"
|
path = "/info"
|
||||||
)
|
)
|
||||||
public interface RemoteProjectInfoService {
|
public interface RemoteProjectInfoService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取商品信息详细信息
|
* 获取商品信息详细信息
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/{id}")
|
@GetMapping(value = "/{id}")
|
||||||
public Result<ProjectInfo> getInfo(@PathVariable("id") Long id) ;
|
public Result<ProjectInfo> getInfo(@PathVariable("id") Long id) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,11 @@ public interface RemoteProjectSkuService {
|
||||||
@GetMapping("/info/{projectId}/{projectSku}")
|
@GetMapping("/info/{projectId}/{projectSku}")
|
||||||
public Result<ProjectSkuInfo> getInfoByProjectIdAndSku(@PathVariable("projectId") Long projectId,
|
public Result<ProjectSkuInfo> getInfoByProjectIdAndSku(@PathVariable("projectId") Long projectId,
|
||||||
@PathVariable("projectSku") String projectSku);
|
@PathVariable("projectSku") String projectSku);
|
||||||
|
/**
|
||||||
|
* 通过商品ID和SKU获取SKU信息
|
||||||
|
* @param projectId 商品ID
|
||||||
|
* @return 商品SKU信息
|
||||||
|
*/
|
||||||
@GetMapping("/list/{projectId}")
|
@GetMapping("/list/{projectId}")
|
||||||
public Result<List<ProjectSkuInfo>> listByProjectId(@PathVariable("projectId") Long projectId);
|
public Result<List<ProjectSkuInfo>> listByProjectId(@PathVariable("projectId") Long projectId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import com.muyu.common.core.constant.ServiceNameConstants;
|
||||||
import com.muyu.common.core.domain.Result;
|
import com.muyu.common.core.domain.Result;
|
||||||
import com.muyu.product.domain.RuleAttrInfo;
|
import com.muyu.product.domain.RuleAttrInfo;
|
||||||
import com.muyu.product.remote.factory.RemoteRuleAttrFactory;
|
import com.muyu.product.remote.factory.RemoteRuleAttrFactory;
|
||||||
import com.muyu.product.remote.factory.RemoteRuleFactory;
|
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
@ -12,10 +11,9 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RemoteRuleAttrService
|
* @author DongZl
|
||||||
*
|
* @description: 规格信息远程调用业务层
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-7 上午 10:58
|
||||||
* on 2024/4/8
|
|
||||||
*/
|
*/
|
||||||
@FeignClient(
|
@FeignClient(
|
||||||
contextId = "remoteRuleAttrService",
|
contextId = "remoteRuleAttrService",
|
||||||
|
@ -24,6 +22,9 @@ import java.util.List;
|
||||||
path = "/ruleAttr"
|
path = "/ruleAttr"
|
||||||
)
|
)
|
||||||
public interface RemoteRuleAttrService {
|
public interface RemoteRuleAttrService {
|
||||||
|
/**
|
||||||
|
* 获取规格详情详细信息
|
||||||
|
*/
|
||||||
@GetMapping(value = "/list/ruleId/{ruleId}")
|
@GetMapping(value = "/list/ruleId/{ruleId}")
|
||||||
public Result<List<RuleAttrInfo>> getInfoByRuleId(@PathVariable("ruleId") Long id);
|
public Result<List<RuleAttrInfo>> getInfoByRuleId(@PathVariable("ruleId") Long id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,17 +3,15 @@ package com.muyu.product.remote;
|
||||||
import com.muyu.common.core.constant.ServiceNameConstants;
|
import com.muyu.common.core.constant.ServiceNameConstants;
|
||||||
import com.muyu.common.core.domain.Result;
|
import com.muyu.common.core.domain.Result;
|
||||||
import com.muyu.product.domain.RuleInfo;
|
import com.muyu.product.domain.RuleInfo;
|
||||||
import com.muyu.product.remote.factory.RemoteRuleAttrFactory;
|
|
||||||
import com.muyu.product.remote.factory.RemoteRuleFactory;
|
import com.muyu.product.remote.factory.RemoteRuleFactory;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RemoteRuleService
|
* @author DongZl
|
||||||
*
|
* @description: 规格远程调用业务层
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-7 上午 10:58
|
||||||
* on 2024/4/8
|
|
||||||
*/
|
*/
|
||||||
@FeignClient(
|
@FeignClient(
|
||||||
contextId = "remoteRuleService",
|
contextId = "remoteRuleService",
|
||||||
|
@ -22,8 +20,9 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||||
path = "/rule"
|
path = "/rule"
|
||||||
)
|
)
|
||||||
public interface RemoteRuleService {
|
public interface RemoteRuleService {
|
||||||
|
/**
|
||||||
@GetMapping("/{id}")
|
* 获取商品规格详细信息
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/{id}")
|
||||||
public Result<RuleInfo> getInfo(@PathVariable("id") Long id);
|
public Result<RuleInfo> getInfo(@PathVariable("id") Long id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,16 +6,20 @@ import com.muyu.product.remote.RemoteProjectInfoService;
|
||||||
import org.springframework.cloud.openfeign.FallbackFactory;
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RemoteProjectInfoFactory
|
* @author DongZl
|
||||||
*
|
* @description: 规格远程调熔断器
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-7 上午 10:59
|
||||||
* on 2024/4/8
|
|
||||||
*/
|
*/
|
||||||
public class RemoteProjectInfoFactory implements FallbackFactory<RemoteProjectInfoService> {
|
public class RemoteProjectInfoFactory implements FallbackFactory<RemoteProjectInfoService> {
|
||||||
@Override
|
@Override
|
||||||
public RemoteProjectInfoService create (Throwable cause) {
|
public RemoteProjectInfoService create (Throwable cause) {
|
||||||
return new RemoteProjectInfoService() {
|
return new RemoteProjectInfoService() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取商品规格详细信息
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Result<ProjectInfo> getInfo (Long id) {
|
public Result<ProjectInfo> getInfo (Long id) {
|
||||||
return Result.error(cause.getMessage());
|
return Result.error(cause.getMessage());
|
||||||
|
|
|
@ -21,6 +21,13 @@ public class RemoteProjectSkuFactory implements FallbackFactory<RemoteProjectSku
|
||||||
return Result.error(cause.getMessage());
|
return Result.error(cause.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过商品ID和SKU获取SKU信息
|
||||||
|
*
|
||||||
|
* @param projectId 商品ID
|
||||||
|
*
|
||||||
|
* @return 商品SKU信息
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Result<List<ProjectSkuInfo>> listByProjectId (Long projectId) {
|
public Result<List<ProjectSkuInfo>> listByProjectId (Long projectId) {
|
||||||
return Result.error(cause.getMessage());
|
return Result.error(cause.getMessage());
|
||||||
|
|
|
@ -1,10 +1,31 @@
|
||||||
package com.muyu.product.remote.factory;
|
package com.muyu.product.remote.factory;
|
||||||
|
|
||||||
|
import com.muyu.common.core.domain.Result;
|
||||||
|
import com.muyu.product.domain.RuleAttrInfo;
|
||||||
|
import com.muyu.product.remote.RemoteRuleAttrService;
|
||||||
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RemoteRuleAttrFactory
|
* @author DongZl
|
||||||
*
|
* @description: 规格详情远程调熔断器
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-7 上午 10:59
|
||||||
* on 2024/4/8
|
|
||||||
*/
|
*/
|
||||||
public class RemoteRuleAttrFactory {
|
public class RemoteRuleAttrFactory implements FallbackFactory<RemoteRuleAttrService> {
|
||||||
|
@Override
|
||||||
|
public RemoteRuleAttrService create (Throwable cause) {
|
||||||
|
return new RemoteRuleAttrService() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取规格详情详细信息
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Result<List<RuleAttrInfo>> getInfoByRuleId (Long id) {
|
||||||
|
return Result.error(cause.getMessage());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,29 @@
|
||||||
package com.muyu.product.remote.factory;
|
package com.muyu.product.remote.factory;
|
||||||
|
|
||||||
|
import com.muyu.common.core.domain.Result;
|
||||||
|
import com.muyu.product.domain.RuleInfo;
|
||||||
|
import com.muyu.product.remote.RemoteRuleService;
|
||||||
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RemoteRuleFactory
|
* @author DongZl
|
||||||
*
|
* @description: 规格远程调熔断器
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-7 上午 10:59
|
||||||
* on 2024/4/8
|
|
||||||
*/
|
*/
|
||||||
public class RemoteRuleFactory {
|
public class RemoteRuleFactory implements FallbackFactory<RemoteRuleService> {
|
||||||
|
@Override
|
||||||
|
public RemoteRuleService create (Throwable cause) {
|
||||||
|
return new RemoteRuleService() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取商品规格详细信息
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Result<RuleInfo> getInfo (Long id) {
|
||||||
|
return Result.error(cause.getMessage());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
com.muyu.product.remote.factory.RemoteProjectSkuFactory
|
com.muyu.product.remote.factory.RemoteProjectSkuFactory
|
||||||
com.muyu.product.remote.factory.RemoteProjectInfoFactory
|
|
||||||
com.muyu.product.remote.factory.RemoteRuleAttrFactory
|
com.muyu.product.remote.factory.RemoteRuleAttrFactory
|
||||||
com.muyu.product.remote.factory.RemoteRuleFactory
|
com.muyu.product.remote.factory.RemoteRuleFactory
|
||||||
|
com.muyu.product.remote.factory.RemoteProjectInfoFactory
|
||||||
|
|
|
@ -4,16 +4,18 @@ import com.muyu.product.cache.datasource.ProjectInfoData;
|
||||||
import com.muyu.product.domain.ProjectInfo;
|
import com.muyu.product.domain.ProjectInfo;
|
||||||
import com.muyu.product.service.ProjectInfoService;
|
import com.muyu.product.service.ProjectInfoService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缓存数据获取 ProjectInfoDataImpl
|
* @author DongZl
|
||||||
*
|
* @description: 缓存数据获取
|
||||||
* @author LeYang
|
* @Date 2024-3-27 下午 03:37
|
||||||
* on 2024/3/27
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Primary
|
||||||
public class ProjectInfoDataImpl implements ProjectInfoData {
|
public class ProjectInfoDataImpl implements ProjectInfoData {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProjectInfoService projectInfoService;
|
private ProjectInfoService projectInfoService;
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.muyu.product.cache.datasource.ProjectSkuData;
|
||||||
import com.muyu.product.domain.ProjectSkuInfo;
|
import com.muyu.product.domain.ProjectSkuInfo;
|
||||||
import com.muyu.product.service.ProjectSkuInfoService;
|
import com.muyu.product.service.ProjectSkuInfoService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -12,26 +13,42 @@ import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ProjectSkuDataImpl
|
* @author DongZl
|
||||||
*
|
* @description: 商品SKU实现类
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-1 上午 11:38
|
||||||
* on 2024/4/1
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Primary
|
||||||
public class ProjectSkuDataImpl implements ProjectSkuData {
|
public class ProjectSkuDataImpl implements ProjectSkuData {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProjectSkuInfoService projectSkuInfoService;
|
private ProjectSkuInfoService projectSkuInfoService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过键获取所有的hash数据
|
||||||
|
* @param projectId 商品ID
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Map<String, ProjectSkuInfo> getData (Long projectId) {
|
public Map<String, ProjectSkuInfo> getData (Long projectId) {
|
||||||
LambdaQueryWrapper<ProjectSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ProjectSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(ProjectSkuInfo::getProjectId, projectId);
|
queryWrapper.eq(ProjectSkuInfo::getProjectId, projectId);
|
||||||
List<ProjectSkuInfo> projectSkuInfoList = projectSkuInfoService.list(queryWrapper);
|
List<ProjectSkuInfo> projectSkuInfoList = projectSkuInfoService.list(queryWrapper);
|
||||||
|
return projectSkuInfoList.stream()
|
||||||
return projectSkuInfoList.stream().collect(Collectors.toMap(ProjectSkuInfo::getSku,projectSkuInfo -> projectSkuInfo));
|
.collect(Collectors.toMap(ProjectSkuInfo::getSku, projectSkuInfo -> projectSkuInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过缓存键和hash键获取hash值
|
||||||
|
* @param projectId 商品ID
|
||||||
|
* @param projectSku 商品SKU
|
||||||
|
* @return hash值
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ProjectSkuInfo getData (Long projectId, String projectSku) {
|
public ProjectSkuInfo getData (Long projectId, String projectSku) {
|
||||||
return null;
|
LambdaQueryWrapper<ProjectSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(ProjectSkuInfo::getProjectId, projectId);
|
||||||
|
queryWrapper.eq(ProjectSkuInfo::getSku, projectSku);
|
||||||
|
return projectSkuInfoService.getOne(queryWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
package com.muyu.product.cache.impl;
|
package com.muyu.product.cache.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.muyu.product.cache.datasource.ProjectSkuStockData;
|
import com.muyu.product.cache.datasource.ProjectSkuStockData;
|
||||||
import com.muyu.product.cache.key.SkuStockKey;
|
import com.muyu.product.cache.key.SkuStockKey;
|
||||||
import com.muyu.product.domain.ProjectSkuInfo;
|
import com.muyu.product.domain.ProjectSkuInfo;
|
||||||
import com.muyu.product.service.ProjectSkuInfoService;
|
import com.muyu.product.service.ProjectSkuInfoService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sku库存实体类 ProjectSkuStockDataImpl
|
* @author DongZl
|
||||||
*
|
* @description: sku库存实现类
|
||||||
* @author DeKangLiu
|
* @Date 2024-4-2 上午 10:53
|
||||||
* on 2024/4/2
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Primary
|
||||||
public class ProjectSkuStockDataImpl implements ProjectSkuStockData {
|
public class ProjectSkuStockDataImpl implements ProjectSkuStockData {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProjectSkuInfoService projectSkuInfoService;
|
private ProjectSkuInfoService projectSkuInfoService;
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,16 @@ public class ProjectSkuInfoController extends BaseController {
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过商品ID获取SKU集合
|
||||||
|
* @param projectId 商品ID
|
||||||
|
* @return 商品SKU集合
|
||||||
|
*/
|
||||||
|
@GetMapping("/list/{projectId}")
|
||||||
|
public Result<List<ProjectSkuInfo>> listByProjectId(@PathVariable("projectId") Long projectId){
|
||||||
|
return Result.success(projectSkuInfoService.listByProjectId(projectId));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出商品SKU列表
|
* 导出商品SKU列表
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -20,4 +20,6 @@ public interface ProjectSkuInfoService extends IService<ProjectSkuInfo> {
|
||||||
public List<ProjectSkuInfo> list(ProjectSkuInfo projectSkuInfo);
|
public List<ProjectSkuInfo> list(ProjectSkuInfo projectSkuInfo);
|
||||||
|
|
||||||
ProjectSkuInfo getInfoByProjectIdAndSku(Long projectId, String projectSku);
|
ProjectSkuInfo getInfoByProjectIdAndSku(Long projectId, String projectSku);
|
||||||
|
|
||||||
|
List<ProjectSkuInfo> listByProjectId(Long projectId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,4 +66,12 @@ public class ProjectSkuInfoServiceImpl extends ServiceImpl<ProjectSkuInfoMapper,
|
||||||
queryWrapper.eq(ProjectSkuInfo::getSku,projectSku);
|
queryWrapper.eq(ProjectSkuInfo::getSku,projectSku);
|
||||||
return this.getOne(queryWrapper);
|
return this.getOne(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ProjectSkuInfo> listByProjectId(Long projectId) {
|
||||||
|
LambdaQueryWrapper<ProjectSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(ProjectSkuInfo::getProjectId,projectId);
|
||||||
|
|
||||||
|
return this.list(queryWrapper);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
package com.muyu.shop.cart.cache.impl;
|
|
||||||
|
|
||||||
import com.muyu.product.cache.datasource.ProjectInfoData;
|
|
||||||
import com.muyu.product.domain.ProjectInfo;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ProjectInfoDataImpl
|
|
||||||
*
|
|
||||||
* @author DeKangLiu
|
|
||||||
* on 2024/4/7
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class ProjectInfoDataImpl implements ProjectInfoData {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 从数据库 获取数据
|
|
||||||
* @param key ID
|
|
||||||
* @return 缓存对象
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public ProjectInfo getData(Long key) {
|
|
||||||
return new ProjectInfo();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
package com.muyu.shop.cart.cache.impl;
|
|
||||||
|
|
||||||
import com.muyu.product.cache.datasource.ProjectInfoData;
|
|
||||||
import com.muyu.product.cache.datasource.ProjectSkuData;
|
|
||||||
import com.muyu.product.domain.ProjectInfo;
|
|
||||||
import com.muyu.product.domain.ProjectSkuInfo;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ProjectSkuDataImpl
|
|
||||||
*
|
|
||||||
* @author DeKangLiu
|
|
||||||
* on 2024/4/7
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class ProjectSkuDataImpl implements ProjectSkuData {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过键获取所有的hash数据
|
|
||||||
* @param projectId 商品ID
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Map<String, ProjectSkuInfo> getData (Long projectId) {
|
|
||||||
return new HashMap<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过缓存键和hash键获取hash值
|
|
||||||
* @param projectId 商品ID
|
|
||||||
* @param projectSku 商品SKU
|
|
||||||
* @return hash值
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public ProjectSkuInfo getData (Long projectId, String projectSku) {
|
|
||||||
return new ProjectSkuInfo();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
package com.muyu.shop.cart.cache.impl;
|
|
||||||
|
|
||||||
import com.muyu.common.core.domain.Result;
|
|
||||||
import com.muyu.product.cache.datasource.ProjectSkuStockData;
|
|
||||||
import com.muyu.product.cache.key.SkuStockKey;
|
|
||||||
import com.muyu.product.domain.ProjectSkuInfo;
|
|
||||||
import com.muyu.product.remote.RemoteProjectSkuService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ProjectSkuStockDataRemoteImpl
|
|
||||||
*
|
|
||||||
* @author DeKangLiu
|
|
||||||
* on 2024/4/7
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class ProjectSkuStockDataRemoteImpl implements ProjectSkuStockData{
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RemoteProjectSkuService remoteProjectSkuService;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Long getData(SkuStockKey key) {
|
|
||||||
Result<ProjectSkuInfo> result
|
|
||||||
= remoteProjectSkuService.getInfoByProjectIdAndSku(key.getProjectId(), key.getSku());
|
|
||||||
if (Result.isSuccess(result)){
|
|
||||||
ProjectSkuInfo projectSkuInfo = result.getData();
|
|
||||||
if (!Objects.isNull(projectSkuInfo)){
|
|
||||||
return projectSkuInfo.getStock();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0L;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue