文章目录
- Spu列表检索接口。
- Sku列表检索接口。
- 仓库列表接口。
- 问题记录
这一篇包含如下内容:
- 92-商品服务-API-新增商品-商品保存其他问题处理
- 93-商品服务-API-商品管理-SPU检索
- 94-商品服务-API-商品管理-SKU检索
- 95-仓储服务-API-仓库管理-整合ware服务&获取仓库列表
- 96-仓储服务-API-仓库管理-查询库存&创建采购需求
1,优化商品保存,图片为空以及优惠信息不合理时,要对数据进行过滤,避免无意义的垃圾数据进入数据库。
2,开发SPU检索和SKU检索接口,这两个接口的关键在于后台使用MybatisPlus的QueryWrapper封装查询条件时的用法。
3,配置仓储服务的配置,指定注册中心,调整仓库模块自动生成的代码,为列表接口添加查询条件,主要是QueryWrapper的使用。
4,真实业务中的商品库存是通过采购环节,商品进入仓库后才有的。所以,先要有采购单。在创建采购单之前,要创建采购需求,通过审批合并后形成采购单。对采购单列表查询的接口,也做一些优化,主要是增加查询条件。
Spu列表检索接口。
@Overridepublic PageUtils queryPageByCondition(Map<String, Object> params) {QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();String key = (String) params.get("key");if(StrUtil.isNotEmpty(key)){wrapper.and((w)->{w.eq("id",key).or().like("spu_name",key);});}// status=1 and (id=1 or spu_name like xxx)String status = (String) params.get("status");if(StrUtil.isNotEmpty(status)){wrapper.eq("publish_status",status);}String brandId = (String) params.get("brandId");if(StrUtil.isNotEmpty(brandId)&&!"0".equalsIgnoreCase(brandId)){wrapper.eq("brand_id",brandId);}String catelogId = (String) params.get("catelogId");if(StrUtil.isNotEmpty(catelogId)&&!"0".equalsIgnoreCase(catelogId)){wrapper.eq("catalog_id",catelogId);}IPage<SpuInfoEntity> page = this.page(new Query<SpuInfoEntity>().getPage(params),wrapper);return new PageUtils(page);}
Sku列表检索接口。
@Overridepublic PageUtils queryPageByCondition(Map<String, Object> params) {QueryWrapper<SkuInfoEntity> queryWrapper = new QueryWrapper<>();String key = (String) params.get("key");if(StrUtil.isNotEmpty(key)){queryWrapper.and((wrapper)->{wrapper.eq("sku_id",key).or().like("sku_name",key);});}String catelogId = (String) params.get("catelogId");if(StrUtil.isNotEmpty(catelogId)&&!"0".equalsIgnoreCase(catelogId)){queryWrapper.eq("catalog_id",catelogId);}String brandId = (String) params.get("brandId");if(StrUtil.isNotEmpty(brandId)&&!"0".equalsIgnoreCase(catelogId)){queryWrapper.eq("brand_id",brandId);}String min = (String) params.get("min");if(StrUtil.isNotEmpty(min)){queryWrapper.ge("price",min);}String max = (String) params.get("max");if(StrUtil.isNotEmpty(max) ){try{BigDecimal bigDecimal = new BigDecimal(max);if(bigDecimal.compareTo(new BigDecimal("0"))==1){queryWrapper.le("price",max);}}catch (Exception e){}}IPage<SkuInfoEntity> page = this.page(new Query<SkuInfoEntity>().getPage(params),queryWrapper);return new PageUtils(page);}
仓库列表接口。
@Overridepublic PageUtils queryPage(Map<String, Object> params) {QueryWrapper<WareInfoEntity> queryWrapper = new QueryWrapper<>();QueryWrapper<WareInfoEntity> wareInfoEntityQueryWrapper = new QueryWrapper<>();String key = (String) params.get("key");if(StrUtil.isNotEmpty(key)){wareInfoEntityQueryWrapper.eq("id",key).or().like("name",key).or().like("address",key).or().like("areacode",key);}IPage<WareInfoEntity> page = this.page(new Query<WareInfoEntity>().getPage(params),queryWrapper);return new PageUtils(page);}采购需求列表查询。```clike
@Overridepublic PageUtils queryPage(Map<String, Object> params) {QueryWrapper<PurchaseDetailEntity> queryWrapper = new QueryWrapper<PurchaseDetailEntity>();String key = (String) params.get("key");if(StrUtil.isNotEmpty(key)){queryWrapper.and(w->{w.eq("purchase_id",key).or().eq("sku_id",key);});}String status = (String) params.get("status");if(StrUtil.isNotEmpty(status)){queryWrapper.eq("status",status);}String wareId = (String) params.get("wareId");if(StrUtil.isNotEmpty(wareId)){queryWrapper.eq("ware_id",wareId);}IPage<PurchaseDetailEntity> page = this.page(new Query<PurchaseDetailEntity>().getPage(params),new QueryWrapper<PurchaseDetailEntity>());return new PageUtils(page);}
问题记录
启动Product服务时,出现错误Consider defining a bean of type 'com.atguigu.gulimall.product.feign.CouponF
。
Consider defining a bean of type 'com.atguigu.gulimall.product.feign.CouponFeignService
原因是启动确实FeignClient注解。
在Spring Cloud中,@EnableFeignClients
用于启用Feign客户端。Feign是一个声明式的HTTP客户端,简化了编写服务客户端的过程。使用Feign可以轻松地定义接口并通过HTTP调用其他微服务。
下面是@EnableFeignClients
注解的一些关键特性:
-
启用Feign客户端:
- 当你在一个Spring Boot应用中添加了
spring-cloud-starter-openfeign
依赖后,可以通过添加@EnableFeignClients
到一个配置类上来启用Feign客户端的支持。
- 当你在一个Spring Boot应用中添加了
-
扫描客户端接口:
- 这个注解会告诉Spring框架去扫描指定的包(或默认扫描该注解所在的类的同级及子级包)寻找使用了
@FeignClient
注解的接口,并创建其实例。
- 这个注解会告诉Spring框架去扫描指定的包(或默认扫描该注解所在的类的同级及子级包)寻找使用了
-
配置选项:
- 你可以通过
@EnableFeignClients
注解中的属性来进一步定制Feign客户端的行为,比如: basePackages
或value
:指定要扫描的包名。defaultPackage
:指定默认的包名。clients
:显式列出需要启用的客户端类型。type
:指定Feign Client的类型,默认为FeignClient.class
。
- 你可以通过
例如,在Spring Boot中这样使用@EnableFeignClients
:
@SpringBootApplication
@EnableFeignClients(basePackages = "com.example.clients")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
Spring Boot应用会扫描com.example.clients
包及其子包中的所有带有@FeignClient
注解的接口。
如果你想要全局配置Feign客户端,可以在配置文件(如application.yml
或application.properties
)中进行设置,或者通过@Bean
方法提供自定义的FeignClientFactory
、Contract
等组件来配置。