微服务实战——平台属性
平台属性
中间表复杂业务
/*** 获取分类规格参数(模糊查询)** @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);
}
相关文章:
微服务实战——平台属性
平台属性 中间表复杂业务 /*** 获取分类规格参数(模糊查询)** param params* param catelogId* param type type"base"时查询基础属性,type"sale"时查询销售属性* return*/ Override public PageUtils listByCatelogId…...
半监督学习与数据增强(论文复现)
半监督学习与数据增强(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 半监督学习与数据增强(论文复现)概述算法原理核心逻辑效果演示使用方式 概述 本文复现论文提出的半监督学习方法,半监督学习&…...
css3-----2D转换、动画
2D 转换(transform) 转换(transform)是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果 移动:translate旋转:rotate缩放:scale 二维坐标系 2D 转换之移动 trans…...
SQL进阶技巧:统计各时段观看直播的人数
目录 0 需求描述 1 数据准备 2 问题分析 3 小结 如果觉得本文对你有帮助,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下: 数字化建设通关指南 专栏 原价99,现在活动价39.9,十一国庆后将上升至59.9&#…...
Stream流的终结方法
1.Stream流的终结方法 2.forEach 对于forEach方法,用来遍历stream流中的所有数据 package com.njau.d10_my_stream;import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.function.Consumer; import java.util…...
JavaWeb——Vue组件库Element(4/6):案例:基本页面布局(基本框架、页面布局、CSS样式、完善布局、效果展示,含完整代码)
目录 步骤 基本页面布局 基本框架 页面布局 CSS样式 完善布局 效果展示 完整代码 Element 的基本使用方式以及常见的组件已经了解完了,接下来要完成一个案例,通过这个案例让大家知道如何基于 Element 中的各个组件制作一个完整的页面。 案例&am…...
【c++】 模板初阶
泛型编程 写一个交换函数,在学习模板之前,为了匹配不同的参数类型,我们可以利用函数重载来实现。 void Swap(int& a, int& b) {int c a;a b;b c; } void Swap(char& a, char& b) {char c a;a b;b c; } void Swap(dou…...
R 语言 data.table 大规模数据处理利器
前言 最近从一个 python 下的 anndata 中提取一个特殊处理过的单细胞矩阵,想读入R用来画图(个人比较喜欢用R可视化 ),保存之后,大概几个G的CSV文件,如果常规方法读入R,花费的时间比较久&#x…...
Java 静态代理详解:为什么代理类和被代理类要实现同一个接口?
在 Java 开发中,代理模式是一种常用的设计模式,其中代理类的作用是控制对其他对象的访问。代理模式分为静态代理和动态代理,在静态代理中,代理类和被代理类都需要实现同一个接口。这一机制为实现透明的代理行为提供了基础…...
OpenCV C++霍夫圆查找
OpenCV 中的霍夫圆检测基于 霍夫变换 (Hough Transform),它是一种从边缘图像中识别几何形状的算法。霍夫圆检测是专门用于检测图像中的圆形形状的。它通过将图像中的每个像素映射到可能的圆参数空间,来确定哪些像素符合圆形状。 1. 霍夫变换的原理 霍夫…...
H.264编解码介绍
一、简介 H.264,又称为AVC(Advanced Video Coding),是一种广泛使用的视频压缩标准。它由国际电信联盟(ITU)和国际标准化组织(ISO)联合开发,并于2003年发布。 H.264的发展历史可以追溯到上个世纪90年代。当时,视频压缩技术的主要标准是MPEG-2,但它在压缩率和视频质…...
Java | Leetcode Java题解之第450题删除二叉搜索树中的节点
题目: 题解: class Solution {public TreeNode deleteNode(TreeNode root, int key) {TreeNode cur root, curParent null;while (cur ! null && cur.val ! key) {curParent cur;if (cur.val > key) {cur cur.left;} else {cur cur.rig…...
【CViT】Deepfake Video Detection Using Convolutional Vision Transformer
文章目录 Deepfake Video Detection Using Convolutional Vision Transformerkey points**卷积视觉变压器**FLViT实验总结Deepfake Video Detection Using Convolutional Vision Transformer 会议/期刊:2021 作者: key points 提出了一种用于检测深度伪造的卷积视觉变压器…...
安卓主板_MTK4G/5G音视频记录仪整机及方案定制
音视频记录仪方案,采用联发科MT6877平台八核2* A78 6* A55主频高达2.4GHz, 具有高能低耗特性,搭载Android 12.0智能操作系统,可选4GB32GB/6GB128GB内存,运行流畅。主板集成NFC、双摄像头、防抖以及多种无线数据连接,支…...
Qt 教程全集目录公布(方便查阅)
点击上方"蓝字"关注我们 Qt 安装 以下是常见安装方法和软件获取 Qt4Qt5Qt6版本下载(在线和离线)【网址】...
云计算SLA响应时间的matlab模拟与仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 用matlab模拟,一个排队理论。输入一堆包,经过buffer(一个或者几个都行)传给server,这些包会在buffer里…...
ARTS Week 42
Algorithm 本周的算法题为 2283. 判断一个数的数字计数是否等于数位的值 给你一个下标从 0 开始长度为 n 的字符串 num ,它只包含数字。 如果对于 每个 0 < i < n 的下标 i ,都满足数位 i 在 num 中出现了 num[i]次,那么请你返回 true …...
10.2学习
1.IOC控制反转 IoC(Inverse of Control:控制反转)是⼀种设计思想,就是将原本在程序中⼿动创建对象的控制权,交由Spring框架来管理。 IoC 在其他语⾔中也有应⽤,并⾮ Spring 特有。 IoC 容器是 Spring⽤来实现 IoC …...
【数一线性代数】021入门
Index 推荐阅读:https://blog.csdn.net/weixin_60702024/article/details/141729949分析实现总结 推荐阅读:https://blog.csdn.net/weixin_60702024/article/details/141729949 给定二叉树的根节点root,计算其叶节点的个数。 分析实现 类似…...
(k8s)kubernetes中ConfigMap和Secret
转载:ConfigMap 一、ConfigMap介绍 ConfigMap是一种API对象,用来将非机密性的数据保存到键值对中。使用时,Pod可以将其用作环境变量、命令行参数或存储卷中的配置文件。 ConfigMap将你的环境配置信息和容器镜像解耦,便于应用配置…...
stm32四足机器人(标准库)
项目技术要求 PWM波形的学习 参考文章stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)_ttl pwm 驱动激光头区别-CSDN博客 舵机的学习 参考文章 stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)…...
基于Hive和Hadoop的共享单车分析系统
本项目是一个基于大数据技术的共享单车分析系统,旨在为用户提供全面的单车使用信息和深入的出行行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 S…...
基于SSM和vue的机票订购管理系统
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM和vue的机票订购管理系统2拥有两种角色 管理员:用户管理、机票管理、订票管理、公告管理、广告管理、系统管理、添加机票等 用户:登录注册、订票、查看公…...
【rCore OS 开源操作系统】Rust 练习题题解: Enums
【rCore OS 开源操作系统】Rust 练习题题解: Enums 摘要 rCore OS 开源操作系统训练营学习中的代码练习部分。 在此记录下自己学习过程中的产物,以便于日后更有“收获感”。 后续还会继续完成其他章节的练习题题解。 正文 enums1 题目 // enums1.rs // // No hi…...
VPN简述
文章目录 VPNVPN基础VPN类型 VPN VPN隧道安全 VPN基础 背景: 在网络传输中,绝大部分数据内容都是明文传输,存在很多安全隐患(窃听、篡改、冒充) 总部、分公司、办事处、出差人员、合作单位等需要访问总部网络资源 Vi…...
【Kubernetes】常见面试题汇总(四十九)
目录 110.假设一家公司希望通过采用新技术来优化其工作负载的分配。公司如何有效地实现这种资源分配? 111.考虑一家拼车公司希望通过同时扩展其平台来增加服务器数量。您认为公司将如何处理服务器及其安装? 特别说明: 题目 1-68 属于【…...
常见排序算法以及冒泡排序的基础使用方法
众所周知,冒泡排序是编程中最经典也是最简单的一种排序方法,它是通过重复访问对两个相邻的值进行比较,由于在互换的过程中,最大 (或最小) 的那个值会慢慢的交换到顶部,像汽水一样,故名“冒泡排序”。 let a…...
【网络安全】Cookie与ID未强绑定导致账户接管
未经许可,不得转载。 文章目录 前言正文前言 DigiLocker 是一项在线服务,旨在为公民提供一个安全的数字平台,用于存储和访问重要的文档,如 Aadhaar 卡、PAN 卡和成绩单等。DigiLocker 通过多因素身份验证(MFA)来保护用户账户安全,通常包括 6 位数的安全 PIN 和一次性密…...
Ansible Playbook原理与实践(Principles and Practice of Ansible Playbook)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…...
解决OpenCV保存视频 视频全部为绿色的bug
目录 项目场景: 问题描述 原因分析: 解决方案: 项目场景: 使用OpenCV-Python 保存视频,视频为numpy array格式,保存的视频全部为无意义的绿色。 问题描述 用opencv 保存的视频会出现全部为绿色的情况&…...
嘉兴市城乡规划建设管理委员会网站/百度一下你就知道了百度一下
“十三五”时期,我国太阳能发电产业规模有望得到大幅提升。根据国家能源局提供的规模发展指标,到2020年底,太阳能发电装机容量有望达到1.6亿千瓦,年发电量达到1700亿千瓦时。 据经济参考报6月27日消息,在1.6亿千瓦装机…...
如何做网站公证/seo课程心得体会
charAt() 返回指定位置的字符。 str.charAt(index) index 为必须参数,类型为number(0到str.length-1之间,否则该方法返回 空串) 另外:str.charAt()即不带参数和str.charAt(NaN)均返回字符串的第一个字符 charCodeAt(…...
电子商务网站建设实训报告总结/百度查重免费
18、实现strStr() 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack "hello", needle "ll&qu…...
有哪些设计网站app/seo推广教程seo高级教程
到了今天,已经很少有人再提人工智能音箱了。使用率低、售价跳水、缺乏销售数据……我们不能武断地说智能音箱凉了,但的确不少所谓的AI企业的硬件梦碎了。相对于一些盲目涌入AI的公司,一些科技公司似乎找到了另外一条硬件路——翻译机。科大讯…...
可靠的政府网站建设服务商/什么是营销模式
MVC下的全局异常过滤器注册方式如下:标红为asp.net mvc ,asp.net mvc api 注册全局异常过滤器的不同之处 using SuperManCore; using System.Web; using System.Web.Mvc;namespace SuperMan {public class FilterConfig{/// <summary>/// 注册全局过滤器 add…...
上海正规网站定制/sem扫描电镜
GitLab 是一个基于 git 的仓库管理程序,也是一个方便软件开发的强大完整应用。GitLab 拥有一个“用户新人友好”的界面,通过图形界面和命令行界面,使你的工作更加具有效率。GitLab 不仅仅对开发者是一个有用的工具,它甚至可以被集…...