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

ops/2024/12/26 17:54:26/

文章目录

  • 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

java">    @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

java">    /*** 获取商品管理人的上级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

java">    /*** 品牌分页列表*/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

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

4、BrandSqlService

java">    /*** 品牌管理-分页列表*/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 表,并根据权限和状态进行过滤。

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

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


http://www.ppmy.cn/ops/139323.html

相关文章

Vue2和Vue3的区别

响应式系统 Vue 2 技术基础&#xff1a;使用 Object.defineProperty 实现响应式。局限性&#xff1a; 无法监听新增属性&#xff1a;如果在创建实例后添加新属性&#xff0c;这些属性不会自动成为响应式的。数组变更检测问题&#xff1a;直接通过索引设置值或长度不会触发更新…

【计算机网络】实验9: 路由信息协议RIP

实验9 路由信息协议RIP 一、实验目的 本实验的主要目的是深入理解RIP&#xff08;路由信息协议&#xff09;的工作原理&#xff0c;以便掌握其在网络中的应用。通过对RIP的学习&#xff0c;我们将探讨该协议如何实现路由选择和信息传播&#xff0c;从而确保数据包能够在网络中…

创建的空 OpenCV 安卓应用程序以支持摄像头

在本节中&#xff0c;我们将扩展上一节中创建的空 OpenCV 应用程序以支持摄像头。我们将获取摄像头帧并将其显示在屏幕上。 告诉系统我们需要相机权限。将以下代码添加到文件MyApplication/app/src/main/AndroidManifest.xml&#xff1a; <uses-permission android:name&qu…

40分钟学 Go 语言高并发:服务性能调优实战

服务性能调优实战 一、性能优化实战概述 优化阶段主要内容关键指标重要程度瓶颈定位收集性能指标&#xff0c;确定瓶颈位置CPU、内存、延迟、吞吐量⭐⭐⭐⭐⭐代码优化优化算法、并发、内存使用代码执行时间、内存分配⭐⭐⭐⭐⭐系统调优调整系统参数、资源配置系统资源利用率…

Leecode经典题4--查找数组中的多数元素+Boyer-Moore 投票算法

题目描述&#xff1a; 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 输入输出示例 输入&#xff1a;nums [2,2,1,1,1,2,2] 输出…

关于linux 下的中断

1. /proc/irq/<irq_number>/ 下属性详解 在 Linux 系统中&#xff0c;每个中断号&#xff08;IRQ&#xff09;都有一个对应的目录 /proc/irq/<irq_number>/&#xff0c;包含与该中断相关的属性文件。这些文件用于查看和配置中断的具体行为。 以下是 /proc/irq/&l…

Qt Designer Ui设计 功能增加

效果展示 输入密码&#xff0c;密码错误&#xff0c;弹出提示 密码正确&#xff0c;弹出提示并且关闭原窗口 代码&#xff08;只提供重要关键主代码&#xff09;lxh_log.py代码&#xff1a; import sysfrom PySide6.QtWidgets import QApplication, QWidget, QPushButtonfrom …

安装更新upgrade导致ubuntu崩溃

安装更新导致ubuntu崩溃 前言uuid编不过&#xff0c;导致的崩溃 记录一些ubuntu崩溃的过程。 目前只有一个&#xff0c;以后遇到都放在这里&#xff0c;以提醒自己。 前言 如果从10000年看现在的linux&#xff0c;不是说不完美&#xff0c;而是糟透了。 linux的版本号&#xf…