WechatCheckController.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. namespace Modules\Video\Http\Controllers;
  3. use App\Jobs\Video\WechatCheck;
  4. use Catch\Base\CatchController;
  5. use Illuminate\Foundation\Validation\ValidatesRequests;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\DB;
  8. use Modules\Common\Errors\Errors;
  9. use Modules\Common\Exceptions\CommonBusinessException;
  10. use Modules\Manage\Services\WechatMiniprogramService;
  11. /**
  12. * 微信提审
  13. */
  14. class WechatCheckController extends CatchController
  15. {
  16. use ValidatesRequests;
  17. /**
  18. * 添加提审
  19. * @param Request $request
  20. */
  21. public function add(Request $request) {
  22. $this->validate($request, [
  23. 'video_id'=>'required',
  24. 'producer' => 'required|string|max:256',
  25. 'playwright' => 'required|string|max:256',
  26. 'production_license_img' => 'required|url',
  27. 'authorized_img' => 'required|url',
  28. 'registration_number' => 'required'
  29. ]);
  30. $data = $request->all();
  31. $appid = WechatMiniprogramService::getDuanjuCheckAppid();
  32. $data['created_at'] = $data['updated_at'] = date('Y-m-d H:i:s');
  33. $data['appid'] = $appid;
  34. DB::table('video_wechat_check')
  35. ->insert($data);
  36. return 'ok';
  37. }
  38. /**
  39. * 修改
  40. * @param Request $request
  41. */
  42. public function update(Request $request) {
  43. $this->validate($request, [
  44. 'id'=>'required',
  45. 'producer' => 'required|string|max:256',
  46. 'playwright' => 'required|string|max:256',
  47. 'production_license_img' => 'required|url',
  48. 'authorized_img' => 'required|url',
  49. 'registration_number' => 'required'
  50. ]);
  51. $data = $request->only(['producer', 'playwright', 'production_license_img', 'authorized_img', 'registration_number']);
  52. $data['updated_at'] = date('Y-m-d H:i:s');
  53. DB::table('video_wechat_check')
  54. ->where('id', $request->input('id'))
  55. ->where('is_enabled', 1)
  56. ->whereIn('status', [0,4])
  57. ->update($data);
  58. return 'ok';
  59. }
  60. /**
  61. * 删除
  62. * @param Request $request
  63. */
  64. public function delete(Request $request) {
  65. $this->validate($request, ['id' => 'required']);
  66. DB::table('video_wechat_check')
  67. ->whereIn('status', [0,4])
  68. ->where([
  69. 'id' => $request->input('id'),
  70. 'is_enabled' => 1,
  71. ])->update([
  72. 'is_enabled' => 0,
  73. 'updated_at' => date('Y-m-d H:i:s')
  74. ]);
  75. return 'ok';
  76. }
  77. /**
  78. * 提审记录列表
  79. * @param Request $request
  80. */
  81. public function list(Request $request) {
  82. $videoId = $request->input('video_id');
  83. $producer = $request->input('producer');
  84. $playwright = $request->input('playwright');
  85. $status = $request->input('status','0');
  86. $result = DB::table('video_wechat_check as check')
  87. ->join('videos', 'videos.id', 'check.video_id')
  88. ->whereIn('check.status', explode(',', $status))
  89. ->where([
  90. 'check.is_enabled' => 1,
  91. ])->when($videoId, function ($query, $videoId) {
  92. return $query->where('check.video_id', $videoId);
  93. })->when($producer, function ($query, $producer){
  94. return $query->where('check.producer', 'like', '%'. $producer. '%');
  95. })->when($playwright, function ($query, $playwright){
  96. return $query->where('check.playwright', 'like', '%'. $playwright. '%');
  97. })->select('check.id', 'videos.name', 'videos.note', 'videos.total_episode_num',
  98. 'videos.cover_image','check.status','check.producer',
  99. 'check.playwright', 'check.production_license_img', 'check.authorized_img', 'check.apply_at',
  100. 'check.check_at', 'check.check_reason', 'check.registration_number', 'check.video_id')
  101. ->orderBy('check.id','desc')
  102. ->paginate($request->input('limit', 20));
  103. $statusMap = config('video.wechat.dramaCheckStatus');
  104. foreach ($result as $item) {
  105. $item->status_str = $statusMap[$item->status] ?? '';
  106. }
  107. return $result;
  108. }
  109. /**
  110. * 微信提审
  111. * @param Request $request
  112. */
  113. public function check(Request $request) {
  114. $this->validate($request, [
  115. 'ids' => 'required|array'
  116. ]);
  117. $ids = $request->input('ids');
  118. $now = date('Y-m-d H:i:s');
  119. foreach ($ids as $id) {
  120. $record = DB::table('video_wechat_check as check')
  121. ->join('videos', 'videos.id', 'check.video_id')
  122. ->where(['check.is_enabled' => 1, 'check.id' => $id])
  123. ->select('check.video_id', 'videos.total_episode_num', 'videos.name')
  124. ->first();
  125. if(!$record) {
  126. CommonBusinessException::throwError(Errors::WECHAT_CHECK_RECORD_NOT_EXISTS);
  127. }
  128. $medias = DB::table('video_series_wechat_check')
  129. ->where('video_id', $record->video_id)
  130. ->where(['sync_status' => 4, 'is_enabled' => 1])
  131. ->where('media_id', '<>', 0)
  132. ->get();
  133. if($medias->count() != $record->total_episode_num) {
  134. CommonBusinessException::throwError([Errors::SYNC_WECHAT_NOT_OK[0],
  135. sprintf('%s,同步到微信:%s集,总集数:%s集', $record->name, $medias->count(), $record->total_episode_num)]);
  136. }
  137. }
  138. DB::table('video_wechat_check')
  139. ->whereIn('id', $ids)
  140. ->whereIn('status', [0, 4])
  141. ->update([
  142. 'status' => 5,
  143. 'updated_at' => $now,
  144. 'apply_at' => $now,
  145. ]);
  146. $traceContext = getTraceContext();
  147. foreach ($ids as $id) {
  148. WechatCheck::dispatch([
  149. 'id' => $id,
  150. 'traceInfo' => $traceContext->getTraceInfo()
  151. ])->onQueue('{duanju_manage}.video.wechatCheck')->onConnection('queue-redis');
  152. }
  153. return 'ok';
  154. }
  155. }