微服务实战——平台属性

news/2024/12/21 21:56:59/

平台属性

中间表复杂业务

/*** 获取分类规格参数(模糊查询)** @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.判断参数中是否存在检索关键字keyif(!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.封装成AttrRespVOList<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.获取分类idLong 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.判断keyString 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.ppmy.cn/news/1534976.html

相关文章

使用 Wireshark 抓取类似的 HTTP 请求包

要使用 Wireshark 抓取类似的 HTTP 请求包&#xff0c;可以按照以下步骤进行操作&#xff1a; 安装并启动 Wireshark 如果你还没有安装 Wireshark&#xff0c;可以从Wireshark 官方网站下载并安装它。 安装完成后&#xff0c;启动 Wireshark。选择网络接口 在 Wireshark 主界面…

深度学习:DCGAN

目录 什么是DCGAN DCGAN与GAN的区别 DCGAN生成器 DCGAN判别器 基于MindSpore框架实现DCGAN 数据集&#xff1a; 变量定义&#xff1a; 数据预处理&#xff1a; 生成器&#xff1a; 判别器&#xff1a; 损失函数与优化器 训练模型 模型推理 什么是DCGAN CDGAN&#…

Kafka和RabbitMQ区别

RabbitMQ的消息延迟是微秒级&#xff0c;Kafka是毫秒级&#xff08;1毫秒1000微秒&#xff09; 延迟消息是指生产者发送消息发送消息后&#xff0c;不能立刻被消费者消费&#xff0c;需要等待指定的时间后才可以被消费。 Kafka的单机呑吐量是十万级&#xff0c;RabbitMQ是万级…

安卓使用memtester进行内存压力测试

memteser简介 memtester 是一个用于测试内存可靠性的工具。 它可以对计算机的内存进行压力测试&#xff0c;以检测内存中的错误&#xff0c;例如位翻转、随机存取错误等。memtester 可以在不同的操作系统上运行&#xff0c;并且可以针对不同大小的内存进行测试。 下载源码 m…

408算法题leetcode--第24天

#378. 有序矩阵中第 K 小的元素 378. 有序矩阵中第 K 小的元素思路&#xff1a;值二分&#xff0c;如注释时间&#xff1a;O(log(r-l) * n)&#xff1b;空间&#xff1a;O(1) class Solution { public:int check(vector<vector<int>>& matrix, int target){/…

多用户网页聊天室(测试报告)

一、项目背景 随着现代互联网的快速发展&#xff0c;实时通信系统&#xff08;如聊天应用&#xff09;已成为人们日常交流的重要工具。多用户网页聊天室项目旨在为用户提供一个基于Web的实时聊天平台&#xff0c;支持用户之间的即时通信、好友管理和历史消息记录查看。为了提升…

C语言复习概要(二)

本文目录 C语言中的数组与函数详解1. 引言2. 数组2.1. 什么是数组&#xff1f;语法&#xff1a;示例&#xff1a; 2.2. 数组的初始化示例 1&#xff1a;在声明时初始化示例 2&#xff1a;部分初始化示例 3&#xff1a;运行时赋值 2.3. 数组的访问与修改示例&#xff1a; 2.4. 多…

第十八讲-布局管理QVBoxLayout

QVBoxLayout 是 PyQt5 中用于在垂直方向上排列小部件(widgets)的布局管理器。它将子小部件从上到下按顺序排列,可以通过添加、插入、设置间距和对齐方式等方法对布局进行控制。QVBoxLayout 主要用于创建简单且整洁的界面。 初步示例 下面是一个简单的示例,展示了如何使用 …