电商项目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
@Overridepublic PageUtils queryPageCondition(Map<String, Object> params) {QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();// 关键字检索Object key = params.get("key");// 三级分类idObject catalogId = params.get("catalogId");// 品牌idObject 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
@Overridepublic 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-warepredicates:- Path=/api/ware/**#网关重写filters:- RewritePath=/api/(?<segment>.*),/$\{segment}
2.2、仓库维护查询
仓库列表
WareInfoServiceImpl
@Overridepublic 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
@Overridepublic 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
@Overridepublic 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);}