- 为【平台属性】->【属性分组】页面的 -查询全部- 按钮增加模糊查询的功能
- 【平台属性】->【属性分组】 为每个分组关联属性
要关联属性首先要录入一些属性,先编写【平台属性】->【规格参数】页面
新增规格参数:
保存成功是调用了逆向生成的接口,只修改了pms_attr这张表
跟属性分组没有关联起来,也就是没修改pms_attr_attrgroup_relation这张表
所以我们需要重写这个保存方法~
而且前端发来的数据多了一个字段:attrGroupId
想想我们之前是怎么解决的?
在P74,点击修改按钮对属性分组进行修改的时候级联选择器没有正确回显
我们希望后端的@RequestMapping("product/attrgroup")@RequestMapping("/list/{attrGroupId}")
能多返回一个catelogId的完整路径
---我们为 AttrGroupEntity增加了一个字段:private Long[] catelogIdPath;
表示catelogId的完整路径,并用@TableField(exist = false)注解标注.数据库中不存在此字段
然后修改@RequestMapping("product/attrgroup")@RequestMapping("/list/{attrGroupId}")
对应的方法,让它返回的信息带上catelogIdPath。计算catelogIdPath的工作则交给categoryService
这种解决方式并不规范
更好的解决方式是专门写一个vo包,里面专门来放value object(值对象)或者称为view object(视图对象)
我们用vo来封装请求和响应对象。
package xyz.guawaz.gmall.product.vo;
//import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class AttrVo {
/**
* 属性id
*/
// @TableId
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;
/**
*属性所属分组的id
*/
private Long attrGroupId;
}
这样就可以拿这个vo去Controller的方法中去接收请求对象了
/**
* 保存
*/
@RequestMapping("/save")
@RequiresPermissions("product:attr:save")
// public R save(@RequestBody AttrEntity attr){
// attrService.save(attr);
//
// return R.ok();
// }
//改成如下
@RequestMapping("/save")
// @RequiresPermissions("product:attr:save")
public R save(@RequestBody AttrVo attr){
attrService.saveAttr(attr);
return R.ok();
}
@Transactional
@Override
public void saveAttr(AttrVo attr) {
AttrEntity attrEntity = new AttrEntity();
// attrEntity.setAttrId(attr.getAttrId()); 太麻烦 有工具类
BeanUtils.copyProperties(attr,attrEntity);
//保存基本数据
this.save(attrEntity);
//保存关联关系
AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
relationEntity.setAttrGroupId(attr.getAttrGroupId());
relationEntity.setAttrId(attrEntity.getAttrId());
relationDao.insert(relationEntity);
}
测试: