ImMessage.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zilongs
  5. * Date: 20-10-5
  6. * Time: 下午3:37
  7. */
  8. namespace App\Models;
  9. class ImMessage extends BaseModel
  10. {
  11. protected $table='im_message';
  12. public static function getChatRecord($order_id)
  13. {
  14. $order = Order::select(['docter_id', 'user_id', 'receiving_time', 'end_time'])->where('id', $order_id)->first();
  15. $docterImId = 'doctor_'.$order['docter_id'];
  16. $userImId = 'member_'.$order['user_id'];
  17. $data = [];
  18. $start_time = $order['receiving_time']*1000;
  19. if (!empty($start_time)) {
  20. $end_time = !empty($order['end_time']) ? $order['end_time'] : time();
  21. $end_time = $end_time*1000;
  22. $data = ImMessage::whereIn('senderId', [$docterImId, $userImId])->whereIn('receiverId', [$docterImId, $userImId])->whereBetween('timestamp', [$start_time, $end_time])->orderBy('timestamp', 'asc')->get()->toArray();
  23. if (!empty($data)) {
  24. $user = User::select(['nickname', 'avatar'])->where('id', $order['user_id'])->first();
  25. $docter = Docter::select(['name', 'avatar'])->where('id', $order['docter_id'])->first();
  26. foreach ($data as $k => &$v) {
  27. if ($v['senderId'] == $userImId) {
  28. $v['sender_name'] = $user['nickname'];
  29. $v['sender_avatar'] = $user['avatar'];
  30. }
  31. else {
  32. $v['sender_name'] = $docter['name'];
  33. $v['sender_avatar'] = $docter['avatar'];
  34. }
  35. }
  36. }
  37. }
  38. return $data;
  39. }
  40. }