TeamChatLog.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Admin\Actions\Chat;
  3. use App\Models\ChatList;
  4. use App\Models\User;
  5. use App\Repositories\ChatTeamLog;
  6. use App\Repositories\ChatTeamUser;
  7. use App\Repositories\ImMessage;
  8. use App\Services\TencentImGroupService;
  9. use App\Services\TencentImMessage;
  10. use Dcat\Admin\Grid;
  11. use Dcat\Admin\Grid\LazyRenderable;
  12. class TeamChatLog extends LazyRenderable
  13. {
  14. public function grid(): Grid
  15. {
  16. $group_id = $this->payload['group_id'];
  17. return Grid::make(new ChatTeamLog($group_id), function (Grid $grid) {
  18. $grid->column('From_Account',trans('feeds.fields.user_id'))->display(function ($res){
  19. if($res!='' || $res!='@TIM#SYSTEM'){
  20. $user = User::query()->where('tencent_im_user_id',$res)->first();
  21. $str = "";
  22. if($user){
  23. $str.="<div style='margin-right:10px;text-align: center;display: flex'>";
  24. $str.='<img data-action="preview-img" src="'.$user->avatar.'" style="max-width:50px;max-height:50px;cursor:pointer" class="img img-thumbnail">';
  25. $str.='<p style="margin-top: 5px">'.$user->name.'</p>';
  26. $str.="</div>";
  27. }
  28. return $str;
  29. }elseif($res==''){
  30. return '';
  31. }elseif($res=='@TIM#SYSTEM'){
  32. return trans('chat-team.fields.System_message');
  33. }
  34. });
  35. $grid->column('MsgBody',trans('chat-team.fields.Message_content'))->display(function ($res){
  36. $IsSystemMsg = $this->IsSystemMsg??0;
  37. if($IsSystemMsg==0 && !empty($res)){
  38. $MsgType = $res[0]['MsgType'];
  39. $MsgContent = $res[0]['MsgContent'];
  40. if($MsgType=='TIMTextElem'){
  41. $str = $MsgContent['Text'];
  42. }elseif($MsgType=='TIMSoundElem'){
  43. $str = '<audio controls="controls" src="'.$MsgContent['Url'].'"></audio>';
  44. }elseif($MsgType=='TIMImageElem'){
  45. $str = '<img data-action="preview-img" src="'.$MsgContent['ImageInfoArray'][0]['URL'].'" style="max-width:50px;max-height:50px;cursor:pointer" class="img img-thumbnail" />';
  46. }
  47. }else{
  48. $str = trans('chat-team.fields.System_message');
  49. }
  50. return $str;
  51. });
  52. $grid->column('MsgTimeStamp',trans('chat-team.fields.MsgTimeStamp'))->display(function ($res){
  53. return date('Y-m-d H:i:s',$res);
  54. });
  55. $grid->paginate(20);
  56. $grid->disableActions();
  57. });
  58. }
  59. }