四十.分组关联属性查询和移除功能

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>

测试结果

查看分组关联属性如下:
在这里插入图片描述
移除效果如下:
在这里插入图片描述
分组关联属性查询和移除功能成功。

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/107433821