AdminCommentController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. namespace App\Http\Controllers\Api\AdminCode;
  3. use App\Http\Controllers\Api\AdminCode\Traits\adminRequestUserData;
  4. use App\Http\Controllers\Api\BaseController;
  5. use App\Http\Controllers\Api\Repositories\WxCommentLikeRepositores;
  6. use App\Http\Controllers\Api\Repositories\WxCommentRepositores;
  7. use App\Http\Controllers\Api\Repositories\WxLikeRepositores;
  8. use App\Http\Controllers\Api\Repositories\WxSyncRelationRepositories;
  9. use App\Http\Controllers\Api\Repositories\WxUserRepositores;
  10. use App\Models\Posts\WxComment;
  11. use App\Models\Posts\WxPost;
  12. use App\Models\User\WxUser;
  13. use Illuminate\Http\Request;
  14. class AdminCommentController extends BaseController
  15. {
  16. use adminRequestUserData;
  17. /**
  18. * author,id,posts_id,comment_id,comment_content,comment_img_url
  19. * 增
  20. * @param Request $request
  21. * @return \Illuminate\Http\JsonResponse
  22. */
  23. public function create(Request $request){
  24. // 检查用户是否存在
  25. if(_empty_($request->author) || _empty_($request->author['id']) || _empty_($request->author['nickName'])){
  26. return $this->fail(1001001, []);
  27. }
  28. // 文章
  29. $postId = WxSyncRelationRepositories::wx_post_id($request->domain, $request->posts_id);
  30. if(!$postId){
  31. return $this->fail(1001003, []);
  32. }
  33. // 评论作者
  34. $uid = WxSyncRelationRepositories::wx_uid($request->domain, $request->author['id']);
  35. if(_empty_($uid)){
  36. $data = $this->collectUserData($request);
  37. $uid = WxUserRepositores::registerUser($data);
  38. if(!$uid){
  39. return $this->fail(200002, ['msg'=>'用户数据插入失败']);
  40. }
  41. }
  42. // 父级评论
  43. $parent_comment_id = null;
  44. $comment_agent_id = null;
  45. if($request->comment_id > 0){
  46. $inner_id = WxSyncRelationRepositories::wx_comment_id($request->domain, $request->comment_id);
  47. $parent_comment = WxComment::find($inner_id);
  48. if($parent_comment){
  49. $parent_comment_id = $parent_comment->id;
  50. $comment_agent_id = $parent_comment->user_id;
  51. }else{
  52. return $this->fail(1001005, []);
  53. }
  54. }
  55. // id
  56. // $posts_id, $comment_id, $reply_user_id, $user_id, $comment_content, $comment_img_url
  57. $r = WxCommentRepositores::admin_add($request->domain, $postId, $parent_comment_id, $comment_agent_id, $uid, $request->comment_content, $request->comment_img_url, $request->id, $request->date);
  58. if($r){
  59. $c = [];
  60. if($request->likes){
  61. $c = $this->likes($request->domain, $request->likes, $request->id, false);
  62. }
  63. return $this->success(['msg'=>'ok', 'likes'=>$c]);
  64. }else{
  65. return $this->fail(200002, []);
  66. }
  67. }
  68. public function likes($domain, $users, $object, $is_post = false){
  69. if(_empty_($users)){
  70. return [];
  71. }
  72. $uids = [];
  73. foreach ($users as $user){
  74. $user_data = [];
  75. $user_data['domain'] = $domain;
  76. $user_data['mp_openId'] = $user['mp_openId'] ?? '';
  77. $user_data['web_openId'] = $user['web_openId'] ?? '';
  78. $user_data['app_openId'] = $user['app_openId'] ?? '';
  79. $user_data['unionId'] = $user['unionId'] ?: '';
  80. $user_data['nickName'] = $user['nickName'];
  81. $user_data['user_background_maps'] = $user['user_background_maps'] ?: '';
  82. $user_data['avatarUrl'] = $user['avatarUrl'] ?: '';
  83. $user_data['gender'] = $user['gender'] ?: 0;
  84. $user_data['external_id'] = $user['id'];
  85. $user_data['date'] = $user['date'];
  86. $uid = WxUserRepositores::registerUser($user_data);
  87. if(!$uid){
  88. continue;
  89. }
  90. $uids[] = $uid;
  91. }
  92. $rs = [];
  93. if($is_post){
  94. foreach ($uids as $uid){
  95. $postId = WxSyncRelationRepositories::wx_post_id($domain, $object);
  96. if($postId){
  97. $r = WxLikeRepositores::admin_like($uid, $postId);
  98. $rs[] = $r;
  99. }
  100. }
  101. }else{
  102. foreach ($uids as $uid){
  103. $commentId = WxSyncRelationRepositories::wx_comment_id($domain, $object);
  104. if($commentId) {
  105. $r = WxCommentLikeRepositores::like($uid, $commentId);
  106. $rs[] = $r;
  107. }
  108. }
  109. }
  110. return $rs;
  111. }
  112. /**
  113. * 删
  114. * @param Request $request
  115. * @return \Illuminate\Http\JsonResponse
  116. */
  117. public function delete(Request $request){
  118. $inner_id = WxSyncRelationRepositories::wx_comment_id($request->domain, $request->id);
  119. if(!$inner_id){
  120. return $this->fail(200003, ['msg'=>'没有对应的评论']);
  121. }
  122. if( WxComment::where('id', $inner_id)->delete() ){
  123. return $this->success(['msg'=>'ok']);
  124. }else{
  125. return $this->fail(200002, ['msg'=>'评论删除失败']);
  126. }
  127. }
  128. /**
  129. * 改
  130. * @param Request $request
  131. * @return \Illuminate\Http\JsonResponse
  132. */
  133. public function update(Request $request){
  134. }
  135. }