auth->checkGroupId(AdminConstants::ADMIN_GROUP_ID_AGENT)){ $is_distributor = AdminService::instance()->checkAdminIsDistributor($this->auth->id); // 如果登录用户仅仅是代理商,不是配号代理商 if (!$is_distributor) { $this->error('您没有访问权限'); } } $this->model = model('SendMessage'); $this->send_channel_message_model = model('SendChannelMessage'); } /** * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个方法 * 因此在当前控制器中可不用编写增删改查的代码,如果需要自己控制这部分逻辑 * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 */ /** * 查看 */ public function index() { //设置过滤方法 $this->request->filter(['strip_tags']); if ($this->request->isAjax()) { //如果发送的来源是Selectpage,则转发到Selectpage if ($this->request->request('pkey_name')) { return $this->selectpage(); } list($where, $sort, $order, $offset, $limit) = $this->buildparams(); $sort = 'send_message.id'; $map = ['send_message.admin_id' => $this->auth->id, 'send_message.send_status' => 5, 'send_message.message_status' => 1]; //获取当前登录用户角色 /*if ($this->auth->checkGroupId(AdminConstants::ADMIN_GROUP_ID_CHANNEL, $this->auth->id)) { $map = ['send_message.admin_id' => $this->auth->id]; } elseif ($this->auth->checkGroupId(AdminConstants::ADMIN_GROUP_ID_VIP, $this->auth->id)) { $admin_id = AdminService::instance()->getVipAdminBindModel()->getChannelIds($this->auth->id); $admin_id_str = implode(",", $admin_id); $map = ['scm.channel_id' => ['in', $admin_id_str]]; } else { $map = []; }*/ $total = $this->model->where($where)->where($map)->order($sort, $order)->count(); $list = $this->model->join('send_user_group', 'send_message.user_group_ids = send_user_group.id', 'left') ->field('send_message.*') ->field('send_user_group.group_type') ->where($where) ->where($map) ->order($sort, $order) ->limit($offset, $limit) ->select(); if($list){ $migrate = VisitLimitService::instance()->checkMigratedV2(); $migrateData = []; if ($migrate) { $ids = []; foreach ($list as $k => $item) { $item_map = ['mass_id' => $item['id']]; $ids = array_merge($ids, $this->send_channel_message_model->where($item_map)->column('id')); } $data = ApiService::instance()->getCollectFromApi(ApiConstants::API_ADVANCED_SEND, ['ids' => $ids])->data; foreach ($data as $item) { $migrateData[$item['sendChannelMessageId']] = [ 'uv' => $item['uv'], 'today_uv' => $item['uvDay'], 'amount' => $item['money'], 'today_amount' => $item['moneyDay'], ]; } } foreach ($list as $k => $item) { $item_map = ['mass_id' => $item['id']]; $item_list = $this->send_channel_message_model->where($item_map)->select(); $list[$k]['user_count'] = 0; $list[$k]['success_count'] = 0; $list[$k]['uv'] = 0; $list[$k]['today_uv'] = 0; $list[$k]['amount'] = 0; $list[$k]['today_amount'] = 0; if ($item_list) { foreach ($item_list as $sub_k => $sub_item) { $list[$k]['user_count'] += $sub_item['user_count'] ?? 0; $list[$k]['success_count'] += $sub_item['success_count'] ?? 0; if (!$migrate) { $redis_high_msg_uv = (int)Redis::instance()->get(CacheConstants::getHighMessageUvToDayKey($sub_item['id'])); $redis_high_msg_amount = (float)Redis::instance()->get(CacheConstants::getHighMsgAmountToDayKey($sub_item['id'])); $list[$k]['uv'] += $sub_item['uv'] ?? 0; $list[$k]['today_uv'] += $redis_high_msg_uv ?? 0; $list[$k]['amount'] = round($list[$k]['amount']+$sub_item['amount'] ?? 0, 2); $list[$k]['today_amount'] = round($list[$k]['today_amount'] + $redis_high_msg_amount ?? 0, 2); }else{ if (array_key_exists($sub_item['id'], $migrateData)) { $list[$k]['uv'] += $migrateData[$sub_item['id']]['uv']; $list[$k]['today_uv'] += $migrateData[$sub_item['id']]['today_uv']; $list[$k]['amount'] = round($list[$k]['amount'] + $migrateData[$sub_item['id']]['amount'], 2); $list[$k]['today_amount'] = round($list[$k]['today_amount']+$migrateData[$sub_item['id']]['today_amount'], 2); } } } } } } $result = array("total" => $total, "rows" => $list); return json($result); } return $this->view->fetch(); } }