seller_id = $seller_id; $this->sellerDB = new IModel('seller'); $sellerRow = $this->sellerDB->getObj('id = '.$seller_id); $this->messageIds = $sellerRow['seller_message_ids']; } /** * 直接发站内信到商户 * @param string $sellerIds 商户Id的串 * @param array $content 消息内容 array('title' => '标题','content' => '内容') */ public static function send($sellerIds, $content) { set_time_limit(0); $data = array( 'title' => $content['title'], 'content' => $content['content'], 'time' => ITime::getDateTime(), ); $msgDB = new IModel("seller_message"); $msgDB->setData($data); $id = $msgDB->add(); if($id === false) { return false; } else { $db = IDBFactory::getDB(); $tableName = IWeb::$app->config['DB']['tablePre']."seller"; if ($sellerIds) { $sql = "UPDATE `{$tableName}` SET seller_message_ids = CONCAT( IFNULL(seller_message_ids,'') ,'{$id},') WHERE id in ({$sellerIds})"; } else { $sql = "UPDATE `{$tableName}` SET seller_message_ids = CONCAT( IFNULL(seller_message_ids,'') ,'{$id},')"; } return $db->query($sql); } } /** * @brief 获得seller表中的seller_message_ids,去掉 '-' 和最后的 ',' * @return string 返回所有商户消息id的字符串 */ public function getAllMsgIds() { return str_replace('-','',trim($this->messageIds,',')); } /** * @brief 判断seller_message_id是否已经读过 * @param int $messageId seller_message的id * @return boolean 返回true为已读,false为未读 */ public function is_read($messageId) { if(strpos(','.trim($this->messageIds,',').',',',-'.$messageId.',') === false) { return false; } return true; } /** * @brief 将messageId写入seller表中 * @param int $messageId seller_message的id * @param int $read 0:未读(追加到用户id串后面),1:已读(把用户id串增加'-'负号) * @return int or boolean */ public function writeMessage($messageId,$read = 0) { if($read == 1) { $tempIds = ','.trim($this->messageIds,',').','; if(strpos($tempIds,','.$messageId.',') === false) { return false; } $tempIds = str_replace(','.$messageId.',',',-'.$messageId.',',$tempIds); $this->messageIds = trim($tempIds,',').','; } else { $this->messageIds .= $messageId.','; } return $this->save(); } /** * @brief 存储消息串 * @return boolean */ private function save() { $this->sellerDB->setData(array('seller_message_ids' => $this->messageIds)); return $this->sellerDB->update('id='.$this->seller_id); } /** * @brief 删除seller表中的messageId数据 * @param $messageId string 要删除的消息ID值 * @return string message_ids结果字符串 */ public function delMessage($messageId) { $tempIds = str_replace(','.$messageId.',','',','.trim($this->messageIds,',').','); $tempIds = str_replace(',-'.$messageId.',','',','.trim($tempIds,',').','); $tempIds = trim($tempIds,',').','; $this->messageIds = $tempIds; return $this->save(); } /** * @brief 获取未读的商户消息数 * @return int 消息数量 */ public function needReadNum() { $tempIds = ','.trim($this->messageIds,',').','; preg_match_all('|,\d+|',$tempIds,$result); return count(current($result)); } //读取消息 public function read($id) { $wholeIds = $this->getAllMsgIds(); if(strpos(",".$wholeIds.",",",".$id.",") === false) { return null; } $msgDB = new IModel("seller_message"); return $msgDB->getObj('id = '.$id); } }