ChatLog.php 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Admin\Actions\Chat;
  3. use App\Models\ChatList;
  4. use App\Models\User;
  5. use App\Repositories\ImMessage;
  6. use App\Services\TencentImMessage;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Grid\LazyRenderable;
  9. class ChatLog extends LazyRenderable
  10. {
  11. public function grid(): Grid
  12. {
  13. $chat_data = ChatList::query()->find($this->payload['id']);
  14. return Grid::make(new ImMessage($chat_data->user_id,$chat_data->to_user_id), function (Grid $grid) {
  15. // $grid->column('user_id', 'ID')->sortable();
  16. $grid->column('From_Account','发消息用户')->display(function ($res){
  17. $user = User::query()->where('tencent_im_user_id',$res)->with("user_info")->first();
  18. $str = "";
  19. $str.="<div style='margin-right:10px;text-align: center;display: flex'>";
  20. $str.='<img data-action="preview-img" src="'.$user->user_info->avatar.'" style="max-width:50px;max-height:50px;cursor:pointer" class="img img-thumbnail">';
  21. $str.='<p style="margin-top: 5px">'.$user->user_info->nickname.'</p>';
  22. $str.="</div>";
  23. return $str;
  24. });
  25. $grid->column('To_Account','接收消息用户')->display(function ($res){
  26. $user = User::query()->where('tencent_im_user_id',$res)->with("user_info")->first();
  27. $str = "";
  28. $str.="<div style='margin-right:10px;text-align: center;display: flex'>";
  29. $str.='<img data-action="preview-img" src="'.$user->user_info->avatar.'" style="max-width:50px;max-height:50px;cursor:pointer" class="img img-thumbnail">';
  30. $str.='<p style="margin-top: 5px">'.$user->user_info->nickname.'</p>';
  31. $str.="</div>";
  32. return $str;
  33. });
  34. $grid->column('MsgTimeStamp','时间')->display(function ($res){
  35. return date("m-d H:i",$res);
  36. });
  37. $grid->column('MsgBody','消息内容')->display(function ($res){
  38. //dd($res);
  39. //$res = json_decode($res,true);
  40. if($res[0]['MsgType']=='TIMTextElem'){
  41. //文本消息
  42. return $res[0]['MsgContent']['Text'];
  43. }elseif ($res[0]['MsgType']=="TIMLocationElem"){
  44. //位置消息
  45. return $res[0]['MsgContent']['Desc'];
  46. }elseif ($res[0]['MsgType']=="TIMFaceElem"){
  47. //表情消息
  48. }elseif ($res[0]['MsgType']=="TIMCustomElem"){
  49. //自定义消息
  50. }elseif ($res[0]['MsgType']=="TIMSoundElem"){
  51. //语音消息
  52. $str = "<audio src='".$res[0]['MsgContent']['Url']."' controls='controls'></audio>";
  53. return $str;
  54. }elseif ($res[0]['MsgType']=="TIMImageElem"){
  55. //图像消息
  56. $imgs = $res[0]['MsgContent']['ImageInfoArray'];
  57. $str = "";
  58. if(count($imgs)>0){
  59. $str.='<img data-action="preview-img" src="'.$imgs[0]['URL'].'" style="max-width:50px;max-height:200px;cursor:pointer" class="img img-thumbnail">';
  60. }
  61. return $str;
  62. }elseif ($res[0]['MsgType']=="TIMFileElem"){
  63. //文件消息
  64. }elseif ($res[0]['MsgType']=="TIMVideoFileElem"){
  65. //视频消息
  66. $str = "<video src='".$res[0]['MsgContent']['VideoUrl']."' style='width:200px;height:200px;margin-right:10px' controls='controls'></video>";
  67. return $str;
  68. }
  69. });
  70. $grid->quickSearch(['user_id', 'nickname']);
  71. $grid->paginate(10);
  72. $grid->disableActions();
  73. $grid->filter(function (Grid\Filter $filter) {
  74. // $filter->like('nickname','昵称')->width(4);
  75. });
  76. });
  77. }
  78. }