* @version : HUOSDK 8.0 */ namespace web\pc\logic; use huo\model\common\CommonModel; use huo\model\message\MemMessageModel; use huo\model\message\MessageModel; class MessageLogic extends CommonModel { /** * 消息列表 * * @param array $where * @param string $page * @param string $order * * @return array */ public function getList($where = [], $page = '1,10', $order = '') { $_map = []; if (!empty($where['type'])) { $_map['type'] = $where['type']; } if (!empty($where['gameid'])) { $_map['app_id'] = $where['gameid']; } $_msg_ids = []; /* 获取已读消息列表 */ if (!empty($where['mem_id']) && !empty($where['readed'])) { $_mem_map['mem_id'] = $where['mem_id']; $_mem_map['status'] = 2; $_msg_ids = MemMessageModel::where($_mem_map)->column('message_id'); // $_map['id'] = ['in', $_msg_ids]; } elseif (!empty($where['mem_id'])) { $_map['mem_id'] = ['in', '0,', $where['mem_id']]; } $_order = $this->orderFilter($order); $_messages = MessageModel::where($_map)->page($page)->order($_order)->select()->toArray(); $_list = []; $_types = ['1' => '活动消息',2=>'系统消息',3=>'卡券消息',4=>'优惠活动']; foreach ($_messages as $_message) { $_data = []; $_data['id'] = $_message['id']; $_data['title'] = $_message['title']; $_data['gameid'] = $_message['app_id']; $_data['type'] = $_message['type']; $_data['type_value'] = $_types[$_message['type']]; $_data['create_time'] = $_message['create_time']; $_data['content'] = $_message['content']; $_data['readed'] = 1; if (in_array($_message['id'], $_msg_ids)) { $_data['readed'] = 2; } $_list[] = $_data; } return $_list; } /** * 获取消息数量 * * @param $where * * @return int|string */ public function getCnt($where) { $_map = []; if (!empty($where['type'])) { $_map['type'] = $where['type']; } if (!empty($where['gameid'])) { $_map['app_id'] = $where['gameid']; } if (!empty($where['mem_id']) && !empty($where['readed'])) { $_map['mm.status'] = 2; $_map['mm.mem_id'] = $where['mem_id']; /* 已看过的消息数量 */ return MemMessageModel::where($_map)->count(); } elseif (!empty($where['mem_id'])) { $_map['mem_id'] = ['in', '0,', $where['mem_id']]; } return MessageModel::where($_map)->count(); } /** * 添加消息 * * @param int $mem_id * @param string $title * @param string $content * @param int $type * @param int $app_id * * @return bool */ public function addMessage($mem_id, $title, $content, $type = 2, $app_id = 0) { $_msg_data['mem_id'] = $mem_id; $_msg_data['app_id'] = $app_id; $_msg_data['title'] = $title; $_msg_data['content'] = $content; $_msg_data['type'] = $type; $_msg_id = MessageModel::addMessage($_msg_data); if (false === $_msg_id) { return false; } if (!empty($mem_id)) { $_mm_data['mem_id'] = $mem_id; $_mm_data['message_id'] = $_msg_id; $_mm_data['type'] = $type; $_msg_id = MemMessageModel::addMessage($_mm_data); if (false === $_msg_id) { return false; } } return true; } /** * 获取消息详情 * * @param int $msg_id * @param int $mem_id * @param bool $readed * * @return int */ public function getDetail($msg_id = 0, $mem_id = 0, $readed = true) { if (empty($msg_id)) { return 2000; } $_message = MessageModel::get($msg_id); if (empty($_message)) { return 2000; } $_data['id'] = $_message->getAttr('id'); $_data['title'] = $_message->getAttr('title'); $_data['gameid'] = $_message->getAttr('app_id'); $_data['type'] = $_message->getAttr('type'); $_data['create_time'] = $_message->getAttr('create_time'); $_data['content'] = $_message->getAttr('content'); $_data['readed'] = 1; if (empty($mem_id) || false == $readed) { return $_data; } if (!empty($mem_id) && $readed) { $_map['mem_id'] = $mem_id; $_map['message_id'] = $msg_id; $_mem_message = MemMessageModel::get($_map); if (empty($_mem_message)) { $_mm_data['mem_id'] = $mem_id; $_mm_data['message_id'] = $msg_id; $_mm_data['type'] = $_message['type']; $_mm_data['status'] = 2; MemMessageModel::addMessage($_mm_data); } else if (1 == $_mem_message->getAttr('status')) { $_mem_message->setAttr('status', 2); $_mem_message->isUpdate(true)->save(); } $_data['readed'] = 2; } return $_data; } }