谷粒商城 spu保存

主要记录一下收获

spu 一类物品
sku 具体什么物品(由销售属性组合定义)
在这里插入图片描述

写保存接口步骤

  1. 对比前端拿到的VO和实际的POJO属性有哪些差异
  2. 将差异属性通过其他方式拿到,其余属性直接BeanUtils.copyProperties
  3. 保存,保存时还有其他关联表,这些应该交给保存serviceImp来处理
    例如spu保存sku,保存sku还要再保存图片、会员等表,这些应该交给skuService,spu只需要保存sku即可

远程调用

TO

TO是两个微服务传输时使用,如果是服务和前端传输则是VO,声明在common中

  • 减少冗余数据的传输,可以挑选需要的属性封装成TO
  • 利于两边数据的传输,发送方声明的类,接收方不能使用,TO解决了这个问题
具体操作
  1. 发送方新建feign接口
  2. 接收方controller声明feign接口对应的方法
  3. 发送方使用feign接口

下面是一个远程调用的例子,sku (product服务) 和 bounds(coupon服务)

  • to

在这里插入图片描述

  • feign
    在这里插入图片描述
  • counpon 服务中的接收方,对数据的处理也交给了service
    在这里插入图片描述
  • 注意点
    双方入口@EnableDiscoveryClient (注册发现)
    调用方入口 @EnableFeignClients (扫描feign接口)
    feign接口 @FeignClient(name = "服务名") (告诉注册中心,调用的服务名)
  • 易错点
    地址前面加/

查操作

条件封装
  • 目前感觉这样写很清楚,参数一般可以强转为String,然后判断这个参数是否需要作为条件
  • POJO 转 VO 可以使用stream中的map()
    @Override 
    public PageUtils queryPageByCondition(Map<String, Object> params) {
        QueryWrapper<SkuInfoEntity> wrapper = new QueryWrapper<>();
        // JudgeParamInMap.ContainAndNotZeroAndNotEmpty 是单独封装作为工具类的
        if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"catelogId")){
            wrapper.and(w->w.eq("catalog_id",params.get("catelogId")));
        }
        if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"brandId")){
            wrapper.and(w->w.eq("brand_id",params.get("brandId")));
        }
        if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"key")){
            wrapper.and(w->w.eq("sku_id",params.get("key")).or().eq("sku_name",params.get("key")));
        }
        if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"min")){
            wrapper.and(w->w.ge("price",params.get("min")));
        }
        if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"max")){
            wrapper.and(w->w.le("price",params.get("max")));
        }
        IPage<SkuInfoEntity> page = this.page(new Query<SkuInfoEntity>().getPage(params),wrapper);
        return new PageUtils(page);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值