You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
359 lines
15 KiB
359 lines
15 KiB
<?php
|
|
|
|
/**
|
|
* ECSHOP 程序说明
|
|
* ===========================================================
|
|
* * 版权所有 2005-2016 上海商创网络科技有限公司,并保留所有权利。
|
|
* 网站地址: http://www.ecmoban.com;
|
|
* ----------------------------------------------------------
|
|
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
|
|
* 使用;不允许对程序代码以任何形式任何目的的再发布。
|
|
* ==========================================================
|
|
* $Author: liubo $
|
|
* $Id: affiliate_ck.php 17217 2011-01-19 06:29:08Z liubo $
|
|
*/
|
|
|
|
define('IN_ECS', true);
|
|
require(dirname(__FILE__) . '/includes/init.php');
|
|
|
|
admin_priv('affiliate_ck');
|
|
$timestamp = time();
|
|
|
|
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
|
|
empty($affiliate) && $affiliate = array();
|
|
$separate_on = $affiliate['on'];
|
|
|
|
/*------------------------------------------------------ */
|
|
//-- 分成页
|
|
/*------------------------------------------------------ */
|
|
if ($_REQUEST['act'] == 'list')
|
|
{
|
|
$logdb = get_affiliate_ck();
|
|
$smarty->assign('full_page', 1);
|
|
$smarty->assign('ur_here', $_LANG['affiliate_ck']);
|
|
$smarty->assign('on', $separate_on);
|
|
$smarty->assign('logdb', $logdb['logdb']);
|
|
$smarty->assign('filter', $logdb['filter']);
|
|
$smarty->assign('record_count', $logdb['record_count']);
|
|
$smarty->assign('page_count', $logdb['page_count']);
|
|
if (!empty($_GET['auid']))
|
|
{
|
|
$smarty->assign('action_link', array('text' => $_LANG['back_note'], 'href'=>"users.php?act=edit&id=$_GET[auid]"));
|
|
}
|
|
assign_query_info();
|
|
$smarty->display('affiliate_ck_list.htm');
|
|
}
|
|
/*------------------------------------------------------ */
|
|
//-- 分页
|
|
/*------------------------------------------------------ */
|
|
elseif ($_REQUEST['act'] == 'query')
|
|
{
|
|
$logdb = get_affiliate_ck();
|
|
$smarty->assign('logdb', $logdb['logdb']);
|
|
$smarty->assign('on', $separate_on);
|
|
$smarty->assign('filter', $logdb['filter']);
|
|
$smarty->assign('record_count', $logdb['record_count']);
|
|
$smarty->assign('page_count', $logdb['page_count']);
|
|
|
|
$sort_flag = sort_flag($logdb['filter']);
|
|
$smarty->assign($sort_flag['tag'], $sort_flag['img']);
|
|
|
|
make_json_result($smarty->fetch('affiliate_ck_list.htm'), '', array('filter' => $logdb['filter'], 'page_count' => $logdb['page_count']));
|
|
}
|
|
/*
|
|
取消分成,不再能对该订单进行分成
|
|
*/
|
|
elseif ($_REQUEST['act'] == 'del')
|
|
{
|
|
$oid = (int)$_REQUEST['oid'];
|
|
$stat = $db->getOne("SELECT is_separate FROM " . $GLOBALS['ecs']->table('order_info') . " WHERE order_id = '$oid'");
|
|
if (empty($stat))
|
|
{
|
|
$sql = "UPDATE " . $GLOBALS['ecs']->table('order_info') .
|
|
" SET is_separate = 2" .
|
|
" WHERE order_id = '$oid'";
|
|
$db->query($sql);
|
|
}
|
|
$links[] = array('text' => $_LANG['affiliate_ck'], 'href' => 'affiliate_ck.php?act=list');
|
|
sys_msg($_LANG['edit_ok'], 0 ,$links);
|
|
}
|
|
/*
|
|
撤销某次分成,将已分成的收回来
|
|
*/
|
|
elseif ($_REQUEST['act'] == 'rollback')
|
|
{
|
|
$logid = (int)$_REQUEST['logid'];
|
|
$stat = $db->getRow("SELECT * FROM " . $GLOBALS['ecs']->table('affiliate_log') . " WHERE log_id = '$logid'");
|
|
if (!empty($stat))
|
|
{
|
|
if($stat['separate_type'] == 1)
|
|
{
|
|
//推荐订单分成
|
|
$flag = -2;
|
|
}
|
|
else
|
|
{
|
|
//推荐注册分成
|
|
$flag = -1;
|
|
}
|
|
log_account_change($stat['user_id'], -$stat['money'], 0, -$stat['point'], 0, $_LANG['loginfo']['cancel']);
|
|
$sql = "UPDATE " . $GLOBALS['ecs']->table('affiliate_log') .
|
|
" SET separate_type = '$flag'" .
|
|
" WHERE log_id = '$logid'";
|
|
$db->query($sql);
|
|
}
|
|
$links[] = array('text' => $_LANG['affiliate_ck'], 'href' => 'affiliate_ck.php?act=list');
|
|
sys_msg($_LANG['edit_ok'], 0 ,$links);
|
|
}
|
|
/*
|
|
分成
|
|
*/
|
|
elseif ($_REQUEST['act'] == 'separate')
|
|
{
|
|
include_once(ROOT_PATH . 'includes/lib_order.php');
|
|
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
|
|
empty($affiliate) && $affiliate = array();
|
|
|
|
$separate_by = $affiliate['config']['separate_by'];
|
|
|
|
$oid = (int)$_REQUEST['oid'];
|
|
|
|
$row = $db->getRow("SELECT o.order_sn, o.is_separate, (o.goods_amount - o.discount) AS goods_amount, o.user_id FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('users') . " u ON o.user_id = u.user_id".
|
|
" WHERE order_id = '$oid'");
|
|
|
|
$order_sn = $row['order_sn'];
|
|
|
|
if (empty($row['is_separate']))
|
|
{
|
|
$affiliate['config']['level_point_all'] = (float)$affiliate['config']['level_point_all'];
|
|
$affiliate['config']['level_money_all'] = (float)$affiliate['config']['level_money_all'];
|
|
if ($affiliate['config']['level_point_all'])
|
|
{
|
|
$affiliate['config']['level_point_all'] /= 100;
|
|
}
|
|
if ($affiliate['config']['level_money_all'])
|
|
{
|
|
$affiliate['config']['level_money_all'] /= 100;
|
|
}
|
|
$money = round($affiliate['config']['level_money_all'] * $row['goods_amount'],2);
|
|
$integral = integral_to_give(array('order_id' => $oid, 'extension_code' => ''));
|
|
$point = round($affiliate['config']['level_point_all'] * intval($integral['rank_points']), 0);
|
|
|
|
if(empty($separate_by))
|
|
{
|
|
//推荐注册分成
|
|
$num = count($affiliate['item']);
|
|
for ($i=0; $i < $num; $i++)
|
|
{
|
|
$affiliate['item'][$i]['level_point'] = (float)$affiliate['item'][$i]['level_point'];
|
|
$affiliate['item'][$i]['level_money'] = (float)$affiliate['item'][$i]['level_money'];
|
|
if ($affiliate['item'][$i]['level_point'])
|
|
{
|
|
$affiliate['item'][$i]['level_point'] /= 100;
|
|
}
|
|
if ($affiliate['item'][$i]['level_money'])
|
|
{
|
|
$affiliate['item'][$i]['level_money'] /= 100;
|
|
}
|
|
$setmoney = round($money * $affiliate['item'][$i]['level_money'], 2);
|
|
$setpoint = round($point * $affiliate['item'][$i]['level_point'], 0);
|
|
$row = $db->getRow("SELECT o.parent_id as user_id,u.user_name FROM " . $GLOBALS['ecs']->table('users') . " o" .
|
|
" LEFT JOIN" . $GLOBALS['ecs']->table('users') . " u ON o.parent_id = u.user_id".
|
|
" WHERE o.user_id = '$row[user_id]'"
|
|
);
|
|
$up_uid = $row['user_id'];
|
|
if (empty($up_uid) || empty($row['user_name']))
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
$info = sprintf($_LANG['separate_info'], $order_sn, $setmoney, $setpoint);
|
|
log_account_change($up_uid, $setmoney, 0, $setpoint, 0, $info);
|
|
write_affiliate_log($oid, $up_uid, $row['user_name'], $setmoney, $setpoint, $separate_by);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//推荐订单分成
|
|
$row = $db->getRow("SELECT o.parent_id, u.user_name FROM " . $GLOBALS['ecs']->table('order_info') . " o" .
|
|
" LEFT JOIN" . $GLOBALS['ecs']->table('users') . " u ON o.parent_id = u.user_id".
|
|
" WHERE o.order_id = '$oid'"
|
|
);
|
|
$up_uid = $row['parent_id'];
|
|
if(!empty($up_uid) && $up_uid > 0)
|
|
{
|
|
$info = sprintf($_LANG['separate_info'], $order_sn, $money, $point);
|
|
log_account_change($up_uid, $money, 0, $point, 0, $info);
|
|
write_affiliate_log($oid, $up_uid, $row['user_name'], $money, $point, $separate_by);
|
|
}
|
|
else
|
|
{
|
|
$links[] = array('text' => $_LANG['affiliate_ck'], 'href' => 'affiliate_ck.php?act=list');
|
|
sys_msg($_LANG['edit_fail'], 1 ,$links);
|
|
}
|
|
}
|
|
$sql = "UPDATE " . $GLOBALS['ecs']->table('order_info') .
|
|
" SET is_separate = 1" .
|
|
" WHERE order_id = '$oid'";
|
|
$db->query($sql);
|
|
}
|
|
$links[] = array('text' => $_LANG['affiliate_ck'], 'href' => 'affiliate_ck.php?act=list');
|
|
sys_msg($_LANG['edit_ok'], 0 ,$links);
|
|
}
|
|
function get_affiliate_ck()
|
|
{
|
|
|
|
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
|
|
empty($affiliate) && $affiliate = array();
|
|
$separate_by = $affiliate['config']['separate_by'];
|
|
|
|
$sqladd = '';
|
|
if (isset($_REQUEST['status']))
|
|
{
|
|
$sqladd = ' AND o.is_separate = ' . (int)$_REQUEST['status'];
|
|
$filter['status'] = (int)$_REQUEST['status'];
|
|
}
|
|
if (isset($_REQUEST['order_sn']))
|
|
{
|
|
$sqladd = ' AND o.order_sn LIKE \'%' . trim($_REQUEST['order_sn']) . '%\'';
|
|
$filter['order_sn'] = $_REQUEST['order_sn'];
|
|
}
|
|
if (isset($_GET['auid']))
|
|
{
|
|
$sqladd = ' AND a.user_id=' . $_GET['auid'];
|
|
}
|
|
|
|
if(!empty($affiliate['on']))
|
|
{
|
|
if(empty($separate_by))
|
|
{
|
|
//推荐注册分成
|
|
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('affiliate_log') . " a ON o.order_id = a.order_id" .
|
|
" WHERE o.user_id > 0 AND (u.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0) $sqladd";
|
|
}
|
|
else
|
|
{
|
|
//推荐订单分成
|
|
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('affiliate_log') . " a ON o.order_id = a.order_id" .
|
|
" WHERE o.user_id > 0 AND (o.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0) $sqladd";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('affiliate_log') . " a ON o.order_id = a.order_id" .
|
|
" WHERE o.user_id > 0 AND o.is_separate > 0 $sqladd";
|
|
}
|
|
|
|
|
|
$filter['record_count'] = $GLOBALS['db']->getOne($sql);
|
|
$logdb = array();
|
|
/* 分页大小 */
|
|
$filter = page_and_size($filter);
|
|
|
|
if(!empty($affiliate['on']))
|
|
{
|
|
if(empty($separate_by))
|
|
{
|
|
//推荐注册分成
|
|
$sql = "SELECT o.*, a.log_id, a.user_id as suid, a.user_name as auser, a.money, a.point, a.separate_type,u.parent_id as up FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('affiliate_log') . " a ON o.order_id = a.order_id" .
|
|
" WHERE o.user_id > 0 AND (u.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0) $sqladd".
|
|
" ORDER BY order_id DESC" .
|
|
" LIMIT " . $filter['start'] . ",$filter[page_size]";
|
|
|
|
/*
|
|
SQL解释:
|
|
|
|
列出同时满足以下条件的订单分成情况:
|
|
1、有效订单o.user_id > 0
|
|
2、满足以下情况之一:
|
|
a.有用户注册上线的未分成订单 u.parent_id > 0 AND o.is_separate = 0
|
|
b.已分成订单 o.is_separate > 0
|
|
|
|
*/
|
|
}
|
|
else
|
|
{
|
|
//推荐订单分成
|
|
$sql = "SELECT o.*, a.log_id,a.user_id as suid, a.user_name as auser, a.money, a.point, a.separate_type,u.parent_id as up FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('affiliate_log') . " a ON o.order_id = a.order_id" .
|
|
" WHERE o.user_id > 0 AND (o.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0) $sqladd" .
|
|
" ORDER BY order_id DESC" .
|
|
" LIMIT " . $filter['start'] . ",$filter[page_size]";
|
|
|
|
/*
|
|
SQL解释:
|
|
|
|
列出同时满足以下条件的订单分成情况:
|
|
1、有效订单o.user_id > 0
|
|
2、满足以下情况之一:
|
|
a.有订单推荐上线的未分成订单 o.parent_id > 0 AND o.is_separate = 0
|
|
b.已分成订单 o.is_separate > 0
|
|
|
|
*/
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//关闭
|
|
$sql = "SELECT o.*, a.log_id,a.user_id as suid, a.user_name as auser, a.money, a.point, a.separate_type,u.parent_id as up FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('affiliate_log') . " a ON o.order_id = a.order_id" .
|
|
" WHERE o.user_id > 0 AND o.is_separate > 0 $sqladd" .
|
|
" ORDER BY order_id DESC" .
|
|
" LIMIT " . $filter['start'] . ",$filter[page_size]";
|
|
}
|
|
|
|
|
|
$query = $GLOBALS['db']->query($sql);
|
|
while ($rt = $GLOBALS['db']->fetch_array($query))
|
|
{
|
|
if(empty($separate_by) && $rt['up'] > 0)
|
|
{
|
|
//按推荐注册分成
|
|
$rt['separate_able'] = 1;
|
|
}
|
|
elseif(!empty($separate_by) && $rt['parent_id'] > 0)
|
|
{
|
|
//按推荐订单分成
|
|
$rt['separate_able'] = 1;
|
|
}
|
|
if(!empty($rt['suid']))
|
|
{
|
|
//在affiliate_log有记录
|
|
$rt['info'] = sprintf($GLOBALS['_LANG']['separate_info2'], $rt['suid'], $rt['auser'], $rt['money'], $rt['point']);
|
|
if($rt['separate_type'] == -1 || $rt['separate_type'] == -2)
|
|
{
|
|
//已被撤销
|
|
$rt['is_separate'] = 3;
|
|
$rt['info'] = "<s>" . $rt['info'] . "</s>";
|
|
}
|
|
}
|
|
$logdb[] = $rt;
|
|
}
|
|
$arr = array('logdb' => $logdb, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
|
|
|
|
return $arr;
|
|
}
|
|
function write_affiliate_log($oid, $uid, $username, $money, $point, $separate_by)
|
|
{
|
|
$time = gmtime();
|
|
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('affiliate_log') . "( order_id, user_id, user_name, time, money, point, separate_type)".
|
|
" VALUES ( '$oid', '$uid', '$username', '$time', '$money', '$point', $separate_by)";
|
|
if ($oid)
|
|
{
|
|
$GLOBALS['db']->query($sql);
|
|
}
|
|
}
|
|
?>
|