public static function get_crm_res() { $result = array(); $now = date('Y-m-d'); $three_months_before = date('Y-m-d', strtotime('-3 months')); $filters = array('salesman' => $_SESSION['id']); $channel_service = new Channel(); $channel_list = $channel_service->get_channel_ads($filters); $payment_list = $channel_service->get_channel_payment($filters, $three_months_before, $now); $quote_list = $channel_service->get_channel_quote($filters, $three_months_before, $now); $quantity_list = $channel_service->get_channel_ads_nums($filters, $three_months_before, $now); foreach ($quote_list as $key => $quote) { $total = 0; foreach ($quote as $item) { $quote_rmb = $item['quote_rmb']; $nums = $item['nums']; $total += (int) $quote_rmb * (int) $nums; } $result[$key] = array('total' => $total); } foreach ($payment_list as $key => $payment) { $cycle_total = 0; $rmb_total = 0; foreach ($payment as $item) { $paid_time = $item['paid_time']; $invoice_time = $item['invoice_time']; $cycle_days = Utils::calculate_date($paid_time, $invoice_time); $cycle_total += self::judge_days($cycle_days); $rmb_total += $item['rmb']; } $quote_nums = count($payment); $score_cycle = round((int) $cycle_total / (ChannelModel::$MAX_SCORES['cycle'] * $quote_nums), 2); $result[$key] = array_merge($result[$key], array('score_cycle' => $score_cycle, 'rmb' => $rmb_total)); if (isset($result[$key]['total'])) { $payment_rate = round($result[$key]['rmb'] / $result[$key]['total'], 2); $score_payment_rate = round((int) self::judge_payment($payment_rate) / ChannelModel::$MAX_SCORES['payment_rate'], 2); $cut_rate = 1 - $payment_rate; $score_cut_rate = round((int) self::judge_payment($cut_rate) / ChannelModel::$MAX_SCORES['cut_rate'], 2); $result[$key] = array_merge($result[$key], array('payment_rate' => $score_payment_rate, 'cut_rate' => $score_cut_rate)); } } foreach ($channel_list as $key => $channel) { $nums = 0; foreach ($channel as $item) { $feedback = $item['feedback']; $nums += $item['nums']; if (in_array($feedback, array_keys(ChannelModel::$FEEDBACK_SCORES))) { $result[$key]['score_feedback'] += ChannelModel::$FEEDBACK_SCORES[$feedback] * $item['nums']; } } $result[$key]['nums'] = $nums; $score_nums = round((int) self::judge_nums($nums) / ChannelModel::$MAX_SCORES['nums'], 2); $score_feedback = round((int) $result[$key]['score_feedback'] / (ChannelModel::$MAX_SCORES['feedback'] * $nums), 2); $result[$key] = array_merge($result[$key], array('score_nums' => $score_nums, 'score_feedback' => $score_feedback)); } foreach ($quantity_list as $key => $quantity) { $score = self::judge_quantity($quantity); if (isset($result[$key])) { $result[$key] = array_merge($result[$key], array('frequency' => round((int) $score / ChannelModel::$MAX_SCORES['quantity'], 2))); } } return $result; }