在qo文件夹下添加AttrGroupRelationQo类:
@Data
public class AttrGroupRelationQo {
private Long attrId;
private Long attrGroupId;
}
在AttrGroupController类中添加如下两个接口:
/**
* 根据分组id查找关联的所有基本属性
*
* @param attrgroupId
* @return
*/
@GetMapping("/{attrgroupId}/attr/relation")
public R attrRelation(@PathVariable("attrgroupId") Long attrgroupId) {
List<AttrEntity> attrEntities = attrService.getRelationAttr(attrgroupId);
return R.ok().put("data", attrEntities);
}
/**
* 移除属性-属性分组关联信息
*
* @param qos
* @return
*/
@PostMapping("/attr/relation/delete")
public R deleteRelation(@RequestBody AttrGroupRelationQo[] qos) {
attrService.deleteRelation(qos);
return R.ok();
}
在AttrService类添加如下两个方法:
/**
* 根据分组id查找关联的所有基本属性
*
* @param attrgroupId
* @return
*/
List<AttrEntity> getRelationAttr(Long attrgroupId);
/**
* 移除属性-属性分组关联信息
*
* @param qos
*/
void deleteRelation(AttrGroupRelationQo[] qos);
在AttrServiceImpl类中添加以上两个方法的实现:
public class AttrServiceImpl extends ServiceImpl<AttrDao, AttrEntity> implements AttrService {
@Autowired
private AttrAttrgroupRelationDao attrAttrgroupRelationDao;
@Autowired
private CategoryDao categoryDao;
@Autowired
private AttrAttrgroupRelationDao relationDao;
@Autowired
private AttrGroupDao attrGroupDao;
@Autowired
private CategoryService categoryService;
@Override
public List<AttrEntity> getRelationAttr(Long attrgroupId) {
List<AttrAttrgroupRelationEntity> entities = relationDao.selectList(new QueryWrapper<AttrAttrgroupRelationEntity>().eq("attr_group_id", attrgroupId));
List<Long> attrIds = entities.stream().map((attr) -> {
return attr.getAttrId();
}).collect(Collectors.toList());
if (attrIds == null || attrIds.size() == 0) {
return null;
}
Collection<AttrEntity> attrEntities = this.listByIds(attrIds);
return (List<AttrEntity>) attrEntities;
}
@Override
public void deleteRelation(AttrGroupRelationQo[] qos) {
List<AttrAttrgroupRelationEntity> entities = Arrays.asList(qos).stream().map((item) -> {
AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
BeanUtils.copyProperties(item, relationEntity);
return relationEntity;
}).collect(Collectors.toList());
relationDao.deleteBatchRelation(entities);
}
}
在AttrAttrgroupRelationDao类中添加如下方法:
/**
* 移除属性&属性分组关联
*
* @param entities
*/
void deleteBatchRelation(@Param("entities") List<AttrAttrgroupRelationEntity> entities);
在AttrAttrgroupRelationDao.xml中添加实现:
<delete id="deleteBatchRelation">
DELETE FROM pms_attr_attrgroup_relation WHERE
<foreach collection="entities" item="item" separator="OR">
(attr_id=#{item.attrId} and attr_group_id=#{item.attrGroupId})
</foreach>
</delete>
测试结果
查看分组关联属性如下:
移除效果如下:
分组关联属性查询和移除功能成功。