ComplaintController.php 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\AccountsInfo;
  5. use App\Models\PrivateMail;
  6. use GatewayWorker\Lib\Gateway;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\DB;
  9. class ComplaintController extends Controller
  10. {
  11. //意见反馈列表
  12. public function opinionList()
  13. {
  14. // $data = DB::connection('write')->table('QPAccountsDB.dbo.Message')
  15. // ->select('ID','GameID')
  16. // ->where('type',0)
  17. // ->orderBy('ID','asc')
  18. // ->get()->toArray();
  19. // $id_list = [];
  20. // foreach ($data as $key => $value) {
  21. // $id_list[$value->GameID] = $value->ID;
  22. // }
  23. // $ids = array_values($id_list);
  24. $adminChannels = session('admin_channels');
  25. $message = DB::connection('write')->table('QPAccountsDB.dbo.Message as m')
  26. ->leftJoin('QPAccountsDB.dbo.AccountsInfo as ai','m.GameID','=','ai.GameID')
  27. ->leftJoin('QPAccountsDB.dbo.Message as n','n.PID','=','m.ID')
  28. ->select('m.ID','m.GameID','ai.NickName','m.Msg','m.CreateAt','n.Msg as Reply','ai.UserID')
  29. ->where('m.type',0);
  30. if(count($adminChannels)<5)$message=$message->whereIn('ai.Channel', $adminChannels);
  31. $message=$message->whereRaw('m.CreateAt>CONVERT(varchar(10),DATEADD(DAY,-3,GETDATE()),120)')
  32. // ->whereIn('m.ID',$ids)
  33. ->orderBy('m.ID','desc')
  34. ->paginate(100);
  35. // ->paginate(10);
  36. // ->get();
  37. // 消息改已读
  38. DB::table('QPAccountsDB.dbo.Message')->update(['admin_read'=>1]);
  39. // $list = [];
  40. // foreach ($message as $key => $value) {
  41. // $list[$value->ID] = $value;
  42. // }
  43. return view('admin.complaint.opinion', ['list' => $message]);
  44. }
  45. //留言回复页面
  46. public function replyAddView(Request $request,$id)
  47. {
  48. $game_id = $request->input('game_id');
  49. $ids = DB::connection('write')->table('QPAccountsDB.dbo.Message')
  50. ->where('GameID',$id)
  51. ->pluck('ID')->toArray();
  52. $list = DB::connection('write')->table('QPAccountsDB.dbo.Message as m')
  53. ->leftJoin('QPAccountsDB.dbo.AccountsInfo as ai','m.GameID','=','ai.GameID')
  54. ->leftJoin('agent.dbo.admin_users as au','m.admin_id','=','au.id')
  55. ->select('m.ID','m.GameID',DB::Raw("IsNull(ai.NickName,'') as NickName"),'au.nickname as admin_nickname','m.Msg','m.CreateAt')
  56. ->whereIn('m.PID',$ids)
  57. ->orwhere('m.GameID',$id)
  58. ->get();
  59. return view('admin.complaint.message_list', ['list' => $list,'id'=>end($ids),'game_id' => $id]);
  60. }
  61. //留言回复
  62. public function replyAdd(Request $request,$id)
  63. {
  64. $admin_id = session('admin')->id;
  65. $insert['PID'] = $id;
  66. $message = $request->input('message');
  67. $gameId = $request->input('uid');
  68. $userId = AccountsInfo::GetUserID($gameId);
  69. if(empty($message)){
  70. return ['status'=>false,'msg'=>'请填写回复'];
  71. }
  72. $insert['Msg'] = $message;
  73. $insert['CreateAt'] = date('Y-m-d H:i:s');
  74. $insert['Type'] = 1;
  75. $insert['admin_id'] = $admin_id;
  76. $result = DB::table('QPAccountsDB.dbo.Message')
  77. ->insert($insert);
  78. // sendMail($MailType, $UserID, $TitleString, $TextString, $BonusString, $order_sn, $amount = 0, $type = 1, $flag = false)
  79. // PrivateMail::sendMail(8,$userId,'Resposta do atendimento ao cliente',$message,'','ser'.time().''.rand(100,999),0,9);
  80. PrivateMail::ReplyMessage($userId,$message);
  81. if($result){
  82. return $this->json(200, "发送成功");
  83. }else{
  84. return $this->json(500, '发送失败,请重试');
  85. }
  86. }
  87. //玩家举报查询
  88. public function accusationList(Request $request)
  89. {
  90. $plaintiff_uid = (int)$request->input('plaintiff_uid');
  91. $defendant_uid = (int)$request->input('defendant_uid');
  92. $game = $request->input('game');//举报位置
  93. $content = $request->input('content');//举报内容
  94. $status = $request->input('status');//状态
  95. $sort = $request->input('sort');
  96. $game_name = DB::connection('write')->table('QPPlatformDB.dbo.GameRoomInfo')->pluck('ServerName');//单选框数据
  97. $where = [['del','=',1]];
  98. !empty($plaintiff_uid) ? $where[] = ['plaintiff_uid','=',trim($plaintiff_uid," ")] : $plaintiff_uid = '';
  99. !empty($defendant_uid) ? $where[] = ['defendant_uid','=',trim($defendant_uid," ")] : $defendant_uid = '';
  100. !empty($game) ? $where[] = ['ServerName','=',$game]: '';
  101. !empty($content) ? $where[] = ['content','like','%'.$content.'%']: '';
  102. isset($status) ? $where[] = ['status','=',$status] : '';
  103. $query = DB::connection('write')->table('QPAccountsDB.dbo.AccountAccusation as aa')
  104. ->leftjoin('QPPlatformDB.dbo.GameRoomInfo as ri','aa.game_id','=','ri.ServerID')
  105. ->select(DB::raw('aa.id,aa.plaintiff_uid,aa.plaintiff_name,aa.defendant_uid,aa.defendant_name,aa.game_id,ri.ServerName,CONVERT(varchar(100),aa.time,20) as time,aa.content,aa.executant_id,aa.executant_name,CONVERT(varchar(100),aa.update_time,20) as update_time,aa.status'))
  106. ->where($where)
  107. ->orderBy('id','desc');
  108. /*排序*/
  109. if(!empty($sort)){
  110. $accusation = $query->get();
  111. $data = DB::connection('write')->table('QPAccountsDB.dbo.AccountAccusation as aa')
  112. ->leftjoin('QPPlatformDB.dbo.GameRoomInfo as ri','aa.game_id','=','ri.ServerID')
  113. ->select('aa.defendant_uid',DB::raw('count(*) as num'))
  114. ->where($where)
  115. ->groupBy('defendant_uid')
  116. ->orderBy('num','desc')
  117. ->get();
  118. $arr = [];
  119. foreach ($data as $key => $value) {
  120. $arr[] = $value->defendant_uid;
  121. }
  122. $list = [];
  123. foreach ($arr as $key => $value) {
  124. foreach ($accusation as $k => $v) {
  125. if($value == $v->defendant_uid){
  126. $list[] = $v;
  127. }
  128. }
  129. }
  130. }else{
  131. $list = $query->paginate(10);
  132. }
  133. foreach ($list as $key => $value) {
  134. if($value->status === null){
  135. $value->status = 0;
  136. }
  137. }
  138. return view('admin.complaint.accusation', ['list' => $list,'game_name'=>$game_name,'sort'=>$sort,'plaintiff_uid'=>$plaintiff_uid,'defendant_uid'=>$defendant_uid,'game'=>$game,'content'=>$content,'status'=>$status]);
  139. }
  140. //玩家举报删除
  141. public function accusationDel(Request $request,$id)
  142. {
  143. $result = '';
  144. $result = DB::table('QPAccountsDB.dbo.AccountAccusation')->where('id',$id)->update(['del'=>0]);
  145. if($result){
  146. return $this->json(200, "删除成功");
  147. }else{
  148. return $this->json(500, '删除失败,请重试');
  149. }
  150. }
  151. //玩家举报处理
  152. public function accusationEdit(Request $request,$id)
  153. {
  154. $admin = $request->session()->get('admin');//管理员信息
  155. $update_time = date('Y-m-d H:i:s');//处理时间
  156. $update_data = [
  157. 'executant_id' => $admin->id,
  158. 'executant_name' => $admin->account,
  159. 'update_time' => $update_time,
  160. 'status' =>1
  161. ];
  162. $result = '';
  163. $result = DB::table('QPAccountsDB.dbo.AccountAccusation')->where('id',$id)->update($update_data);
  164. if($result){
  165. return $this->json(200, "处理成功");
  166. }else{
  167. return $this->json(500, '处理失败,请重试');
  168. }
  169. }
  170. //邮件回复
  171. public function sendEmail(Request $request,$id)
  172. {
  173. $params = $request->post();
  174. if(!isset($params['email'])){
  175. return $this->json(500, '发送失败,邮件内容不能为空');
  176. }
  177. $data['MailType'] = 2;
  178. $data['MailStatus'] = 1;
  179. $user_info = DB::connection('write')->table('QPAccountsDB.dbo.AccountsInfo')->where('GameID',$params['uid'])->first();
  180. if(!empty($user_info)){
  181. $data['UserID'] = $user_info->UserID;
  182. }else{
  183. return $this->json(500, "未查到对应用户");
  184. }
  185. $data['CreateTime'] = date('Y-m-d H:i:s',time());
  186. $data['TitleString'] = '意见反馈函';
  187. $data['TextString'] = $params['email'];
  188. $email_id = DB::table('QPAccountsDB.dbo.PrivateMail')->insertGetId($data);
  189. $result = DB::table('QPAccountsDB.dbo.AccountOpinion')->where('id',$id)->update(['email_id'=>$email_id]);
  190. if($result && $email_id){
  191. // Log::useDailyFiles(storage_path().'/logs/mailPub.log');
  192. // Log::info('发送人agent_id:'.Auth::user()->id.',收件人:'.$params['uid'].',发送内容:'.$params['email']);
  193. return $this->json(200, "发送成功");
  194. }else{
  195. return $this->json(500, '发送失败,请重试');
  196. }
  197. }
  198. }