1.属性分组里的查询全部功能支持模糊查询
AttrGroupServiceImpl内代码如下
@Override
public PageUtils queryPage(Map<String, Object> params, Long catelogId) {
QueryWrapper<AttrGroupEntity> queryWrapper = new QueryWrapper<AttrGroupEntity>();
if(catelogId != 0){
queryWrapper.eq("catelog_id", catelogId);
}
String key = (String) params.get("key");
if(StringUtils.isNotEmpty(key)){
queryWrapper.and((obj) ->{
obj.eq("attr_group_id",key).or().like("attr_group_name",key);
});
}
IPage<AttrGroupEntity> page = this.page(
new Query<AttrGroupEntity>().getPage(params),queryWrapper
);
return new PageUtils(page);
}
效果如下
2.新增规格参数
新增成功后发现尽管属性已经新增成功但是属性与属性分组的关联表中并无数据
原因是AttrEntity实体类中并无 attrGroupId字段 ,所以前端传递的属性分组id没有被后端接收到,那么我们新建了如下VO类
package com.atguigu.gulimall.product.vo;
import lombok.Data;
/**
* @author rengang
* @version 1.0
* @date 2020/11/24 15:03
*/
@Data
public class AttrVo {
/**
* 属性id
*/
private Long attrId;
/**
* 属性名
*/
private String attrName;
/**
* 是否需要检索[0-不需要,1-需要]
*/
private Integer searchType;
/**
* 属性图标
*/
private String icon;
/**
* 可选值列表[用逗号分隔]
*/
private String valueSelect;
/**
* 属性类型[0-销售属性,1-基本属性,2-既是销售属性又是基本属性]
*/
private Integer attrType;
/**
* 启用状态[0 - 禁用,1 - 启用]
*/
private Long enable;
/**
* 所属分类
*/
private Long catelogId;
/**
* 快速展示【是否展示在介绍上;0-否 1-是】,在sku中仍然可以调整
*/
private Integer showDesc;
private Long attrGroupId;
}
为什么要新建一个类而不是直接在原实体类中像这样添加该属性呢
因为这样不规范,这里就有点讲究了,关系到Object的划分
我们逆向生成的对象就是持久对象
业务实体的封装
比如服务直接传递的对象
与TO差不多
视图对象,接收与返回
以上所有对象都可称为POJO
3.service层代码修改(controller层改为vo接收对象,这里不贴代码)
@Override
public void saveAttr(AttrVo attrVo) {
AttrEntity attrEntity = new AttrEntity();
BeanUtils.copyProperties(attrVo,attrEntity);
this.save(attrEntity);
AttrAttrgroupRelationEntity attrAttrgroupRelationEntity = new AttrAttrgroupRelationEntity();
attrAttrgroupRelationEntity.setAttrGroupId(attrVo.getAttrGroupId());
attrAttrgroupRelationEntity.setAttrId(attrEntity.getAttrId());
attrAttrgroupRelationService.save(attrAttrgroupRelationEntity);
}