AdminSendController.class.php 2.74 KB
<?php
/**
 * 【销售活动-后台】管理员定向红包
 *
 * author xtong
 */

namespace Apicp\Controller\Red;

use Com\PackageValidate;
use Common\Service\ActivityService;
use Common\Service\PacketrecordService;

class AdminSendController extends \Apicp\Controller\AbstractController
{

    /**
     * 接收参数
     * comment_id int 必填 回帖ID
     * red_money string 必填 定向红包金额
     *
     * @return bool
     */
    public function Index_post()
    {

        // 验证规则
        $rules = [
            'comment_id' => 'require',
            'red_money' => 'require|between:1,2000',
        ];

        $msg = [
            'comment_id.require' => L('_ERR_COMMENT_ID_EMPTY'),
            'red_money.require' => L('_ERR_RED_FEE'),
            'red_money.between' => L('_ERR_RED_FEE'),
        ];

        // 验证数据
        $validate = new PackageValidate($rules, $msg, array_keys($rules));
        $postData = $validate->postData;

        // 验证红包金额两位小数
        if (!preg_match('/^[0-9]+(.[0-9]{1,2})?$/', $postData['red_money'])) {

            E('_ERR_RED_FEE');
        }

        // 根据评论ID获取评论详情与活动详情
        $cmt_and_ac_info = $this->get_ac_info_by_comment_id($postData['comment_id']);

        // 活动未开启红包
        if (ActivityService::RED_CLOSE == $cmt_and_ac_info['activity_info']['is_red_open']) {

            E('_ERR_RED_NOT_OPEN');
        }

        // 发定向红包
        $packetrecord_s = new PacketrecordService();
        $red_params = [
            'ac_id' => $cmt_and_ac_info['activity_info']['ac_id'],
            'p_type' => PacketrecordService::RED_PACKET_VIP,
            'uid' => $cmt_and_ac_info['comment_info']['uid'],
            'comment_id' => $cmt_and_ac_info['comment_info']['comment_id'],
            'price' => $postData['red_money'],
            'send_uname' => $this->_login->user['eaRealname'],
            'send_phone' => $this->_login->user['eaMobile']
        ];
        $red_data = $packetrecord_s->get_red_record($red_params);

        // 推送红包消息
        $red_msg_params = [
            'comment_id' => $cmt_and_ac_info['comment_info']['comment_id'],
            'rid' => $red_data['rid'],
            'ac_id' => $cmt_and_ac_info['activity_info']['ac_id'],
            'subject' => $cmt_and_ac_info['activity_info']['subject'],
            'give_time' => $red_data['give_time'],
            'uids' => $cmt_and_ac_info['comment_info']['uid'],
            'rand_money' => $postData['red_money'] * 100
        ];
        if (!empty($red_data['rid'])) {
            // 给用户发消息【获得定向红包】
            $packetrecord_s->send_msg($red_msg_params, PacketrecordService::MSG_GET_VIP_REDPACKET);
        }

        return true;
    }
}