萬元購車系統萬元購車程序陌車系統開發記錄

萬元購車系統萬元購車程序陌車系統開發記錄php

系統開發都是一個過程,代碼從鍵盤一點一點敲出來,整個系統開發花了很多時間,項目完工後就心情輕鬆sql

有須要探討這方面開發的朋友,請加我微信交流:15889726201安全

在開發萬元購車系統過程當中,概括了幾大核心處理類,每個類作橫向的功能擴展,方便前臺會員和萬元購車系統服務端調用。微信

1.萬元購車系統會員類dom

2.萬元購車系統資金類post

3.萬元購車系統會員出局類fetch

4.萬元購車系統會員網體結構類ui

 

下面是幾個類的代碼內容this

1.萬元購車系統會員類spa

<?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

相關文章
相關標籤/搜索