购物车后台

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.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;
/** /**

View File

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

View File

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

View File

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

View File

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

View File

@ -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);
/**
* IDSKUSKU
* @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);
} }

View File

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

View File

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

View File

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

View File

@ -21,6 +21,13 @@ public class RemoteProjectSkuFactory implements FallbackFactory<RemoteProjectSku
return Result.error(cause.getMessage()); return Result.error(cause.getMessage());
} }
/**
* IDSKUSKU
*
* @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());

View File

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

View File

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

View File

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

View File

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

View File

@ -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));
} }
/**
* hashhash
* @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);
} }
} }

View File

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

View File

@ -51,6 +51,16 @@ public class ProjectSkuInfoController extends BaseController {
return getDataTable(list); 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 * SKU
*/ */

View File

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

View File

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

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