打算用的是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%

解决方案 »

  1.   

    直接联系 QQ 30241513 或PM 
      

  2.   

    如果是B购买,那A就应该是:B购买的实际金额*7% ?
    如果这样的话,就需要知道某人的前导,然后按照公式算就okay
      

  3.   

    create table users(
    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;
    ?>
    很差,很粗糙~
      

  4.   

    思路注册后,记录推荐人.
    每次购买时,把各级的积分收入插入到LOG表里.最后由LOG表去统计 积分分成.
      

  5.   

    create table relation(
        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,完成了.