} catch (Exception $ex) { $res['message'] = $ex; } } $sql_insert = 'INSERT INTO ' . $GLOBALS['ecs']->table('users_data_stats') . '(data_id,admin_id,user_type,handle_time)VALUES(' . "{$rec_id},{$_SESSION['admin_id']},{$feed},UNIX_TIMESTAMP())"; $GLOBALS['db']->query($sql_insert); die($json->encode($res)); } elseif ($_REQUEST['act'] == 'view_admin_cate') { // 权限控制 if (!admin_priv('everyone_sales', '', false)) { $admin_list = get_admin_tmp_list($_SESSION['role_id']); $group_list = get_group_list($_SESSION['role_id']); $smarty->assign('group_list', $group_list); } else { $role_id = '1,9'; $admin_list = get_admin_tmp_list($role_id); } // 部门列表 $smarty->assign('role_list', get_role_list(' WHERE role_type IN (1,2) ')); // 客服列表 $smarty->assign('admin_list', $admin_list); $smarty->assign('curr_title', '查看自定义列表'); $res['main'] = $smarty->fetch('view_admin_cate.htm'); die($json->encode($res)); } elseif ($_REQUEST['act'] == 'view_user_list') { $admin_id = intval($_REQUEST['admin_id']); $smarty->assign('cat_list', user_cat_list(1, $admin_id)); $user_list = user_list(); $smarty->assign('user_list', $user_list['user_list']); // 分页设置 $smarty->assign('page_link', $user_list['condition'] . '&id=' . intval($_REQUEST['tag']));
/** * 计算客服的顾客回购率 */ 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; }
$sch_condition .= '&order_class=' . $_REQUEST['order_class']; } $smarty->assign('sch_condition', $sch_condition); // 分页参数 $smarty->assign('page_link', $order_list['condition']); $smarty->assign('page_set', $order_list['page_set']); $smarty->assign('record_count', $order_list['record_count']); $smarty->assign('page_size', $order_list['page_size']); $smarty->assign('page', $order_list['page']); $smarty->assign('page_count', $order_list['page_count']); $smarty->assign('page_start', $order_list['start']); $smarty->assign('page_end', $order_list['end']); $smarty->assign('filter', $order_list['filter']); if ($order_list['filter']['platform']) { $smarty->assign('group_list', get_group_list($order_list['filter']['platform'])); $smarty->assign('admin_list', get_admin_tmp_list($order_list['filter']['platform'])); } if ($order_list['filter']['group_id']) { $smarty->assign('admin_list', get_admin_list_by_group($order_list['filter']['group_id'])); } if ($order_list['filter']['brand']) { $smarty->assign('goods_list', get_goods_by_brand($order_list['filter']['brand'])); } if (admin_priv('order_print', '', false)) { $smarty->assign('access', 1); } $smarty->assign('curr_title', '每日订单核对'); $smarty->assign('num', sprintf('(%d笔订单,共%.2f元)', $order_list['record_count'], $order_list['final_amount'])); $res['main'] = $smarty->fetch('everyday_order_check.htm'); if (isset($_REQUEST['day'])) { $res['id'] = $_REQUEST['day'];
} //是否升级 $sql_select = 'SELECT rank_id,rank_name,min_points,max_points,role_id FROM ' . $GLOBALS['ecs']->table('user_rank') . " WHERE {$val['cur_integral']} BETWEEN min_points AND max_points AND role_id={$val['role_id']}"; $inte = $GLOBALS['db']->getRow($sql_select); if ($inte['rank_id'] != $val['rank_id']) { $val['rankup_name'] = $inte['rank_name']; $val['rankup_id'] = $inte['rank_up_id']; } } //积分规则 $sql_select = 'SELECT integral_id,integral_title FROM ' . $GLOBALS['ecs']->table('integral') . ' WHERE available = 1'; $inte_rule = $GLOBALS['db']->getAll($sql_select); $smarty->assign('integral', $integral); $smarty->assign('inte_rule', $inte_rule); $smarty->assign('role', get_role()); $smarty->assign('admin', get_admin_tmp_list()); $smarty->assign('filter', $filter); $smarty->assign('empty', $filter['record_count']); $smarty->assign('sort_type', $sort_type); $res['main'] = $smarty->fetch('confirm_inte.htm'); } die($json->encode($res)); } elseif ($_REQUEST['act'] == 'confirm_integral') { if (admin_priv('confirm_integral', '', false) || admin_priv('all', '', false)) { $confirm_type = intval($_REQUEST['type']); $res = array('req_msg' => true, 'time_out' => 2000, 'code' => 0, 'message' => ''); if (isset($_REQUEST['inte_id'])) { //确认当前页 if ($confirm_type == 1) { $inte_id = mysql_real_escape_string($_REQUEST['inte_id']); } elseif ($confirm_type == 2) {