:stime "; $dumpsql = str_replace(':stime', "'".$stime."'", $sql); echo "\n\n".$dumpsql."\n"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':stime'=>$stime)); $orderResult = $stmt->fetchAll(PDO::FETCH_ASSOC); # 遍历订单 # 统计 $res_count = array( 'total_num' => 0, 'generalinsert_num' => 0, 'generalupdate_num' => 0, 'nouserinsert_num' => 0, 'nouserupdate_num' => 0, 'fail_insert_num' => 0, 'fail_insert_ids' => '', 'fail_insertno_num' => 0, 'fail_insertno_ids' => '', 'fail_update_num' => 0, //'fail_update_ids' => '', 'fail_updateno_num' => 0, //'fail_updateno_ids' => '', ); $rewardOrder = array(); //拉新订单记录 $nums = 0; foreach( $orderResult as $key=>$orderDetail ){ $nums++; $res_count['total_num']++; echo "/ ************************ order{$res_count['total_num']}-Start ************************* / \n"; if( DETAILDEBUG == 1){ echo 'orderDetail:'; } //create_time,click_time,item_title,num_iid,seller_nick,seller_shop_title,item_num,price,tk_status,order_type,income_rate,commission_rate,pay_price,pub_share_pre_fee,alipay_total_price,commission,earning_time,total_commission_rate,total_commission_fee,subsidy_rate,subsidy_fee,subsidy_type,terminal_type,tk3rd_type,trade_parent_id,trade_id,auction_category,site_id,site_name,adzone_id,adzone_name,relation_id,special_id $ptype = $orderDetail["ptype"]; $order_id=$orderDetail["trade_id"]; $update_time=$orderDetail["update_time"]; $order_create_at=$orderDetail["create_time"]; $order_click_at=$orderDetail["click_time"]; $order_balance_at=$orderDetail["earning_time"]; $goods_id=$orderDetail["num_iid"]; $goods_name=$orderDetail["item_title"]; $goods_name=str_replace(['"',"'"],'',$goods_name); $num=$orderDetail["item_num"]; $price=intval($orderDetail["price"]*1000/10); $sum_price=intval($orderDetail["alipay_total_price"]*1000/10); $statusDesc=$orderDetail["tk_status"]; $typeDesc=$orderDetail["order_type"]; $orderStatus = 1; $type=1; if($statusDesc=="12"){ $orderStatus=1; } elseif($statusDesc=="13"){ $orderStatus=0; } elseif($statusDesc=="3"){ $orderStatus=2; } else { continue; //其他状态:待付款,已付定金,不做处理; } if($typeDesc=="聚划算"){ $type=0; } elseif($typeDesc=="淘宝"){ $type=1; } elseif($typeDesc=="天猫"){ $type=2; } elseif($typeDesc=="京东"){ $type=3; } elseif($typeDesc=="抖音"){ $type=4; } elseif($typeDesc=="拼多多"){ $type = 5; } elseif($typeDesc=='唯品会'){ $type = 6; } $adzone_id=$orderDetail["adzone_id"]; $relation_id = $orderDetail["relation_id"]; $special_id = $orderDetail["special_id"]; $ceil_income=round($orderDetail["pub_share_pre_fee"], 2); $predict_income=$ceil_income*100; $predict_income=ceil($predict_income*conf::$RATE_CONF["globalzk"]); echo 'order_id:'.$order_id.'|| goods_id:'.$goods_id.'|| orderstatus:'.$orderStatus.'|| order_balance_at:'.$order_balance_at; echo '|| predict_income:'.$predict_income.'|| adzone_id:'.$adzone_id.'|| special_id:'.$special_id.'|| relation_id:'.$relation_id."\n"; $resultone=UserInfo($special_id, $relation_id, $adzone_id, $ptype); if( DETAILDEBUG == 1){ echo 'userinfo:'; var_dump($resultone); echo "\n"; } if($sum_price!=0){ if($predict_income<5){ $predict_income=5; } } if( !empty($resultone) ){ echo "User:存在\n"; $orderExists=orderMysql($order_id,$goods_id); if( empty($orderExists) ){ echo "action:插入操作\n"; #获取层级规则信息 $userAllInfo=userLevelandPrentInfo($resultone); echo "
\nuserAllInfo"; print_r($userAllInfo); if( DETAILDEBUG == 1){ echo 'userallinfo:'."\n"; var_dump($userAllInfo); } $userList = $userAllInfo['userList']; //4层 每层userId $userLevel = $userAllInfo['userLevel']; //4层 每层userlevel # 从数据库获取规则 $rebateRuleInfo = getRebateRule($userAllInfo['levelRule']); echo "\nRuleInfo:"; print_r($rebateRuleInfo); $RuleArr = explode(',',$rebateRuleInfo['rebate_rule']); //4层 每层分佣比例 $TypeArr = explode(',',$rebateRuleInfo['rebate_type']); //4层 每层分佣级别 #获取每一层返利 $moneyInfo=orderMoney($predict_income, $RuleArr); //4层 每层分佣钱数 echo "\nmoneyInfo:"; print_r($moneyInfo); if( DETAILDEBUG == 1){ echo 'rebateInfo'."\n"; var_dump($moneyInfo); } if($ptype == 2 || $ptype == 3 || $ptype == 4 || $ptype == 5){ $goods_img = $orderDetail["img"]; } else { $detail = TBK::tbkItemInfoGet( ['goods_id'=>$goods_id] ); if( !empty($detail) ){ $goods_img=$detail->pict_url; } else { echo json_encode($detail, 256)."\n"; echo "淘宝客商品详情接口未获取到商品信息,开始调用淘宝客物料搜索接口"."\n"; # 调用淘宝客【推广者-物料搜索】api $goodsKey = "https://uland.taobao.com/item/edetail?id=".$goods_id; $goodsList = TBK::search($goodsKey); if (!empty($goodsList['list'])) { $goodsDetail = $goodsList['list'][0]; $goods_img = $goodsDetail->pict_url; echo "通过物料搜索接口获取到商品图"."\n"; } else { echo "物料搜索接口仍未获取到商品图".json_encode($goodsList, 256)."\n"; $goods_img=""; } } } try{ $_PDO->beginTransaction(); #判断是否是新手第一单 //$newFirstRes = newCustFirstOrder($userList[0]); #订单表插入 $res=generateSqlInsertOrder($goods_img,$goods_name,$userList[0],$order_id,$adzone_id,$goods_id,$num,$price,$sum_price,$predict_income,$moneyInfo[0],$orderStatus,$type,$userLevel[0],$order_create_at,$order_click_at,$order_balance_at); if($res){ $res_count['generalinsert_num']++; }else{ $res_count['fail_insert_num']++; $res_count['fail_insert_ids'].=$order_id.'|'; } echo 'orderinsert:'.$res; echo "\n"; if($sum_price>=0 && $res){ foreach($moneyInfo as $k=>$v){ if($v>0){ #order_rebate表插入父级佣金 $rebaseType=$TypeArr[$k]; $res=generateSqlInsertRebateSelf($userLevel[$k],$order_balance_at,$order_create_at,$goods_img,$goods_name,$order_id,$userList[$k],$rebaseType,$moneyInfo[$k],$sum_price,$orderStatus,$goods_id,$predict_income, $ptype); # 推送 $flag_time = time() - strtotime($order_create_at); if($res && $flag_time<3600){ $params = array(); $params['user_id'] = $userList[$k]; $params['type'] = $rebaseType==1 ? 1 : 2; $params['money'] = round($moneyInfo[$k]/100,2); $push_res = curl_post( PUSH_URL, $params); } echo 'rebateinsert_'.$k.':'.$res; echo "\n"; } } if($order_create_at >= ACT_START && $order_create_at <= ACT_END){ # 判断是否是拉新首单 $isNew = 0; $isTooNew = 0; if(array_key_exists($order_id, $rewardOrder)){ $isTooNew = 1; }else{ $isNew = isNewUser($userList[0]); } if($isTooNew || $isNew){ //记录拉新订单分佣情况 if($isNew){ $rewardOrder[$order_id] = $moneyInfo; }else{ $rewardOrder[$order_id] = arraySums($rewardOrder[$order_id],$moneyInfo); } //获取下一个分佣的订单 $nkey = $nums; //若当前订单和下一笔订单号一样,继续循环,直到本拉新订单分佣rewardOrder[$order_id]统计完毕 if(isset($orderResult[$nkey]['order_sn']) && $order_id == $orderResult[$nkey]['order_sn']){ }else{ // 分奖励佣金 < --------- Start --------- > $reward_n = 0; // 记录奖励层数 最多两层 $rewardInfo = $rewardOrder[$order_id]; //本订单实际分佣情况 foreach($rewardInfo as $k=>$v){ if($v>0 && $reward_n<2){ # 插入奖励 $rebaseType=6; //奖励佣金 # 计算奖励佣金 $reward = getReward($rewardInfo[$k]); $goods_name_new = $k==0 ? '恭喜您获得新用户首单奖励' : '恭喜您获得拉新首单奖励'; $goods_img_new = ACT_GOODS_IMG; $res=rewardOrderInsert($userLevel[$k],$order_balance_at,$order_create_at,$goods_img_new,$goods_name_new,$order_id,$userList[$k],$rebaseType,$reward,$sum_price,$orderStatus,$goods_id,$predict_income); # 奖励推送 if($res){ $params = array(); $params['user_id'] = $userList[$k]; $params['type'] = $k==0 ? 3 : 4; //奖励推送 3新人 4上级 $params['money'] = round($reward/100,2); $push_res = curl_post( ACT_PUSH_URL, $params); } echo 'rewardinsert_'.$reward_n.':'.$res; echo "\n"; # 记录奖励层数 $reward_n++; } } # 记录新人首单信息 if($res){ //获取运营商 $m = strpos($userAllInfo['levelRule'], '3'); $operate_id = $userList[$m]; $res2 = pullNewInsert($userList[0],$operate_id,$order_id,$order_create_at,$orderStatus); //获取当前运营商拉新人数 $pullCount = getPullNew($operate_id); if($pullCount==10 || $pullCount==20 || $pullCount==30){ //符合推送条件 $params = array(); $params['user_id'] = $operate_id; $params['type'] = 5; //运营商拉新人数推送 $params['count'] = $pullCount; $push_res = curl_post( ACT_PUSH_URL, $params); } } } } } } //津贴单独计算 # 获取顶级运营商-控制中心 ** ++ 运营商,满足裂变3个运营商以上分团队奖励(新津贴) if($sum_price>0){ $mks = strpos($userAllInfo['levelRule'], '3'); if($mks !== false){ $YysManageInfo = YysManageInfo( $userList[$mks] ); if( !empty($YysManageInfo) ){ $rebaseType=$TypeArr[$mks]; $YysManageRabate = round($predict_income*$YysManageInfo['rate']); if($YysManageRabate < 1){ $YysManageRabate = 1; } $res = YysManageInsertRebate(4,$order_balance_at,$order_create_at,$goods_img,$goods_name,$order_id,$YysManageInfo['user_id'],$rebaseType,$YysManageRabate,$sum_price,$orderStatus,$goods_id,$predict_income,$ptype); echo 'rebateinsert_YysManage:'.$res; echo "\n"; } #+++新逻辑 **团队奖励(新津贴) /* $preYysInfo = preYysInfo( $userList[$mks] ); if( !empty($preYysInfo) ){ $rebaseType=$TypeArr[$mks]; $YysNewRabate = round($predict_income*$preYysInfo['rate']); if($YysNewRabate < 1){ $YysNewRabate = 1; } $res = YysManageInsertRebate(3,$order_balance_at,$order_create_at,$goods_img,$goods_name,$order_id,$preYysInfo['user_id'],$rebaseType,$YysNewRabate,$sum_price,$orderStatus,$goods_id,$predict_income); echo 'rebateinsert_preYysInfo:'.$res; echo "\n"; } */ } } $_PDO->commit(); }catch(PDOException $e){ echo 'err_msg'.$e->getMessage()."\n"; $_PDO->rollback(); } //echo "-----------------insertEnd--------------------\n"; } else{ try{ $_PDO->beginTransaction(); //更新order/order_rebate表 echo "action:更新操作\n"; $res=generateSqlupdate($orderStatus,$order_balance_at,$order_id,$goods_id); /*** 增加拉新更新 Start ***/ if($order_create_at >= ACT_START && $order_create_at <= ACT_END){ $isUpOk = pullNewIsUpOk($orderStatus, $order_id, $resultone['user_id']); echo 'isUpOk:'.$isUpOk."\n"; if($isUpOk) $pull_up = pullNewUpdate($orderStatus, $order_id); } /*** 增加拉新更新 End ***/ /*** 增加退款推送 Start***/ if($res && $orderStatus==0){ $refundPush = refundPush($order_id); } /*** 增加退款推送 END***/ if($res){ $res_count['generalupdate_num']++; }else{ $res_count['fail_update_num']++; //$res_count['fail_update_ids'].=$order_id.'|'; } echo "更新数据-> orderstatus:".$orderStatus." order_balance_at:".$order_balance_at; echo "\n"; echo "order/reabte_update:".$res; echo "\n"; //echo "-----------------updateEnd-----------------------\n"; $_PDO->commit(); }catch(PDOException $e){ echo 'err_msg'.$e->getMessage()."\n"; $_PDO->rollback(); } } //echo "-----------------IssetUserEnd:--------------------\n"; } else{ $_PDO->beginTransaction(); try{ #user不存在的处理 echo "User:不存在\n"; $ordernoExists=orderMysql($order_id,$goods_id); if( empty($ordernoExists) ){ if($ptype == 2){ $goods_img = $orderDetail["img"];; } else { $detail = TBK::tbkItemInfoGet( ['goods_id'=>$goods_id] ); if( !empty($detail) ){ $goods_img=$detail->pict_url; } else { echo json_encode($detail, 256)."\n"; echo "淘宝客商品详情接口未获取到商品信息,开始调用淘宝客物料搜索接口"."\n"; # 调用淘宝客【推广者-物料搜索】api $goodsKey = "https://uland.taobao.com/item/edetail?id=".$goods_id; $goodsList = TBK::search($goodsKey); if (!empty($goodsList['list'])) { $goodsDetail = $goodsList['list'][0]; $goods_img = $goodsDetail->pict_url; echo "通过物料搜索接口获取到商品图"."\n"; } else { echo "物料搜索接口仍未获取到商品图".json_encode($goodsList, 256)."\n"; $goods_img=""; } } } $res=generateSqlInsertOrderOther($goods_img,$goods_name,$order_id,$adzone_id,$goods_id,$num,$price,$sum_price,$predict_income,0,$orderStatus,$type,$order_create_at,$order_click_at,$order_balance_at); if($res){ $res_count['nouserinsert_num']++; }else{ $res_count['fail_insertno_num']++; $res_count['fail_insertno_ids'].=$order_id.'|'; } echo "action:插入操作\n"; echo "orderinsert:".$res; echo "\n"; $_PDO->commit(); } else{ $res=generateSqlUpdateOther($orderStatus,$order_balance_at,$order_id,$goods_id); if($res){ $res_count['nouserupdate_num']++; }else{ $res_count['fail_updateno_num']++; //$res_count['fail_updateno_ids'].=$order_id.'|'; } echo "action:更新操作\n"; echo "orderupdate:".$res; echo "\n"; $_PDO->commit(); } //echo "-----------------EmptyUserEnd:--------------------\n"; }catch(PDOException $e){ echo 'err_msg'.$e->getMessage()."\n"; $_PDO->rollback(); } } echo "/ ** order{$res_count['total_num']}-End ** /"; echo "\n\n\n"; if(LIMIT_NUM >0 && $res_count['total_num'] == LIMIT_NUM) break; } print_r($res_count); echo "\n拉新订单:\n"; print_r($rewardOrder); echo "\n脚本开始时间:". $scriptStart; echo "\n脚本结束时间:". date("Y-m-d H:i:s"); } # 查找运营中心规则改版0425 function YysManageInfo( $user_id ){ $sql = "SELECT user_id,parent_user_id,level FROM user_level WHERE user_id=:user_id "; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_id'=>$user_id)); $result = $stmt->fetch(PDO::FETCH_ASSOC); if( empty($result) ) return false; $data = array(); #如果自己是运营中心 if( $result['level'] == 4 ){ #老运营 //if(!isNewYysManage($user_id)){ $data['user_id'] = $user_id; $data['rate'] = 0.01; return $data; //}else{ //return new_c_rate($user_id); //} }else{ #上级信息 $sql = "SELECT id FROM user_level WHERE user_id=:user_id and level=4"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_id'=>$result['parent_user_id'])); $result1 = $stmt->fetch(PDO::FETCH_ASSOC); if(empty($result1)){ return false; //上级若不是运营中心 } #老运营 //if(!isNewYysManage($result['parent_user_id'])){ $data['user_id'] = $result['parent_user_id']; $data['rate'] = 0.01; return $data; //}else{ //return new_c_rate($result['parent_user_id']); //} } return false; } #新运营中心津贴比例 function new_c_rate($user_id){ #新运营中心 $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $sql = "SELECT count(1) as nums FROM user_level_change_info where upgrade_to_level=3 and pre_yys_id = :pre_yys_id and upgrade_time>'2019-04-26' "; //$sql = "SELECT count(1) as nums from user_level where parent_user_id=:parent_user_id and level>=3 "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':pre_yys_id'=>$user_id)); $res = $stmt->fetch(PDO::FETCH_ASSOC); $data = array(); if(isset($res['nums']) && $res['nums']>=3){ $data['user_id'] = $user_id; if($res['nums']>=10){ $data['rate'] = 0.03; }elseif($res['nums']>=6){ $data['rate'] = 0.02; }elseif($res['nums']>=3){ $data['rate'] = 0.01; } return $data; } return false; } function YysInfo( $user_id ){ $sql = "SELECT user_id,parent_user_id,level FROM user_level WHERE user_id=:user_id "; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_id'=>$user_id)); $result = $stmt->fetch(PDO::FETCH_ASSOC); if( empty($result) ) return ['user_id'=>438999,'level'=>4,'parent_user_id'=>'-1']; if($result['level'] >= 3){ return $result; }else{ if( empty($result['parent_user_id']) ){ return ['user_id'=>438999,'level'=>4,'parent_user_id'=>'-1']; } return YysInfo( $result['parent_user_id']); } return ['user_id'=>438999,'level'=>4,'parent_user_id'=>'-1']; } function UserInfo($special_id, $relation_id, $adzone_id, $ptype=1){ if($ptype == 2 ||$ptype == 3 ||$ptype == 4 ||$ptype == 5){ return JdUserInfo($relation_id); } $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); //新加逻辑 2020-7-8 封relation不分佣 $sql = "SELECT value FROM global_variable WHERE variable_key ='relation_blacklist' "; $stmt = $_PDO->prepare($sql); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if( !empty($result) ){ if( strstr($result['value'], $relation_id) ){ return false; } } if(in_array($adzone_id,[123456])){ return false; } if($adzone_id=='101804100229'){ if(!empty($relation_id)){ $sql = "SELECT user_id FROM user_special_relation_local WHERE relation_id = '{$relation_id}'"; }elseif(!empty($special_id)){ $sql = "SELECT user_id FROM user_special_relation WHERE special_id = '{$special_id}'"; } }else{ if(!empty($relation_id)){ $sql = "SELECT user_id FROM user_special_relation WHERE relation_id = '{$relation_id}'"; }elseif(!empty($special_id)){ $sql = "SELECT user_id FROM user_special_relation WHERE special_id = '{$special_id}'"; }else{ return false; } } $stmt = $_PDO->prepare($sql); $stmt->execute(); $resultone = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($resultone)){ $sql="SELECT * FROM user_level WHERE user_id = :user_id"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_id'=>$resultone['user_id'])); $userResult = $stmt->fetch(PDO::FETCH_ASSOC); return $userResult; } else{ return false; } } function JdUserInfo($relation_id){ if(!$relation_id){ return false; } $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $sql = "SELECT id FROM users WHERE invite_code = '{$relation_id}'"; $stmt = $_PDO->prepare($sql); $stmt->execute(); $resultone = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($resultone)){ $sql="SELECT * FROM user_level WHERE user_id = :user_id"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_id'=>$resultone['id'])); $userResult = $stmt->fetch(PDO::FETCH_ASSOC); return $userResult; } else{ return false; } } function userLevelInfo($user_id){ $sql="SELECT * FROM user_level WHERE user_id = :user_id "; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_id'=>$user_id)); $resultone = $stmt->fetch(PDO::FETCH_ASSOC); if($resultone){ $myInfo=["user_id"=>$user_id,"level"=>$resultone['level'],"parent_user_id"=>$resultone['parent_user_id']]; return $myInfo; } else{ return false; } } function userMyInfo($user_id){ $sql="SELECT * FROM users WHERE id = :user_id "; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_id'=>$user_id)); $resultone = $stmt->fetch(PDO::FETCH_ASSOC); if($resultone){ $myInfo['user_id'] = $user_id; $myInfo['origin'] = $resultone['origin']; return $myInfo; } else{ return false; } } # 获取4层用户级别基础信息 function userLevelandPrentInfo($resultone){ $resultInfo = array(); # self $userId=$resultone['user_id']; $userLevel=$resultone['level']; if($userLevel>=3){ $resultInfo['userList'] = [$userId,0,0,0]; $resultInfo['levelRule'] = 3000; $resultInfo['userLevel'] = [$userLevel,0,0,0]; return $resultInfo; } $userParentId=$resultone['parent_user_id']; $userGrandId=$resultone['grand_father_id']; if($userParentId>0){ $resulttwo=userLevelInfo($userParentId); if( !empty($resulttwo) ){ # parent $userParentLevel=$resulttwo['level']; if($userParentLevel>=3){ $resultInfo['userList'] = [$userId,$userParentId,0,0]; $resultInfo['levelRule'] = intval($userLevel.'300'); $resultInfo['userLevel'] = [$userLevel,$userParentLevel,0,0]; return $resultInfo; } if($userGrandId>0){ $resultthree=userLevelInfo($userGrandId); if( !empty($resultthree) ){ # grand $userGrandLevel=$resultthree['level']; if($userGrandLevel>=3){ $resultInfo['userList'] = [$userId,$userParentId,$userGrandId,0]; $resultInfo['levelRule'] = intval($userLevel.$userParentLevel.'30'); $resultInfo['userLevel'] = [$userLevel,$userParentLevel,$userGrandLevel,0]; return $resultInfo; } } } } } if( !$userParentId ) $userParentId=0; if( !$userGrandId ) $userGrandId=0; if( !isset($userParentLevel) ) $userParentLevel=1; if( !isset($userGrandLevel) ) $userGrandLevel=1; #三级里面没有运营商,递归上级运营商 $YysInfo = YysInfo($userGrandId); $userFourId = $YysInfo['user_id']; $userFourLevel = $YysInfo['level']; # 层级规则 $levelRule = $userLevel.$userParentLevel.$userGrandLevel.'3'; $resultInfo['userList']=[$userId,$userParentId,$userGrandId,$userFourId]; $resultInfo['levelRule'] = (int)$levelRule; $resultInfo['userLevel'] = [$userLevel,$userParentLevel,$userGrandLevel,$userFourLevel]; return $resultInfo; } function orderMoney($predict_income, $RuleArr){ $result = array(); foreach($RuleArr as $k=>$v){ if($v>0){ $result[$k] = round($predict_income * $v / 100); }else{ $result[$k] = 0; } } return $result; } function orderMysql($order_id,$goods_id){ $sql="SELECT * from `order` where order_id=:order_id and goods_id=:goods_id"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':order_id'=>$order_id,':goods_id'=>$goods_id)); $result = $stmt->fetch(PDO::FETCH_ASSOC); return $result; } function orderType($adzone_id){ $sql="SELECT * from `adzone` where adzone_id=:adzone_id"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':adzone_id'=>$adzone_id)); $userResult = $stmt->fetch(PDO::FETCH_ASSOC); return $userResult; } function generateSqlInsertOrderOther($goods_img,$goods_name,$order_id,$adzone_id,$goods_id,$num,$price,$sum_price,$predict_income,$self_income,$orderStatus,$type,$order_create_at,$order_click_at,$order_balance_at){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); if( empty($order_balance_at) ){ $sql="insert into `order` (company_type,goods_img_url,goods_name,order_id,adzone_id,goods_id,num,price,sum_price,predict_income,income,status,type,order_create_at,order_click_at) VALUES (:company_type,:goods_img,:goods_name,:order_id,:adzone_id,:goods_id,:num,:price,:sum_price,:predict_income,:self_income,:orderStatus,:type,:order_create_at,:order_click_at)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':company_type'=>2,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':adzone_id'=>$adzone_id,':goods_id'=>$goods_id,':num'=>$num,':price'=>$price,':sum_price'=>$sum_price,':predict_income'=>$predict_income,':self_income'=>$self_income,':orderStatus'=>$orderStatus,':type'=>$type,':order_create_at'=>$order_create_at,':order_click_at'=>$order_click_at)); return $_PDO->lastinsertid(); } else{ $sql="insert into `order` (company_type,goods_img_url,goods_name,order_id,adzone_id,goods_id,num,price,sum_price,predict_income,income,status,type,order_create_at,order_click_at,order_balance_at) VALUES (:company_type,:goods_img,:goods_name,:order_id,:adzone_id,:goods_id,:num,:price,:sum_price,:predict_income,:self_income,:orderStatus,:type,:order_create_at,:order_click_at,:order_balance_at)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':company_type'=>2,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':adzone_id'=>$adzone_id,':goods_id'=>$goods_id,':num'=>$num,':price'=>$price,':sum_price'=>$sum_price,':predict_income'=>$predict_income,':self_income'=>$self_income,':orderStatus'=>$orderStatus,':type'=>$type,':order_create_at'=>$order_create_at,':order_click_at'=>$order_click_at,':order_balance_at'=>$order_balance_at)); return $_PDO->lastinsertid(); } } #order表订单插入脚本 function generateSqlInsertOrder($goods_img,$goods_name,$userId,$order_id,$adzone_id,$goods_id,$num,$price,$sum_price,$predict_income,$self_income,$orderStatus,$type,$userLevel,$order_create_at,$order_click_at,$order_balance_at){ //$adzoneDetail=orderType($adzone_id); $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); if( empty($order_balance_at) ){ $sql="insert into `order` (company_type,goods_img_url,goods_name,user_id,order_id,adzone_id,goods_id,num,price,sum_price,predict_income,income,status,type,user_level,order_create_at,order_click_at) VALUES (:company_type,:goods_img,:goods_name,:userId,:order_id,:adzone_id,:goods_id,:num,:price,:sum_price,:predict_income,:self_income,:orderStatus,:type,:userLevel,:order_create_at,:order_click_at)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':company_type'=>0,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':userId'=>$userId,':order_id'=>$order_id,':adzone_id'=>$adzone_id,':goods_id'=>$goods_id,':num'=>$num,':price'=>$price,':sum_price'=>$sum_price,':predict_income'=>$predict_income,':self_income'=>$self_income,':orderStatus'=>$orderStatus,':type'=>$type,':userLevel'=>$userLevel,':order_create_at'=>$order_create_at,':order_click_at'=>$order_click_at)); return $_PDO->lastinsertid(); } else{ $sql="insert into `order` (company_type,goods_img_url,goods_name,user_id,order_id,adzone_id,goods_id,num,price,sum_price,predict_income,income,status,type,user_level,order_create_at,order_click_at,order_balance_at) VALUES (:company_type,:goods_img,:goods_name,:userId,:order_id,:adzone_id,:goods_id,:num,:price,:sum_price,:predict_income,:self_income,:orderStatus,:type,:userLevel,:order_create_at,:order_click_at,:order_balance_at)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':company_type'=>0,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':userId'=>$userId,':order_id'=>$order_id,':adzone_id'=>$adzone_id,':goods_id'=>$goods_id,':num'=>$num,':price'=>$price,':sum_price'=>$sum_price,':predict_income'=>$predict_income,':self_income'=>$self_income,':orderStatus'=>$orderStatus,':type'=>$type,':userLevel'=>$userLevel,':order_create_at'=>$order_create_at,':order_click_at'=>$order_click_at,':order_balance_at'=>$order_balance_at)); return $_PDO->lastinsertid(); } } #返利表订单插入脚本 function generateSqlInsertRebateSelf($user_level,$order_balance_at,$order_create_at,$goods_img,$goods_name,$order_id,$userId,$rebaseType,$last_orderSelfRebaseRebase,$sum_price,$orderStatus,$goods_id,$pre_income,$ptype){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); if( !empty($order_balance_at) ){ $sql="insert into order_rebate (user_level,order_balance_at,order_create_at,img,name,order_id,user_id,type,rebate,money,status,goods_id,pre_income,ptype) VALUES (:user_level,:order_balance_at,:order_create_at,:goods_img,:goods_name,:order_id,:userId,:rebaseType,:last_orderSelfRebaseRebase,:sum_price,:orderStatus,:goods_id,:pre_income,:ptype)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_level'=>$user_level,':order_balance_at'=>$order_balance_at,':order_create_at'=>$order_create_at,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':userId'=>$userId,':rebaseType'=>$rebaseType,':last_orderSelfRebaseRebase'=>$last_orderSelfRebaseRebase,':sum_price'=>$sum_price,':orderStatus'=>$orderStatus,':goods_id'=>$goods_id,':pre_income'=>$pre_income,':ptype'=>$ptype)); return $_PDO->lastinsertid(); } else{ $sql="insert into order_rebate (user_level,order_create_at,img,name,order_id,user_id,type,rebate,money,status,goods_id,pre_income,ptype) VALUES (:user_level,:order_create_at,:goods_img,:goods_name,:order_id,:userId,:rebaseType,:last_orderSelfRebaseRebase,:sum_price,:orderStatus,:goods_id,:pre_income,:ptype)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_level'=>$user_level,':order_create_at'=>$order_create_at,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':userId'=>$userId,':rebaseType'=>$rebaseType,':last_orderSelfRebaseRebase'=>$last_orderSelfRebaseRebase,':sum_price'=>$sum_price,':orderStatus'=>$orderStatus,':goods_id'=>$goods_id,':pre_income'=>$pre_income,':ptype'=>$ptype)); return $_PDO->lastinsertid(); } } #单独处理订单插运营商佣金 function YysInsertRebate($user_level,$order_balance_at,$order_create_at,$goods_img,$goods_name,$order_id,$userId,$rebaseType,$last_orderSelfRebaseRebase,$sum_price,$orderStatus,$goods_id,$pre_income){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); if( !empty($order_balance_at) ){ $sql="insert into order_rebate (user_level,order_balance_at,order_create_at,img,name,order_id,user_id,type,rebate,money,status,goods_id,pre_income) VALUES (:user_level,:order_balance_at,:order_create_at,:goods_img,:goods_name,:order_id,:userId,:rebaseType,:last_orderSelfRebaseRebase,:sum_price,:orderStatus,:goods_id,:pre_income)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_level'=>$user_level,':order_balance_at'=>$order_balance_at,':order_create_at'=>$order_create_at,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':userId'=>$userId,':rebaseType'=>$rebaseType,':last_orderSelfRebaseRebase'=>$last_orderSelfRebaseRebase,':sum_price'=>$sum_price,':orderStatus'=>$orderStatus,':goods_id'=>$goods_id,':pre_income'=>$pre_income)); return $_PDO->lastinsertid(); } else{ $sql="insert into order_rebate (user_level,order_create_at,img,name,order_id,user_id,type,rebate,money,status,goods_id,pre_income) VALUES (:user_level,:order_create_at,:goods_img,:goods_name,:order_id,:userId,:rebaseType,:last_orderSelfRebaseRebase,:sum_price,:orderStatus,:goods_id,:pre_income)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_level'=>$user_level,':order_create_at'=>$order_create_at,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':userId'=>$userId,':rebaseType'=>$rebaseType,':last_orderSelfRebaseRebase'=>$last_orderSelfRebaseRebase,':sum_price'=>$sum_price,':orderStatus'=>$orderStatus,':goods_id'=>$goods_id,':pre_income'=>$pre_income)); return $_PDO->lastinsertid(); } } #返利表订单插入运营商津贴信息 function YysManageInsertRebate($user_level,$order_balance_at,$order_create_at,$goods_img,$goods_name,$order_id,$userId,$rebaseType,$last_orderSelfRebaseRebase,$sum_price,$orderStatus,$goods_id,$pre_income,$ptype=1){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); if( !empty($order_balance_at) ){ $sql="insert into order_rebate_profit (user_level,order_balance_at,order_create_at,img,name,order_id,user_id,type,rebate,money,status,goods_id,pre_income,ptype) VALUES (:user_level,:order_balance_at,:order_create_at,:goods_img,:goods_name,:order_id,:userId,:rebaseType,:last_orderSelfRebaseRebase,:sum_price,:orderStatus,:goods_id,:pre_income,:ptype)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_level'=>$user_level,':order_balance_at'=>$order_balance_at,':order_create_at'=>$order_create_at,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':userId'=>$userId,':rebaseType'=>$rebaseType,':last_orderSelfRebaseRebase'=>$last_orderSelfRebaseRebase,':sum_price'=>$sum_price,':orderStatus'=>$orderStatus,':goods_id'=>$goods_id,':pre_income'=>$pre_income,':ptype'=>$ptype)); return $_PDO->lastinsertid(); } else{ $sql="insert into order_rebate_profit (user_level,order_create_at,img,name,order_id,user_id,type,rebate,money,status,goods_id,pre_income,ptype) VALUES (:user_level,:order_create_at,:goods_img,:goods_name,:order_id,:userId,:rebaseType,:last_orderSelfRebaseRebase,:sum_price,:orderStatus,:goods_id,:pre_income,:ptype)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_level'=>$user_level,':order_create_at'=>$order_create_at,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':userId'=>$userId,':rebaseType'=>$rebaseType,':last_orderSelfRebaseRebase'=>$last_orderSelfRebaseRebase,':sum_price'=>$sum_price,':orderStatus'=>$orderStatus,':goods_id'=>$goods_id,':pre_income'=>$pre_income,':ptype'=>$ptype)); return $_PDO->lastinsertid(); } } #order订单表返利表同步更新 function generateSqlupdate($status,$order_balance_at,$order_id,$goods_id){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); if( !empty($order_balance_at) ){ $sql="update `order` set status=:status,order_balance_at=:order_balance_at where order_id=:order_id and goods_id=:goods_id "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_balance_at'=>$order_balance_at,':order_id'=>$order_id,':goods_id'=>$goods_id)); $res = $stmt->rowCount(); //更新order_rebate $sql="update order_rebate set status=:status,order_balance_at=:order_balance_at where order_id=:order_id and goods_id=:goods_id "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_balance_at'=>$order_balance_at,':order_id'=>$order_id,':goods_id'=>$goods_id)); $res = $stmt->rowCount(); //更新order_rebate_profit $sql="update order_rebate_profit set status=:status,order_balance_at=:order_balance_at where order_id=:order_id and goods_id=:goods_id "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_balance_at'=>$order_balance_at,':order_id'=>$order_id,':goods_id'=>$goods_id)); $res = $stmt->rowCount(); } else{ $sql="update `order` set status=:status where order_id=:order_id and goods_id=:goods_id "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_id'=>$order_id,':goods_id'=>$goods_id)); $res = $stmt->rowCount(); $sql="update order_rebate set status=:status where order_id=:order_id and goods_id=:goods_id "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_id'=>$order_id,':goods_id'=>$goods_id)); $res = $stmt->rowCount(); //更新order_rebate_profit $sql="update order_rebate_profit set status=:status where order_id=:order_id and goods_id=:goods_id "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_id'=>$order_id,':goods_id'=>$goods_id)); $res = $stmt->rowCount(); } return $res; } #订单表单独更新 function generateSqlUpdateOther($status,$order_balance_at,$order_id,$goods_id){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); if( !empty($order_balance_at) ){ $sql="update `order` set status=:status,order_balance_at=:order_balance_at where order_id=:order_id and goods_id=:goods_id "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_balance_at'=>$order_balance_at,':order_id'=>$order_id,':goods_id'=>$goods_id)); $res = $stmt->rowCount(); } else{ $sql="update `order` set status=:status where order_id=:order_id and goods_id=:goods_id "; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_id'=>$order_id,':goods_id'=>$goods_id)); $res = $stmt->rowCount(); } return $res; } # 获取rebateRule function getRebateRule($levelRule){ $sql="SELECT * from `rebate_rule` where level_rule = :level_rule"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':level_rule'=>$levelRule)); $ruleResult = $stmt->fetch(PDO::FETCH_ASSOC); return $ruleResult; } # 判断是否是新用户第一单 function isNewUser($user_id){ $start = ACT_START; $end = ACT_END; $sql = "SELECT id FROM `user_level` where regist_at>'{$start}' and regist_at<= '{$end}' and user_id = {$user_id} limit 1"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(); $res = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($res)){ $sql = "SELECT id FROM `user_pullnew` where user_id={$user_id} and status>0 limit 1"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(); $res = $stmt->fetch(PDO::FETCH_ASSOC); if(empty($res)){ return true; } } return false; } # 计算奖励佣金 function getReward($money){ if($money <= 0){ return 0; } if($money > 300){ $reward = 300; }else{ $reward = $money; } return $reward; } # 同订单多分佣累加 function arraySums($arr1, $arr2){ $res = array(); foreach($arr1 as $k=>$v){ $res[$k] = $arr1[$k] + $arr2[$k]; } return $res; } #拉新奖励订单插入 function rewardOrderInsert($user_level,$order_balance_at,$order_create_at,$goods_img,$goods_name,$order_id,$userId,$rebaseType,$last_orderSelfRebaseRebase,$sum_price,$orderStatus,$goods_id,$pre_income){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); if( !empty($order_balance_at) ){ $sql="insert into order_rebate (user_level,order_balance_at,order_create_at,img,name,order_id,user_id,type,rebate,money,status,goods_id,pre_income) VALUES (:user_level,:order_balance_at,:order_create_at,:goods_img,:goods_name,:order_id,:userId,:rebaseType,:last_orderSelfRebaseRebase,:sum_price,:orderStatus,:goods_id,:pre_income)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_level'=>$user_level,':order_balance_at'=>$order_balance_at,':order_create_at'=>$order_create_at,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':userId'=>$userId,':rebaseType'=>$rebaseType,':last_orderSelfRebaseRebase'=>$last_orderSelfRebaseRebase,':sum_price'=>$sum_price,':orderStatus'=>$orderStatus,':goods_id'=>$goods_id,':pre_income'=>$pre_income)); return $_PDO->lastinsertid(); } else{ $sql="insert into order_rebate (user_level,order_create_at,img,name,order_id,user_id,type,rebate,money,status,goods_id,pre_income) VALUES (:user_level,:order_create_at,:goods_img,:goods_name,:order_id,:userId,:rebaseType,:last_orderSelfRebaseRebase,:sum_price,:orderStatus,:goods_id,:pre_income)"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':user_level'=>$user_level,':order_create_at'=>$order_create_at,':goods_img'=>$goods_img,':goods_name'=>$goods_name,':order_id'=>$order_id,':userId'=>$userId,':rebaseType'=>$rebaseType,':last_orderSelfRebaseRebase'=>$last_orderSelfRebaseRebase,':sum_price'=>$sum_price,':orderStatus'=>$orderStatus,':goods_id'=>$goods_id,':pre_income'=>$pre_income)); return $_PDO->lastinsertid(); } } # 记录拉新首单表 function pullNewInsert($user_id,$operate_id,$first_order_id,$order_create_at,$status){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $sql = "insert into `user_pullnew` (user_id, operate_id, first_order_id, order_create_at, status) values ({$user_id},{$operate_id},'{$first_order_id}','{$order_create_at}', {$status})"; $stmt = $_PDO->prepare($sql); $stmt->execute(); return $_PDO->lastinsertid(); } #更新拉新首单表状态 function pullNewUpdate($status, $order_id){ $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $sql="update `user_pullnew` set status=:status where first_order_id=:order_id"; $stmt = $_PDO->prepare($sql); $stmt->execute(array(':status'=>$status,':order_id'=>$order_id)); $res = $stmt->rowCount(); return $res; } # 获取当前运营商拉新状态 function getPullNew($operate_id){ $sql="SELECT count(id) as records from `user_pullnew` where status>0 and operate_id = :operate_id"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(array(':operate_id'=>$operate_id)); $result = $stmt->fetch(PDO::FETCH_OBJ)->records; return $result; } # 是否更新拉新表 function pullNewIsUpOk($status, $order_id, $user_id){ $sql = "SELECT id from user_pullnew where first_order_id = '{$order_id}'"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(); $res = $stmt->fetch(PDO::FETCH_ASSOC); if(empty($res)){ return false; } if($status == 0){ $sql="SELECT id from `order` where user_id={$user_id} and status>0 limit 1"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(); $res = $stmt->fetch(PDO::FETCH_ASSOC); if(!empty($res)){ return false; } } return true; } # 判断是否是新手第一单 function newCustFirstOrder($user_id){ $sql = "select id from `order` where user_id={$user_id} limit 1"; $_PDO=DB_PDO::getInstance( conf::$DB_CONF ); $stmt = $_PDO->prepare($sql); $stmt->execute(); $res = $stmt->fetch(PDO::FETCH_ASSOC); //之前没下过订单 if(empty($res)){ # 完成新手首单任务 ->** 逻辑变动,结算才完成任务 /*$sql = " update red_user_mission set status=1 where user_id={$user_id} and type=2 "; $stmt = $_PDO->prepare($sql); $stmt->execute(); $update_res = $stmt->rowCount();*/ # 多拆4-5元 $openRes = openRed($user_id); return true; } return false; } # 新手第一单多拆出4-5块助力红包 function openRed($user_id){ $time = date("Y-m-d H:i:s", strtotime('-1 day')); $sql = "select ur.id,ur.red_money,ur.red_open_money,rh.user_id,rh.union_id,rh.helper_name,rh.helper_img from red_help_record rh left join user_weixin uw on uw.union_id=rh.union_id left join user_level ul on ul.user_id = uw.user_id left join red_user_info ur on ur.id=rh.red_id where rh.user_id!={$user_id} and uw.user_id={$user_id} and rh.add_time