万元购车系统万元购车程序陌车系统开发记录

万元购车系统万元购车程序陌车系统开发记录

系统开发都是一个过程,代码从键盘一点一点敲出来,整个系统开发花了不少时间,项目完工后就心情轻松

有需要探讨这方面开发的朋友,请加我微信交流:15889726201

在开发万元购车系统过程中,归纳了几大核心处理类,每一个类做横向的功能扩展,方便前台会员和万元购车系统服务端调用。

1.万元购车系统会员类

2.万元购车系统资金类

3.万元购车系统会员出局类

4.万元购车系统会员网体结构类

 

下面是几个类的代码内容

1.万元购车系统会员类

<?php
defined('IN_KELE') or exit('Access Denied');
class member {
    var $fields;
    var $db;
    var $table_member;
    var $userid;
    var $errmsg;
    var $CFG;
    var $memberStatus;
    function __construct(){
        global $db,$CFG;
        $this->fields = array('userid','username','password','passwordHigh','fullname','mobile','idcard','belong','addtime','activeTime','status','bank','bankBranch','bankAccout','accoutName','salt','saltHigh');
        $this->db=$db;
        $this->table_member=$db->pre.'member';
        $this->CFG=$CFG;
        $this->memberStatus=$CFG['memberStatus'];
    }
    
    //数据校验
    //post数据相关
    function pass($post) {
        if(!is_array($post)) return $this->err('数据提交异常');
        if(!isset($post['username'])) return $this->err('请设置会员账户');
        $fullname=  isset($post['fullname'])?$post['fullname']:'';
        if(strlen($fullname)<2) return $this->err('请输入姓名');
        $mobile=  isset($post['mobile'])?$post['mobile']:'';
        if(!is_mobile($mobile)) return $this->err('请输入正确的手机号码');
        $idcard=  isset($post['idcard'])?$post['idcard']:'';
        if(!is_idcard($idcard)) return $this->err('请输入正确的身份证号码');
        return true;  
    }

//会员信息的初开始数据设置
    function set($post){
        global $KL_TIME;
        $post['addtime']=$KL_TIME;
        $post['status']=isset($post['status'])?$post['status']:'1';
        $post['activeTime']=($post['status']=='4')?$KL_TIME:0;
        
        $post['belong']=trim($post['belong'])?$post['belong']:'1';//如果设置为0表示顶级
        $password=$post['password'];
        $passwordHeigh=$post['password'];
        $post['salt'] = random(4);
    $post['saltHigh'] = random(4);
    $post['password'] = password_made($password, $post['salt']);//登录密码
    $post['passwordHigh'] = password_made($passwordHeigh, $post['saltHigh']);//安全密码
        return array_map("trim", $post);

    }

//会员添加
    function add($member){
                $member_fields=$this->fields ;
                $member=$this->set($member);
                $password=  isset($member['password'])?$member['password']:'';
                if(strlen($password)<6) return $this->err('密码长度请设置6位以上');
                $passwordHigh=  isset($member['passwordHigh'])?$member['passwordHigh']:'';
                if(strlen($passwordHigh)<6) return $this->err('安全密码长度请设置6位以上');
                if(is_array($this->get_one($member['username']))) return $this->err('您要注册的会员账户已经存在');
                $member['username']=trim($member['username']);
                $member_sqlk = $member_sqlv='';
                foreach($member as $k=>$v) {
                    if(in_array($k, $member_fields)) {$member_sqlk .= ','.$k; $member_sqlv .= ",'$v'";}
        }
                $member_sqlk = substr($member_sqlk, 1);
                $member_sqlv = substr($member_sqlv, 1);
                $this->db->query("INSERT INTO {$this->table_member} ($member_sqlk) VALUES ($member_sqlv)");
                $this->userid = $this->db->insert_id();
                return true;
                
    }

//会员信息修改    
    function edit($member){
         global $KL_TIME;
        $member_fields=$this->fields ;
        $member_sql  = '';
        //激活时间设定
     
            if(!$member['activeTime']&&($member['status']==4)){
                $member['activeTime']=$KL_TIME;
            }

        $password=isset($member['password'])?$member['password']:0;
        $passwordHeigh=isset($member['passwordHigh'])?$member['passwordHigh']:0;
        if($password) {
            if(strlen($password)<6) return $this->err('密码长度请设置6位以上');
            $member['salt'] = random(4);
            $member['password'] = password_made($password, $member['salt']);//登录密码
        }
        else{
            unset($member['password']);
        }
        if($passwordHeigh){
            if(strlen($passwordHeigh)<6) return $this->err('密码长度请设置6位以上');
            $member['saltHigh'] = random(4);
            $member['passwordHigh'] = password_made($passwordHeigh, $member['saltHigh']);//安全密码
        } 
        else{
             unset($member['passwordHigh']);
        }
        
        foreach($member as $k=>$v) {
            if(in_array($k, $member_fields)) $member_sql .= ",$k='$v'";
    }
        $member_sql = substr($member_sql, 1);
        $this->db->query("UPDATE {$this->table_member} SET $member_sql WHERE userid=$this->userid");
        $this->tuijianBonus($member['username']);//*********系统自动判定是否要发放推荐奖 
        $member['userid'] = $this->userid;
        return true;
    }

    function get_one($username = '') {
    $condition = $username ? "username='$username'" : "userid='$this->userid'";
        return $this->db->get_one("SELECT * FROM {$this->table_member} WHERE  {$condition}");
    }
        
    function listinfo($condition = 'status=4', $order = 'userid DESC'){
        global $pages, $page, $pagesize, $offset;
        $items = $this->db->count("{$this->table_member}",$condition); 
        $pages = pages($items, $page, $pagesize);
        $result=$this->db->query("SELECT * from {$this->table_member} WHERE $condition order by {$order} LIMIT {$offset},{$pagesize}");
        $lists=array();
        while($row=$this->db->fetch_array($result)){ 
        $row['statusCN']=array_key_exists($row['status'], $this->memberStatus)?$this->memberStatus[$row['status']]:''; 
        $row['underCount']=$this->db->count("{$this->table_member}","belong='{$row['username']}' and recommMoneyStatus=1");//计算推荐人数
        $leaderArr=$this->db->get_one("SELECT username as leader FROM {$this->db->pre}camp WHERE leftTask='{$row['username']}' OR rightTask='{$row['username']}'");
        $row['leader']=$leaderArr['leader'];
        $lists[]=$row;
        }
        return $lists;
    }
    
    function tuijianBonus($username){
        
        $userArr=$this->get_one($username);
        if($userArr){
            $recommMoneyStatus=$userArr['recommMoneyStatus'];
            $userBelong=$userArr['belong'];
            if((!$recommMoneyStatus)&&($userArr['status']=='4')){
                require KL_ROOT.'/source/class/bonus.class.php';
                $bonus=new bonus();
                //推荐奖发放
                $bonus->add($userBelong,$this->CFG['recommMOney'],'1',"推荐会员{$username}");
                //更新用户的推荐奖发放状态
                $this->db->query("UPDATE {$this->table_member} SET recommMoneyStatus='1' WHERE username='{$username}'");
            }
        }
    }
    
    function login($username,$password,$code=''){
        $memberInfo=$this->get_one($username);
        if($memberInfo){
           $passowrdHash= password_made($password, $memberInfo['salt']);//哈希密码验证
            if($passowrdHash!=$memberInfo['password']){
                return $this->err('密码错误');
            }
            $status=$memberInfo['status'];
            switch ($status){
                case '1':
                    return $this->err('登录失败,账户正在审核中');
                    break;
                case '2':
                    return $this->err('您的账户5次出局都没有推荐会员,已被弹出');
                    break;
                case '3':
                    return $this->err('登录失败,当前账户被锁定');
                    break;
                default :
                    $_SESSION['username']=$memberInfo['username'];
                    $_SESSION['fullname']=$memberInfo['fullname'];
                    $_SESSION['status']=$memberInfo['username'];
                    return true;
                    break;
            }
        }
        else{
            return $this->err('登录账户不存在');
            
        }
    }
    
    
    function err($error) {
    $this->errmsg = $error;
    return false;
    }
}

 

 2.万元购车系统资金类

<?php
/* 
资金账户处理类
 */
class bonus{
    var $db;
    var $errmsg;
    var $table;
    var $cfg;
    function __construct(){
        global $db,$CFG;
        $this->db=$db;
        $this->table=$db->pre.'bonus';
        $this->cfg=$CFG;
    }
    /**
       * 现金币和购车基金增减处理
       * @param  [String] username 账户名
       * @param [Float] amount 添加金额
       * @param [Int] type 资金类型
       * @param [String] reason  添加原因
       * @param [String] note  详细备注
     */
    function add($username,$amount,$type='0',$reason='',$userling='',$note='',$carMoneyType='1'){
      
        global $KL_TIME;
        $bonusType=$this->cfg['bonusType'];
        
        if(!$username){
            return false;
        }
        
        if(!array_key_exists($type, $bonusType)){
            $this->errmsg='要操作的奖金类型不存在';
            return false;
        }
        if($type=='2'){
            $this->db->query("UPDATE {$this->db->pre}member SET moneyCar=moneyCar+{$amount} WHERE username='{$username}'");
            $r=$this->db->get_one("SELECT moneyCar FROM {$this->db->pre}member WHERE username='{$username}'");
            $balance=$r['moneyCar'];
            $sql="INSERT INTO {$this->db->pre}bonus_car (username,underling,amount,balance,addtime,reason,carMoneyType) "
            . "VALUES('{$username}','{$userling}','{$amount}','{$balance}','{$KL_TIME}','{$reason}','{$carMoneyType}')";
            $this->db->query($sql);
            return true;
        }
        else{
           
            $this->db->query("UPDATE {$this->db->pre}member SET money=money+{$amount} WHERE username='{$username}'");
            $r=$this->db->get_one("SELECT money FROM {$this->db->pre}member WHERE username='{$username}'");
            $balance=$r['money'];
            $sql="INSERT INTO {$this->db->pre}bonus (username,amount,balance,type,reason,note,addtime) VALUES "
            . "('{$username}','{$amount}','{$balance}','{$type}','{$reason}','{$note}','{$KL_TIME}')";
            $this->db->query($sql);
            return true;
        }
        
        
    }
    
    //系统对现金币手工化妆
    function bonusSystem($username,$amount,$reason){
        global $KL_TIME;
        $userInfo=memberInfo($username);
        if(!$userInfo){
            $this->errmsg='操作失败,要划账的用户不存在';
            return false;
        }
        
        if(!is_numeric($amount)){
            $this->errmsg='操作失败,金额必须是整数';
            return false;
        }
        
        if(!($amount%100===0)){
            $this->errmsg='操作失败,金额必须是100的整数';
            return false;
        }
        if(($amount<0)&&($amount>$userInfo['money'])){
            $this->errmsg='操作失败,账户余额不足';
            return false;
        }
        
        $this->db->query("UPDATE {$this->db->pre}member SET money=money+{$amount} WHERE username='{$username}'");
        $r=$this->db->get_one("SELECT money FROM {$this->db->pre}member WHERE username='{$username}'");
        $balance=$r['money'];
        //报单币增加记录
        $sql="INSERT INTO {$this->db->pre}bonus (username,amount,balance,type,reason,addtime) "
                . "VALUES('{$username}','{$amount}','{$balance}','8','{$reason}','{$KL_TIME}')";
        $this->db->query($sql);   
        return true;  
    }
    
    
    //系统对购车基金手工划账
    function bonusCarSystem($username,$amount,$reason){
        global $KL_TIME;
        $userInfo=memberInfo($username);
        if(!$userInfo){
            $this->errmsg='操作失败,要划账的用户不存在';
            return false;
        }
        
        if(!is_numeric($amount)){
            $this->errmsg='操作失败,金额必须是整数';
            return false;
        }
        
        if(!($amount%100===0)){
            $this->errmsg='操作失败,金额必须是100的整数';
            return false;
        }
        if(($amount<0)&&($amount>$userInfo['moneyCar'])){
            $this->errmsg='操作失败,账户余额不足';
            return false;
        }
        
        $this->db->query("UPDATE {$this->db->pre}member SET moneyCar=moneyCar+{$amount} WHERE username='{$username}'");
        $r=$this->db->get_one("SELECT moneyCar FROM {$this->db->pre}member WHERE username='{$username}'");
        $balance=$r['moneyCar'];
        //增加记录
        $sql="INSERT INTO {$this->db->pre}bonus_car (username,amount,balance,carMoneyType,reason,addtime) "
                . "VALUES('{$username}','{$amount}','{$balance}','3','{$reason}','{$KL_TIME}')";
        $this->db->query($sql);   
        return true;  
    }
    
    
    
    
    //系统对报单币手工划账
    function bonusManageSystem($username,$amount,$reason){
        global $KL_TIME;
        $userInfo=memberInfo($username);
        if(!$userInfo){
            $this->errmsg='操作失败,要划账的用户不存在';
            return false;
        }
        
        if(!is_numeric($amount)){
            $this->errmsg='操作失败,金额必须是整数';
            return false;
        }
        
        if(!($amount%100===0)){
            $this->errmsg='操作失败,金额必须是100的整数';
            return false;
        }
        if(($amount<0)&&($amount>$userInfo['moneyManage'])){
            $this->errmsg='操作失败,账户余额不足';
            return false;
        }
        
        $this->db->query("UPDATE {$this->db->pre}member SET moneyManage=moneyManage+{$amount} WHERE username='{$username}'");
        $r=$this->db->get_one("SELECT moneyManage FROM {$this->db->pre}member WHERE username='{$username}'");
        $balance=$r['moneyManage'];
        //报单币增加记录
        $sql="INSERT INTO {$this->db->pre}bonus_manage (username,amount,balance,manageType,reason,addtime) "
                . "VALUES('{$username}','{$amount}','{$balance}','3','{$reason}','{$KL_TIME}')";
        $this->db->query($sql);   
        return true; 
        
        
        
        
    }
    
    
    
    
    
    //报单币记录操作 如果
    function exchangeBonus($username,$amount,$fromUsername='',$manageType,$reason=''){
        global $KL_TIME;
        $amount=abs($amount);
        
        if(!($amount%100===0)){
            $this->errmsg='操作失败,金额必须是100的整数';
            return false;
        }
               
        //报单币更新
        //判断自己的现金币转报单币给自己
        
        if(($manageType=='1')&&(!$fromUsername)){
            $userInfo=memberInfo($username);
            if($userInfo['money']<$amount){
                $this->errmsg='转换失败,您的现金币余额不足';
                return false;
            }
           
            $this->add($username,'-'.$amount,'7','现金币转报单币');//自己的现金币扣除       
            $this->db->query("UPDATE {$this->db->pre}member SET moneyManage=moneyManage+{$amount} WHERE username='{$username}'");
            $r=$this->db->get_one("SELECT moneyManage FROM {$this->db->pre}member WHERE username='{$username}'");
            $balance=$r['moneyManage'];
            //报单币增加记录
            $sql="INSERT INTO {$this->db->pre}bonus_manage (username,amount,balance,manageType,fromUsername,reason,addtime) "
                . "VALUES('{$username}','{$amount}','{$balance}','{$manageType}','{$fromUsername}','{$reason}','{$KL_TIME}')";
            $this->db->query($sql);   
            return true; 
            
            
        } 
            
 
            
        
        //自己的报单币转给会员报单币账户
        if(($manageType=='2')&&($username!=$fromUsername)){
            $userInfo=memberInfo($username);
            if($userInfo['moneyManage']<$amount){
                $this->errmsg='转换失败,您的报单币余额不足';
                return false;
            }
            //我的报单币扣除处理
            $Myamount=-abs($amount);
            $this->db->query("UPDATE {$this->db->pre}member SET moneyManage=moneyManage+{$Myamount} WHERE username='{$username}'");
            $r=$this->db->get_one("SELECT moneyManage FROM {$this->db->pre}member WHERE username='{$username}'");
            $balance=$r['moneyManage'];
            //报单币扣减的记录处理
            $sql="INSERT INTO {$this->db->pre}bonus_manage (username,amount,balance,manageType,fromUsername,reason,addtime) "
                . "VALUES('{$username}','{$Myamount}','{$balance}','{$manageType}','{$fromUsername}','转出报单币给{$fromUsername}','{$KL_TIME}')";
            $this->db->query($sql);
            
            //对方的报单币增加处理
            $this->db->query("UPDATE {$this->db->pre}member SET moneyManage=moneyManage+{$amount} WHERE username='{$fromUsername}'");
            $r=$this->db->get_one("SELECT moneyManage FROM {$this->db->pre}member WHERE username='{$fromUsername}'");
            $balance=$r['moneyManage'];
            //报单币扣减的记录处理
            $sql="INSERT INTO {$this->db->pre}bonus_manage (username,amount,balance,manageType,fromUsername,reason,addtime) "
                . "VALUES('{$fromUsername}','{$amount}','{$balance}','{$manageType}','{$username}','收到{$username}的报单币','{$KL_TIME}')";
            $this->db->query($sql);
            return true;
            
        }
        
  
    }
    
    //系统处理报单币
    function exchangeBonusSystem($username,$amount,$reason=''){
        global $KL_TIME;
        if($amount<0){
            $userInfo=memberInfo($username);
            if($userInfo['moneyManage']<abs($amount)){
            $this->errmsg='报单币余额不足';
            return false;
            }
        }  
        $this->db->query("UPDATE {$this->db->pre}member SET moneyManage=moneyManage+{$amount} WHERE username='{$username}'");
        $r=$this->db->get_one("SELECT moneyManage FROM {$this->db->pre}member WHERE username='{$username}'");
        $balance=$r['moneyManage'];
        $sql="INSERT INTO {$this->db->pre}bonus_manage (username,amount,balance,manageType,reason,addtime) "
                . "VALUES('{$username}','{$amount}','{$balance}','0','{$reason}','{$KL_TIME}')";
        $this->db->query($sql);
        return true;
    }
    
    //购车基金转现金币***************************************
    //
    function carBonusToBonus($username,$amount,$carMoneyType=2,$reason){
        global $KL_TIME;        
        $carMoneyToMoney=$this->cfg['carMoneyToMoney'];//初次购车基金提现额度
        $userInfo=memberInfo($username);
        if(!$userInfo['carMoneyToMoneyStatus']){
            $this->errmsg="购车基金转换失败!购车基金提现必须满足如下两种之一<br>方式1:购买一台汽车 <br>方式2:联系公司转让购车基金给公司会员。";
            return false;
        }
        if($userInfo['moneyCar']<abs($amount)){
            $this->errmsg='购车基金转换失败!购车基金转换的金额小于余额';
            return false;
        }
        
        if(!($amount%100===0)){
            $this->errmsg='购车基金转换失败!转换的金额必须是100的整数';
            return false;
        }
        
        
        
        
        $this->db->query("UPDATE {$this->db->pre}member SET moneyCar=moneyCar+{$amount} WHERE username='{$username}'");
        $r=$this->db->get_one("SELECT moneyCar FROM {$this->db->pre}member WHERE username='{$username}'");
        $balance=$r['moneyCar'];
        $sql="INSERT INTO {$this->db->pre}bonus_car (username,amount,balance,carMoneyType,reason,addtime) "
            . "VALUES('{$username}','{$amount}','{$balance}','{$carMoneyType}','{$reason}','{$KL_TIME}')";
        if($this->db->query($sql)){
          $amount=abs($amount);
          $taxPercent=$this->cfg['carMoneyCharge']*100;
          $reason="{$amount}元购车基金转现金币,税费{$taxPercent}%";
          $amount=$amount-$amount*$this->cfg['carMoneyCharge'];
          $this->add($username,$amount,'6',$reason); //现金币表里增加购车基金转换来的奖金
          return true;
        }
        else{
            $this->errmsg='购车基金转换失败,请校对';
            return false;
        } 
    }
    
    
    function listinfo($condition = ' ', $order = 'id DESC'){
        global $pages, $page, $pagesize, $offset, $items, $statusArr;
        $bonusType=$this->cfg['bonusType'];
        $items = $this->db->count("{$this->table}",$condition); 
        $pages = pages($items, $page, $pagesize);
        $result=$this->db->query("SELECT * from {$this->table} WHERE $condition order by {$order} LIMIT {$offset},{$pagesize}");
        $lists=array();
        while($row=$this->db->fetch_array($result)){
        $row['bonusType']=$bonusType[''.$row['type'].''];//奖金类型赋值
        $lists[]=$row;
        }
        return $lists;
    }
    
    
    //奖金提现申请
    function moneyTake($username,$amount){ 
        global $KL_TIME;
        $r=$this->db->get_one("SELECT * FROM {$this->db->pre}member WHERE username='{$username}'");
        $moneyUser=$r['money'];
        if($moneyUser<$amount&&$amount){
           return $this->err('您的提现金额小于奖金总金额,请核实');
        }
        $moneyPercent=$this->cfg['moneyPercent'];//手续费百分比
        $serviceCharge=$amount*$moneyPercent;//提现收取的手续费
        $amountActual=$amount-$serviceCharge;//提现实际金额
        $bankInfo="银行:{$r['bank']}&nbsp;&nbsp;{$r['bankBranch']}<br>账户名:{$r['accoutName']}<br>账号:{$r['bankAccout']}";
        if($amount%100===0){//判断是否是100的整数
            $this->add($username,'-'.$amount,'5','奖金提现申请');//奖金扣除记录
            //提现申请记录
            $this->db->query("INSERT INTO {$this->db->pre}take_money "
            . "(username,amount,amountActual,serviceCharge,moneyPercent,bankInfo,status,addtime) "
            . "VALUES('{$username}','{$amount}','{$amountActual}','{$serviceCharge}','{$moneyPercent}','{$bankInfo}','1','{$KL_TIME}')");
          return true;
        }
        else{
           return $this->err('提现金额必须是100的整数');
          
        }
    }
    //奖金提现列表
    function listTake($condition = ' ', $order = 'id DESC'){
        global $pages, $page, $pagesize, $offset;
        $takeStatus=$this->cfg['takeStatus'];
        $items = $this->db->count("{$this->db->pre}take_money",$condition); 
        $pages = pages($items, $page, $pagesize);
        $result=$this->db->query("SELECT * from {$this->db->pre}take_money WHERE $condition order by {$order} LIMIT {$offset},{$pagesize}");
        $lists=array();
        while($row=$this->db->fetch_array($result)){
        $row['statusCn']=$takeStatus[''.$row['status'].''];//提现状态设为中文
        $lists[]=$row;
        }
        return $lists;
    }
    
    //确认提现记录是否存在
    function moneyOne($username,$id){
        $money=$this->db->get_one("SELECT * FROM {$this->db->pre}take_money WHERE username='{$username}' and id='{$id}'");
        if($money){
           return $money; 
        }
        else{
            return $this->err('提现记录不存在');
        }
    }

    function moneyOk($username,$id,$status,$note=''){
        global $KL_TIME;
        $moneyArr=$this->moneyOne($username,$id);
       if(!$moneyArr){
           return $this->err('提现记录不存在');
       }
       if($moneyArr['status']=='2'){
           return $this->err('该笔提现申请已通过审核,请勿重复提交');
       }
       if($status=='2'){
           $this->db->query("UPDATE {$this->db->pre}take_money SET "
           . "status='{$status}',settime='{$KL_TIME}',note='{$note}' "
           . "WHERE id='{$id}'");
          return true;
       }
       return $this->err('系统错误,提现审核失败');
    }
    
    //购车基金列表
    function listCarBonus($condition = ' ', $order = 'id DESC'){
        global $pages, $page, $pagesize, $offset;
        $items = $this->db->count("{$this->db->pre}bonus_car",$condition); 
        $pages = pages($items, $page, $pagesize);
        $result=$this->db->query("SELECT * from {$this->db->pre}bonus_car WHERE $condition order by {$order} LIMIT {$offset},{$pagesize}");
        $lists=array();
        $carMoneyType=$this->cfg['carMoneyType'];//购车基金数据类型
        while($row=$this->db->fetch_array($result)){
        $row['carMoneyTypeCn']=array_key_exists($row['carMoneyType'], $carMoneyType)?$carMoneyType[''.$row['carMoneyType'].'']:'';//报单币操作中文类型
        $lists[]=$row;
        }
        return $lists;
    }
    
    function listManageBonus($condition = ' ', $order = 'id DESC'){
        global $pages, $page, $pagesize, $offset;
        $items = $this->db->count("{$this->db->pre}bonus_manage",$condition); 
        $pages = pages($items, $page, $pagesize);
        $result=$this->db->query("SELECT * from {$this->db->pre}bonus_manage WHERE $condition order by {$order} LIMIT {$offset},{$pagesize}");
        $lists=array();
        $mangeMoneyType=$this->cfg['mangeMoneyType'];//报单币数据类型
        while($row=$this->db->fetch_array($result)){
            $row['manageTypeCn']=array_key_exists($row['manageType'], $mangeMoneyType)?$mangeMoneyType[''.$row['manageType'].'']:'';//报单币操作中文类型
            $lists[]=$row;
        }
        return $lists;
    }
            
    
    function err($error) {
    $this->errmsg = $error;
    return false;
    }
}

 

3.万元购车系统会员出局类

<?php

/* 
 出局分析
 */
class outing{
    var $db;
    var $errmsg;
    var $table;
    var $cfg;
    var $outAbout;
    function __construct(){
        global $db,$CFG;
        $this->db=$db;
        $this->table=$db->pre.'outing';
        $this->cfg=$CFG;
    }
    //获得出局账户的相关信息
    function outInfo($username){
        $campArr=$this->db->get_one("select * from {$this->db->pre}camp as a left join "
        . " {$this->db->pre}member as b on a.username=b.username "
        . "  where a.username='{$username}' and outing=1");
        if($campArr&&$campArr['outing']){
            
            $leftUser=$campArr['leftUser'];
            $rightUser=$campArr['rightUser'];
            $leftTask=$campArr['leftTask'];
            $rightTask=$campArr['rightTask'];
            //推荐人的购车基金奖励 ,如果推荐人不存在,那么就不发放系统奖励
            $userTask1=memberInfo($leftTask);//获得左任务会员信息
            $userTask2=memberInfo($rightTask);//获得右任务会员信息
            //$leftTaskCarMoney=$userTask1['carMoney'];//购车基金是否已被发放
            $leftTaskCarMoney=0;
            $rightTaskCarMoney=0;
            //$rightTaskCarMoney=$userTask2['carMoney'];//购车基金是否已被发放
            $carMoneyAmount=$this->cfg['carMoney'];//获得系统配置的购车基金奖励
            $leftTaskBelong='0';//默认设置 如果推荐人账户不存在 那么就为0
            $rightTaskBelong='0';//默认设置 如果推荐人账户不存在 那么就为0
            if($userTask1['belong']){//验证左任务推荐人是否是真实存在的
                if(memberInfo($userTask1['belong'])){
                    $leftTaskBelong=$userTask1['belong'];
                }
            }
            if($userTask2['belong']){//验证右任务推荐人是否是真实存在的
                if(memberInfo($userTask2['belong'])){
                    $rightTaskBelong=$userTask2['belong'];
                }

            }
            $this->outAbout['username']=$username;
            $this->outAbout['fullname']=$campArr['fullname'];
            $this->outAbout['mobile']=$campArr['mobile'];
            $this->outAbout['belong']=$campArr['belong'];
            $this->outAbout['leftUser']=$leftUser;  
            $this->outAbout['rightUser']=$rightUser; 
            $this->outAbout['leftTask']=$leftTask;
            $this->outAbout['rightTask']=$rightTask;
            $this->outAbout['leftTaskBelong']=$leftTaskBelong;
            $this->outAbout['rightTaskBelong']=$rightTaskBelong;
            $this->outAbout['leftTaskCarMoney']=$leftTaskCarMoney;
            $this->outAbout['rightTaskCarMoney']=$rightTaskCarMoney;
            $this->outAbout['carMoneyAmount']=$carMoneyAmount;
            return $this->outAbout;
        }
        else{
            $this->err('当前账户还没达到出局条件');
            return false;
        }
        
        
    }
    
//出局核心流程处理********************************************************
//数据处理与归档
    function outCore($username){
        global $KL_TIME,$CFG;
        if($this->outInfo($username)){
            $outingArr=$this->outInfo($username);
        }
        else{
            $this->err('当前账户还没达到出局条件');
            return false;
        }
        $username=$outingArr['username'];
        $leftUser=$outingArr['leftUser'];
        $rightUser=$outingArr['rightUser'];
        $leftTask=$outingArr['leftTask']?$outingArr['leftTask']:'0';
        $leftTaskBelong=$outingArr['leftTaskBelong']?$outingArr['leftTaskBelong']:'0';
        $rightTask=$outingArr['rightTask']?$outingArr['rightTask']:'0';
        $rightTaskBelong=$outingArr['rightTaskBelong']?$outingArr['rightTaskBelong']:'0';
        $carMoneyAmount=$outingArr['carMoneyAmount'];

        //对即将出局的账户做网体数据记录开始,生成一条网体字符串,以英文逗号","作为拆分,
        //位置是:1(领导),2(左),3(右),4(左1),5(左2),6(右1),7(右2)
        $leftArr=$this->db->get_one("select leftUser,rightUser from {$this->db->pre}camp where username='{$leftUser}'");
        $rightArr=$this->db->get_one("select leftUser,rightUser from {$this->db->pre}camp where username='{$rightUser}'");
        $left1=$leftArr?$leftArr['leftUser']:0;
        $left2=$leftArr?$leftArr['rightUser']:0;
        $right1=$rightArr?$rightArr['leftUser']:0;
        $right2=$rightArr?$rightArr['rightUser']:0;
        $team="{$username},{$leftUser},{$rightUser},{$left1},{$left2},{$right1},{$right2}";
        //对即将出局的账户做网体数据记录结束

        //$leftCarMoney=$this->db->get_one("SELECT carMoney FROM {$this->db->pre}member WHERE username='{$leftTask}' and carMoney='0'");
       // $rightCarMoney=$this->db->get_one("SELECT carMoney FROM {$this->db->pre}member WHERE username='{$rightTask}' and carMoney='0' ");
        require KL_ROOT.'/source/class/bonus.class.php';
        $bonus=new bonus();
        //if($leftCarMoney){
            $this->db->query("UPDATE {$this->db->pre}member SET carMoney=1 WHERE username='{$leftTask}'");//左任务 更新购车基金被领取
            //购车基金发放
            $bonus->add($leftTaskBelong,$carMoneyAmount,'2',"推荐用户{$leftTask}获得购车基金",$leftTask);
        //}
        //if($rightCarMoney){
            $this->db->query("UPDATE {$this->db->pre}member SET carMoney=1 WHERE username='{$rightTask}'");//右任务 更新购车基金被领取
            //购车基金发放
            $bonus->add($rightTaskBelong,$carMoneyAmount,'2',"推荐用户{$rightTask}获得购车基金",$rightTask);
       // }
        $this->db->query("DELETE from {$this->db->pre}camp WHERE username='{$username}'");//删除网体记录
        $this->db->query("UPDATE {$this->db->pre}camp SET leader='0' WHERE leader='{$username}'");//小组长变成顶层网体会员
        $this->db->query("INSERT INTO {$this->table} "
        . "(username,team,leftTask,leftTaskBelong,rightTask,rightTaskBelong,addtime) VALUES"
           . "('{$username}','{$team}','{$leftTask}','{$leftTaskBelong}','{$rightTask}','{$rightTaskBelong}','{$KL_TIME}')");//生成备份数据
        
        $underCount=$row['underCount']=$this->db->count("{$this->db->pre}member","belong='{$username}' and recommMoneyStatus=1");//计算推荐人数
        $thisUserArr=memberInfo($username);//获得当前轮次

        $status='';
        $round=isset($thisUserArr['round'])?$thisUserArr['round']:'0';
        if((!$underCount)&&($round=='4')){
            $status=" ,status=2";
        }
        
        $this->db->query("UPDATE {$this->db->pre}member SET round=round+1,outing='0' {$status} WHERE username='{$username}'");//出局轮次加1


        $userBelong=$thisUserArr['belong'];//出局给会员的推荐人发放推荐奖
        $round=$round+1;
        $bonus->add($userBelong,$CFG['recommMOney'],'1',"推荐的会员{$username}第{$round}次出局时的推荐奖");

        $bonus->add($username,$CFG['outMoeny'],'3',"出局奖金");//出局奖金发放
        $bonus->add($username,-$CFG['joinMoney'],'0',"出局系统自动复投扣除");//复投资金扣除
        return true;
    }
    
//获得出局列表    
    function listinfo(){
        global $pages, $page, $pagesize, $offset, $items, $statusArr;
        $sql="select a.*,b.leftTask,b.rightTask from {$this->db->pre}member as a "
        . "left join {$this->db->pre}camp as b on a.username=b.username where outing=1 order by outtime desc";
        $sqlCount="select count(userid) as amount from {$this->db->pre}member as a "
        . "left join {$this->db->pre}camp as b on a.username=b.username where outing=1 ";
        $itemsArr = $this->db->get_one($sqlCount); 
        $items=$itemsArr['amount'];
        $pages = pages($items, $page, $pagesize);
        $result=$this->db->query("{$sql} LIMIT {$offset},{$pagesize}");
        $lists=array();
        while($row=$this->db->fetch_array($result)){
        $row['statusCN']=$statusArr[''.$row['status'].''];
        $row['underCount']=$this->db->count("{$this->db->pre}member","belong='{$row['username']}' and recommMoneyStatus=1");//计算推荐人数

        $lists[]=$row;
        }
        return $lists;
    }
        
    
    function err($error) {
    $this->errmsg = $error;
    return false;
    }
}

 

4.万元购车系统会员网体结构类

<?php
/* 
 系统分组排位核心类
 */
class camp{
    var $db;
    var $table_camp;
    var $errmsg;
     function __construct(){
        global $db,$CFG;
        $this->db=$db;
        $this->table_camp=$db->pre.'camp';
    }
   
    function pass($post){
        if(!$post['username']) return $this->err('请输入要排位的会员账户');
        if(!$post['underUsername']) return $this->err('请输入要排位的下属会员账户');
        $member=memberInfo($post['username']);//排位会员校验
        $underUsername=memberInfo($post['underUsername']);//排位下属会员校验
        if($member){
            if($member['status']!='4'){return $this->err('该排位会员账户异常,不能参加排位。异常状态值:<span class="has-error">'.memberStatus($member['status']).'</span>');}
        }
        if($underUsername){
            if($underUsername['status']!='4'){return $this->err('该排位会员账户异常,不能参加排位,异常状态值:<span class="has-error">'.memberStatus($underUsername['status']).'</span>');}
        }
        
        //检查下属会员否在左排位
        $leftCheck=$this->getTeam($post['underUsername'],'leftUser');
        if($leftCheck){
            $this->err("排位失败,该会员已经在会员【{$leftCheck['username']}】的网体左排位中,请核实"); 
            return false;
        }
        //检查下属会员否在右排位 
        $rightCheck=$this->getTeam($post['underUsername'],'rightUser');
        if($rightCheck){
            $this->err("排位失败,该会员已经在会员【{$rightCheck['username']}】的网体右排位中,请核实"); 
             return false;
        }
        return true;
    }
    
    function getTeam($username,$field='username'){
        if(!in_array($field,array('username','leftUser','rightUser'))){
            return false;
        }
        $condition = "{$field}='{$username}' ";
        return $this->db->get_one("SELECT * FROM {$this->table_camp} WHERE  {$condition}");
    }
    
    function add($post){
        global $KL_TIME;
        $thisUserArr=$this->getTeam($post['username']);
        $leaderThis=isset($thisUserArr['leader'])?$thisUserArr['leader']:'0';//参加排名的会员上级账户
        
        $post['leftUser']=  isset($thisUserArr['leftUser'])?$thisUserArr['leftUser']:'';
        $post['rightUser']=isset($thisUserArr['rightUser'])?$thisUserArr['rightUser']:'';
        
        if($thisUserArr){
            if(!$thisUserArr['leftUser']){//如果左边为空 那么排左边
                 $post['leftUser']=$post['underUsername'];
            }
               //如果右边为空,那么排右边
            if((!$thisUserArr['rightUser'])&&$thisUserArr['leftUser']){
                 $post['rightUser']=$post['underUsername'];
            }
            //如果左右都有会员,那么当前会员排位失败
            if($thisUserArr['leftUser']&&$thisUserArr['rightUser']){
                return $this->err("排位失败,当前会员{$post['username']}的左右下属排位已满,请核实");
            } 
            
        } 
        else{
           $post['leftUser']=$post['underUsername']; 
        }
        $username=$post['username'];
        $underUsername=$post['underUsername'];
        $leftUser=$post['leftUser'];
        $rightUser=$post['rightUser'];
        $leftTask=$thisUserArr['leftTask'];
        $rightTask=$thisUserArr['rightTask'];
        $addtime=$thisUserArr['addtime']?$thisUserArr['addtime']:$KL_TIME;
        //更新排位会员沙盘左右排位
       
        
        $this->db->query("REPLACE INTO {$this->table_camp} SET username='{$username}',leftUser='{$leftUser}',rightUser='{$rightUser}',leftTask='{$leftTask}',rightTask='{$rightTask}',leader='{$leaderThis}',addtime='{$addtime}'");
        
        //更新刚刚排位的下属会员记录 领导信息
        $this->db->query("REPLACE INTO {$this->table_camp} SET username='{$underUsername}',leader='{$username}',addtime='{$KL_TIME}' ");
          //获得上上级账户
        
        
        if($leaderThis){
            if(!$this->taskUser($leaderThis,$username,$underUsername)){
                return false;
            }
        }
        return true;
    }
    
    //添加资格倒挂任务
    //$leaderName 上级领导账户名
    //$selfName 上排位的账户名
    //$username 倒挂的下属账户名
    function taskUser($leaderName,$selfName,$username){
       $leader=$this->db->get_one("SELECT leftUser,rightUser,leader FROM {$this->table_camp} WHERE leftUser='{$selfName}' or rightUser='{$selfName}' ");
       $leftUser=$rightUser=$userTask='';
        if($leader){
            //判断资格倒挂的上级
            $leftUser=$leader['leftUser'];
            $rightUser=$leader['rightUser'];
            if($selfName==$leftUser){
                $userTask=$rightUser;
            } 
            elseif ($selfName==$rightUser) {
                $userTask=$leftUser;
            }
            else{         
                $this->err("当前会员资格挂靠归属失败,原因:资格2个名额已满"); 
                return false;
            }
               
            $task=  $this->getTeam($userTask);
            if($task){
                $leftTask=$task['leftTask'];
                $rightTask=$task['rightTask'];
                if(!$leftTask){
                    $leftTask=$username;
                }
                else{
                    $rightTask=$username;
                }
            }
            else{
                  $this->err("当前会员资格挂靠归属失败"); 
                  return false;
            }
           $this->db->query("UPDATE {$this->table_camp} SET leftTask='{$leftTask}',rightTask='{$rightTask}' where username='{$userTask}'");   
           $this->outUser($leaderName);
           return true; 
        }
            
    }
    
    //出局状态更新 
    //$usernameOne 组长
    function outUser($username){
        $usernameOneArr = $this->db->get_one("SELECT * FROM {$this->table_camp} WHERE username='{$username}' AND leftuser<>'0' AND rightuser<>'0'");     
        if($usernameOneArr){
            $leftUser=$usernameOneArr['leftUser'];
            $rightUser=$usernameOneArr['rightUser'];
            $count = $this->db->count("{$this->table_camp}","(username='{$leftUser}' OR username='{$rightUser}') AND leftuser<>'0' AND rightuser<>'0'");
            if($count==2){
               $this->db->query("UPDATE  {$this->db->pre}member set outing='1' WHERE username='{$username}'");
               return true;
            }
            else{
                return false;
            }
            
        }
        else{
            return false;
        }
    }
    
    //首层网体结构
    function netStruct($username){
       $leftUser=$rightUser='';
       $netArr=array();
       $leaderExit1=$this->db->get_one("SELECT * FROM {$this->table_camp} WHERE username='{$username}'");
       if($leaderExit1){
           //判断是否有副组长 ,如果没有组长,那么它就是组长
           if($leaderExit1['leader']){
                $leaderExit2=$this->db->get_one("SELECT * FROM {$this->table_camp} WHERE username='{$leaderExit1['leader']}'");
                    $username=$leaderExit2['username'];
                    //判断是否有组长,如有组长,那么它就是付副组长
                    if($leaderExit2){
                        if($leaderExit2['leader']){
                            $leaderExit3=$this->db->get_one("SELECT * FROM {$this->table_camp} WHERE username='{$leaderExit2['leader']}'");
                            $username=$leaderExit3['username'];
                        }
                        
                    }
                
                }           
       }
        $sql="select a.username,a.leftUser,a.rightUser,b.fullname,b.belong,b.addtime,b.mobile,a.leftTask,a.rightTask from {$this->table_camp} a left join {$this->db->pre}member b on a.username=b.username where a.username='{$username}'";
        $userNet=$this->db->get_one($sql);  
       
       
       
       
       if($userNet&&$userNet['leftUser']){//有下属会员,在网体结构显示中,那么自己就是顶层会员
          $leftUser=$userNet['leftUser'];
          $rightUser=$userNet['rightUser'];
          $netArr['username']=$userNet['username'];
          $netArr['fullname']=$userNet['fullname'];
          $netArr['addtime']= timetodate($userNet['addtime'],0);
          $netArr['leftUser']=$userNet['leftUser'];
          $netArr['rightUser']=$userNet['rightUser'];
          $belongUser=memberInfo($userNet['belong']);
          $netArr['belongUsername']= $belongUser['username'];
          $netArr['belongFullname']= $belongUser['fullname'];
          $netArr['leftTask']=$userNet['leftTask'];
          $netArr['rightTask']=$userNet['rightTask'];
       }
       else{
                //判断是否是人家的子节点
                $sql="select a.username,a.leftUser,a.rightUser,b.fullname,b.belong,b.addtime,b.mobile,a.leftTask,a.rightTask from "
                    . "{$this->table_camp} a left join {$this->db->pre}member b "
                    . "on a.username=b.username where a.leftUser='{$username}' or a.rightUser='{$username}'";
                   
                $leaderNet=  $this->db->get_one($sql);
                
          if($leaderNet){              
                $netArr['username']=$leaderNet['username'];
                $netArr['fullname']=$leaderNet['fullname'];
                $netArr['addtime']= timetodate($leaderNet['addtime'],0);
                $netArr['leftUser']=$leaderNet['leftUser'];
                $netArr['rightUser']=$leaderNet['rightUser'];
                $belongUser=memberInfo($leaderNet['belong']);
                if($belongUser){
                  $netArr['belongUsername']= $belongUser['username'];
                  $netArr['belongFullname']= $belongUser['fullname'];
                }else{
                  $netArr['belongUsername']= '';
                  $netArr['belongFullname']= '';
                }
          $netArr['leftTask']=$userNet['leftTask'];
          $netArr['rightTask']=$userNet['rightTask'];
              
          }
          else{
                $sql="select a.*,leftTask,rightTask from  {$this->db->pre}member a left join {$this->table_camp} b on a.username=b.username where a.username='{$username}'";
                
                $leaderNet=  $this->db->get_one($sql);
          $netArr['username']=$leaderNet['username'];
          $netArr['fullname']=$leaderNet['fullname'];
          $netArr['addtime']= timetodate($leaderNet['addtime'],0);
          $netArr['leftUser']='';
          $netArr['rightUser']='';
          $belongUser=memberInfo($leaderNet['belong']);
          if($belongUser){
                  $netArr['belongUsername']= $belongUser['username'];
                  $netArr['belongFullname']= $belongUser['fullname'];
                }else{
                  $netArr['belongUsername']= '';
                  $netArr['belongFullname']= '';
                }  
          }
          $netArr['leftTask']=$userNet['leftTask'];
          $netArr['rightTask']=$userNet['rightTask'];
         
       }
       return $netArr;
    }
    
    function netStructTwo($username){
       $sql="select a.username,a.fullname,a.belong,a.addtime,a.mobile ,b.leftUser,b.rightUser,b.leftTask,b.rightTask  from {$this->db->pre}member a left join {$this->table_camp} b on a.username=b.username where a.username='{$username}'";
       $userNet=$this->db->get_one($sql);
       $netArr=array();
       if($userNet){//
          $netArr['username']=$userNet['username'];
          $netArr['fullname']=$userNet['fullname'];
          $netArr['addtime']= timetodate($userNet['addtime'],0);
          $netArr['leftUser']=$userNet['leftUser'];
          $netArr['rightUser']=$userNet['rightUser'];
          $belongUser=memberInfo($userNet['belong']);
          $netArr['belongUsername']= $belongUser['username'];
          $netArr['belongFullname']= $belongUser['fullname'];
          $netArr['leftTask']=$userNet['leftTask'];
          $netArr['rightTask']=$userNet['rightTask'];
          return $netArr;
       }
    }
    
    function err($error) {
    $this->errmsg = $error;
    return false;
    }
}

 

有需要探讨万万元购车系统这方面开发的朋友,请加我微信交流:15889726201

 

posted on 2018-03-27 19:00  程序员李铁牛  阅读(552)  评论(0编辑  收藏  举报