当前位置: 首页 > article >正文

微服务实战——平台属性

平台属性

中间表复杂业务

/**
 * 获取分类规格参数(模糊查询)
 *
 * @param params
 * @param catelogId
 * @param type type="base"时查询基础属性,type="sale"时查询销售属性
 * @return
 */
@Override
public PageUtils listByCatelogId(Map<String, Object> params, Long catelogId, String type) {

    String key = (String) params.get("key");
    QueryWrapper<AttrEntity> wrapper = new QueryWrapper<>();

    // 1.判断参数中是否存在检索关键字key
    if(!StringUtils.isEmpty(key)){
        wrapper.and((obj) -> {
            obj.eq("attr_id", key)
                    .or().like("attr_name", key)
                    .or().like("value_select", key);
        });
    }

    // 2.判断参数中是否存在catelogId
    // 2.1.查询全部
    if(catelogId != 0){
        wrapper.eq("catelog_id", catelogId);
    }
    IPage<AttrEntity> page = this.page(
            new Query<AttrEntity>().getPage(params),
            wrapper.eq("attr_type", "base".equalsIgnoreCase(type) ? 1 : 0)
    );

    PageUtils pageUtils = new PageUtils(page);

    // 3.封装成AttrRespVO
    List<AttrRespVo> respVos = page.getRecords().stream().map((attrEntity) -> {
        AttrRespVo attrRespVo = new AttrRespVo();
        BeanUtils.copyProperties(attrEntity, attrRespVo);
        // 3.1.得到所属分类名
        CategoryEntity categoryEntity = categoryService.getById(attrEntity.getCatelogId());
        if(categoryEntity != null){
            attrRespVo.setCatelogName(categoryEntity.getName());
        }

        // 3.2.得到所属分组名
        if (ATTR_TYPE_BASE.getMsg().equalsIgnoreCase(type)) {
            AttrAttrgroupRelationEntity relationEntity = relationService.query().eq("attr_id", attrEntity.getAttrId()).one();
            if(relationEntity != null){
                AttrGroupEntity attrGroupEntity = attrGroupService.getById(relationEntity.getAttrGroupId());
                attrRespVo.setGroupName(attrGroupEntity.getAttrGroupName());
            }
        }

        return attrRespVo;
    }).collect(Collectors.toList());

    pageUtils.setList(respVos);

    return pageUtils;
}

批量删除

/**
 * 删除属性与分组的关联关系 
 * DELETE FROM pms_attr_attrgroup_relation 
 * WHERE (( attr_id = 1 and attr_group_id = 1) OR ( attr_id = 2 and attr_group_id = 3))
 */
@Override
public void deleteRelation(List<AttrGroupRelationVo> voList) {

    // 1.获取
    List<AttrAttrgroupRelationEntity> relationEntities = voList.stream().map(attrGroupRelationVo -> {
        AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
        relationEntity.setAttrId(attrGroupRelationVo.getAttrId());
        relationEntity.setAttrGroupId(attrGroupRelationVo.getAttrGroupId());
        return relationEntity;
    }).collect(Collectors.toList());

    // 2.批量删除
    relationDao.deleteBatchRelation(relationEntities);
}
<!--    DELETE FROM pms_attr_attrgroup_relation
WHERE (( attr_id = 1 and attr_group_id = 1) OR ( attr_id = 2 and attr_group_id = 3))-->
<delete id="deleteBatchRelation">
    DELETE FROM `pms_attr_attrgroup_relation` WHERE
    <foreach collection="relationEntities" item="item" separator=" OR ">
        ( attr_id = #{item.attrId} AND attr_group_id = #{item.attrGroupId})
    </foreach>
</delete>

中间表复杂业务

/**
 * 获取属性分组没有关联的其他属性
 */
@Override
public PageUtils listNoRelationAttr(Map<String, Object> params, Long attrgroupId) {

    // 1.获取分类id
    Long catelogId = this.query().eq("attr_group_id", attrgroupId).one().getCatelogId();

    // 2.获取当前分类下的其他分组id集合
    List<Long> groupIds = this.list(new QueryWrapper<AttrGroupEntity>()
                    .eq("catelog_id", catelogId))
            .stream()
            .map(AttrGroupEntity::getAttrGroupId)
            .collect(Collectors.toList());;


    // 3.获取其他分组关联的属性id集合
    List<Long> attrIds = relationService.list(new QueryWrapper<AttrAttrgroupRelationEntity>()
                    .in("attr_group_id", groupIds))
            .stream()
            .map(AttrAttrgroupRelationEntity::getAttrId)
            .collect(Collectors.toList());

    // 4.剔除其他分组关联的属性
    QueryWrapper<AttrEntity> wrapper = new QueryWrapper<AttrEntity>()
            .eq("catelog_id", catelogId)
            .ne("value_type", ATTR_TYPE_BASE.getCode());
    if(attrIds != null && attrIds.size() > 0){
        wrapper.notIn("attr_id", attrIds);
    }
    
    // 5.判断key
    String key = (String) params.get("key");
    if(!StringUtils.isEmpty(key)){
        wrapper.and((obj) -> {
            obj.eq("attr_id", key)
                    .or().like("attr_name", key)
                    .or().like("value_select", key);
        });
    }

    IPage<AttrEntity> page = attrService.page(new Query<AttrEntity>().getPage(params), wrapper);
    return new PageUtils(page);
}

http://www.kler.cn/news/330179.html

相关文章:

  • Visual studio2019+PCL1.11.1+win10
  • 畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)
  • 媲美GPT-4o mini的小模型,Meta Llama 3.2模型全面解读!
  • linux桌面软件(wps)内嵌到其他窗口
  • idea环境下vue2升级vue3
  • PHP魔幻(术)方法
  • 【python实操】python小程序之随机抽签以及for循环计算0-x的和
  • 开源链动2+1模式AI智能名片S2B2C商城小程序源码:流量运营中的价值创造与用户影响
  • ListNode
  • 【OpenCV】 Python 图像处理 入门
  • 5G NR物理信道简介
  • mac 上配置Jmeter代理进行web脚本录制过程容易踩坑的点
  • Spring Boot中常用的JSR 380参数校验注解
  • 项目级别的配置文件 `.git/config`||全局配置文件 `~/.gitconfig`
  • Qt --- 界面优化 --- QSS和绘图API
  • ML 系列: (10)— ML 中的不同类型的学习
  • 【rCore OS 开源操作系统】Rust 练习题题解: Enums
  • Nacos 是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台,旨在帮助开发者更轻松地构建、部署和管理微服务应用。
  • python单例和工厂模式
  • OpenCV库 详细常见操作
  • Lumerical脚本语言-系统(System)
  • RAG(检索增强生成)新探索:IdentityRAG 提高 RAG 准确性
  • springboot儿童物品共享平台的设计与实现
  • VMware Aria Suite Lifecycle 8.18 发布,新增功能概览
  • Go基础学习10-原子并发包sync.atomic的使用:CSA、Swap、atomic.Value......
  • 基于单片机的两轮直立平衡车的设计
  • 经验笔记:JavaScript 中的对象
  • 阿里云部署1Panel(失败版)
  • setState是同步更新还是异步更新
  • 基于Python的人工智能应用案例系列(18):SpaCy简历信息抽取