VideoCommentService.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2017~2021 LARAVEL研发中心
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://www.laravel.cn
  8. // +----------------------------------------------------------------------
  9. // | Author: laravel开发员 <laravel.qq.com>
  10. // +----------------------------------------------------------------------
  11. namespace App\Services\Api;
  12. use App\Models\MemberCollectModel;
  13. use App\Models\VideoCollectModel;
  14. use App\Models\VideoCommentModel;
  15. use App\Models\VideoModel;
  16. use App\Services\BaseService;
  17. use App\Services\RedisService;
  18. use BN\Red;
  19. /**
  20. * 短视频评论管理-服务类
  21. * @author laravel开发员
  22. * @since 2020/11/11
  23. * @package App\Services\Api
  24. */
  25. class VideoCommentService extends BaseService
  26. {
  27. // 静态对象
  28. protected static $instance = null;
  29. /**
  30. * 构造函数
  31. * @author laravel开发员
  32. * @since 2020/11/11
  33. * MemberCollectService constructor.
  34. */
  35. public function __construct()
  36. {
  37. $this->model = new VideoCommentModel();
  38. }
  39. /**
  40. * 静态入口
  41. * @return static|null
  42. */
  43. public static function make()
  44. {
  45. if (!self::$instance) {
  46. self::$instance = (new static());
  47. }
  48. return self::$instance;
  49. }
  50. /**
  51. * 列表数据
  52. * @param $params
  53. * @param int $pageSize
  54. * @return array
  55. */
  56. public function getDataList($params, $pageSize = 15, $field='', $userId=0)
  57. {
  58. $where = ['a.mark' => 1,'a.status'=>1,'b.status'=>1,'b.mark'=>1];
  59. $field = $field? $field : 'lev_a.*,lev_b.id as cid,lev_b.user_id as collect_user_id,lev_a.type as collect_type';
  60. $sortType = isset($params['sort_type']) ? $params['sort_type'] : 1;
  61. $order = 'id desc';
  62. if($sortType == 1){
  63. $order = 'lev_b.create_time desc, lev_b.id desc';
  64. }
  65. $list = $this->model->with(['member'])
  66. ->from('video_comments as b')
  67. ->leftJoin('video as a', 'a.id', '=', 'b.collect_id')
  68. ->where($where)
  69. ->where(function ($query) use ($params) {
  70. $userId = isset($params['user_id']) ? $params['user_id'] : 0;
  71. if ($userId > 0) {
  72. $query->where('a.user_id', $userId);
  73. }
  74. $collectUserId = isset($params['collect_uid']) ? $params['collect_uid'] : 0;
  75. if ($collectUserId > 0) {
  76. $query->where('a.collect_uid', $collectUserId);
  77. }
  78. $isRead = isset($params['is_read'])? $params['is_read'] : 0;
  79. $isRead = $isRead>0? $isRead : 0;
  80. if ($isRead > 0) {
  81. $query->where('a.is_read', $isRead);
  82. }
  83. $type = isset($params['type'])? $params['type'] : 0;
  84. $type = $type>0? $type : 1;
  85. if ($type > 0) {
  86. $query->where('a.type', $type);
  87. }
  88. })
  89. ->where(function ($query) use ($params) {
  90. $keyword = isset($params['kw']) ? $params['kw'] : '';
  91. if ($keyword) {
  92. $query->where('a.title', 'like', "%{$keyword}%")
  93. ->orWhere('a.tags','like',"%{$keyword}%")
  94. ->orWhere('a.description','like',"%{$keyword}%");
  95. }
  96. })
  97. ->selectRaw($field)
  98. ->orderByRaw($order)
  99. ->paginate($pageSize > 0 ? $pageSize : 9999999);
  100. $list = $list ? $list->toArray() : [];
  101. if ($list) {
  102. foreach ($list['data'] as &$item) {
  103. $item['time_text'] = isset($item['create_time']) && $item['create_time']? dateFormat($item['create_time']) : '';
  104. $item['thumb'] = isset($item['thumb']) && $item['thumb'] ? get_image_url($item['thumb']) : '';
  105. $item['file_url'] = isset($item['file_url']) && $item['file_url'] ? get_image_url($item['file_url']) : '';
  106. if(isset($item['albums'])){
  107. $albums = $item['albums']? json_decode($item['albums'], true):[];
  108. $item['albums'] = $albums? get_images_preview($albums) : [];
  109. }
  110. if(isset($item['music_url'])){
  111. $item['music_url'] = $item['music_url']? get_image_url($item['music_url']) : '';
  112. }
  113. $member = isset($item['member'])? $item['member'] : [];
  114. if($member){
  115. $member['avatar'] = isset($member['avatar'])? get_image_url($member['avatar']) : '';
  116. }
  117. $item['tags'] = isset($item['tags']) && $item['tags']? explode(',', $item['tags']) : [];
  118. $item['like_num'] = isset($item['like_num']) && $item['like_num']? format_num($item['like_num']) : 0;
  119. $item['collect_num'] = isset($item['collect_num']) && $item['collect_num']? format_num($item['collect_num']) : 0;
  120. $item['views'] = isset($item['views']) && $item['views']? format_num($item['views']) : 0;
  121. $item['member'] = $member;
  122. }
  123. }
  124. return [
  125. 'pageSize' => $pageSize,
  126. 'total' => isset($list['total']) ? $list['total'] : 0,
  127. 'list' => isset($list['data']) ? $list['data'] : []
  128. ];
  129. }
  130. /**
  131. * 取消
  132. * @param $userId
  133. * @return bool
  134. */
  135. public function cancel($userId)
  136. {
  137. // 参数
  138. $ids = request()->post('ids','');
  139. $ids = $ids? explode(',', $ids) : [];
  140. $type = request()->post('type',0);
  141. if (empty($ids) && $type == 0) {
  142. $this->error = 1033;
  143. return false;
  144. }
  145. if($type){
  146. $this->model->where(['user_id'=> $userId,'status'=>1,'mark'=>1])->update(['status'=>2,'update_time'=>time()]);
  147. }else {
  148. $this->model->where(['user_id'=> $userId,'status'=>1,'mark'=>1])->whereIn('id', $ids)->update(['status'=>2,'update_time'=>time()]);
  149. }
  150. $this->error = 1002;
  151. return true;
  152. }
  153. }