打算用的是ECshop的个人版网店程序,(http://www.ecshop.com/) 我想在这上面二次开发一个专业的积分程序.
具体规则如下:
7层递归的类似传销的拉下线积分功能..
A推荐B,B推荐C, C推荐D,D推荐E,E推荐F,F推荐G,G推荐H,
如果H购买,H自己的积分是购买的实际金额*5%,
和H相关的推荐人(上线)分别所得积分如下:
推荐人级别 积分
(1) G H购买的实际金额*7%
(2) F H购买的实际金额*6%
(3) E H购买的实际金额*5%
(4) D H购买的实际金额*4%
(5) C H购买的实际金额*3%
(6) B H购买的实际金额*2%
(7) A H购买的实际金额*1% 就是推荐人与被推荐人之间的距离越短,得到的返点积分越多。最高是7%返点。最低是1%的返点。超过7层关系的就不算返点了。
用积分购买物品不再算积分,积分购买不超过物品价值的50%
具体规则如下:
7层递归的类似传销的拉下线积分功能..
A推荐B,B推荐C, C推荐D,D推荐E,E推荐F,F推荐G,G推荐H,
如果H购买,H自己的积分是购买的实际金额*5%,
和H相关的推荐人(上线)分别所得积分如下:
推荐人级别 积分
(1) G H购买的实际金额*7%
(2) F H购买的实际金额*6%
(3) E H购买的实际金额*5%
(4) D H购买的实际金额*4%
(5) C H购买的实际金额*3%
(6) B H购买的实际金额*2%
(7) A H购买的实际金额*1% 就是推荐人与被推荐人之间的距离越短,得到的返点积分越多。最高是7%返点。最低是1%的返点。超过7层关系的就不算返点了。
用积分购买物品不再算积分,积分购买不超过物品价值的50%
如果这样的话,就需要知道某人的前导,然后按照公式算就okay
uid mediumint(8) unsigned NOT NULL auto_increment comment '用户流水号',
username varchar(20) NOT NULL default '' comment '用户名',
upper_uid mediumint(8) unsigned NOT NULL default 0 '上家编号',
PRIMARY KEY (`uid`),
KEY `username` (`username`),
KEY `upper_uid` (`upper_uid`)
)uid username upper_uid
1 A 0
2 B 1
3 C 2
4 D 3
5 E 4
6 F 5
7 G 6
8 H 7<?php
$arr = array( 1 => 0,
2 => 1,
3 => 2,
4 => 3,
5 => 4,
6 => 5,
7 => 6,
8 => 7, );
/*
id 购买者编号
price 支付价格
relations 购买者和他的全部上线的关系
*/
function getUpperInfo( $id, $price=0, $relations )
{
// 层数限制
$level_limit = 7;
$l = 0;
// 每层的积分率
$percent = array( 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07 );
$uid = $id;
while ( $relations[$uid] && $l < $level_limit )
{
$score[$relations[$uid]] = round( $percent[$l] * $price, 2 );
$uid = $relations[$uid];
$l++;
}
ksort($score);
return $score;
}
print_r( getUpperInfo( 8, 12998, $arr ) );
exit;
?>
很差,很粗糙~
每次购买时,把各级的积分收入插入到LOG表里.最后由LOG表去统计 积分分成.
uid int(8) unsigned NOT NUL, ##注册用户的数字ID
upper_uid int(8) unsigned NOT NULL default 0,##'上家编号'
PRIMARY KEY (`uid`),
KEY `upper_uid` (`upper_uid`)
)ENGINE=MYISAM DEFAULT CHARSET=utf8;
上面数据库是用来存储已经注册的用户之间的推荐关系表(根据传销的规则:一个人只能有一个上线,一个上线可以有多个下线,所以这里定义uid为主键:唯一),upper_uid为0表示不是被人推荐的(也就是传消起始人).
这里需要写一个函数 getUpperUid($uid),从上面表里读取相应上层推荐人.这个函数很容易写,这里就省略了.
还需要一个函数,就是更新用户积分的函数 updateScore($uid,$addedScore),这个函数是更新数据库中积分记录的函数,也是非常容易写的,这里省略.
下面给出核心的执行函数:/**
*$uid:用户ID
*$money:购买的实际金额
*$grade:用户推荐的等级关系, 初始值为7
**/
function setUserScore($uid,$money,$grade=7){
$addedScore = $money*($grade/100);
updateScore($uid,$addedScore);
$upperUid = getUpperUid($uid);
if($upperUid >0 && $grade >0)
{
//如果存在上级推荐人则执行
setUserScore($upperUid,$money,$grade--);//递归循环
}
return true;
}OK,完成了.