function getCacheInfos() { static $cacheInfos; if (isset($cacheInfos)) { return $cacheInfos; } $phpCacheCount = xcache_count(XC_TYPE_PHP); $varCacheCount = xcache_count(XC_TYPE_VAR); $cacheInfos = array(); $total = array(); global $maxHitsByHour; $maxHitsByHour = array(0, 0); for ($i = 0; $i < $phpCacheCount; $i++) { $data = xcache_info(XC_TYPE_PHP, $i); if ($_GET['do'] === 'listphp') { $data += xcache_list(XC_TYPE_PHP, $i); } $data['type'] = XC_TYPE_PHP; $data['cache_name'] = "php#{$i}"; $data['cacheid'] = $i; $cacheInfos[] = $data; $maxHitsByHour[XC_TYPE_PHP] = max($maxHitsByHour[XC_TYPE_PHP], max($data['hits_by_hour'])); if ($phpCacheCount >= 2) { calc_total($total, $data); } } if ($phpCacheCount >= 2) { $total['type'] = XC_TYPE_PHP; $total['cache_name'] = _T('Total'); $total['cacheid'] = -1; $total['gc'] = null; $total['istotal'] = true; unset($total['compiling']); $cacheInfos[] = $total; } $total = array(); for ($i = 0; $i < $varCacheCount; $i++) { $data = xcache_info(XC_TYPE_VAR, $i); if ($_GET['do'] === 'listvar') { $data += xcache_list(XC_TYPE_VAR, $i); } $data['type'] = XC_TYPE_VAR; $data['cache_name'] = "var#{$i}"; $data['cacheid'] = $i; $cacheInfos[] = $data; $maxHitsByHour[XC_TYPE_VAR] = max($maxHitsByHour[XC_TYPE_VAR], max($data['hits_by_hour'])); if ($varCacheCount >= 2) { calc_total($total, $data); } } if ($varCacheCount >= 2) { $total['type'] = XC_TYPE_VAR; $total['cache_name'] = _T('Total'); $total['cacheid'] = -1; $total['gc'] = null; $total['istotal'] = true; $cacheInfos[] = $total; } return $cacheInfos; }
<?php // Settings $excludes_order = array('detail'); $includes_order = array('/\\d{5,8}(_big)?(_p\\d+)?\\.', '/waren', '/kaberen', '/moeren', '/kabeura', '/moeura'); $deselects = array('this-one-needs-duplicate'); $normal_depth = isset($_GET['depth']) ? intval($_GET['depth']) : 2; if (!isset($_GET['file'])) { select_file(); } elseif (isset($_POST['generate'])) { generate_new_list(); } elseif (isset($_GET['calctotal'])) { calc_total(); } else { dupselect_ui(); } function proper_size($size, $maxcnt = 0) { $suffix = ''; $suxAry = array("KB", "MB", "GB", "TB"); $ccnt = $maxcnt ? $maxcnt : count($suxAry); for ($cnt = 0; $cnt < $ccnt; $cnt++) { if ($size > 1024) { $size /= 1024; $suffix = $suxAry[$cnt]; } } return $suffix ? sprintf("%.1f", $size) . $suffix : $size . 'B'; } function countchar($str, $chr) {
/** * 计算客服的顾客回购率 */ function repo_rate() { $filter['role_id'] = isset($_REQUEST['platform']) && !empty($_REQUEST['platform']) ? intval($_REQUEST['platform']) : 0; $filter['admin_id'] = isset($_REQUEST['admin_id']) && !empty($_REQUEST['admin_id']) ? intval($_REQUEST['admin_id']) : 0; $ex_where = ''; // 按部门 获取需要计算回购率的客服 // 中老年、会员部 客服列表 if (admin_priv('personal_repo_all', '', false)) { // 部门 $ex_where = $filter['role_id'] ? " AND u.role_id={$filter['role_id']} " : ' AND u.role_id IN (' . OFFLINE_SALE . ') '; // 客服 $ex_where .= $filter['admin_id'] ? " AND u.admin_id={$filter['admin_id']} " : ''; } elseif (admin_priv('personal_repo_part', '', false)) { // 所属部门客服 if (admin_priv('personal_repo_trans-part', '', false)) { $trans_role_list = trans_part_list(); $admin_list = admin_list_by_role($trans_role_list); if ($admin_list === false) { $admin_list = get_admin_tmp_list($_SESSION['role_id']); } $ex_where = ' AND u.role_id IN (' . implode(',', $trans_role_list) . ')'; } else { $admin_list = get_admin_tmp_list($_SESSION['role_id']); $ex_where = " AND u.role_id={$_SESSION['role_id']} "; } // 个人 $ex_where .= $filter['admin_id'] ? " AND u.admin_id={$filter['admin_id']} " : ''; } elseif (admin_priv('personal_repo_row', '', false)) { // 所属小组客服 // 小组 } else { // 客服 $_REQUEST['admin_id'] = $_SESSION['admin_id']; $admin_list[$_SESSION['admin_id']] = $_SESSION['admin_name']; $ex_where = " AND u.admin_id={$_SESSION['admin_id']} "; } // 时间 if (empty($_REQUEST['start_time']) || empty($_REQUEST['end_time'])) { $filter['start_time'] = date('Y-m-01 00:00:00'); $filter['end_time'] = date('Y-m-t 23:59:59'); } else { $filter['start_time'] = trim($_REQUEST['start_time']); $filter['end_time'] = trim($_REQUEST['end_time']); } $time_limit = ' AND i.add_time BETWEEN ' . strtotime($filter['start_time']) . ' AND ' . strtotime($filter['end_time']); // 取该段时间之前的有过购买记录的顾客 $before_time = ' AND i.user_id IN (SELECT user_id FROM ' . $GLOBALS['ecs']->table('order_info') . ' WHERE order_status IN (1,5) AND shipping_status IN (0,1,2) AND team<>23 AND final_amount>0 AND team>0 AND add_time<' . strtotime($filter['start_time']) . ')'; $sql_select = 'SELECT SUM(i.final_amount) purchases_amount,COUNT(i.order_id) purchases_number,u.admin_id,u.admin_name,u.user_id FROM ' . $GLOBALS['ecs']->table('users') . ' u,' . $GLOBALS['ecs']->table('order_info') . ' i WHERE i.order_status IN (1,5) AND i.shipping_status IN (0,1,2) AND i.team<>23 ' . ' AND u.user_id=i.user_id AND i.final_amount>0 AND i.team>0 AND u.admin_id>0 '; $owner_order = 'AND i.admin_id=u.admin_id AND i.order_type=4 '; $group_by = ' GROUP BY i.user_id'; $having_count = ' HAVING COUNT(order_id)>1 '; // 获取老顾客当期的有效订单 $repo_list = $GLOBALS['db']->getAll($sql_select . $owner_order . $ex_where . $time_limit . $before_time . $group_by); $calc_repo_current = calc_total($repo_list); // 获取当期所有的有效订单 $purchases = $GLOBALS['db']->getAll($sql_select . $owner_order . $ex_where . $time_limit . $group_by); $calc_total_current = calc_total($purchases); // 获取所有老顾客的订单总量 $repo_total_list = $GLOBALS['db']->getAll($sql_select . $ex_where . $group_by . $having_count); $calc_repo_total = calc_total($repo_total_list); // 获取顾客所有有效订单 $purchases_total = $GLOBALS['db']->getAll($sql_select . $ex_where . $group_by); $calc_total_all = calc_total($purchases_total); // 统计每位客服的顾客数量 //$sql_select = 'SELECT COUNT(DISTINCT user_id) users_number, admin_id, admin_name FROM '. //$GLOBALS['ecs']->table('users').' WHERE admin_id>0 AND customer_type IN (2,3,4,5,11) AND role_id<>23 GROUP BY admin_id'; $sql_select = 'SELECT COUNT(DISTINCT user_id) users_number, admin_id, admin_name FROM ' . $GLOBALS['ecs']->table('users') . ' u WHERE u.admin_id>0 AND u.customer_type NOT IN(5,6,7,21) AND u.user_id IN (SELECT user_id FROM ' . $GLOBALS['ecs']->table('order_info') . ' WHERE order_status IN (1,5) AND shipping_status IN (0,1,2) AND team<>23 AND final_amount>0 AND order_type IN (3,4,5,6,7))'; $users_number = $GLOBALS['db']->getAll($sql_select . $ex_where . ' GROUP BY admin_id'); $users_list = array(); $users_total = 0; foreach ($users_number as $val) { $users_list[$val['admin_id']] = $val; $users_total += $val['users_number']; } // 计算每位客服的顾客回购率 $merge_data = array(); foreach ($calc_total_all as $key => $val) { // 全部订单 @($merge_data[$key]['total_all_users_number'] = $val['users_number']); @($merge_data[$key]['total_all_order_number'] = $val['order_number']); @($merge_data[$key]['total_all_order_amount'] = $val['order_amount']); // 当期所有订单 @($merge_data[$key]['total_current_users_number'] = $calc_total_current[$key]['users_number']); @($merge_data[$key]['total_current_order_number'] = $calc_total_current[$key]['order_number']); @($merge_data[$key]['total_current_order_amount'] = $calc_total_current[$key]['order_amount']); // 老顾客所有订单 @($merge_data[$key]['repo_total_users_number'] = $calc_repo_total[$key]['users_number']); @($merge_data[$key]['repo_total_order_number'] = $calc_repo_total[$key]['order_number']); @($merge_data[$key]['repo_total_order_amount'] = $calc_repo_total[$key]['order_amount']); // 老顾客当期订单 @($merge_data[$key]['repo_current_users_number'] = $calc_repo_current[$key]['users_number']); @($merge_data[$key]['repo_current_order_number'] = $calc_repo_current[$key]['order_number']); @($merge_data[$key]['repo_current_order_amount'] = $calc_repo_current[$key]['order_amount']); @($merge_data[$key]['admin_name'] = $users_list[$key]['admin_name']); @($merge_data[$key]['users_number'] = $users_list[$key]['users_number']); } unset($key, $val); // 计算百分比 foreach ($merge_data as $key => &$val) { // 老顾客占顾客总量 @($val['users_current_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_current_users_number'], $val['users_number'], 4) * 100)); // 订单金额比 当期 @($val['order_current_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_current_order_amount'], $val['total_all_order_amount'], 4) * 100)); // 顾客数量比 @($val['users_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_total_users_number'], $val['users_number'], 4) * 100)); // 订单数量比 @($val['order_number_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_total_order_number'], $val['total_all_order_number'], 4) * 100)); // 订单金额比 所有的订单 @($val['order_amount_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_total_order_amount'], $val['total_all_order_amount'], 4) * 100)); } @($merge_data['total']['admin_name'] = '总计'); @($merge_data['total']['users_number'] = $users_total); @($merge_data['total']['users_old_vs_total'] = sprintf('%.2f%%', bcdiv($merge_data['total']['repo_total_users_number'], $users_total, 4) * 100)); @($merge_data['total']['users_current_old_vs_total'] = sprintf('%.2f%%', bcdiv($merge_data['total']['repo_current_users_number'], $users_total, 4) * 100)); krsort($merge_data); return $merge_data; }