GroupDao.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\common\dao\system\groupData;
  12. use app\common\dao\BaseDao;
  13. use app\common\model\system\groupData\SystemGroup;
  14. use think\Collection;
  15. use think\db\BaseQuery;
  16. use think\db\exception\DataNotFoundException;
  17. use think\db\exception\DbException;
  18. use think\db\exception\ModelNotFoundException;
  19. /**
  20. * Class GroupDao
  21. * @package app\common\dao\system\groupData
  22. * @author xaboy
  23. * @day 2020-03-27
  24. */
  25. class GroupDao extends BaseDao
  26. {
  27. /**
  28. * @return string
  29. * @author xaboy
  30. * @day 2020-03-30
  31. */
  32. protected function getModel(): string
  33. {
  34. return SystemGroup::class;
  35. }
  36. /**
  37. * 获取所有系统分组的数据
  38. *
  39. * 本函数通过调用SystemGroup类的数据库操作方法,查询并返回所有系统分组的信息。
  40. * 这是对系统分组进行管理的一个基础操作,为后续的系统分组列表展示或进一步的分组数据处理提供数据支持。
  41. *
  42. * @return array 返回包含所有系统分组信息的数组
  43. */
  44. public function all()
  45. {
  46. // 调用SystemGroup类的数据库操作方法,执行查询操作并返回所有查询结果
  47. return SystemGroup::getDB()->select();
  48. }
  49. /**
  50. * 计算系统分组的数量
  51. *
  52. * 本方法通过查询系统分组数据表,获取当前系统分组的总数。
  53. * 使用这一方法可以快速获得系统分组的全局统计信息,而无需加载每个分组的详细数据。
  54. *
  55. * @return int 返回系统分组的数量。这是一个整数值,表示系统中现有的分组总数。
  56. */
  57. public function count()
  58. {
  59. // 通过SystemGroup类的静态方法getDB()获取数据库连接对象,并调用其count()方法来计算分组数量
  60. return SystemGroup::getDB()->count();
  61. }
  62. /**
  63. * 分页获取系统分组数据
  64. *
  65. * 本函数用于实现系统分组数据的分页查询。它调用SystemGroup类中的getDB方法来获取数据库实例,
  66. * 并进一步调用该实例的page方法进行分页查询。此方法对于处理大量系统分组数据时非常有用,
  67. * 可以有效地减少内存占用并提高数据检索速度。
  68. *
  69. * @param int $page 当前页码
  70. * @param int $limit 每页数据的数量
  71. * @return \think\Paginator 返回分页后的数据对象
  72. */
  73. public function page($page, $limit)
  74. {
  75. // 调用SystemGroup类的getDB方法获取数据库实例,并执行分页查询
  76. return SystemGroup::getDB()->page($page, $limit);
  77. }
  78. /**
  79. * 检查给定的键是否存在于特定字段中。
  80. *
  81. * 此方法重用父类方法来检查指定的键是否存在于'group_key'字段中。
  82. * 它提供了一个可选的参数来排除特定的键值对检查,这允许更灵活的查询。
  83. *
  84. * @param string $key 要检查的键。
  85. * @param int|null $except 排除检查的特定键值。如果为null,则不进行排除。
  86. * @return bool 如果键存在则返回true,否则返回false。
  87. */
  88. public function keyExists($key, ?int $except = null): bool
  89. {
  90. return parent::fieldExists('group_key', $key, $except);
  91. }
  92. /**
  93. * 根据指定的字段值获取系统分组的字段配置。
  94. *
  95. * 本函数通过查询系统分组表,根据给定的字段值(默认为group_id)查找对应的分组,
  96. * 并返回该分组的字段配置。字段配置以JSON格式存储在数据库中,这里通过查询结果
  97. * 的value方法获取到JSON字符串,然后使用json_decode将其解析为PHP数组返回。
  98. *
  99. * @param int|string $id 需要查询的字段值。这个值可以根据字段名($field参数指定)来定位特定的分组。
  100. * @param string $field 指定用于查询的字段名。默认为'group_id',可以根据需要查询其他的字段。
  101. * @return array 解析后的JSON字符串,表示分组的字段配置。如果查询结果为空或查询失败,则返回空数组。
  102. */
  103. public function fields($id, $field = 'group_id')
  104. {
  105. // 使用SystemGroup的数据库查询方法,根据字段值查询并返回字段配置的JSON字符串
  106. return json_decode(SystemGroup::getDB()->where($field, $id)->value('fields'), true);
  107. }
  108. /**
  109. * 根据键值查询系统分组的ID
  110. *
  111. * 本函数旨在通过给定的键值($key)查询系统分组表中对应的分组ID。
  112. * 它使用了SystemGroup类的静态方法getDB来获取数据库连接,并构造了一个查询,
  113. * 该查询依据给定的键值查找group_key字段,并返回对应的group_id字段值。
  114. * 这种查询方式适用于只需要获取单一字段值的情况,可以提高查询效率。
  115. *
  116. * @param string $key 分组的键值,用于查询系统分组表中对应的分组ID。
  117. * @return mixed 返回查询结果,如果未找到匹配的记录,则返回null。
  118. */
  119. public function keyById(string $key)
  120. {
  121. // 通过group_key查询系统分组表中的group_id,并返回查询结果
  122. return SystemGroup::getDB()->where('group_key', $key)->value('group_id');
  123. }
  124. }