<?php /** * 【销售活动-后台】管理员批量补发领取失败红包接口 * * author daijun */ namespace Apicp\Controller\Red; use Common\Service\ActivityService; use Common\Service\PacketrecordService; class RegiveAllController extends \Apicp\Controller\AbstractController { // 每次处理条数 const MAX_LIMIT = 100; /** * 接收参数 * ac_id int 必填 活动ID * * @return bool */ public function Index_post() { $ac_id = I('post.ac_id', 0, 'intval'); if (empty($ac_id)) { // 验证数据 E('_EMPTY_ACTIVITY_ID'); } // 实例化活动表 $activity_serv = new ActivityService(); // 获取活动信息 $activity = $activity_serv->get($ac_id); if (empty($activity)) { // 活动信息不存在 E('_ERR_ACTIVITY_DATA'); } // 实例化用户红包记录表 $packet_records = new PacketrecordService(); $conds = [ 'ac_id' => $ac_id, // 当前活动 'packet_status' => PacketrecordService::PACKET_STATUS_FAIL, // 领取失败 ]; $field = 'rid,pid,p_type,ac_id,cid,rand_money,uid,username'; // 查询领取失败的所有红包记录 $record_list = $packet_records->list_by_conds($conds, [0, self::MAX_LIMIT], [], $field); if (empty($record_list)) { // 如果记录为空 $this->_result = [ 'fail_count' => 0 ]; return true; } // 循环处理数据 foreach ($record_list as $record) { // 补发新的红包关联为旧红包的子红包,并推送消息 $packet_records->regive_red($record, $this->_login->user, $activity); } // 获取剩余待补发的数量 $fail_count = $packet_records->count_by_conds($conds); $this->_result = [ 'fail_count' => (int)$fail_count ]; return true; } }