UnJoinRemindController.class.php 1.93 KB
<?php
/**
 *【积分抽奖-后台】未参与人员提醒接口
 * User: daijun
 * Date: 2018/3/23
 * Time: 下午3:42
 */

namespace Apicp\Controller\Activity;


use Common\Common\Constant;
use Common\Service\ActivityService;
use Common\Service\RecordService;
use Common\Service\RightService;

class UnJoinRemindController extends \Apicp\Controller\AbstractController
{

    public function Index_post()
    {
        // 获取参数
        $ac_id = I('post.ac_id');

        if (empty($ac_id)) {
            // 活动ID不能为空
            E('_EMPTY_ACTIVITY_ID');
        }

        $activity_serv = new ActivityService();

        $detail = $activity_serv->get($ac_id);

        if (empty($detail)) {
            // 活动信息不存在
            E('_ERR_ACTIVITY_DATA');
        }

        if (Constant::ACTIVITY_DRAFT == $detail['activity_status']) {
            // 草稿状态不能提醒
            E('_ERR_ACTIVITY_DRAFT');
        }

        $record_serv = new RecordService();

        $record_list = $record_serv->list_by_conds(['ac_id' => $ac_id], null, [], 'uid');

        // 已参与的人员uid集合
        $uids = [];
        if (!empty($record_list)) {
            $uids = array_filter(array_unique(array_column($record_list, 'uid')));
        }

        // 查询权限人员集合
        $right = new RightService();
        $all_right_users = $right->get_uids_by_right($detail);

        // 获取未参与人员uid集合
        $un_join_uids = array_diff($all_right_users, $uids);

        // 组织发消息需要的参数
        $send_params = [
            'ac_id' => $ac_id,
            'title' => $detail['title'],
            'start_time' => $detail['start_time'],
            'end_time' => $detail['end_time'],
            'integral' => $detail['integral'],
            'uids' => $un_join_uids
        ];

        // 发送提醒
        $right->send_msg($send_params, Constant::MSG_ACTIVITY_REMIND);

        return true;
    }

}