1
0

seller_mess.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. /**
  3. * @copyright (c) 2011 aircheng.com
  4. * @file seller_mess.php
  5. * @brief 商户消息的管理
  6. * @author qfsoft
  7. * @date 2016/03/06 20:30:10
  8. * @version 4.4
  9. */
  10. class seller_mess
  11. {
  12. //商户信息数据库实例
  13. private $sellerDB = null;
  14. //商户id
  15. private $seller_id = '';
  16. //商户消息ID
  17. private $messageIds = '';
  18. /**
  19. * @brief 构造函数 商户id
  20. * @param string $seller_id 商户id
  21. */
  22. function __construct($seller_id)
  23. {
  24. $this->seller_id = $seller_id;
  25. $this->sellerDB = new IModel('seller');
  26. $sellerRow = $this->sellerDB->getObj('id = '.$seller_id);
  27. $this->messageIds = $sellerRow['seller_message_ids'];
  28. }
  29. /**
  30. * 直接发站内信到商户
  31. * @param string $sellerIds 商户Id的串
  32. * @param array $content 消息内容 array('title' => '标题','content' => '内容')
  33. */
  34. public static function send($sellerIds, $content)
  35. {
  36. set_time_limit(0);
  37. $data = array(
  38. 'title' => $content['title'],
  39. 'content' => $content['content'],
  40. 'time' => ITime::getDateTime(),
  41. );
  42. $msgDB = new IModel("seller_message");
  43. $msgDB->setData($data);
  44. $id = $msgDB->add();
  45. if($id === false)
  46. {
  47. return false;
  48. }
  49. else
  50. {
  51. $db = IDBFactory::getDB();
  52. $tableName = IWeb::$app->config['DB']['tablePre']."seller";
  53. if ($sellerIds)
  54. {
  55. $sql = "UPDATE `{$tableName}` SET seller_message_ids = CONCAT( IFNULL(seller_message_ids,'') ,'{$id},') WHERE id in ({$sellerIds})";
  56. }
  57. else
  58. {
  59. $sql = "UPDATE `{$tableName}` SET seller_message_ids = CONCAT( IFNULL(seller_message_ids,'') ,'{$id},')";
  60. }
  61. return $db->query($sql);
  62. }
  63. }
  64. /**
  65. * @brief 获得seller表中的seller_message_ids,去掉 '-' 和最后的 ','
  66. * @return string 返回所有商户消息id的字符串
  67. */
  68. public function getAllMsgIds()
  69. {
  70. return str_replace('-','',trim($this->messageIds,','));
  71. }
  72. /**
  73. * @brief 判断seller_message_id是否已经读过
  74. * @param int $messageId seller_message的id
  75. * @return boolean 返回true为已读,false为未读
  76. */
  77. public function is_read($messageId)
  78. {
  79. if(strpos(','.trim($this->messageIds,',').',',',-'.$messageId.',') === false)
  80. {
  81. return false;
  82. }
  83. return true;
  84. }
  85. /**
  86. * @brief 将messageId写入seller表中
  87. * @param int $messageId seller_message的id
  88. * @param int $read 0:未读(追加到用户id串后面),1:已读(把用户id串增加'-'负号)
  89. * @return int or boolean
  90. */
  91. public function writeMessage($messageId,$read = 0)
  92. {
  93. if($read == 1)
  94. {
  95. $tempIds = ','.trim($this->messageIds,',').',';
  96. if(strpos($tempIds,','.$messageId.',') === false)
  97. {
  98. return false;
  99. }
  100. $tempIds = str_replace(','.$messageId.',',',-'.$messageId.',',$tempIds);
  101. $this->messageIds = trim($tempIds,',').',';
  102. }
  103. else
  104. {
  105. $this->messageIds .= $messageId.',';
  106. }
  107. return $this->save();
  108. }
  109. /**
  110. * @brief 存储消息串
  111. * @return boolean
  112. */
  113. private function save()
  114. {
  115. $this->sellerDB->setData(array('seller_message_ids' => $this->messageIds));
  116. return $this->sellerDB->update('id='.$this->seller_id);
  117. }
  118. /**
  119. * @brief 删除seller表中的messageId数据
  120. * @param $messageId string 要删除的消息ID值
  121. * @return string message_ids结果字符串
  122. */
  123. public function delMessage($messageId)
  124. {
  125. $tempIds = str_replace(','.$messageId.',','',','.trim($this->messageIds,',').',');
  126. $tempIds = str_replace(',-'.$messageId.',','',','.trim($tempIds,',').',');
  127. $tempIds = trim($tempIds,',').',';
  128. $this->messageIds = $tempIds;
  129. return $this->save();
  130. }
  131. /**
  132. * @brief 获取未读的商户消息数
  133. * @return int 消息数量
  134. */
  135. public function needReadNum()
  136. {
  137. $tempIds = ','.trim($this->messageIds,',').',';
  138. preg_match_all('|,\d+|',$tempIds,$result);
  139. return count(current($result));
  140. }
  141. //读取消息
  142. public function read($id)
  143. {
  144. $wholeIds = $this->getAllMsgIds();
  145. if(strpos(",".$wholeIds.",",",".$id.",") === false)
  146. {
  147. return null;
  148. }
  149. $msgDB = new IModel("seller_message");
  150. return $msgDB->getObj('id = '.$id);
  151. }
  152. }