购物车后台

master
baize 2024-04-08 19:53:30 +08:00
parent 51049930ec
commit 9de78c669b
22 changed files with 171 additions and 178 deletions

View File

@ -5,6 +5,7 @@ import com.muyu.product.cache.datasource.ProjectInfoData;
import com.muyu.product.domain.ProjectInfo;
import com.muyu.product.remote.RemoteProjectInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**

View File

@ -5,6 +5,7 @@ import com.muyu.product.cache.datasource.ProjectSkuData;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.remote.RemoteProjectSkuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.HashMap;

View File

@ -11,24 +11,23 @@ import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* ProjectSkuStockDataImpl
*
* @author DeKangLiu
* on 2024/4/8
* @author DongZl
* @description: sku
* @Date 2024-4-2 10:53
*/
@Service
public class ProjectSkuStockDataRemoteImpl implements ProjectSkuStockData{
public class ProjectSkuStockDataRemoteImpl implements ProjectSkuStockData {
@Autowired
private RemoteProjectSkuService remoteProjectSkuService;
@Override
public Long getData(SkuStockKey key) {
Result<ProjectSkuInfo> result =
remoteProjectSkuService.getInfoByProjectIdAndSku(key.getProjectId(), key.getSku());
@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)){
if (!Objects.isNull(projectSkuInfo)){
return projectSkuInfo.getStock();
}
}

View File

@ -9,6 +9,7 @@ import com.muyu.product.domain.RuleInfo;
import com.muyu.product.remote.RemoteRuleAttrService;
import com.muyu.product.remote.RemoteRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;

View File

@ -9,10 +9,9 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* RemoteProjectInfoService
*
* @author DeKangLiu
* on 2024/4/8
* @author DongZl
* @description:
* @Date 2024-4-7 10:58
*/
@FeignClient(
contextId = "remoteProjectInfoService",
@ -21,10 +20,10 @@ import org.springframework.web.bind.annotation.PathVariable;
path = "/info"
)
public interface RemoteProjectInfoService {
/**
*
*/
@GetMapping(value = "/{id}")
public Result<ProjectInfo> getInfo(@PathVariable("id") Long id);
public Result<ProjectInfo> getInfo(@PathVariable("id") Long id) ;
}

View File

@ -32,7 +32,11 @@ public interface RemoteProjectSkuService {
@GetMapping("/info/{projectId}/{projectSku}")
public Result<ProjectSkuInfo> getInfoByProjectIdAndSku(@PathVariable("projectId") Long projectId,
@PathVariable("projectSku") String projectSku);
/**
* IDSKUSKU
* @param projectId ID
* @return SKU
*/
@GetMapping("/list/{projectId}")
public Result<List<ProjectSkuInfo>> listByProjectId(@PathVariable("projectId") Long projectId);
}

View File

@ -4,7 +4,6 @@ import com.muyu.common.core.constant.ServiceNameConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.product.domain.RuleAttrInfo;
import com.muyu.product.remote.factory.RemoteRuleAttrFactory;
import com.muyu.product.remote.factory.RemoteRuleFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@ -12,10 +11,9 @@ import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
/**
* RemoteRuleAttrService
*
* @author DeKangLiu
* on 2024/4/8
* @author DongZl
* @description:
* @Date 2024-4-7 10:58
*/
@FeignClient(
contextId = "remoteRuleAttrService",
@ -24,6 +22,9 @@ import java.util.List;
path = "/ruleAttr"
)
public interface RemoteRuleAttrService {
/**
*
*/
@GetMapping(value = "/list/ruleId/{ruleId}")
public Result<List<RuleAttrInfo>> getInfoByRuleId(@PathVariable("ruleId") Long id);
}

View File

@ -3,17 +3,15 @@ package com.muyu.product.remote;
import com.muyu.common.core.constant.ServiceNameConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.product.domain.RuleInfo;
import com.muyu.product.remote.factory.RemoteRuleAttrFactory;
import com.muyu.product.remote.factory.RemoteRuleFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* RemoteRuleService
*
* @author DeKangLiu
* on 2024/4/8
* @author DongZl
* @description:
* @Date 2024-4-7 10:58
*/
@FeignClient(
contextId = "remoteRuleService",
@ -22,8 +20,9 @@ import org.springframework.web.bind.annotation.PathVariable;
path = "/rule"
)
public interface RemoteRuleService {
@GetMapping("/{id}")
/**
*
*/
@GetMapping(value = "/{id}")
public Result<RuleInfo> getInfo(@PathVariable("id") Long id);
}

View File

@ -6,18 +6,22 @@ import com.muyu.product.remote.RemoteProjectInfoService;
import org.springframework.cloud.openfeign.FallbackFactory;
/**
* RemoteProjectInfoFactory
*
* @author DeKangLiu
* on 2024/4/8
* @author DongZl
* @description:
* @Date 2024-4-7 10:59
*/
public class RemoteProjectInfoFactory implements FallbackFactory<RemoteProjectInfoService>{
public class RemoteProjectInfoFactory implements FallbackFactory<RemoteProjectInfoService> {
@Override
public RemoteProjectInfoService create(Throwable cause) {
public RemoteProjectInfoService create (Throwable cause) {
return new RemoteProjectInfoService() {
/**
*
*
* @param id
*/
@Override
public Result<ProjectInfo> getInfo(Long id) {
public Result<ProjectInfo> getInfo (Long id) {
return Result.error(cause.getMessage());
}
};

View File

@ -21,8 +21,15 @@ public class RemoteProjectSkuFactory implements FallbackFactory<RemoteProjectSku
return Result.error(cause.getMessage());
}
/**
* IDSKUSKU
*
* @param projectId ID
*
* @return SKU
*/
@Override
public Result<List<ProjectSkuInfo>> listByProjectId(Long projectId) {
public Result<List<ProjectSkuInfo>> listByProjectId (Long projectId) {
return Result.error(cause.getMessage());
}
};

View File

@ -1,10 +1,31 @@
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 DeKangLiu
* on 2024/4/8
* @author DongZl
* @description:
* @Date 2024-4-7 10:59
*/
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());
}
};
}
}

View File

@ -1,10 +1,29 @@
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 DeKangLiu
* on 2024/4/8
* @author DongZl
* @description:
* @Date 2024-4-7 10:59
*/
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());
}
};
}
}

View File

@ -1,4 +1,4 @@
com.muyu.product.remote.factory.RemoteProjectSkuFactory
com.muyu.product.remote.factory.RemoteProjectInfoFactory
com.muyu.product.remote.factory.RemoteRuleAttrFactory
com.muyu.product.remote.factory.RemoteRuleFactory
com.muyu.product.remote.factory.RemoteProjectInfoFactory

View File

@ -4,16 +4,18 @@ import com.muyu.product.cache.datasource.ProjectInfoData;
import com.muyu.product.domain.ProjectInfo;
import com.muyu.product.service.ProjectInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
* ProjectInfoDataImpl
*
* @author LeYang
* on 2024/3/27
* @author DongZl
* @description:
* @Date 2024-3-27 03:37
*/
@Service
public class ProjectInfoDataImpl implements ProjectInfoData {
@Primary
public class ProjectInfoDataImpl implements ProjectInfoData {
@Autowired
private ProjectInfoService projectInfoService;
@ -23,7 +25,7 @@ public class ProjectInfoDataImpl implements ProjectInfoData {
* @return
*/
@Override
public ProjectInfo getData(Long key){
public ProjectInfo getData (Long key) {
return projectInfoService.getById(key);
}
}

View File

@ -5,6 +5,7 @@ import com.muyu.product.cache.datasource.ProjectSkuData;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.service.ProjectSkuInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
@ -12,26 +13,42 @@ import java.util.Map;
import java.util.stream.Collectors;
/**
* ProjectSkuDataImpl
*
* @author DeKangLiu
* on 2024/4/1
* @author DongZl
* @description: SKU
* @Date 2024-4-1 11:38
*/
@Service
public class ProjectSkuDataImpl implements ProjectSkuData{
@Primary
public class ProjectSkuDataImpl implements ProjectSkuData {
@Autowired
private ProjectSkuInfoService projectSkuInfoService;
@Override
public Map<String, ProjectSkuInfo> getData(Long projectId) {
LambdaQueryWrapper<ProjectSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProjectSkuInfo::getProjectId,projectId);
List<ProjectSkuInfo> projectSkuInfoList = projectSkuInfoService.list(queryWrapper);
return projectSkuInfoList.stream().collect(Collectors.toMap(ProjectSkuInfo::getSku,projectSkuInfo -> projectSkuInfo));
/**
* hash
* @param projectId ID
* @return
*/
@Override
public Map<String, ProjectSkuInfo> getData (Long projectId) {
LambdaQueryWrapper<ProjectSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProjectSkuInfo::getProjectId, projectId);
List<ProjectSkuInfo> projectSkuInfoList = projectSkuInfoService.list(queryWrapper);
return projectSkuInfoList.stream()
.collect(Collectors.toMap(ProjectSkuInfo::getSku, projectSkuInfo -> projectSkuInfo));
}
/**
* hashhash
* @param projectId ID
* @param projectSku SKU
* @return hash
*/
@Override
public ProjectSkuInfo getData(Long projectId, String projectSku) {
return null;
public ProjectSkuInfo getData (Long projectId, String projectSku) {
LambdaQueryWrapper<ProjectSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProjectSkuInfo::getProjectId, projectId);
queryWrapper.eq(ProjectSkuInfo::getSku, projectSku);
return projectSkuInfoService.getOne(queryWrapper);
}
}

View File

@ -1,26 +1,27 @@
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.key.SkuStockKey;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.service.ProjectSkuInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
* sku ProjectSkuStockDataImpl
*
* @author DeKangLiu
* on 2024/4/2
* @author DongZl
* @description: sku
* @Date 2024-4-2 10:53
*/
@Service
public class ProjectSkuStockDataImpl implements ProjectSkuStockData{
@Primary
public class ProjectSkuStockDataImpl implements ProjectSkuStockData {
@Autowired
private ProjectSkuInfoService projectSkuInfoService;
@Override
public Long getData(SkuStockKey key) {
public Long getData (SkuStockKey key) {
ProjectSkuInfo projectSkuInfo = projectSkuInfoService.getInfoByProjectIdAndSku(key.getProjectId(), key.getSku());
return projectSkuInfo.getStock();
}

View File

@ -51,6 +51,16 @@ public class ProjectSkuInfoController extends BaseController {
return getDataTable(list);
}
/**
* IDSKU
* @param projectId ID
* @return SKU
*/
@GetMapping("/list/{projectId}")
public Result<List<ProjectSkuInfo>> listByProjectId(@PathVariable("projectId") Long projectId){
return Result.success(projectSkuInfoService.listByProjectId(projectId));
}
/**
* SKU
*/

View File

@ -20,4 +20,6 @@ public interface ProjectSkuInfoService extends IService<ProjectSkuInfo> {
public List<ProjectSkuInfo> list(ProjectSkuInfo projectSkuInfo);
ProjectSkuInfo getInfoByProjectIdAndSku(Long projectId, String projectSku);
List<ProjectSkuInfo> listByProjectId(Long projectId);
}

View File

@ -66,4 +66,12 @@ public class ProjectSkuInfoServiceImpl extends ServiceImpl<ProjectSkuInfoMapper,
queryWrapper.eq(ProjectSkuInfo::getSku,projectSku);
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);
}
}

View File

@ -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();
}
}

View File

@ -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<>();
}
/**
* hashhash
* @param projectId ID
* @param projectSku SKU
* @return hash
*/
@Override
public ProjectSkuInfo getData (Long projectId, String projectSku) {
return new ProjectSkuInfo();
}
}

View File

@ -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;
}
}