123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Elton
- * Date: 2019/11/1
- * Time: 15:08
- */
- namespace app\admin\controller\campaign;
- use app\admin\service\LogService;
- use app\common\controller\Backend;
- use app\common\service\CampaignService;
- use think\Controller;
- use think\Db;
- use think\Request;
- class Matchcollect extends Backend
- {
- protected $campaign_match_model;
- public function _initialize()
- {
- parent::_initialize();
- $this->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 '签到期';
- }
- }
- }
|