CreatorController.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace Modules\Manage\Controllers;
  3. use App\Constants\CommonConstant;
  4. use App\Repositories\CreatorRepository;
  5. use App\Repositories\Criterias\CommonLimitCriteria;
  6. use App\Repositories\Criterias\CommonWithCriteria;
  7. use App\Repositories\Criterias\CreatorPagesCriteria;
  8. use App\Repositories\Utils\M3u8CacheRepository;
  9. use Carbon\Carbon;
  10. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  11. class CreatorController extends BaseController
  12. {
  13. public function lists()
  14. {
  15. $validatorFactory = make(ValidatorFactoryInterface::class);
  16. $inputData = $this->getJsonData();
  17. $rules = [
  18. 'page' => 'nullable|int',
  19. 'page_size' => 'nullable|int',
  20. 'status' => 'nullable|int',
  21. 'level' => 'nullable|int',
  22. 'user_nick' => 'nullable',
  23. 'user_code' => 'nullable',
  24. 'user_mobile' => 'nullable'
  25. ];
  26. $validator = $validatorFactory->make($inputData, $rules);
  27. if ($validator->fails()) {
  28. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  29. return json_fail($validator->errors()->first());
  30. }
  31. $page = $inputData['page'] ?? 1;
  32. $pageSize = $inputData['page_size'] ?? CommonConstant::PAGE_SIZE;
  33. if ($pageSize > 100) {
  34. $pageSize = CommonConstant::PAGE_SIZE;
  35. }
  36. $page = format_page($page);
  37. $pageSize = intval($pageSize);
  38. $creatorRepo = make(CreatorRepository::class);
  39. $params = [];
  40. if (isset($inputData['status'])) {
  41. $params['status'] = $inputData['status'];
  42. }
  43. if (isset($inputData['level'])) {
  44. $params['level'] = $inputData['level'];
  45. }
  46. if (!empty($inputData['user_nick'])) {
  47. $params['user_nick'] = $inputData['user_nick'];
  48. }
  49. if (!empty($inputData['user_code'])) {
  50. $params['user_code'] = $inputData['user_code'];
  51. }
  52. if (!empty($inputData['user_mobile'])) {
  53. $params['user_mobile'] = $inputData['user_mobile'];
  54. }
  55. $orderBy = [
  56. ['id', 'DESC']
  57. ];
  58. $lists = $creatorRepo->pushCriteria(new CreatorPagesCriteria($params))
  59. ->pushCriteria(new CommonWithCriteria(['user']))
  60. ->pushCriteria(new CommonLimitCriteria($orderBy))
  61. ->paginate($pageSize, ['*'], $page);
  62. $lists = $lists->toArray();
  63. /*if (!empty($lists['data'])) {
  64. foreach ($lists['data'] as &$v) {
  65. $v['user']['avatar'] = M3u8CacheRepository::getImageUrl($v['user']['avatar']);
  66. if ($v['user']['gender'] == 3) {
  67. $v['user']['gender'] = 2;
  68. }
  69. }
  70. }*/
  71. return json_success($lists);
  72. }
  73. /**
  74. * 审核状态
  75. * @return mixed
  76. */
  77. public function changeStatus()
  78. {
  79. $validatorFactory = make(ValidatorFactoryInterface::class);
  80. $inputData = $this->getJsonData();
  81. $rules = [
  82. 'id' => 'required|int',
  83. 'target_status' => 'required|int',
  84. 'reject_reason' => 'nullable', // 拒绝原因.
  85. ];
  86. $validator = $validatorFactory->make($inputData, $rules);
  87. if ($validator->fails()) {
  88. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  89. return json_fail($validator->errors()->first());
  90. }
  91. $creatorRepo = make(CreatorRepository::class);
  92. $targetStatus = intval(data_get($inputData, 'target_status', 3));
  93. $obj = $creatorRepo->find($inputData['id']);
  94. if (empty($obj)) {
  95. return json_fail('对象不存在');
  96. }
  97. $rejectReason = data_get($inputData, 'reject_reason', '');
  98. if ($obj->status == $targetStatus) {
  99. return json_fail('前后状态无变化');
  100. }
  101. $msgSubjct = '恭喜您,原创者审核通过.';
  102. $msgContent = '您现在可以马上上传时视频挣钱了.有收入可以随时提现.';
  103. $obj->reject_reason = '';
  104. $obj->reject_at = null;
  105. if ($targetStatus == 2) {
  106. $obj->reject_reason = $rejectReason;
  107. $obj->reject_at = Carbon::now()->toDateTimeString();
  108. $msgSubjct = '您申请原创者,未通过审核';
  109. $msgContent = '拒绝原因:' . $rejectReason . ', 若有异议,请联系客服!';
  110. }
  111. $obj->status = $targetStatus;
  112. $saveStatus = $obj->save();
  113. if ($saveStatus) {
  114. $msgSetarr = [
  115. 'subject' => $msgSubjct,
  116. 'struct_type' => 'text',
  117. 'receive_uid' => $obj->user_uid,
  118. 'receive_type' => 'user',
  119. 'from_uid' => '',
  120. 'from_type' => 'sys',
  121. 'content' => $msgContent,
  122. ];
  123. // TODO 发送站内系统消息, 依赖雏姬的分支 jim_sys_message
  124. }
  125. return json_success(['result' => 'success']);
  126. }
  127. public function detail()
  128. {
  129. $validatorFactory = make(ValidatorFactoryInterface::class);
  130. $inputData = $this->getJsonData();
  131. $rules = [
  132. 'user_code' => 'required',
  133. ];
  134. $validator = $validatorFactory->make($inputData, $rules);
  135. if ($validator->fails()) {
  136. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  137. return json_fail($validator->errors()->first());
  138. }
  139. $creatorRepo = make(CreatorRepository::class);
  140. $obj = $creatorRepo->detail($inputData['user_code']);
  141. if (empty($obj)) {
  142. return json_fail('对象不存在');
  143. }
  144. $result = $obj->toArray();
  145. return json_success($result);
  146. }
  147. }