UserCourseForm.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App\Admin\Actions\Users;
  3. use App\Models\Course;
  4. use App\Models\CourseUser;
  5. use App\Models\User;
  6. use App\Models\UserExtra;
  7. use App\Models\UserIdentify;
  8. use App\Models\UserMessage;
  9. use App\Models\UserVipLogModel;
  10. use App\Models\VipModel;
  11. use App\Services\Api\UserService;
  12. use App\Services\TencentImMessage;
  13. use Dcat\Admin\Contracts\LazyRenderable;
  14. use Dcat\Admin\Traits\LazyWidget;
  15. use Dcat\Admin\Widgets\Form;
  16. use Illuminate\Support\Facades\DB;
  17. use Illuminate\Support\Facades\Log;
  18. use PHPUnit\Util\Exception;
  19. class UserCourseForm extends Form implements LazyRenderable
  20. {
  21. use LazyWidget;
  22. public function __construct($data = [], $key = null)
  23. {
  24. parent::__construct($data, $key);
  25. }
  26. public function handle(array $input)
  27. {
  28. DB::beginTransaction();
  29. try {
  30. $userCourse = CourseUser::query()->find($input['id']);
  31. if ($input['status'] > 0) {
  32. if ($userCourse['type'] == 1) { //如果当前是主场,就把用户名下其他会员球场变为副场
  33. DB::table('course_users')->where('user_id', $userCourse['user_id'])->where('id', '<>', $input['id'])->update(['type' => 2]);
  34. }
  35. $userCourse->status = $input['status'];
  36. $userCourse->save();
  37. $course = Course::query()->find($userCourse->course_id);
  38. //给用户添加消息记录
  39. $user = User::query()->find($userCourse->user_id);
  40. $lang = $user->lang ?: 'en';
  41. if ($input['status'] == 1) {
  42. $content = trans('api.YOU_HAVE_PASSED', [], $lang) . ' ' . $course['name'] . ' ' . trans('api.MEMBERSHIP_CERTIFICATION', [], $lang);
  43. } elseif ($input['status'] == 2) {
  44. $content = trans('api.YOU_DO_NOT_HAVE_PASSED', [], $lang) . ' ' . $course['name'] . ' ' . trans('api.MEMBERSHIP_CERTIFICATION', [], $lang);
  45. }
  46. //发送消息通知
  47. $im_message = new TencentImMessage();
  48. $send_data['from_user'] = 'IM_USER_1';
  49. $send_data['to_user'] = $user['tencent_im_user_id'];
  50. $send_data['msg'] = $content;
  51. $im_message->send_msg($send_data);
  52. }
  53. UserService::changeIntegral($this->user->id, 4); //赠送积分
  54. DB::commit();
  55. } catch (\Exception $exception) {
  56. DB::rollBack();
  57. Log::error('后台同意会员球场申请出错:'.$exception->getMessage());
  58. return $this->response()->error(trans('api.NETWORK_ERROR', [], $lang));
  59. }
  60. return $this->response()->success('success')->refresh();
  61. }
  62. public function form()
  63. {
  64. $this->hidden('id')->value($this->payload['id']);
  65. $this->radio('status')->options([0 => trans('course-user.fields.check_pending'), 1 => trans('course-user.fields.pass'), 2 => trans('course-user.fields.refuse')])->default(0);
  66. }
  67. }