Message.php 6.92 KB
<?php

namespace Home;

use WebPlugin\Helpers;
use LibModels\Web\Home\MessageData;
use WebPlugin\Paging;

/**
 * 个人中心——我的消息逻辑处理
 */
class MessageModel
{

    /**
     * 我的消息列表
     * @param type $uid
     * @param type $page
     * @param type $size
     * @return array
     */
    public static function getInboxList($uid, $page, $size)
    {
        $result = array('messages' => array(), 'pager' => array());
        $inboxlist = MessageData::getInboxList($uid, $page, $size);
        if (!empty($inboxlist['data']['list']) && !empty($inboxlist['data'])) {
            foreach ($inboxlist['data']['list'] as $inboxkey => $inboxval) {
                //信息过滤
                if ($inboxval['type'] == '$inboxval' || $inboxval['type'] == 'notice') {
                    continue;
                }
                $messages[$inboxkey]['href'] = Helpers::url('/home/message/content', array('page' => $page, 'id' => $inboxval['id'])); //消息内容链接
                $messages[$inboxkey]['sender'] = isset($inboxval['from']) ? $inboxval['from'] : 0; //消息发言人
                $messages[$inboxkey]['isNew'] = $inboxval['is_read'] == 'Y' ? false : true; //消息是否已读
                $messages[$inboxkey]['title'] = isset($inboxval['title']) ? $inboxval['title'] : 0;
                ; //消息标题
                $messages[$inboxkey]['time'] = date('Y-m-d H:i:s', $inboxval['create_time']); //消息创建时间
                $messages[$inboxkey]['id'] = isset($inboxval['id']) ? $inboxval['id'] : 0;
                ; //消息唯一标识id
                $result['messages'] = $messages;
            }
            $total = isset($inboxlist['data']['total']) ? $inboxlist['data']['total'] : 0; //消息总条数
            $pageTotal = isset($inboxlist['data']['page_total']) ? $inboxlist['data']['page_total'] : 0; //总页数
            $page = isset($inboxlist['data']['page']) ? $inboxlist['data']['page'] : 0; //当前页
            $result['pager'] = self::getPager($page, $total, $pageTotal, $size);
        }
        else {
            $result['messages']['empty'] = '您尚未收到任何短消息';
        }
        return $result;
    }

    /**
     * 我的信息内容详情
     * @param type $uid
     * @param type $page
     * @param type $size
     * @param type $id
     * @return type array
     */
    public static function getContentData($uid, $page, $size, $id)
    {
        $result = array();
        $inboxlist = MessageData::getInboxList($uid, $page, $size);
        if (!empty($inboxlist['data']['list'])) {
            foreach ($inboxlist['data']['list'] as $contentkey => $contentval) {
                if ($contentval['id'] != $id) {
                    continue;
                }
                //信息过滤
                if ($contentval['type'] == 'showGetCoin' || $contentval['type'] == 'notice') {
                    continue;
                }
                $result['sender'] = $contentval['from']; //消息发言人
                $result['title'] = $contentval['title']; //消息标题
                $result['time'] = date('Y-m-d H:i:s', $contentval['create_time']); //消息创建时间
                //判断消息类型
                switch ($contentval['type']) {
                    case 'pullCoupon':
                        //领取生日券消息
                        $result['coupons'] = array();
                        $coupondata = MessageData::getCouponId($uid); //获取优惠券信息
                        if (empty($coupondata['data']) || !isset($coupondata['data'])) {
                            continue;
                        }
                        foreach ($coupondata['data'] as $couponval) {
                            $result['coupons'][] = array(
                                'id' => isset($couponval['id']) ? $couponval['id'] : '',
                                'remark' => isset($couponval['couponName']) ? $couponval['couponName'] : '',
                                'useTime' => isset($contentval['body']['use_time']) ? $contentval['body']['use_time'] : '',
                                'pickTime' => isset($contentval['body']['collar_time']) ? $contentval['body']['collar_time'] : '',
                                'canPick' => true);
                        }
                        break;
                    case 'button':
                        //促销活动
                        $result['sale'] = array(
                            'image' => isset($contentval['body']['image']) ? $contentval['body']['image'] : '',
                            'content' => isset($contentval['body']['text']) ? $contentval['body']['text'] : '',
                            'btnLink' => isset($contentval['body']['pc_link']) ? $contentval['body']['pc_link'] : '',
                            'btnName' => isset($contentval['body']['button_text']) ? $contentval['body']['button_text'] : '',
                        );
                        break;
                    case 'pushCoupon':
                        //查看优惠券
                        $result['coupons'] = array();
                        $result['coupons'][] = array(
                            'remark' => isset($contentval['body']['coupon_name']) ? $contentval['body']['coupon_name'] : '',
                            'useTime' => isset($contentval['body']['time']) ? $contentval['body']['time'] : '',
                            'id' => isset($contentval['body']['inboxId']) ? $contentval['body']['inboxId'] : '',
                            'price' => isset($contentval['body']['price']) ? $contentval['body']['price'] : '',
                            'url' => Helpers::url('/home/coupons', array('t' => microtime(true)))
                        );
                        break;
                    default:
                        //普通文本
                        $result['text'] = array(
                            'content' => isset($contentval['body']['content']) ? $contentval['body']['content'] : ''
                        );
                        break;
                }
            }
        }
        return $result;
    }

    /**
     * 设置分页数据
     * @param type $page
     * @param type $total
     * @param type $totalPage
     * @param type $size
     * @return type
     */
    public static function getPager($page, $total, $totalPage, $size)
    {
        $result = array();
        if (isset($page) && isset($total) && isset($totalPage)) {
            $result['count'] = $total;
            $result['curPage'] = $page;
            $result['totalPages'] = $totalPage;
            $result['hasCheckAll'] = false;
            $paging = new Paging('yoho');
            $paging->setTotal($total)->setSize($size)->setQuery(array('page' => $page));
            $result['pagerHtml'] = $paging->view(false);
        }
        return $result;
    }

}