<?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; } }