电商项目10:商品管理、仓库管理
- 1、商品管理
- 1.1、spu检索
- 1.1.1、后端
- 1.1.2、前端
- 1.2、sku检索
- 1.2.1、后端
- 2、库存管理
- 2.1、启动ware后端微服务
- 2.2、仓库维护查询
- 2.3、查询商品库存
- 2.4、查询采购需求
1、商品管理
1.1、spu检索
1.1.1、后端
spu检索接口文档
SpuInfoController
/**
* 列表
*/
@RequestMapping("/list")
// @RequiresPermissions("product:spuinfo:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = spuInfoService.queryPageCondition(params);
return R.ok().put("page", page);
}
SpuInfoService
PageUtils queryPageCondition(Map<String, Object> params);
SpuInfoServiceImpl
@Override
public PageUtils queryPageCondition(Map<String, Object> params) {
QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();
// 关键字检索
Object key = params.get("key");
// 三级分类id
Object catalogId = params.get("catalogId");
// 品牌id
Object brandId = params.get("brandId");
// 状态 0-新建 1-上架 2-下架
Object status = params.get("status");
if (!StringUtils.isEmpty(key)){
wrapper.and((w) -> {
w.eq("id",key).or().like("spu_name",key);
});
}
if (!StringUtils.isEmpty(catalogId)){
wrapper.eq("catalog_id",catalogId);
}
if (!StringUtils.isEmpty(brandId)){
wrapper.eq("brand_id",brandId);
}
if (!StringUtils.isEmpty(status)){
wrapper.eq("publish_status",status);
}
IPage<SpuInfoEntity> page = this.page(
new Query<SpuInfoEntity>().getPage(params),
wrapper
);
return new PageUtils(page);
}
查询时创建时间不是年月日时分秒类型。可以在全局配置文件中配置:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
后端代码修改:
SpuInfoServiceImpl
if (!StringUtils.isEmpty(catalogId) && !"0".equals(catalogId)){
wrapper.eq("catalog_id",catalogId);
}
if (!StringUtils.isEmpty(brandId) && !"0".equals(brandId)){
wrapper.eq("brand_id",brandId);
}
1.1.2、前端
前端调用时出现第一次进入页面。搜索时输入框条件未置空,且为0.是因为业务规则,传0就查全部。后端需要改代码。
1.2、sku检索
1.2.1、后端
sku检索
SkuInfoController
/**
* 列表
*/
@RequestMapping("/list")
// @RequiresPermissions("product:skuinfo:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = skuInfoService.queryPageByCondition(params);
return R.ok().put("page", page);
}
SkuInfoService
PageUtils queryPageByCondition(Map<String, Object> params);
SkuInfoServiceImpl
@Override
public PageUtils queryPageByCondition(Map<String, Object> params) {
QueryWrapper<SkuInfoEntity> wrapper = new QueryWrapper<>();
Object key = params.get("key");
Object catelogId = params.get("catelogId");
Object brandId = params.get("brandId");
Object min = params.get("min");
Object max = params.get("max");
if (!StringUtils.isEmpty(key)){
wrapper.and((w) -> {
w.eq("sku_id",key).or().like("sku_name",key);
});
}
if (!StringUtils.isEmpty(catelogId) && !"0".equals(catelogId)){
wrapper.eq("catalog_id",catelogId);
}
if (!StringUtils.isEmpty(brandId) && !"0".equals(brandId)){
wrapper.eq("brand_id",brandId);
}
if (!StringUtils.isEmpty(min)){
wrapper.ge("price",min);
}
if (!StringUtils.isEmpty(max)){
BigDecimal bigDecimal = new BigDecimal((String) max);
if (bigDecimal.compareTo(new BigDecimal("0")) > 0){
// 当价格区间的最大值大于0才去拼接
wrapper.le("price",max);
}
}
IPage<SkuInfoEntity> page = this.page(
new Query<SkuInfoEntity>().getPage(params),
wrapper
);
return new PageUtils(page);
}
2、库存管理
2.1、启动ware后端微服务
application.yml
application:
name: gulimall-ware
GulimallWareApplication
@SpringBootApplication
@EnableDiscoveryClient
@EnableTransactionManagement
@MapperScan("com.ljs.gulimall.ware.dao")
public class GulimallWareApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallWareApplication.class, args);
}
}
启动ware服务。登录nacos
代表已经注册成功
gulimall-gateway配置路由规则
application.yml
- id: ware_route
#负载均衡到member服务
uri: lb://gulimall-ware
predicates:
- Path=/api/ware/**
#网关重写
filters:
- RewritePath=/api/(?<segment>.*),/$\{segment}
2.2、仓库维护查询
仓库列表
WareInfoServiceImpl
@Override
public PageUtils queryPage(Map<String, Object> params) {
QueryWrapper<WareInfoEntity> wrapper = new QueryWrapper<>();
Object key = params.get("key");
if (!StringUtils.isEmpty(key)){
wrapper.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),
wrapper
);
return new PageUtils(page);
}
2.3、查询商品库存
查询商品库存
WareSkuServiceImpl
@Override
public PageUtils queryPage(Map<String, Object> params) {
QueryWrapper<WareSkuEntity> wrapper = new QueryWrapper<>();
Object skuId = params.get("skuId");
if (!StringUtils.isEmpty(skuId)){
wrapper.eq("sku_id",skuId);
}
Object wareId = params.get("wareId");
if (!StringUtils.isEmpty(wareId)){
wrapper.eq("ware_id",wareId);
}
IPage<WareSkuEntity> page = this.page(
new Query<WareSkuEntity>().getPage(params),
wrapper
);
return new PageUtils(page);
}
2.4、查询采购需求
查询采购需求
PurchaseDetailServiceImpl
@Override
public PageUtils queryPage(Map<String, Object> params) {
QueryWrapper<PurchaseDetailEntity> wrapper = new QueryWrapper<>();
Object key = params.get("key");
if (!StringUtils.isEmpty(key)){
wrapper.and((w) -> {
w.eq("id",key).or().eq("sku_id",key).or().eq("sku_num",key);
});
}
Object status = params.get("status");
if (!StringUtils.isEmpty(status)){
wrapper.eq("status",status);
}
Object wareId = params.get("wareId");
if (!StringUtils.isEmpty(wareId)){
wrapper.eq("ware_id",wareId);
}
IPage<PurchaseDetailEntity> page = this.page(
new Query<PurchaseDetailEntity>().getPage(params),
wrapper
);
return new PageUtils(page);
}