商品管理-SPU检索-SKU检索

一、商品管理-SPU检索

1.1 需求描述

1.1.1 选择商品维护 -> spu管理,我们可以根据分类,品牌,状态以及检索关键字进行查询spu信息。点击查询前端会发送这些字段信息并且这些查询字段是并且的关系。界面如下图所示。
在这里插入图片描述

1.2 代码实现

1.2.1 SpuInfoController 层代码

/**
 * spu查询列表
 * params参数会带上catelogId,brandId,status,key
 * @param params
 * @return
 */
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params){
    PageUtils page = spuInfoService.queryPageByCondition(params);

    return R.ok().put("page", page);
}

1.2.2 SpuInfoService 层代码

public interface SpuInfoService extends IService<SpuInfoEntity> {

    PageUtils queryPage(Map<String, Object> params);

    void saveSpuInfo(SpuSaveVo vo);

    void saveBaseSpuInfo(SpuInfoEntity infoEntity);

    PageUtils queryPageByCondition(Map<String, Object> params);

}

1.2.3 SpuInfoServiceImpl 层代码

@Override
public PageUtils queryPageByCondition(Map<String, Object> params) {
    QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();
    String key = (String) params.get("key");
    if (!StringUtils.isEmpty(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 (!StringUtils.isEmpty(status)){
        wrapper.eq("publish_status",status);
    }
    String brandId = (String) params.get("brandId");
    if (!StringUtils.isEmpty(brandId)&&!"0".equalsIgnoreCase(brandId)){
        wrapper.eq("brand_id",brandId);
    }
    String catelogId = (String) params.get("catelogId");
    if (!StringUtils.isEmpty(catelogId)&&!"0".equalsIgnoreCase(catelogId)){
        wrapper.eq("catalog_id",catelogId);
    }
    // status: 0  key: 华为  brandId: 4  catelogId: 225
    IPage<SpuInfoEntity> page = this.page(
            new Query<SpuInfoEntity>().getPage(params),
            wrapper
    );
    return new PageUtils(page);
}

创建日期和修改日期按指定的日期格式展示

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss

二、商品管理-SKU检索

2.1 需求描述

2.1.1 选择商品维护 -> 商品管理,我们可以根据分类,品牌,价格区间以及检索关键字进行查询sku信息。点击查询前端会发送这些字段信息并且这些查询字段是并且的关系。界面如下图所示。
在这里插入图片描述

2.2 代码实现

@Override
public PageUtils queryPageByCondition(Map<String, Object> params) {
    /**
    * key:
    * catelogId: 0
    * brandId: 0
    * min: 0
    * max: 0
    */
    QueryWrapper<SkuInfoEntity> queryWrapper = new QueryWrapper<>();
    String key = (String) params.get("key");
    if (!StringUtils.isEmpty(key)){
        queryWrapper.and((wrapper)->{
            queryWrapper.eq("sku_id",key).or().like("sku_name",key);
        });
    }

    String catelogId = (String) params.get("catelogId");
    if (!StringUtils.isEmpty(catelogId)&&!"0".equalsIgnoreCase(catelogId)){
        queryWrapper.eq("catalog_id",catelogId);
    }

    String brandId = (String) params.get("brandId");
    if (!StringUtils.isEmpty(brandId)&&!"0".equalsIgnoreCase(brandId)){
        queryWrapper.eq("brand_id",brandId);
    }

    String min = (String) params.get("min");
    if (!StringUtils.isEmpty(min)){
        queryWrapper.ge("price",min);
    }

    String max = (String) params.get("max");
    if (!StringUtils.isEmpty(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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
购物商城的Spu-Sku数据库设计主要是为了管理商品的库存和销售信息。Spu(Standard Product Unit)是商品的标准产品单位,通常指的是一组具有相同特征但可能有不同规格的商品,例如同一款衣服的不同颜色或尺码。Sku(Stock Keeping Unit)是商品的库存管理单位,是对Spu的具体细分,用于区分不同规格或属性的商品。 在数据库设计中,可以建立两个主要的表:Spu表和Sku表。Spu表用于存储商品的基本信息,包括商品的名称、描述、品牌、分类等。此外,可以为Spu表添加一些扩展字段,例如商品的图片、销售状态等。 Sku表用于存储商品的具体规格和库存信息,其中包括Spu的外键关联、商品的属性、规格、价格和库存数量等。通过外键关联,可以将Sku与其对应的Spu关联起来,实现SpuSku的多对一关系。同时,可以在Sku表中添加一些扩展字段,例如商品的条形码、上架时间等。 为了提高查询效率,可以在Sku表中添加索引,例如根据商品的价格、库存数量、销售状态等字段进行索引,以快速获取满足条件的商品信息。 此外,为了提高系统的可维护性和可扩展性,可以添加一些辅助表,例如属性表和属性值表,用于管理商品的属性信息。属性表用于存储商品的属性名称,属性值表用于存储属性的具体取值范围。 总之,购物商城的Spu-Sku数据库设计需要考虑SpuSku之间的关联关系,以及商品的基本信息和规格信息的存储和管理。通过合理的设计和优化索引,可以提高系统的查询性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值