ImMessage.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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();
  23. if (!empty($data)) {
  24. $data = $data->toArray();
  25. $user = User::select(['nickname', 'avatar'])->where('id', $order['user_id'])->first();
  26. $docter = Docter::select(['name', 'avatar'])->where('id', $order['docter_id'])->first();
  27. foreach ($data as $k => &$v) {
  28. if ($v['senderId'] == $userImId) {
  29. $v['sender_name'] = $user['nickname'];
  30. $v['sender_avatar'] = $user['avatar'];
  31. }
  32. else {
  33. $v['sender_name'] = $docter['name'];
  34. $v['sender_avatar'] = $docter['avatar'];
  35. }
  36. }
  37. }
  38. }
  39. return $data;
  40. }
  41. }