Ejemplo n.º 1
0
        } 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']));
Ejemplo n.º 2
0
/**
 * 计算客服的顾客回购率
 */
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;
}
Ejemplo n.º 3
0
     $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'];
Ejemplo n.º 4
0
            }
            //是否升级
            $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) {