DetailController.class.php 4.5 KB
<?php
/**
 * 【销售活动-后台】活动详情接口
 *
 * User: WJY
 * Date: 2017-11-02
 */

namespace Apicp\Controller\Activity;

use Common\Common\User;
use Common\Service\ActivityService;
use Common\Service\CommentService;
use Common\Service\LikeService;
use Common\Service\PacketService;
use Common\Service\RightService;
use VcySDK\Member;
use VcySDK\Service;

class DetailController extends \Apicp\Controller\AbstractController
{

    /** @var  ActivityService 活动信息表 */
    protected $_activity_serv;

    /** @var RightService 权限信息表 */
    protected $_right_serv;

    /** @var PacketService 红包主表 */
    protected $packet_serv;

    public function before_action($action = '')
    {

        if (!parent::before_action($action)) {

            return false;
        }

        // 实例化活动信息表
        $this->_activity_serv = new ActivityService();
        // 实例化权限表
        $this->_right_serv = new RightService();
        // 实例化红包表
        $this->packet_serv = new PacketService();

        return true;
    }

    public function Index_post()
    {

        $ac_id = I('post.ac_id', 0, 'intval');
        // 活动ID存在性验证
        if (empty($ac_id)) {

            E('_EMPTY_ACTIVITY_ID');
        }

        // 获取活动详情
        $data = $this->_activity_serv->get($ac_id);

        if (empty($data)) {
            // 活动存在性验
            E('_ERR_ACTIVITY_DATA');
        }

        if ($data['activity_status'] != ActivityService::ACTIVITY_DRAFT) {
            $comment_s = new CommentService();

            $comment_num = $comment_s->count_by_conds([
                'ac_id' => $ac_id,
                'check_status' => CommentService::CHECK_OK
            ]);

            $like_s = new LikeService();
            $like_num = $like_s->count_by_conds([
                'obj_id' => $ac_id,
                'type' => ActivityService::LIKE_ACTIVITY_TYPE
            ]);

            // 更新活动点赞数与评论数
            $this->_activity_serv->update($ac_id, ['likes' => $like_num, 'comments' => $comment_num]);

            $data['likes'] = $like_num;
            $data['comments'] = $comment_num;
        }

        // 格式化详情数据
        $result = $this->_activity_serv->format_activity_detail($data);

        // 获取权限数据
        list($right_list, $right_data) = $this->_right_serv->get_data(['ac_id' => $ac_id]);

        // 获取红包数据
        $red_list = $this->packet_serv->get_by_conds(['ac_id' => $ac_id]);
        // 格式化数据
        $red_list = $this->_activity_serv->red_format($red_list);

        // 红包内加入红包祝福语
        $red_list['packet_bless'] = $result['packet_bless'];
        $red_list['is_show_red'] = $result['is_show_red'];

        // 获取有权限的人员数据
        $result['check_user_list'] = $this->get_check_auth($result);

        // 删除result中的红包祝福语
        unset($result['packet_bless']);

        // 加入权限数组
        $result['right'] = $right_data;
        // 加入红包数组
        $result['red_content'] = $red_list;

        $this->_result = $result;

        return true;
    }

    /**
     * 获取有权限审核的人员数据列表
     * @param array $data 获取的活动详情信息
     * @return array
     */
    protected function get_check_auth($data = [])
    {
        // 初始化权限人员数据列表
        $check_user_list = [];

        // 如果审核人员不为空
        if (!empty($data['check_user_list'])) {
            // 初始化用户类
            $member = User::instance();
            // 获取当前用户基本信息
            $users = $member->listAllBasic(['memUids' => array_column($data['check_user_list'], 'memID')]);

            // 如果有用户数据
            if (!empty($users)) {
                // 重新组装数据已用户UID为主键
                $user_list = array_combine_by_key($users, 'memUid');

                // 重新组装数据
                foreach ($data['check_user_list'] as $check_user) {
                    if (!empty($user_list[$check_user['memID']])) {
                        $check_user_list[] = [
                            'memID' => $check_user['memID'],
                            'memUsername' => $user_list[$check_user['memID']]['memUsername'],
                            'memFace' => $user_list[$check_user['memID']]['memFace'],
                        ];
                    }
                }
            }
        }

        return $check_user_list;
    }
}