查询品牌涉及两张表(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 表,并根据权限和状态进行过滤。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/928835.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

请求响应:常见参数接收及封装(数组集合参数及日期参数)

数组参数 在前端页面的表单中&#xff0c;存在复选框元素&#xff0c;当提交表单到后端的时候&#xff0c;会将复选框中的全部内容提交到后端进行处理&#xff0c;由于复选框中往往存在很多数据&#xff0c;并且同复选框中数据名称相同&#xff0c;这样的请求参数叫做数组参数…

Artec Leo 3D扫描仪 革新家具行业的数字化展示【沪敖3D】

随着科技的飞速进步&#xff0c;三维扫描技术已被广泛应用于包括家居行业在内的多个行业。面对现代消费者对家居产品日益增长的个性化和多样化需求&#xff0c;传统的家居设计和展示方法已难以满足市场需求。三维扫描技术的出现&#xff0c;为家居行业带来了新的发展机遇&#…

Qt 安装Qt Serial Port

最近要用Qt写个串口上位机软件&#xff0c;发现Qt的串口库用不了&#xff0c;上网找了一下资料&#xff0c;找到一种解决办法&#xff0c;具体操作如下&#xff1a; 参考文章&#xff1a;https 目录 一、找到QT安装路径&#xff0c;并运行Qt Maintenance Tool二、选择 添加或移…

重生之我在异世界学编程之C语言:操作符篇

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文1. 算术操作符2. 关系&#xff0…

FPGA Xilinx维特比译码器实现卷积码译码

FPGA Xilinx维特比译码器实现卷积码译码 文章目录 FPGA Xilinx维特比译码器实现卷积码译码1 Xilinx维特比译码器实现2 完整代码3 仿真结果 MATLAB &#xff08;n,k,m&#xff09;卷积码原理及仿真代码&#xff08;你值得拥有&#xff09;_matlab仿真后代码-CSDN博客 MATLAB 仿真…

识别医疗设备制造中的变异性的三个步骤

质量控制是医疗设备制造的关键支柱。毕竟&#xff0c;如果产品不符合最高的安全和功能标准&#xff0c;人们可能会被误诊、受伤甚至死亡。每个设备都必须符合精确的规格和法规&#xff0c;即使是微小的偏差也可能产生重大影响。 我们将以优化磁共振成像&#xff08;MRI&#xf…

数据结构---链表(2)---双向链表

链表(1)中讲过了在OJ题中出现很多并且能作为一些复杂数据结构子结构的不带头单向不循环链表&#xff0c;下面讲解应用很广很实用的带头双向循环链表。 三、双向链表---DoublyLinkedList 演示带头双向循环链表(实用)。 带头--->不需要对空链表继续单独判断&#xff1b;循环…

JAVA |日常开发中读写TXT文本详解

JAVA &#xff5c;日常开发中读写TXT文本详解 前言一、读取 TXT 文本1.1 使用BufferedReader读取1.2 使用Scanner读取 二、写入 TXT 文本2.1 使用BufferedWriter写入2.2 使用PrintWriter写入2.3 字节流写入&#xff08;FileOutputStream&#xff09;后转换为字符流&#xff08;…

clion解决默认编译器乱码问题

解决乱码问题 如图所示当我们在clion下开发时如果输入中文&#xff0c;会有乱码出现。 问题的产生 clion默认的C/C编译器&#xff08;MinGW&#xff09;对中文的解析有问题出现乱码。 解决方案 修改文件的编码方式 进入clion的Settings(设置)–>Editor(编辑) —>Fil…

pset2 substitution.c

1.extension&#xff1a;To Do Tasks 推荐一个vscode里面一个很好用的插件&#xff01;&#xff01;&#xff01;写出解决的步骤&#xff0c;不但理清楚思路。还可以提高效率&#xff01;特别是针对一些文本比较长的pset&#xff0c;要求多且零碎&#xff0c;反复切换页面&…

程序员需要具备哪些知识?

程序员需要掌握的知识广泛而深厚&#xff0c;这主要取决于具体从事的领域和技术方向。不过&#xff0c;有些核心知识是共通的&#xff0c;就像建房子的地基一样&#xff0c;下面来讲讲这些关键领域&#xff1a; 1. 编程语言&#xff1a; 无论你是搞前端、后端、移动开发还是嵌…

解密时序数据库的未来:TDengine Open Day技术沙龙精彩回顾

在数字化时代&#xff0c;开源已成为推动技术创新和知识共享的核心力量&#xff0c;尤其在数据领域&#xff0c;开源技术的涌现不仅促进了行业的快速发展&#xff0c;也让更多的开发者和技术爱好者得以参与其中。随着物联网、工业互联网等技术的广泛应用&#xff0c;时序数据库…

云计算vsphere 服务器上添加主机配置

这里是esxi 主机 先把主机打开 然后 先开启dns 再开启 vcenter 把每台设备桌面再vmware workstation 上显示 同上也是一样 &#xff0c;因为在esxi 主机的界面可能有些东西不好操作 我们选择主机和集群 左边显示172.16.100.200

Kotlin报错:lateinit property xxx has not been initialized

Kotlin报错&#xff1a;lateinit property xxx has not been initialized 发生在定义了一个名为xxx的lateinit变量。 解决&#xff0c;在调用前&#xff0c;可以先判断一层该xxx变量是否已经初始化&#xff1a; if (this::xxx.isInitialized) {//正常使用该变量} kotlin.Unini…

【ArcGIS微课1000例】0134:ArcGIS Earth实现二维建筑物的三维完美显示

文章目录 一、加载数据二、三维显示三、三维符号化一、加载数据 加载配套实验数据(0134.rar中的建筑物,2d或3d都可以),方法如下:点击添加按钮。 点击【Add Files】,在弹出的Open对话框中,选择建筑物,点击确定,完成添加。 默认二维显示: 二、三维显示 右键建筑物图层…

【Linux系统编程】——理解冯诺依曼体系结构

文章目录 冯诺依曼体系结构硬件当代计算机是性价比的产物冯诺依曼的存储冯诺依曼的数据流动步骤冯诺依曼结构总结 冯诺依曼体系结构硬件 下面是整个冯诺依曼体系结构 冯诺依曼结构&#xff08;Von Neumann Architecture&#xff09;是现代计算机的基本结构之一&#xff0c;由数…

H3C OSPF实验

实验拓扑 实验需求 按照图示配置 IP 地址按照图示分区域配置 OSPF &#xff0c;实现全网互通为了路由结构稳定&#xff0c;要求路由器使用环回口作为 Router-id&#xff0c;ABR 的环回口宣告进骨干区域 实验解法 一、配置IP地址 [R1]int l0 [R1-LoopBack0]ip add 1.1.1.1 32 […

【工具变量】上市公司企业所在地城市等级直辖市、副省级城市、省会城市 计划单列市(2005-2022年)

一、包含指标&#xff1a; 股票代码 股票代码 股票简称 年份 所属城市 直辖市&#xff1a;企业所在地是否属于直辖市。1是&#xff0c;0否。 副省级城市&#xff1a;企业所在地是否属于副省级城市。1是&#xff0c;0否。 省会城市&a…

Android Studio历史版本下载

Android Studio 下载文件归档 | Android Developers 一定要选择英文环境&#xff0c; 拉到最后&#xff0c;同意

纯粹直播 1.7.7 |手机版和TV版,聚合六大直播平台,原画播放

纯粹直播是一款开源的应用程序&#xff0c;支持兴趣化主题的游戏直播、户外直播和才艺直播节目。目前可以观看斗鱼、B站、虎牙和抖音等六大直播平台的内容。该应用适配了安卓手机和电视盒子平台使用&#xff0c;并且软件无广告&#xff0c;提供原画质播放体验。 大小&#xff…