BroadcastAssistant.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  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\controller\merchant\store\broadcast;
  12. use app\common\repositories\store\broadcast\BroadcastAssistantRepository;
  13. use crmeb\basic\BaseController;
  14. use think\App;
  15. use think\exception\ValidateException;
  16. class BroadcastAssistant extends BaseController
  17. {
  18. protected $repository;
  19. public function __construct(App $app, BroadcastAssistantRepository $repository)
  20. {
  21. parent::__construct($app);
  22. $this->repository = $repository;
  23. }
  24. /**
  25. * 获取用户列表
  26. * 本函数用于根据请求参数获取特定条件下的用户列表,支持分页查询。
  27. * 参数:
  28. * - page: 当前页码,用于分页查询。
  29. * - limit: 每页显示的记录数,用于分页查询。
  30. * - username: 用户名,可选,用于按用户名查询。
  31. * - nickname: 昵称,可选,用于按昵称查询。
  32. * - mer_id: 商户ID,可选,用于按商户查询。
  33. * 返回值:
  34. * - 返回查询结果的JSON对象,包含用户列表数据及分页信息。
  35. */
  36. public function lst()
  37. {
  38. // 解构获取当前页码和每页记录数
  39. [$page, $limit] = $this->getPage();
  40. // 从请求中获取查询参数,包括用户名和昵称
  41. $where = $this->request->params(['username', 'nickname']);
  42. // 获取当前请求的商户ID,并将其加入查询条件
  43. $where['mer_id'] = $this->request->merId();
  44. // 调用repository的getList方法进行查询,并返回查询结果
  45. return app('json')->success($this->repository->getList($where, $page, $limit));
  46. }
  47. /**
  48. * 创建表单的JSON响应
  49. *
  50. * 本函数用于生成关于表单的数据,并将其封装在一个成功的JSON响应中。
  51. * 它通过调用repository的form方法来获取表单数据,然后将这些数据转换为适合JSON响应的格式。
  52. * 最后,它使用应用容器中的'json'服务来创建并返回这个成功的JSON响应。
  53. *
  54. * @return \Illuminate\Http\JsonResponse 表单数据的JSON响应,包含成功状态码和表单数据。
  55. */
  56. public function createForm()
  57. {
  58. // 调用app('json')->success()方法返回一个成功的JSON响应,其中包含formToData()处理后的表单数据
  59. return app('json')->success(formToData($this->repository->form(null)));
  60. }
  61. /**
  62. * 根据指定ID更新表单数据。
  63. *
  64. * 本函数旨在通过提供的ID从数据库中检索表单数据,并对其进行更新。首先,它会验证请求的ID是否对应于现有数据,
  65. * 如果数据不存在,则返回一个错误响应。如果数据存在,它将表单数据转换为合适的格式,然后返回成功响应携带该数据。
  66. *
  67. * @param int $id 需要更新的表单数据的ID。
  68. * @return \Illuminate\Http\JsonResponse 成功时返回更新的表单数据,失败时返回错误信息。
  69. */
  70. public function updateForm($id)
  71. {
  72. // 检查指定ID的数据是否存在,如果不存在则返回错误信息。
  73. if (!$this->repository->merExists($id, $this->request->merId()))
  74. return app('json')->fail('数据不存在');
  75. // 如果数据存在,获取表单数据并转换为合适的形式,然后返回成功响应携带该数据。
  76. return app('json')->success(formToData($this->repository->form(intval($id))));
  77. }
  78. /**
  79. * 创建新记录
  80. *
  81. * 本函数用于处理创建新数据的逻辑。它首先通过检查参数的合法性来确保数据的准确性和安全性,
  82. * 然后将包含有效参数的数据用于创建新记录。此函数特别适用于需要进行参数验证和记录创建的场景,
  83. * 如在商城系统中创建新的商家记录。
  84. *
  85. * @return \think\response\Json 创建成功后的响应对象,包含成功消息。
  86. */
  87. public function create()
  88. {
  89. // 检查并获取请求中的参数
  90. $data = $this->checkParams();
  91. // 获取请求中的商家ID,并将其添加到数据数组中
  92. $data['mer_id'] = $this->request->merId();
  93. // 使用仓库接口创建新记录
  94. $this->repository->create($data);
  95. // 返回成功的JSON响应
  96. return app('json')->success('添加成功');
  97. }
  98. /**
  99. * 根据指定ID更新数据。
  100. * 此方法首先验证请求中的ID是否存在,如果存在,则更新数据;如果不存在,则返回错误信息。
  101. * 使用$this->checkParams()来获取和验证请求中的参数,确保数据更新的准确性。
  102. *
  103. * @param int $id 需要更新的数据的ID。
  104. * @return \Illuminate\Http\JsonResponse 更新成功时返回成功的JSON响应,否则返回失败的JSON响应。
  105. */
  106. public function update($id)
  107. {
  108. // 检查当前请求所操作的数据是否存在于仓库中
  109. if (!$this->repository->merExists($id, $this->request->merId()))
  110. // 如果数据不存在,则返回一个失败的JSON响应
  111. return app('json')->fail('数据不存在');
  112. // 使用验证后的参数更新数据
  113. $this->repository->update($id, $this->checkParams());
  114. // 更新成功后,返回一个成功的JSON响应
  115. return app('json')->success('修改成功');
  116. }
  117. /**
  118. * 检查请求参数是否符合要求
  119. *
  120. * 本函数用于从请求中提取指定的参数,并确保这些参数中必须的项(如用户名和昵称)不为空。
  121. * 如果关键参数为空,则抛出一个验证异常,提示微信号或昵称不可为空。
  122. * 这样可以提前防止无效或不完整的数据进入后续的业务逻辑,保障数据的完整性和操作的准确性。
  123. *
  124. * @return array 返回包含用户名、昵称和标记的数据数组
  125. * @throws ValidateException 如果用户名或昵称为空,则抛出验证异常
  126. */
  127. public function checkParams()
  128. {
  129. // 从请求中提取用户名、昵称和标记参数
  130. $data = $this->request->params(['username', 'nickname', 'mark']);
  131. // 检查用户名和昵称是否为空,如果为空则抛出异常
  132. if (!$data['username'] || !$data['nickname']) {
  133. throw new ValidateException('微信号或昵称不可为空');
  134. }
  135. // 返回提取并验证过的参数数据
  136. return $data;
  137. }
  138. /**
  139. * 删除指定ID的实体。
  140. *
  141. * 此方法首先验证请求的ID是否存在,如果不存在,则返回一个错误响应。
  142. * 如果ID存在,它将尝试删除该实体,并返回一个成功响应。
  143. * 这个方法体现了业务逻辑中对实体进行删除的操作,它封装了验证和删除的细节,
  144. * 并通过返回标准的JSON响应来与调用者进行交互。
  145. *
  146. * @param int $id 要删除的实体的ID。
  147. * @return \Illuminate\Http\JsonResponse 删除成功时返回成功的JSON响应,删除失败(ID不存在)时返回失败的JSON响应。
  148. */
  149. public function delete($id)
  150. {
  151. // 检查指定ID的实体是否存在,如果不存在则返回失败响应。
  152. if (!$this->repository->merExists($id, $this->request->merId()))
  153. return app('json')->fail('数据不存在');
  154. // 删除指定ID的实体。
  155. $this->repository->delete((int)$id);
  156. // 删除成功,返回成功响应。
  157. return app('json')->success('删除成功');
  158. }
  159. }