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

查询品牌涉及两张表(brand、brand_admin_mapping)

文章目录

  • 1、BrandController
  • 2、AdminCommonService
  • 3、BrandApiService
  • 3、BrandCommonService
  • 4、BrandSqlService
      • 涉及的表
      • SQL 查询逻辑
      • 参数处理
      • 执行查询
      • 完整 SQL 逻辑
      • 参数映射
      • 总结

查询指定管理员下的品牌所涉及的表有哪些?

http://127.0.0.1:8087/brand/admin/list?page=0&size=10&field=englishName

1、BrandController

    @GetMapping("admin/list")@ApiOperation("分页列表")public BaseResult findAll(PageWithSearch basePage, @ApiIgnore @SessionAttribute(Constants.ADMIN_ID) Integer adminId) {checkParam(basePage.getField(), basePage.getValue());adminId = adminCommonService.getVipIdByBrand(adminId);return BaseResult.success(brandApiService.findPage(adminId, basePage));}

2、AdminCommonService

    /*** 获取商品管理人的上级vip id* 当操作者为品牌管理人时获取上级的vip id* 否则返回自身*/public Integer getVipIdByBrand(Integer nowId) {return hasRole(nowId, Admin.ROLE_BRAND) || hasRole(nowId, Admin.ROLE_PRODUCT) ? findCompanySuperId(nowId) : nowId;}/*** 查询公司超管id*/public Integer findCompanySuperId(Integer adminId) {return adminService.findCompanySuperId(adminId);}

3、BrandApiService

    /*** 品牌分页列表*/public Page<BrandListDto> findPage(Integer nowId, PageWithSearch page) {Page<BrandWithShareDto> brandPage = brandCommonService.findPage(nowId, page);return new PageImpl<>(convertToBrandDto(brandPage.getContent(), nowId), page.toPageable(), brandPage.getTotalElements());}

3、BrandCommonService

    /*** 品牌管理-品牌分页列表*/public Page<BrandWithShareDto> findPage(Integer nowId, PageWithSearch basePage) {return brandSqlService.findPage(nowId, basePage);}

4、BrandSqlService

    /*** 品牌管理-分页列表*/public Page<BrandWithShareDto> findPage(Integer nowId, PageWithSearch basePage) {StringBuilder sql = new StringBuilder();Map<String, Object> paramMap = new HashMap<>(4);sql.append("SELECT DISTINCT ").append(SqlUtil.sqlGenerate("b", Brand.class)).append(",a.edit_auth,a.create_auth, a.send_id FROM brand b ");//sql.append("LEFT JOIN brand_admin_mapping a ON b.id = a.brand_id ");//sql.append(" AND a.admin_id=").append(nowId).append(" ").append(" AND a.read_auth=").append(CommonStatusEnum.NORMAL.getValue()).append(" ");//sql.append("WHERE (b.creator_id =").append(nowId).append(" OR ").append("a.id IS NOT NULL) ");sql.append("INNER JOIN brand_admin_mapping a ON b.id = a.brand_id AND a.admin_id=").append(nowId).append(" ");//有编辑权限 || (有查看权限 && 品牌状态为显示)sql.append("WHERE (a.edit_auth =").append(CommonStatusEnum.NORMAL.getValue()).append(" OR (a.read_auth =").append(CommonStatusEnum.NORMAL.getValue()).append(" AND b.status =").append(CommonStatusEnum.NORMAL.getValue()).append(")) ");paramHandle(sql, paramMap, basePage.getField(), basePage.getValue());orderByHandle(basePage.getProperties(), basePage.getDirection(), sql);List result = executeSql(sql, paramMap, basePage.getPage(), basePage.getSize());if (result.isEmpty()) {return new PageImpl<>(Collections.emptyList(), basePage.toPageable(), 0);}return new PageImpl<>(parseToBrandWithShare(result), basePage.toPageable(), countPage(nowId, basePage.getField(), basePage.getValue()));}

从你提供的代码片段来看,这段代码主要用于构建和执行一个复杂的 SQL 查询,并返回分页结果。让我们逐步分析这段代码,以确定涉及的表和查询逻辑。

涉及的表

根据代码中的 SQL 构建逻辑,涉及的表有:

  1. brand

    • 用于存储品牌信息。
    • 列包括但不限于 idcreator_idstatus 等。
  2. brand_admin_mapping

    • 用于存储品牌和管理员的映射关系。
    • 列包括但不限于 idbrand_idadmin_idedit_authread_auth 等。

SQL 查询逻辑

  1. 选择字段

    SELECT DISTINCT b.*, a.edit_auth, a.create_auth, a.send_id FROM brand b
    
  2. 连接表

    INNER JOIN brand_admin_mapping a ON b.id = a.brand_id AND a.admin_id = ?
    
  3. 过滤条件

    WHERE (a.edit_auth = ? OR (a.read_auth = ? AND b.status = ?))
    

参数处理

  • paramHandle(sql, paramMap, basePage.getField(), basePage.getValue());:处理参数,将查询条件添加到 SQL 中。
  • orderByHandle(basePage.getProperties(), basePage.getDirection(), sql);:处理排序条件,将排序条件添加到 SQL 中。

执行查询

  • executeSql(sql, paramMap, basePage.getPage(), basePage.getSize());:执行 SQL 查询并获取分页结果。

完整 SQL 逻辑

根据代码片段,完整的 SQL 查询逻辑如下:

SELECT DISTINCT b.*, a.edit_auth, a.create_auth, a.send_id 
FROM brand b 
INNER JOIN brand_admin_mapping a ON b.id = a.brand_id AND a.admin_id = ?
WHERE (a.edit_auth = ? OR (a.read_auth = ? AND b.status = ?))

参数映射

  • a.admin_id = ?:当前管理员的 ID。
  • a.edit_auth = ?:编辑权限。
  • a.read_auth = ?:查看权限。
  • b.status = ?:品牌状态。

总结

  • brandbrand_admin_mapping
  • 查询逻辑:通过 INNER JOIN 连接 brandbrand_admin_mapping 表,并根据权限和状态进行过滤。

如果你有更多关于这段代码的具体问题或需要进一步的帮助,请告诉我!

在这里插入图片描述
在这里插入图片描述

相关文章:

查询品牌涉及两张表(brand、brand_admin_mapping)

文章目录 1、BrandController2、AdminCommonService3、BrandApiService3、BrandCommonService4、BrandSqlService涉及的表SQL 查询逻辑参数处理执行查询完整 SQL 逻辑参数映射总结 查询指定管理员下的品牌所涉及的表有哪些&#xff1f; http://127.0.0.1:8087/brand/admin/list…...

Eureka和Zookeeper、Nacos的区别

目录 一、Eureka与Zookeeper的区别 适用场景&#xff1a; 架构设计&#xff1a; 功能特性&#xff1a; 社区生态&#xff1a; 二、Eureka与Nacos的区别 接口方式&#xff1a; 实例类型&#xff1a; 健康检测&#xff1a; 服务发现&#xff1a; 一致性与可用性&#…...

微信小程序怎么实现非tabbar页面显示tabbar,自定义组件实现

微信小程序没有发现可以实现非tabbar页面显示tabbar的方法&#xff0c;但是可以在tabbar页面当中隐藏tabbar&#xff0c;使用wx.hideTabBar()方法就可以实现&#xff0c;在非tabbar页面调用wx.showTabBar()方法却会显示失败&#xff0c;不能显示tabbar onLoad() {wx.showTabBar…...

SpringBoot如何使用EasyExcel实现表格导出(简洁快速入门版本)

前言 前面给大家介绍了动态表头的导入&#xff0c;这篇文章给大家介绍如何实现导出 前面给大家介绍了动态表头的导入&#xff0c;我们了解了如何通过EasyExcel灵活地读取结构不固定的Excel文件。这次&#xff0c;我们将目光转向数据导出——即如何将数据以Excel文件的形式输出…...

多种平台上安装部署调试Open5GS(四)

OpenWRT 源码安装 UERANSIM 安装依赖openwrt源码安装cmake其他依赖准备UERANSIM安装测试验证Open5GS 是一个功能完善的开源5G项目,具备5G、4G核心网功能,最新代码支持R17标准, 本系列文章介绍Open5GS在x86、ARM平台上的安装部署方法,并通过搭建UERANSIN、商用5G基站和终端两…...

单片机的基本构成与工作原理

单片机&#xff0c;即微控制器&#xff08;Microcontroller Unit&#xff0c;MCU&#xff09;&#xff0c;是一种将中央处理器(CPU)、存储器(ROM/RAM)、定时/计数器(Timer/Counter)、中断系统、输入输出(I/O)接口等集成在一块芯片上的微型计算机。它具有体积小、功耗低、成本低…...

opencv常用图像处理操作

OpenCV 处理图像的通用流程通常包括以下几个步骤&#xff0c;根据具体需求可以调整或跳过某些步骤。以下是一个通用的框架&#xff1a; 读取图像 加载图像文件到内存中以进行后续处理。 import cv2 读取图像 image cv2.imread(‘image.jpg’) # 彩色图像 gray_image cv2…...

Svn如何切换删除账号

记录Svn清除切换账号 1.首先打开小乌龟的设置如下图 打开设置后单击已保存数据&#xff0c;然后选择清除 接上图选择清除后&#xff0c;就可以打勾选择清除已保存的账号&#xff0c;我们再次检出的就可以切换账号了 &#x1f449;总结 本次记录Svn清除切换账号 如能帮助到你…...

使用PaddleOCR遇到的问题Bug

Q1: 训练模型的预测效果比inference模型的预测效果差距很大,怎么办?原因是什么? A1: 训练模型:使用训练数据集进行训练后的模型。 inference模型:把模型结构和模型参数保存在文件中的固化模型,多用于预测部署场景。训练过程中保存的模型是checkpoints模型,保存的只有模…...

了解Xcode在iOS开发中的作用和功能有哪些

Xcode是什么&#xff1f;它在iOS开发中的作用和功能有哪些&#xff1f; 一、Xcode是什么&#xff1f; Xcode是苹果公司针对macOS平台开发的一款集成开发环境&#xff08;Integrated Development Environment&#xff0c;简称IDE&#xff09;。它主要用于开发iOS、iPadOS、mac…...

《船舶物资与市场》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《船舶物资与市场》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《船舶物资与市场》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国船舶集团有限公司 主办单…...

商汤完成组织架构调整,改革完成的商汤未来何在?

首先&#xff0c;从核心业务的角度来看&#xff0c;商汤科技通过新架构明确了以AI云、通用视觉模型等为核心业务的战略方向。这一举措有助于商汤科技集中资源&#xff0c;加强在核心业务领域的研发和市场拓展&#xff0c;提高市场竞争力。同时&#xff0c;坚定生成式AI为代表的…...

MyBatis异常体系中ErrorContext和ExceptionFactory原理分析

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 exceptions包分包设计ExceptionFactory类介绍为什么使用工厂不是直接new呢&#xff1f;【统一的异常处理机制】【异常的封装与转化】【…...

WHLUG丨deepin、华中科技大学开放原子开源俱乐部、 RustSBI 和清华大学开源操作系统训练营共话开源新生代成长之路

2024年11月30日下午&#xff0c;由 deepin&#xff08;深度&#xff09;社区联合华中科技大学开放原子开源俱乐部、 RustSBI 开源社区和清华大学开源操作系统训练营共同举办的WHLUG&#xff08;武汉Linux用户组&#xff09;线下沙龙在华中科技大学成功举办。 本次活动聚集了50余…...

通过HTML Canvas 在图片上绘制文字

目录 前言 一、HTML Canvas 简介 二、准备工作 三、绘制图片 四、绘制文字 五、完整代码 效果演示&#xff1a; 前言 HTML canvas 为我们提供了无限的创意可能性。今天&#xff0c;我们就来探索一下如何通过 HTML canvas 将图片和文字绘制到图片上&#xff0c;创造出独特…...

C# 冒泡的算法

C# 冒泡的算法 public void BubbleSort(int[] arr) {int temp;for (int j 0; j < arr.Length - 2; j){for (int i 0; i < arr.Length - 2; i){if (arr[i] > arr[i 1]){temp arr[i 1];arr[i 1] arr[i];arr[i] temp;}}} }使用方法 int[] array new int[] { 5,…...

大数据项目-Django基于聚类算法实现的房屋售房数据分析及可视化系统

《[含文档PPT源码等]精品Django基于聚类算法实现的房屋售房数据分析及可视化系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程课程答疑等&#xff01; 数据库管理工具&#xff1a;phpstudy/Navicat或者phpstudy/sqlyog 后台管理系统涉及技术&#xff1a; 后台使…...

AWS创建ec2实例并连接成功

aws创建ec2实例并连接 aws创建ec2并连接 1.ec2创建前准备 首先创建一个VPC隔离云资源并且有公有子网 2.创建EC2实例 1.启动新实例或者创建实例 2.创建实例名 3.选择AMI使用linux(HVM) 4.选择实例类型 5.创建密钥对下载到本地并填入密钥对名称 6.选择自己创建的VPC和公有子网…...

TypeScript 开始学习 -接触的新东西

目录 语言类型类型总览JavaScript 中的数据类型TypeScript 中的数据类型 定义类型断言索引签名泛型 语言类型 JS -> 弱类型 TS -> 强类型 TypeScript&#xff08;TS&#xff09;是一种强类型语言。‌这意味着在TypeScript中&#xff0c;变量和函数参数的类型必须在编译时…...

非对称任意进制转换器(安卓)

除了正常进制转换&#xff0c;还可以输入、输出使用不同的数字符号&#xff0c;达成对数值进行加密的效果 点我下载APK安装包 使用unity开发。新建一个c#代码文件&#xff0c;把代码覆盖进去&#xff0c;再把代码文件添加给main camera即可。 using System.Collections; usin…...

AI仿真人剧服务商2025推荐,前沿技术与创新体验结合

AI仿真人剧服务商2025推荐&#xff0c;前沿技术与创新体验结合随着科技的不断进步&#xff0c;AI仿真人剧服务在2025年迎来了爆发式增长。越来越多的企业和个人开始关注这一领域&#xff0c;希望通过AI技术实现更高效、更高质量的内容创作。本文将为大家推荐一家在2025年表现卓…...

2种开源工具解决方案解决Beyond Compare 5授权失效问题

2种开源工具解决方案解决Beyond Compare 5授权失效问题 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare 5作为一款专业的文件比较与同步工具&#xff0c;在软件开发和数据管理领域…...

美元、日元、欧元怎么选?外汇新手该从哪个货币对开始?

最近有不少刚接触外汇交易的朋友问我同一个问题&#xff1a;美元、日元、欧元这些主流货币到底该怎么选&#xff1f;作为一个过来人&#xff0c;我想说的是——选对起步品种&#xff0c;比你想象中重要得多。 很多新手一上来就想着“赚快钱”&#xff0c;直接冲进波动剧烈的交叉…...

告别繁琐配置:用快马ai一键生成windows版openclaw自动化安装脚本原型

最近在折腾一个开源工具OpenClaw&#xff0c;发现它在Windows下的安装过程真是让人头大——各种依赖检查、环境变量配置&#xff0c;手动操作一不小心就出错。作为一个懒人程序员&#xff0c;我决定用Python写个自动化安装脚本&#xff0c;结果发现用InsCode(快马)平台的AI辅助…...

2025届最火的十大AI辅助论文平台横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网AIGC检测服务是学术规范领域里较为重要的技术工具&#xff0c;它的核心功能是去识别学术…...

解析Android Studio中文适配困局:社区语言包的技术架构与部署实践

解析Android Studio中文适配困局&#xff1a;社区语言包的技术架构与部署实践 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 在A…...

Ostrakon-VL-8B效果对比:传统CV方法与多模态大模型在菜品识别上的差异

Ostrakon-VL-8B效果对比&#xff1a;传统CV方法与多模态大模型在菜品识别上的差异 1. 引言 想象一下&#xff0c;你走进一家餐厅&#xff0c;想用手机拍张照片就知道桌上每道菜叫什么名字。或者&#xff0c;后厨需要快速清点几十种不同菜品&#xff0c;确保上菜准确无误。这就…...

HoYo-Glyphs:11款米哈游架空文字字体,免费开启你的游戏世界创作之旅

HoYo-Glyphs&#xff1a;11款米哈游架空文字字体&#xff0c;免费开启你的游戏世界创作之旅 【免费下载链接】HoYo-Glyphs Constructed scripts by HoYoverse 米哈游的架空文字 项目地址: https://gitcode.com/gh_mirrors/ho/HoYo-Glyphs 你是否曾幻想过用《原神》中蒙德…...

如何在微信和QQ上使用EmojiPackage表情包:终极完整指南

如何在微信和QQ上使用EmojiPackage表情包&#xff1a;终极完整指南 【免费下载链接】EmojiPackage 表情包资源合集&#xff0c;张张都是经典 项目地址: https://gitcode.com/gh_mirrors/em/EmojiPackage EmojiPackage表情包资源合集是聊天社交中的神器&#xff0c;这个经…...

实战指南:运用快马平台生成集成homebrew的一键式全栈应用本地部署脚本

最近在折腾一个前后端分离的小项目&#xff0c;后端用Node.jsRedis&#xff0c;前端是React。为了让团队其他成员能快速在本地跑起来&#xff0c;我研究了下如何用Homebrew配合脚本实现一键部署。这里分享下我的实战经验&#xff0c;整个过程在InsCode(快马)平台上测试验证过&a…...