/** * @param $attr */ private function translate($attr) { $ad = new AD(); $types = $ad->get_all_labels(PDO::FETCH_KEY_PAIR); $attr['code'] = md5($attr['id'] . BAOBEI_SALT); $attr['quote_rmb'] = number_format($attr['quote_rmb'] / 100, 2); $attr['ad_type'] = $types[$attr['ad_type']]; $attr['cate'] = ADModel::$CATE[$attr['cate']]; $permissions = $ad->get_permissions(['ad_id' => $attr['id']]); $permissions = array_values($permissions); $attr['permissions'] = implode("\n<br>", $permissions); $attr['feedback'] = ADModel::$FEEDBACK[$attr['feedback']]; $attr['ad_desc'] = preg_replace('/<span style="color: rgb\\(255, 0, 0\\);">(.*?)<\\/span>/', '', $attr['ad_desc']); // 过滤掉标红文字 if (is_numeric($attr['channel'])) { $channel = new Channel(); $attr['channel'] = $channel->get_channel(array('id' => $attr['channel']))[$attr['channel']]; } if ($attr['agreement_id']) { $agreement = new Agreement(); $agreements = $agreement->get_agreements_basic(['id' => $attr['agreement_id']]); $agreement = $agreements[$attr['agreement_id']]; $attr['agreement'] = $agreement['company_short'] ? $agreement['company_short'] : $agreement['company']; } return $attr; }
/** * 取新建广告的表单项,修改广告时当前内容 * @author Meathill * @since 0.1.0 * @param $id */ public function init($id) { $CM = $this->get_cm(); $service = new AD(); $admin = new Admin(); $labels = $service->get_all_labels(); $permissions = $service->get_all_permissions(); $me = $_SESSION['id']; $im_cp = $_SESSION['role'] == Auth::$CP_PERMISSION; $init = array('ad_app_type' => $im_cp ? 2 : 1, 'ad_type' => 0, 'cate' => 1, 'cpc_cpa' => 'cpa', 'put_level' => 3, 'imsi' => 0, 'put_net' => 0, 'net_type' => 0, 'put_jb' => 0, 'put_ipad' => 0, 'salt' => substr(md5(time()), 0, 8), 'url_type' => '', 'province_type' => 0, 'share_text' => '', 'down_type' => 0); $options = array('cates' => array('试用', '注册'), 'net_types' => array('全部', '移动', '联通', '电信'), 'channel_types' => ChannelModel::$TYPE, 'ad_types' => $labels, 'permissions' => $permissions, 'provinces' => $CM->provinces, 'sales' => false, 'cp' => $im_cp); $agreement = new Agreement(); if (!$im_cp) { $init = array_merge($init, array('ratio' => 1, 'feedback' => 0, 'cycle' => 0)); $relative_sales = $options['sales'] = $admin->get_sales_by_me($me); if ($relative_sales) { $relative = array(); foreach ($relative_sales as $key => $value) { $relative[] = array('key' => $key, 'value' => $value); } $options["relativeSales"] = $relative; } $options['agreements'] = $agreement->get_my_agreement(['today' => date('Y-m-d')]); } if ($id === 'init') { $this->output(array('code' => 0, 'msg' => 'init', 'ad' => $init, 'options' => $options)); } // 广告内容 if (!$service->check_ad_owner($id)) { $this->exit_with_error(20, '您无法查询此广告的详细信息', 401); } $res = $service->get_ad_info(array('id' => $id), 0, 1); $res['id'] = $id; $ad_shoot = preg_replace('/^,|,$/', '', $res['ad_shoot']); $ad_shoots = preg_split('/,+/', $ad_shoot); if (is_array($ad_shoots)) { foreach ($ad_shoots as $key => $ad_shoot) { $ad_shoots[$key] = $this->createCompletePath($ad_shoot); } $res['ad_shoot'] = $ad_shoots; } $res['ad_url'] = $this->createCompletePath($res['ad_url']); $res['pic_path'] = $this->createCompletePath($res['pic_path']); // 取计划任务,得投放量 $job_service = new Job(); $job = $job_service->get_ad_daily_job($id); $job = (array) $job[$id]; // 省份 if ($res['province_type'] == 1) { $location = new Location(); $provinces = $location->get_provinces_by_ad($id); $res['put_provinces'] = array_values(array_unique($provinces)); } // 被据广告读原因 if ($res['status'] == 4) { $op_log = new ADOperationLogger(); $log = $op_log->get_log(array('adid' => $id, 'type' => 'ad', 'action' => 'decline')); $res['decline'] = $log; } // 点评 $res['comments'] = $service->get_comments(array('ad_id' => $id)); // 今天的投放情况 $stat = new Stat(); $today = date('Y-m-d'); $filter = [':ad_id' => $id, ':date' => $today]; $clicks = $stat->get_ad_click_by_hour($filter); $transfer = $stat->get_ad_transfer_by_hour($filter); $today_stat = []; for ($hour = 0; $hour < 24; $hour++) { $item = array('hour' => $today . ' ' . $hour); if (isset($clicks[$hour])) { $item['click'] = (int) $clicks[$hour]; } if (isset($transfer[$hour])) { $item['transfer'] = (int) $transfer[$hour]; } $today_stat[] = $item; } if (in_array($res['status'], array(0, 1))) { // 备注 $comments = $service->get_ad_comments(array($id)); $res = array_merge($res, array('cm_others' => $comments[$id])); } $result = array_merge($init, $res, $job); $result['today_stat'] = $today_stat; $this->output(array('code' => 0, 'msg' => 'fetched', 'ad' => $result, 'options' => $options)); }