万元购车系统万元购车程序陌车系统开发记录
万元购车系统万元购车程序陌车系统开发记录
系统开发都是一个过程,代码从键盘一点一点敲出来,整个系统开发花了不少时间,项目完工后就心情轻松
有需要探讨这方面开发的朋友,请加我微信交流: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']} {$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
微信号:tieniu6636
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类