123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?php
- /**
- * MessageLogic.php UTF-8
- * 消息逻辑处理
- *
- * @date : 2017/11/24 18:22
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : HUOSDK 8.0
- */
- namespace huo\logic\message;
- 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['readed'] = 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 = [];
- foreach ($_messages as $_message) {
- $_data = [];
- $_data['id'] = $_message['id'];
- $_data['title'] = $_message['title'];
- $_data['gameid'] = $_message['app_id'];
- $_data['type'] = $_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;
- }
- public function adminList($where = [], $page = '1,10') {
- $_map = [];
- if (!empty($where['type'])) {
- $_map['type'] = $where['type'];
- }
- if (!empty($where['app_id'])) {
- $_map['app_id'] = $where['app_id'];
- }
- if (!empty($where['title'])) {
- $_map['title'] = ['like', "%{$where['title']}%"];
- }
- $_model = new MessageModel();
- $_count = $_model->where($_map)->count();
- if (empty($_count)) {
- return [
- 'count' => $_count,
- 'list' => [],
- ];
- }
- $_messages = $_model->with('mem,game')->where($_map)->page($page)->select();
- if ($_messages->isEmpty()) {
- return [
- 'count' => $_count,
- 'list' => [],
- ];
- }
- return [
- 'count' => $_count,
- 'list' => $_messages->toArray(),
- ];
- }
- public function adminDetail($msg_id) {
- return (new MessageModel())->with('mem,game')->where(['id' => $msg_id])->find();
- }
- public function updateData($data, $id) {
- return MessageModel::updateMessage($data, $id);
- }
- }
|