UserGroupRepository.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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\repositories\user;
  12. use app\common\dao\user\UserGroupDao;
  13. use app\common\repositories\BaseRepository;
  14. use FormBuilder\Exception\FormBuilderException;
  15. use FormBuilder\Factory\Elm;
  16. use FormBuilder\Form;
  17. use think\db\exception\DataNotFoundException;
  18. use think\db\exception\DbException;
  19. use think\db\exception\ModelNotFoundException;
  20. use think\facade\Route;
  21. /**
  22. * Class UserGroupRepository
  23. * @package app\common\repositories\user
  24. * @author xaboy
  25. * @day 2020-05-07
  26. * @mixin UserGroupDao
  27. */
  28. class UserGroupRepository extends BaseRepository
  29. {
  30. /**
  31. * @var UserGroupDao
  32. */
  33. protected $dao;
  34. /**
  35. * UserGroupRepository constructor.
  36. * @param UserGroupDao $dao
  37. */
  38. public function __construct(UserGroupDao $dao)
  39. {
  40. $this->dao = $dao;
  41. }
  42. /**
  43. * 根据条件获取列表数据
  44. *
  45. * 本函数用于根据给定的条件数组 $where,从数据库中检索满足条件的数据列表。
  46. * 它支持分页查询,每页的数据数量由 $limit 指定,查询的页码由 $page 指定。
  47. * 函数返回一个包含两个元素的数组,第一个元素是数据总数 $count,第二个元素是当前页的数据列表 $list。
  48. *
  49. * @param array $where 查询条件数组
  50. * @param int $page 查询的页码
  51. * @param int $limit 每页的数据数量
  52. * @return array 返回包含 'count' 和 'list' 两个元素的数组
  53. */
  54. public function getList(array $where, $page, $limit)
  55. {
  56. // 根据条件查询数据
  57. $query = $this->dao->search($where);
  58. // 统计满足条件的数据总数
  59. $count = $query->count($this->dao->getPk());
  60. // 获取当前页的数据列表
  61. $list = $query->page($page, $limit)->select();
  62. // 返回数据总数和当前页的数据列表
  63. return compact('count', 'list');
  64. }
  65. /**
  66. * 创建或编辑用户分组的表单
  67. *
  68. * 本函数用于生成添加新用户分组或编辑已存在用户分组的表单。根据$id$参数的值来判断是创建新分组还是编辑已有分组。
  69. * 表单的动作(action)根据$id$是否有值来决定是向系统请求创建新用户分组还是更新已有用户分组的信息。
  70. *
  71. * @param int|null $id 用户分组的ID。如果ID为null,则表示创建新分组;如果ID有值,则表示编辑已存在的分组。
  72. * @param array $formData 表单的初始数据。用于在编辑分组时填入已有的分组信息。
  73. * @return \EasyWeChat\Kernel\Messages\MiniprogramForm|Form
  74. */
  75. public function form($id = null, array $formData = [])
  76. {
  77. // 判断当前操作是创建还是编辑用户分组
  78. $isCreate = is_null($id);
  79. // 根据操作类型生成表单的动作URL
  80. $action = Route::buildUrl($isCreate ? 'systemUserGroupCreate' : 'systemUserGroupUpdate', $isCreate ? [] : compact('id'))->build();
  81. // 返回生成的表单对象,设置表单的动作、标题和初始数据
  82. return Elm::createForm($action, [
  83. Elm::input('group_name', '分组名称:')->placeholder('请输入用户分组名称')->required()
  84. ])->setTitle($isCreate ? '添加用户分组' : '编辑用户分组')->formData($formData);
  85. }
  86. /**
  87. * 更新表单数据。
  88. * 该方法用于根据给定的ID获取数据库中的记录,并使用这些数据来构建一个表单,以便用户可以查看或编辑这些数据。
  89. *
  90. * @param int $id 表单记录的唯一标识符。
  91. * @return array|\EasyWeChat\Kernel\Messages\MiniprogramForm|Form
  92. */
  93. public function updateForm($id)
  94. {
  95. // 通过ID从数据库获取记录,并转换为数组格式,用于填充表单
  96. return $this->form($id, $this->dao->get($id)->toArray());
  97. }
  98. }