StoreServiceLog.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace app\models\store;
  3. use app\models\user\User;
  4. use crmeb\basic\BaseModel;
  5. use crmeb\traits\ModelTrait;
  6. /**
  7. * TODO 客服信息Model
  8. * Class StoreServiceLog
  9. * @package app\models\store
  10. */
  11. class StoreServiceLog extends BaseModel
  12. {
  13. /**
  14. * 数据表主键
  15. * @var string
  16. */
  17. protected $pk = 'id';
  18. /**
  19. * 模型名称
  20. * @var string
  21. */
  22. protected $name = 'store_service_log';
  23. /**
  24. * 消息类型
  25. * @var array 1=文字 2=表情 3=图片 4=语音 5 = 商品链接 6 = 订单类型
  26. */
  27. const MSN_TYPE = [1, 2, 3, 4, 5, 6];
  28. /**
  29. * 商品链接消息类型
  30. */
  31. const MSN_TYPE_GOODS = 5;
  32. /**
  33. * 订单信息消息类型
  34. */
  35. const MSN_TYPE_ORDER = 6;
  36. use ModelTrait;
  37. /**
  38. * 客服聊天记录
  39. * @param $uid
  40. * @param $toUid
  41. * @param $page
  42. * @param $limit
  43. * @return object
  44. */
  45. public static function lst($uid, $toUid, $page, $limit)
  46. {
  47. $model = new self;
  48. $model = $model->whereIn('uid', [$uid, $toUid]);
  49. $model = $model->whereIn('to_uid', [$uid, $toUid]);
  50. $model = $model->order('id DESC');
  51. $model = $model->page($page, $limit);
  52. // TODO: 循环 SQL
  53. return $model->select()->each(function ($item) {
  54. $userInfo = StoreService::where('uid', $item['uid'])->field('nickname,avatar')->find();
  55. if (!$userInfo) {
  56. $userInfo = User::getUserInfo($item['uid'], 'nickname,avatar');
  57. }
  58. if ($userInfo) {
  59. $item['nickname'] = $userInfo['nickname'];
  60. $item['avatar'] = $userInfo['avatar'];
  61. }
  62. if ($item['msn_type'] == self::MSN_TYPE_GOODS && $item['msn']) {
  63. $item['productInfo'] = StoreProduct::validWhere()->where('id', $item['msn'])->find();
  64. } else {
  65. $item['productInfo'] = [];
  66. }
  67. $item['orderInfo'] = [];
  68. if ($item['msn_type'] == self::MSN_TYPE_ORDER && $item['msn']) {
  69. $order = StoreOrder::getUserOrderDetail($item['uid'], $item['msn']);
  70. if ($order) {
  71. $order = StoreOrder::tidyOrder($order->toArray(), true, true);
  72. $order['add_time_y'] = date('Y-m-d', $order['add_time']);
  73. $order['add_time_h'] = date('H:i:s', $order['add_time']);
  74. $item['orderInfo'] = $order;
  75. }
  76. }
  77. $item['msn_type'] = (int)$item['msn_type'];
  78. });
  79. }
  80. }