Member.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\servicer\model;
  11. use app\model\BaseModel;
  12. use app\model\member\Member as MemberServices;
  13. use think\db\exception\DataNotFoundException;
  14. use think\db\exception\DbException;
  15. use think\db\exception\ModelNotFoundException;
  16. class Member extends BaseModel
  17. {
  18. /**
  19. * 设置会员在线状态
  20. * @param integer $memberId 会员编号
  21. * @param boolean $online 是否在线
  22. * @return int
  23. * @throws DbException
  24. */
  25. public function setMemberOnline($memberId, $online = true)
  26. {
  27. return model('servicer_member')->update(['online'=> $online ? 1 : 0], [['member_id', '=', $memberId]]);
  28. }
  29. /**
  30. * 获取会员数据
  31. * @param $memberId
  32. * @param $servicerId
  33. * @param $siteId
  34. * @return array|\think\Model|null
  35. * @throws DataNotFoundException
  36. * @throws DbException
  37. * @throws ModelNotFoundException
  38. */
  39. public function getMember($memberId, $servicerId, $siteId = 0)
  40. {
  41. $alias = 'sm';
  42. $condition = [
  43. ['sm.member_id', '=', $memberId],
  44. ['sm.servicer_id', '=', $servicerId]
  45. ];
  46. $join = [
  47. ['member m', 'm.member_id = sm.member_id', 'left'],
  48. ];
  49. $fields = ['sm.id', 'sm.member_id', 'sm.servicer_id', 'sm.member_name', 'sm.online', 'sm.create_time', 'sm.last_online_time', 'sm.delete_time', 'sm.headimg', 'sm.client_id', 'm.nickname', 'm.username', 'm.headimg'];
  50. $model = model('servicer_member')->getInfo($condition, $fields, $alias, $join);
  51. if (empty($model)) {
  52. return null;
  53. }
  54. $dialogs = (new Dialogue)->getDialogueList($memberId, 1, 1, $siteId, $servicerId);
  55. $dialog = [];
  56. if (!empty($dialogs) && !empty($dialogs['list']) && count($dialogs['list']) > 0) {
  57. $dialog = $dialogs['list'][0];
  58. }
  59. $model['last_dialog'] = $dialog;
  60. return $model;
  61. }
  62. /**
  63. * 新建聊天咨询用户
  64. * @param integer $memberId 会员ID
  65. * @param integer $servicerId 客服ID
  66. * @param boolean $online 在线状态
  67. * @param string $client_id 临时会话ID
  68. * @return int|string
  69. * @throws DataNotFoundException
  70. * @throws DbException
  71. * @throws ModelNotFoundException
  72. */
  73. public function createMember($memberId, $servicerId, $online = true, $client_id = '')
  74. {
  75. $memberService = new MemberServices();
  76. $memberInfo = $memberService->getMemberInfo([['member_id', '=', $memberId]], ['member_id', 'headimg', 'username']);
  77. if (empty($memberInfo['data'])) {
  78. return $memberInfo['code'];
  79. }
  80. $memberInfo = $memberInfo['data'];
  81. $memberServicer = model('servicer_member')->getInfo(['servicer_id' => $servicerId, 'member_id' => $memberId]);
  82. if (!empty($memberServicer)) {
  83. // 更新在线状态、时间
  84. $result = model('servicer_member')->update(
  85. [
  86. 'online' => $online,
  87. 'last_online_time' => time(),
  88. 'client_id' => $client_id,
  89. 'member_name' => $memberInfo['username'],
  90. 'headimg' => $memberInfo['headimg']
  91. ],
  92. [['member_id', '=', $memberId], ['servicer_id', '=', $servicerId]]
  93. );
  94. if($result !== false){
  95. return $result;
  96. }else{
  97. return 0;
  98. }
  99. }
  100. $result = model('servicer_member')->add([
  101. 'member_id' => $memberId,
  102. 'servicer_id' => $servicerId,
  103. 'member_name' => $memberInfo['username'],
  104. 'online' => $online,
  105. 'create_time' => time(),
  106. 'last_online_time' => time(),
  107. 'delete_time' => 0,
  108. 'headimg' => $memberInfo['headimg'],
  109. 'client_id' => $client_id,
  110. ]);
  111. return $result;
  112. }
  113. /**
  114. * 获取客服关联会员列表
  115. * @param array $condition
  116. * @param bool $field
  117. * @param string $order
  118. * @param int $page
  119. * @param int $list_rows
  120. * @param string $alias
  121. * @param array $join
  122. * @param null $group
  123. * @param null $limit
  124. * @return mixed
  125. * @throws DataNotFoundException
  126. * @throws DbException
  127. * @throws ModelNotFoundException
  128. */
  129. public function getPageList($condition = [], $field = true, $order = '', $page = 1, $list_rows = PAGE_LIST_ROWS, $alias = 'a', $join = [], $group = null, $limit = null)
  130. {
  131. return model('servicer_member')->pageList($condition, $field, $order, $page, $list_rows, $alias, $join, $group, $limit);
  132. }
  133. /**
  134. * 获取数据列表
  135. * @param $condition
  136. * @return array
  137. * @throws DataNotFoundException
  138. * @throws DbException
  139. * @throws ModelNotFoundException
  140. */
  141. public function getList($condition)
  142. {
  143. return model('servicer_member')->getList($condition);
  144. }
  145. /**
  146. * 是否已连接会话
  147. * @param $servicerId
  148. * @param $memberId
  149. * @return bool|mixed
  150. */
  151. public function isConnect($servicerId, $memberId)
  152. {
  153. $result = model('servicer_member')->getInfo([['online', '=', 1], ['servicer_id', '=', $servicerId], ['member_id', '=', $memberId]]);
  154. return $result ? true : false;
  155. }
  156. }