Modules_Manage_Controllers_CreatorController.proxy.php 5.6 KB

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