9.商品服务-平台属性

1.规格参数新增与vo

在查询全部的时候如果带了key值,我们也应该把key带上模糊查询

9.商品服务-平台属性

 

 

 修改queryPage方法

9.商品服务-平台属性

//分页查询,需要匹配key的模糊查询
    @Override
    public PageUtils queryPage(Map<String, Object> params, Long catlogId) {
        String key= (String) params.get("key");
        QueryWrapper<AttrGroupEntity> wrapper = new QueryWrapper<AttrGroupEntity>();
        if(!StringUtils.isEmpty(key)){
            wrapper.and((obj)->{
                obj.eq("attr_group_id",key).or().like("attr_group_name",key);
            });
        }
        if(catlogId==0){
            IPage<AttrGroupEntity> page =
                    this.page(new Query<AttrGroupEntity>().getPage(params), wrapper);
            return new PageUtils(page);
        }else{
            wrapper.eq("catelog_id",catlogId);//有id的时候才判断是否相等
            IPage<AttrGroupEntity> page =
                    this.page(new Query<AttrGroupEntity>().getPage(params), wrapper);
            return new PageUtils(page);
        }
    }

2.vo值对象:用于业务层之间的数据传递,用new关键字创建,由gc回收

在这里其实也可以叫view Object:视图对象,之前我们在实体类上添加了很多注解:例如JsonInclude,TableField这样的操作是不规范的

vo以后的作用就是:1.接收页面传递来的数据,封装对象 2.将业务处理完成的对象,封装成页面需要使用的工具

不需要任何与数据库相关的注解

Request URL: http://localhost:88/api/product/attr/save,现在的情况是,它在保存的时候,只是保存了attr,并没有保存attrgroup,为了解决这个问题,我们新建了一个vo/AttrVo.java

9.商品服务-平台属性

@Data
public class AttrVo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 属性id
     */
    private Long attrId;
    /**
     * 属性名
     */
    private String attrName;
    /**
     * 是否需要检索[0-不需要,1-需要]
     */
    private Integer searchType;
    /**
     * 属性图标
     */
    private String icon;
    /**
     * 可选值列表[用逗号分隔]
     */
    private String valueSelect;
    /**
     * 属性类型[0-销售属性,1-基本属性
     */
    private Integer attrType;
    /**
     * 启用状态[0 - 禁用,1 - 启用]
     */
    private Long enable;
    /**
     * 所属分类
     */
    private Long catelogId;
    /**
     * 快速展示【是否展示在介绍上;0-否 1-是】,在sku中仍然可以调整
     */
    private Integer showDesc;
    
    //分组的id
    private Long attrGroupId;
    
}

3.修改attrController的save方法

改为使用Vo对象

 @RequestMapping("/save")
    //@RequiresPermissions("product:attr:save")
    public R save(@RequestBody AttrVo attr){
        attrService.saveAttr(attr);

        return R.ok();
    }

实现的方法

    @Override
    @Transactional//事务原子性
    public void saveAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();//这是一个po持久对象用于保存数据库信息
        BeanUtils.copyProperties(attr,attrEntity);//使用BeanUtils拷贝属性,两者属性名必须一一对应
        this.save(attrEntity);//保存基本数据
        //保存关联关系
        AttrAttrgroupRelationEntity entity = new AttrAttrgroupRelationEntity();
        entity.setAttrGroupId(attr.getAttrGroupId());
        entity.setAttrId(attrEntity.getAttrId());
        relationService.save(entity);//最好是注入service
    }

这样在保存规格参数的时候就可以关联表一起保存了

4.规格参数列表

 

9.商品服务-平台属性

上一篇:react antd使用


下一篇:模拟聊天窗口