AddController.class.php 2.74 KB
<?php
/**
 * 【积分抽奖-后台】添加活动接口
 *
 * User: houyingcai
 * Date: 2017-11-02
 */

namespace Apicp\Controller\Activity;

use Common\Common\AttachOperation;
use Common\Common\Constant;
use Common\Service\ActivityService;
use Common\Service\PrizeService;
use Common\Service\RightService;
use Think\Exception;

class AddController extends \Apicp\Controller\AbstractController
{

    public function Index_post()
    {
        $activity = I('post.');

        $activityServ = new ActivityService();

        // 验证数据
        $activityServ->validate_for_data($activity);

        // 初始化活动最后更新时间
        $activity['last_time'] = MILLI_TIME;

        $rightServ = new RightService();

        $prizeServ = new PrizeService();

        $ac_id = 0;
        $right = [];
        try {
            $activityServ->start_trans();

            // 活动权限范围
            $right = $activity['right'];
            // 活动奖品列表
            $prize_list = $activity['prize_list'];

            unset($activity['right'], $activity['prize_list']);

            // 活动数据入库
            $ac_id = $activityServ->insert($activity);

            // 如果不是全公司
            if ($activity['is_all'] != Constant::IS_ALL_TRUE && $ac_id) {
                // 权限入库
                $rightServ->save_right_data($right, $ac_id);
            }

            // 奖品信息入库
            $prizeServ->save_prize_data($prize_list, $ac_id);

            $activityServ->commit();
        } catch (Exception $e) {

            $activityServ->rollback();
            E('_ERR_ACTIVITY_ADD_FAILED');
        }

        // 开启发送消息 && 状态为发布状态 && 活动ID为真
        if (Constant::ACTIVITY_PUBLISH == $activity['activity_status'] && Constant::PUSH_MSG_TRUE == $activity['is_push_msg'] && $ac_id) {

            $activity['right'] = $right;
            // 组装发送消息的数据
            $params = $activityServ->assemble_msg_params($ac_id, $activity);

            // 发送消息
            $activityServ->send_msg($params, Constant::MSG_ACTIVITY_PUBLISH);
        }

        // 附件操作处理
        $attach_serv = new AttachOperation();
        $attach_ids = array_unique(array_column($prize_list, 'cover_id'));
        // 过滤默认奖品封面图
        $default_key = array_search('451C9D000A6924900859E1543159A914', $attach_ids);
        unset($attach_ids[$default_key]);

        $attach_serv->insert_attach(
            APP_DIR,
            'activity',
            $ac_id,
            ['attach_ids' => $attach_ids]
        );

        $this->_result = [
            'ac_id' => $ac_id,
            'link' => 'Lottery/Frontend/Index/Index/Index/ac_id/' . $ac_id,
        ];

        return true;
    }

}