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