campaign_match_model = model('CampaignMatch'); if (Config('site.theme') != 'ds') { Db::query('set SESSION sql_mode =\'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER \';'); } } public function index() { //设置过滤方法 $this->request->filter(['strip_tags']); $campaign_id = $this->request->param('campaign_id') ?? ''; if ($this->request->isAjax()) { //如果发送的来源是Selectpage,则转发到Selectpage if ($this->request->request('pkey_name')) { return $this->selectpage(); } list($where, $sort, $order, $offset, $limit) = $this->buildparams(); $campaign_id = $this->request->param('campaign_id') ?? ''; $campaign_where = " 1=1 "; if ($campaign_id) { $campaign_where .= " AND campaign_id = {$campaign_id}"; } $campaign_data = CampaignService::instance()->getCampaignById($campaign_id); $sql_group = "SELECT campaign_id,match_date,period,createtime FROM campaign_match WHERE $campaign_where GROUP BY campaign_id,match_date "; $sql_group_total = "SELECT COUNT(*) as num FROM ({$sql_group}) as t"; $sql_list = $sql_group." Limit $offset, $limit"; $total_rst = Db::query($sql_group_total); $total = isset($total_rst[0]['num']) ? $total_rst[0]['num'] : 0; $list = []; $group_rst = Db::query($sql_list); if ($group_rst) { foreach ($group_rst as $k => $item) { $sql = "SELECT * FROM campaign_match WHERE campaign_id={$item['campaign_id']} AND match_date = '{$item['match_date']}'"; $data = Db::query($sql); foreach ($data as $sub_key => $sub_item) { if ($sub_item['level'] == 2) { $item['advanced_participator_num'] = $sub_item['participator_num'] + $campaign_data['advanced_num']; $item['advanced_puncher_num'] = $sub_item['puncher_num']+ $campaign_data['advanced_num']; $item['advanced_success_num'] = $sub_item['success_num']+ $campaign_data['advanced_num']; $item['advanced_bonus'] = $sub_item['award']; $item['advanced_kandian'] = $sub_item['kandian']; } elseif ($sub_item['level'] == 1) { $item['intermediate_participator_num'] = $sub_item['participator_num'] + $campaign_data['intermediate_num']; $item['intermediate_puncher_num'] = $sub_item['puncher_num'] + $campaign_data['intermediate_num']; $item['intermediate_success_num'] = $sub_item['success_num'] + $campaign_data['intermediate_num']; $item['intermediate_bonus'] = $sub_item['award']; $item['intermediate_kandian'] = $sub_item['kandian']; } else { $item['elementary_participator_num'] = $sub_item['participator_num'] + $campaign_data['elementary_num']; $item['elementary_puncher_num'] = $sub_item['puncher_num'] + $campaign_data['elementary_num']; $item['elementary_success_num'] = $sub_item['success_num'] + $campaign_data['elementary_num']; $item['elementary_kandian'] = $sub_item['kandian']; $item['elementary_bonus'] = $sub_item['award']; $item['subsidy_need'] = $sub_item['subsidy_need']; } $item['status'] = $this->calStatus($item); } $need = $item['subsidy_need'] ?? 0; $a_total = ($item['elementary_participator_num'] ?? 0) * ($item['elementary_kandian'] ?? 0); $b_total = ($item['intermediate_participator_num'] ?? 0) * ($item['intermediate_kandian'] ?? 0); $c_total = ($item['advanced_participator_num'] ?? 0) * ($item['advanced_kandian'] ?? 0); //奖池总金额 $item['prize_pool'] = $need + $a_total + $b_total + $c_total; $item['elementary_bonus'] = $item['elementary_bonus']??0; $item['intermediate_bonus'] = $item['intermediate_bonus']??0; $item['advanced_bonus'] = $item['advanced_bonus']??0; $list[] = $item; } } $result = array("total" => $total, "rows" => $list); return json($result); } $this->assignconfig('campaign_id', $campaign_id); return $this->view->fetch(); } /** * 计算活动状态 * @param $match * @return string */ public function calStatus($match) { if (strtotime($match['match_date']) > time()) { return '-'; } elseif ($match['match_date'] == date('Ymd', time())) { return '报名期'; } elseif ((strtotime($match['match_date']) + ($match['period'] + 1) * 86400) < time()) { return '结算期'; } else { return '签到期'; } } }