AdminActionsController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace App\Http\Controllers\Api\AdminCode;
  3. use App\Wen\Utils\Utils;
  4. use App\Http\Controllers\Api\AdminCode\Traits\adminRequestUserData;
  5. use App\Http\Controllers\Api\BaseController;
  6. use App\Http\Controllers\Api\Repositories\WxCollectRepositores;
  7. use App\Http\Controllers\Api\Repositories\WxCommentLikeRepositores;
  8. use App\Http\Controllers\Api\Repositories\WxLikeRepositores;
  9. use App\Http\Controllers\Api\Repositories\WxSyncRelationRepositories;
  10. use App\Http\Controllers\Api\Repositories\WxUserFollowRepositores;
  11. use App\Http\Controllers\Api\Repositories\WxUserRepositores;
  12. use App\Models\Posts\WxComment;
  13. use App\Models\Posts\WxPost;
  14. use App\Models\User\WxUser;
  15. use Illuminate\Http\Request;
  16. class AdminActionsController extends BaseController
  17. {
  18. use adminRequestUserData;
  19. /**
  20. * 增
  21. * @param Request $request
  22. * @return \Illuminate\Http\JsonResponse
  23. */
  24. public function batch(Request $request){
  25. if(_empty_($request->actions)){
  26. return $this->fail(1001006, []);
  27. }
  28. $success_actions = [];
  29. $fail_actions = [];
  30. $todo_actions = [];
  31. foreach ($request->actions as $action){
  32. $action['author']['nickName'] = trim($action['author']['nickName'] ?? '');
  33. // 检查用户是否存在
  34. if(_empty_($action['author']) || _empty_($action['author']['id']) || _empty_($action['author']['nickName'])){
  35. continue;
  36. }
  37. if(_empty_($action['id'])){
  38. continue;
  39. }
  40. $uid = WxSyncRelationRepositories::wx_uid($request->domain, $action['author']['id']);
  41. if(!$uid){
  42. $data = [];
  43. $data['domain'] = $request->domain;
  44. $data['mp_openId'] = $action['author']['mp_openId'] ?? '';
  45. $data['web_openId'] = $action['author']['web_openId'] ?? '';
  46. $data['app_openId'] = $action['author']['app_openId'] ?? '';
  47. $data['unionId'] = $action['author']['unionId'] ?: '';
  48. $data['nickName'] = $action['author']['nickName'];
  49. $data['user_background_maps'] = $action['author']['user_background_maps'] ?: '';
  50. $data['avatarUrl'] = $action['author']['avatarUrl'] ?: '';
  51. $data['gender'] = $action['author']['gender'] ?: 0;
  52. $data['external_id'] = $action['author']['id'];
  53. $data['date'] = $action['author']['date'];
  54. $uid = WxUserRepositores::registerUser($data);
  55. if(!$uid){
  56. return $this->fail(200002, ['msg'=>'用户数据插入失败']);
  57. }
  58. }
  59. sleep(1);
  60. $r = null;
  61. if($action['type'] == 'like'){
  62. $postId = WxSyncRelationRepositories::wx_post_id($request->domain, $action['object']);
  63. if($postId){
  64. $r = WxLikeRepositores::admin_like($uid, $postId);
  65. }else{
  66. $todo_actions[] = ['type'=>'post', 'object'=>$action['object']];
  67. }
  68. }else if($action['type'] == 'unlike'){
  69. $postId = WxSyncRelationRepositories::wx_post_id($request->domain, $action['object']);
  70. if($postId) {
  71. $r = WxLikeRepositores::unlike($uid, $postId);
  72. }else{
  73. $todo_actions[] = ['type'=>'post', 'object'=>$action['object']];
  74. }
  75. }else if($action['type'] == 'collectPost'){
  76. $postId = WxSyncRelationRepositories::wx_post_id($request->domain, $action['object']);
  77. if($postId) {
  78. $r = WxCollectRepositores::collect($uid, $postId);
  79. }else{
  80. $todo_actions[] = ['type'=>'post', 'object'=>$action['object']];
  81. }
  82. }else if($action['type'] == 'unCollectPost'){
  83. $postId = WxSyncRelationRepositories::wx_post_id($request->domain, $action['object']);
  84. if($postId) {
  85. $r = WxCollectRepositores::uncollect($uid, $postId);
  86. }else{
  87. $todo_actions[] = ['type'=>'post', 'object'=>$action['object']];
  88. }
  89. }else if($action['type'] == 'commentUp'){
  90. $commentId = WxSyncRelationRepositories::wx_comment_id($request->domain, $action['object']);
  91. if($commentId) {
  92. $r = WxCommentLikeRepositores::like($uid, $commentId);
  93. }else{
  94. $todo_actions[] = ['type'=>'comment', 'object'=>$action['object']];
  95. }
  96. }else if($action['type'] == 'unCommentUp'){
  97. $commentId = WxSyncRelationRepositories::wx_comment_id($request->domain, $action['object']);
  98. if($commentId) {
  99. $r = WxCommentLikeRepositores::unlike($uid, $commentId);
  100. }else{
  101. $todo_actions[] = ['type'=>'comment', 'object'=>$action['object']];
  102. }
  103. }else if($action['type'] == 'followUser'){
  104. $uid = WxSyncRelationRepositories::wx_uid($request->domain, $action['object']);
  105. if($uid) {
  106. $r = WxUserFollowRepositores::follow($uid, $uid);
  107. }else{
  108. $todo_actions[] = ['type'=>'user', 'object'=>$action['object']];
  109. }
  110. }else if($action['type'] == 'unfollowUser'){
  111. $uid = WxSyncRelationRepositories::wx_uid($request->domain, $action['object']);
  112. if($uid) {
  113. $r = WxUserFollowRepositores::unfollow($uid, $uid);
  114. }else{
  115. $todo_actions[] = ['type'=>'user', 'object'=>$action['object']];
  116. }
  117. }
  118. if($r){
  119. $success_actions[] = $action['id'];
  120. }else{
  121. $fail_actions[] = $action['id'];
  122. }
  123. }
  124. return $this->success(['success'=>$success_actions, 'fail'=>$fail_actions, 'todo'=>$todo_actions]);
  125. }
  126. /**
  127. * 新增用户
  128. * @param Request $request
  129. * @return \Illuminate\Http\JsonResponse
  130. */
  131. public function user(Request $request){
  132. // 检查用户是否存在
  133. if(_empty_($request->author) || _empty_($request->author['id']) || _empty_($request->author['nickName'])){
  134. return $this->fail(1001001, []);
  135. }
  136. $uid = WxSyncRelationRepositories::wx_uid($request->domain, $request->author['id']);
  137. if(_empty_($uid)){
  138. $data = $this->collectUserData($request);
  139. $uid = WxUserRepositores::registerUser($data);
  140. if(!$uid){
  141. return $this->fail(200002, ['msg'=>'用户数据插入失败']);
  142. }
  143. }
  144. return $this->success(['msg'=>'ok', 'uid'=>$uid]);
  145. }
  146. }