当前位置: 首页 > 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 表,并根据权限和状态进行过滤。

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

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

http://www.lryc.cn/news/497311.html

相关文章:

  • Eureka和Zookeeper、Nacos的区别
  • 微信小程序怎么实现非tabbar页面显示tabbar,自定义组件实现
  • SpringBoot如何使用EasyExcel实现表格导出(简洁快速入门版本)
  • 多种平台上安装部署调试Open5GS(四)
  • 单片机的基本构成与工作原理
  • opencv常用图像处理操作
  • Svn如何切换删除账号
  • 使用PaddleOCR遇到的问题Bug
  • 了解Xcode在iOS开发中的作用和功能有哪些
  • 《船舶物资与市场》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 商汤完成组织架构调整,改革完成的商汤未来何在?
  • MyBatis异常体系中ErrorContext和ExceptionFactory原理分析
  • WHLUG丨deepin、华中科技大学开放原子开源俱乐部、 RustSBI 和清华大学开源操作系统训练营共话开源新生代成长之路
  • 通过HTML Canvas 在图片上绘制文字
  • C# 冒泡的算法
  • 大数据项目-Django基于聚类算法实现的房屋售房数据分析及可视化系统
  • AWS创建ec2实例并连接成功
  • TypeScript 开始学习 -接触的新东西
  • 非对称任意进制转换器(安卓)
  • 【优选算法篇】寻找隐藏的宝藏:用二分查找打开算法世界的大门(上篇)
  • 基于Vue实现的移动端手机商城项目 电商购物网站 成品源码
  • C语言:数组
  • 时间序列预测之FiLM
  • 【机器学习】窥数据之序,悟算法之道:机器学习的初心与远方
  • OpenCL介绍
  • 「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用
  • 【前端知识】npm命令行详细说明
  • Python网络爬虫技术详解与实践案例
  • 【遥感目标检测综述】【GRSS】遥感目标检测与深度学习的相遇:挑战与进展的元综述
  • 【大数据技术基础】 课程 第3章 Hadoop的安装和使用 大数据基础编程、实验和案例教程(第2版)