public function save(array $attr = null) { $DB = $this->get_write_pdo(); // 取发票ID或者渠道ID $agreement_service = new Agreement(); $agreement = $agreement_service->get_agreement_by_id(array('agreement_id' => $attr['agreement_number'])); $attr = array_merge(array('agreement_id' => $agreement['id']), $attr); unset($attr['agreement_number']); $attr = $attr ? $attr : $this->attributes; $new_attr = $this->judge_status($attr, $attr['comment']); // 关联的广告信息 $invoice_ads = $attr['products']; unset($attr['products']); $incomes = $this->multi_100(Utils::array_pick($attr, self::$INVOICE_INCOMES)); $attr = array_merge($attr, $new_attr, $incomes, array('apply_time' => date('Y-m-d'))); // 插入发票表 $this->save_invoice_info($DB, $attr); // 核减发送通知给相应的运营 if ($attr['income'] != $attr['income_first']) { // 查找商务对应的运营 $admin_service = new Admin(); $operation_id = $admin_service->get_sale_operation($_SESSION['id']); // 记录到通知表 $notice = new Notification(); $notice->send(array('uid' => SQLHelper::$lastInsertId, 'admin_id' => $operation_id, 'alarm_type' => Notification::$NEW_INVOICE, 'create_time' => date('Y-m-d H:i:s'))); } $invoice_id = SQLHelper::$lastInsertId; $this->attributes = array_merge(array('id' => $invoice_id), $this->attributes); $invoice_ad_arr = array(); if (is_array($invoice_ads)) { $invoice_ad_arr = $this->construct_invoice_ads($invoice_ads, $invoice_id); } // 插入到发票广告关联表 $this->save_invoice_ad_info($DB, $invoice_ad_arr); }
public function renew($id) { $mailer = new Mailer(); $service = new Agreement(); $admin = new Admin(); $me = $_SESSION['id']; $managers = [4 => '*****@*****.**', 23 => '*****@*****.**', 45 => '*****@*****.**', 129 => '*****@*****.**']; $attr = $this->get_post_data(); $attr['fullname'] = $_SESSION['fullname']; $agreement = $service->get_agreement_by_id(['id' => $id]); if (!$agreement) { $this->exit_with_error(11, '参数错误', 400); } if ($agreement['owner'] != $me) { $this->exit_with_error(10, '你不能对别人的合同进行操作', 403); } $agreement['company_type'] = Agreement::$TYPE[$agreement['company_type']]; $content = $mailer->create('agreement-renew', $agreement, $attr); $manager = $admin->get_my_manager($me); $to = ['*****@*****.**', $managers[$manager]]; $cc = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', $_SESSION['user'] . '@dianjoy.com']; $check = $mailer->send($to, '商务申请合同续期', $content, $cc); if ($check) { $this->output(['code' => 0, 'msg' => '发送成功']); } else { $this->exit_with_error(20, '发送邮件失败', 400, $check); } }
public function get_notice($admin_id, $role, $latest) { $DB = $this->get_read_pdo(); $m = new Mustache_Engine(); $ad_service = new AD(); $sql = "SELECT `type`\n FROM `t_alarm_group`\n WHERE `group`={$role}"; $types = $DB->query($sql)->fetchAll(PDO::FETCH_COLUMN); $types = implode(',', $types); $type_sql = $types ? " OR `alarm_type` IN ({$types})" : ''; // 只取最近一周,再早的估计也没啥处理的必要了 $date = date('Y-m-d', time() - 86400 * 6); $sql = "SELECT a.`id`, `uid`, `user_id`, `app_id`, `ad_id`, a.`status`,\n `create_time`, `op_time`, `description`, `handler`\n FROM `t_admin_alarm_log` a LEFT JOIN `t_alarm_type` t ON a.alarm_type=t.id\n WHERE (`admin_id`='{$admin_id}' {$type_sql})\n AND `create_time`>'{$date}' AND a.`status`=0 AND a.`id`>{$latest}\n ORDER BY `id` DESC"; $alarms = $DB->query($sql)->fetchAll(PDO::FETCH_ASSOC); foreach ($alarms as &$alarm) { $alarm['id'] = (int) $alarm['id']; if ($alarm['ad_id']) { if (strlen($alarm['ad_id']) == 32) { $ad = $ad_service->get_ad_info(array('id' => $alarm['ad_id']), 0, 1); $alarm['name'] = $ad['ad_name']; } } else { if ($alarm['uid']) { // 发票通知提醒 $invoice_id = $alarm['uid']; $invoice_service = new Invoice(); $agreement_service = new Agreement(); $invoice = $invoice_service->get_invoice_by_id($invoice_id); $agreement = $agreement_service->get_agreement_by_id(array('id' => $invoice['agreement_id'])); $alarm['channel'] = $agreement['company_short']; $admin_service = new Admin(); $sale = $admin_service->get_sales_info($alarm['user_id']); $alarm['sale'] = $sale['NAME']; } } $alarm['status'] = (int) $alarm['status']; $alarm['handler'] = $m->render($alarm['handler'], $alarm); } return $alarms; }
public function init($id) { $me = $_SESSION['id']; $invoice_service = new Invoice(); $admin_service = new Admin(); $agreement_service = new Agreement(); // 获取收款方业务负责人 $chargers = $admin_service->get_chargers($me); $applicant = $admin_service->get_sales_info($me); $is_assistant = false; if ($chargers) { $is_assistant = true; } $options = array('types' => InvoiceModel::$TYPE, 'content_types' => InvoiceModel::$CONTENT_TYPE, 'is_assistant' => $is_assistant); if ($id === 'init') { $this->get_init_params($chargers, $applicant, $options); } $res = $invoice_service->get_invoice_by_id($id); if ($res['agreement_id']) { $agreement = $agreement_service->get_agreement_by_id(array('id' => $res['agreement_id'])); // 结算单收款方信息 $accept = InvoiceModel::$ACCEPT[$agreement['company_dianjoy']]; } $products = $invoice_service->get_invoice_ad_by_invoiceid($id); $res = array_merge(array('products' => $products, 'chargers' => $chargers, 'company' => $agreement['company'], 'company_short' => $agreement['company_short'], 'agreement_number' => $agreement['agreement_id'], 'cycle' => $agreement['cycle'], 'rmb' => $agreement['rmb'], 'agreement_comment' => $agreement['comment'], 'ad_name' => $agreement['ad_name'], 'sign_date' => $agreement['sign_date'], 'company_dianjoy' => $agreement['company_dianjoy'], 'accept_company' => $accept['accept_company'], 'accept_bank' => $accept['accept_bank'], 'accept_account' => $accept['accept_account']), $res); if (count($products) > 0) { $res = array_merge($res, array('income' => round($res['income'] / 100, 2), 'income_first' => round($res['income_first'] / 100, 2), 'joy_income' => round($res['joy_income'] / 100, 2), 'red_ad_income' => round($res['red_ad_income'] / 100, 2), 'red_ios_income' => round($res['red_ios_income'] / 100, 2))); } if ($res['status'] == 40) { $options = array_merge(array('view' => true), $options); } $this->output(array('code' => 0, 'msg' => 'fetched', 'invoice' => $res, 'options' => $options)); }