萬元購車系統萬元購車程序陌車系統開發記錄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']} {$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