PublishController.class.php 3.21 KB
<?php
/**
 * 【销售活动-后台】活动立即发布接口
 *
 * User: WJY
 * Date: 2017-11-02
 */

namespace Apicp\Controller\Activity;

use Common\Model\ActivityModel;
use Common\Service\ActivityService;

class PublishController extends \Apicp\Controller\AbstractController
{

    public function Index_post()
    {

        $params = I('post.');

        $ac_id = $this->publish_activity($params);

        $this->_result = [
            'ac_id' => $ac_id,
        ];

        return true;
    }

    /**
     * 立即发布活动
     *
     * @param array $reqData 请求数据
     *
     * @return bool
     */
    public function publish_activity($reqData)
    {

        $activity_s = new ActivityService();

        $ac_id = intval($reqData['ac_id']);
        // 活动ID存在性判断
        if (empty($ac_id)) {

            E('_ERR_AC_ID_EMPTY');
        }

        // 活动详情
        $activity = $activity_s->get($ac_id);
        // 活动存在性判断
        if (empty($activity)) {

            E('_ERR_ARTICLE_NOT_FOUND');
        }

        // 活动开始时间是否小于当前时间
        if ($activity['begin_time'] <= MILLI_TIME) {

            E('_ERR_ACTIVITY_OVERDUE');
        }

        $data = [
            'last_time' => MILLI_TIME,
            'publish_time' => MILLI_TIME,
            'activity_status' => ActivityService::ACTIVITY_PUBLISH
        ];

        $activity_s->update($ac_id, $data);

        if (ActivityService::RED_OPENED == $activity['is_red_open']) {
            // 开启红包,获取红包配置信息
            $packet = $activity_s->get_by_conds(['ac_id' => $ac_id]);
            $packet['rule_list'] = unserialize($packet['red_content']);

            // 是否为随机比例红包
            if (ActivityService::RAND_PRO_RED == $packet['type']) {
                // 生成随机比例红包记录
                $activity_s->create_packet_record($ac_id, $packet['id'], $packet['rule_list'],
                    $packet['red_base_num']);
            }
        }

        //【发送消息】开启发送消息时则发送消息
        if (ActivityModel::NOTICE_ON == $activity['is_notice']) {
            // 组装发送消息的数据
            $params = [
                'ac_id' => $ac_id,
                'subject' => $activity['subject'],
                'content' => unserialize($activity['content']),
                'begin_time' => $activity['begin_time'],
                'end_time' => $activity['end_time'],
            ];

            // 如果不是全公司则需要组装权限范围
            if (ActivityService::IS_ALL != $activity['is_all']) {

                $data = $activity_s->count_unjoin(['ac_id' => $ac_id], []);
                $uids = $data['unjoin_uids'];
                $params['uids'] = $uids;
                if (!empty($uids)) {
                    // 发送消息
                    $activity_s->send_msg($params, ActivityService::MSG_ACTIVITY_PUBLISH);
                }
            } else {
                // 权限为全公司
                $params['is_all'] = $activity['is_all'];
                // 发送消息
                $activity_s->send_msg($params, ActivityService::MSG_ACTIVITY_PUBLISH);
            }
        }

        return true;
    }
}