error("非法操作!"); } } //永续合约自动结算 public function AutoCloseOrder(){ $list = M("leverorder")->where(array('status'=>2))->select(); if(!empty($list)){ $sysinfo = M("leversetting")->where(array('id'=>1))->find(); $lever_fee = $sysinfo['lever_fee'];//费率 foreach($list as $key=>$vo){ $id = $vo['id']; $uid = $vo['uid']; $uinfo = M("user")->where(array('id'=>$uid))->field("id,username")->find(); $minfo = M("user_coin")->where(array('userid'=>$uid))->find(); $bond_money_info = M("levermoney")->where(array('uid'=>$uid))->find(); $lowercoin = $vo['coinname']; $user = M('levermoney')->where(['uid' => $uid])->find(); if($lowercoin == 'ukbusdt'){ $o_symbol = $vo['symbol']; $symbol_arr = explode('/',$o_symbol); $symbol = strtolower($symbol_arr[0])."_".strtolower($symbol_arr[1]); $mlist = M("market")->where(array('name'=>$symbol))->field("new_price,min_price")->find(); $close = $mlist['new_price']; }else{ $url = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$lowercoin; $close = $this->getnewprice($url); } $price = $vo['price']; //开仓价格 $direction = $vo['direction']; //交易方向 $zsprice = $vo['zsprice']; //止损价格 $zyprice = $vo['zyprice']; //止盈价格 if($direction == 1){//做多(买涨) 现价大于等于止盈价格就结算 if($zyprice > 0){ //说明设置了止盈价格 if($close >= $zyprice){ //收益计算 //例:BTC/USDT永续合约开多仓100张,成交价格为10000 USDT,以11000 USDT价格平仓, //则:平仓盈亏 = 收益(平仓) =( 11000 – 10000 )* 100 * 0.001 = 100 USDT。 $profit = sprintf("%.2f",(($close - $price) * 100 * 0.001 * $vo['ggan'])); $tprofit = abs($profit); $data['pc_price'] = $close; $data['status'] = 3; $data['yk_status'] = 1; $data['ylmoney'] = $tprofit; $data['endtime'] = date("Y-m-d H:i:s",time()); $result = M("leverorder")->where(array('id'=>$id))->save($data); $ubill['uid'] = $uid; $ubill['username'] = $uinfo['username']; $ubill['num'] = $tprofit; $ubill['coinname'] = "usdt"; $ubill['afternum'] = $minfo['usdt'] + $tprofit; $ubill['type'] = 20; $ubill['addtime'] = date("Y-m-d H:i:s",time()); $ubill['st'] = 1; $ubill['remark'] = L('合约交易止盈平仓盈利收益'); $ubillre = M("bill")->add($ubill); $bond_ubill = [ 'uid' => $uid, 'username' => $uinfo['username'], 'num' => $vo['bond'], 'coinname' => 'lever', 'afternum' => $user['money'] + $vo['bond'], 'type' => 19, 'addtime' => date("Y-m-d H:i:s",time()), 'st' => 1, 'remark' => '合約交易止盈平倉返還佔用合約' ];// 扣除合约保证金 M("levermoney")->where(array('uid'=>$uid))->setInc('money', $vo['bond']); M("bill")->add($bond_ubill); if($result && $ubillre){ M("user_coin")->where(array('userid'=>$uid))->setInc('usdt',$tprofit); echo "=订单ID:".$id.",止盈平仓="; } } }else{ //如果行情下跌 直到爆仓结算 //风险度=(持仓合约账户/合约账户权益)*100%, //合约账户权益=持仓合约账户+持仓浮动盈亏+当前账户可用金额 //当风险度等于100%时,您的仓位被视为爆仓 //如果现价下跌,现价 - 开仓价格为负数 $profit_fd = sprintf("%.2f",(($close - $price) * 100 * 0.001 * $vo['ggan'])); if ($profit_fd < 0){ if ($profit_fd > $vo['bond']){ $price = $tprofit - $vo['bond']; M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$price); $ubill['uid'] = $uid; $ubill['username'] = $uinfo['username']; $ubill['num'] = $price; $ubill['coinname'] = "usdt"; $ubill['afternum'] = $minfo['usdt'] + $tprofit; $ubill['type'] = 20; $ubill['addtime'] = date("Y-m-d H:i:s",time()); $ubill['st'] = 2; $ubill['remark'] = '合約交易爆倉,並扣除餘額'.$price; $ubillre = M("bill")->add($ubill); } } echo "=订单ID:".$id.",爆仓="; // $account_qy = $bond_money_info['money'] + $profit_fd + $minfo['usdt'];//账户权益 // $risk = $bond_money_info['money'] / $account_qy; // if($risk >= 1){ //如果风险度大于1刚爆仓,清零合约账户,清零USDT资 // $data['pc_price'] = $close; // $data['status'] = 4; // $data['yk_status'] = 2; // $data['ylmoney'] = $ks_money = $bond_money_info['money'] + $minfo['usdt']; // $data['endtime'] = date("Y-m-d H:i:s",time()); // M("leverorder")->where(array('id'=>$id))->save($data); // // $ubill['uid'] = $uid; // $ubill['username'] = $uinfo['username']; // $ubill['num'] = $ks_money; // $ubill['coinname'] = "usdt"; // $ubill['type'] = 20; // $ubill['afternum'] = $minfo['usdt'] - $minfo['usdt']; // $ubill['addtime'] = date("Y-m-d H:i:s",time()); // $ubill['st'] = 1; // $ubill['remark'] = L('合约交易爆仓,资产清零'); // $ubillre = M("bill")->add($ubill); // // M("user_coin")->where(array('userid'=>$uid))->save(array('usdt'=>0)); // M("levermoney")->where(array('uid'=>$uid))->save(array('money',0)); // echo "=订单ID:".$id.",爆仓="; // } } }elseif($direction == 2){//做空(买涨) 现价小于开仓价格就结算 if($zsprice > 0){ //说明设置了止损价格 if($close <= $zsprice){ // 现价小于止损价格就结算 //收益计算 //例:BTC/USDT永续合约开多仓100张,成交价格为10000 USDT,以11000 USDT价格平仓, //则:平仓盈亏 = 收益(平仓) =( 11000 – 10000 )* 100 * 0.001 = 100 USDT。 $profit = sprintf("%.2f",(($price - $close ) * 100 * 0.001 * $vo['ggan'])); $tprofit = abs($profit); if($minfo['usdt'] >= $tprofit){ M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$tprofit); $ubill['afternum'] = $minfo['usdt'] - $tprofit; }else{ $tpro_a = $minfo['usdt']; $tpro_b = $tprofit - $minfo['usdt']; M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$tpro_a); $ubill['afternum'] = $minfo['usdt'] - $tpro_a; $levermoney_info = M("levermoney")->where(array('uid'=>$uid))->find(); if($levermoney_info['money'] >= $tpro_b){ M("levermoney")->where(array('uid'=>$uid))->setDec("money",$tpro_b); }else{ M("levermoney")->where(array('uid'=>$uid))->save(array('money',0)); } } $data['pc_price'] = $close; $data['status'] = 3; $data['yk_status'] = 2; $data['ylmoney'] = $tprofit; $data['endtime'] = date("Y-m-d H:i:s",time()); $result = M("leverorder")->where(array('id'=>$id))->save($data); $ubill['uid'] = $uid; $ubill['username'] = $uinfo['username']; $ubill['num'] = $tprofit; $ubill['coinname'] = "usdt"; $ubill['type'] = 20; $ubill['addtime'] = date("Y-m-d H:i:s",time()); $ubill['st'] = 1; $ubill['remark'] = L('合约交易止损平仓收益'); $ubillre = M("bill")->add($ubill); if($result && $ubillre){ echo "=订单ID:".$id.",止损平仓="; } }else{//如果价格上涨 直至 爆仓操作 //风险度=(持仓合约账户/合约账户权益)*100%, //合约账户权益=持仓合约账户+持仓浮动盈亏+当前账户可用金额 //当风险度等于100%时,您的仓位被视为爆仓 //如果现价上涨,开仓价格-现价为负数 $profit_fd = sprintf("%.2f",(($price - $close ) * 100 * 0.001 * $vo['ggan'])); $account_qy = $bond_money_info['money'] + $profit_fd + $minfo['usdt'];//账户权益 $risk = $bond_money_info['money'] / $account_qy; if($risk >= 1){ //如果风险度大于1则爆仓,清零合约账户,清零USDT资 $data['pc_price'] = $close; $data['status'] = 4; $data['yk_status'] = 2; $data['ylmoney'] = $ks_money = $bond_money_info['money'] + $minfo['usdt']; $data['endtime'] = date("Y-m-d H:i:s",time()); M("leverorder")->where(array('id'=>$id))->save($data); $ubill['uid'] = $uid; $ubill['username'] = $uinfo['username']; $ubill['num'] = $ks_money; $ubill['coinname'] = "usdt"; $ubill['type'] = 20; $ubill['afternum'] = $minfo['usdt'] - $minfo['usdt']; $ubill['addtime'] = date("Y-m-d H:i:s",time()); $ubill['st'] = 1; $ubill['remark'] = L('合约交易爆仓,资产清零'); $ubillre = M("bill")->add($ubill); M("user_coin")->where(array('userid'=>$uid))->save(array('usdt'=>0)); M("levermoney")->where(array('uid'=>$uid))->save(array('money',0)); echo "=订单ID:".$id.",爆仓="; } } }else{//如果价格上涨 直至 爆仓操作 $profit_fd = sprintf("%.2f",(($price - $close ) * 100 * 0.001 * $vo['ggan'])); $account_qy = $bond_money_info['money'] + $profit_fd + $minfo['usdt'];//账户权益 $risk = $bond_money_info['money'] / $account_qy; if($risk >= 1){ //如果风险度大于1刚爆仓,清零合约账户,清零USDT资 $data['pc_price'] = $close; $data['status'] = 4; $data['yk_status'] = 2; $data['ylmoney'] = $ks_money = $bond_money_info['money'] + $minfo['usdt']; $data['endtime'] = date("Y-m-d H:i:s",time()); M("leverorder")->where(array('id'=>$id))->save($data); $ubill['uid'] = $uid; $ubill['username'] = $uinfo['username']; $ubill['num'] = $ks_money; $ubill['coinname'] = "usdt"; $ubill['type'] = 20; $ubill['afternum'] = $minfo['usdt'] - $minfo['usdt']; $ubill['addtime'] = date("Y-m-d H:i:s",time()); $ubill['st'] = 1; $ubill['remark'] = L('合约交易爆仓,资产清零'); $ubillre = M("bill")->add($ubill); M("user_coin")->where(array('userid'=>$uid))->save(array('usdt'=>0)); M("levermoney")->where(array('uid'=>$uid))->save(array('money',0)); echo "=订单ID:".$id.",爆仓="; } } } } } } //永续合约委托定单自动建仓 public function AutoCreateOrder(){ $list = M("leverorder")->where(array('status'=>1))->select(); if(!empty($list)){ $sysinfo = M("leversetting")->where(array('id'=>1))->find(); $lever_fee = $sysinfo['lever_fee'];//费率 foreach($list as $key=>$vo){ $id = $vo['id']; $uid = $vo['uid']; $uinfo = M("user")->where(array('id'=>$uid))->field("id,username")->find(); $minfo = M("user_coin")->where(array('userid'=>$uid))->find(); $lowercoin = $vo['coinname']; if($lowercoin == 'ukbusdt'){ $o_symbol = $vo['symbol']; $symbol_arr = explode('/',$o_symbol); $symbol = strtolower($symbol_arr[0])."_".strtolower($symbol_arr[1]); $mlist = M("market")->where(array('name'=>$symbol))->field("new_price,min_price")->find(); $close = $mlist['new_price']; }else{ $url = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$lowercoin; $close = $this->getnewprice($url); } //手续费计算(开仓价格 * 开仓数量 * 手续费率) ,开仓时扣除手续费 $wt_price = $vo['wt_price']; //委托价格 $direction = $vo['direction']; //交易方向 if($direction == 1){ //做多(上涨) 当前价小于等于委托价格就开仓 要跌了才开仓 if($close <= $wt_price){ $data['fee'] = $fee = sprintf("%.2f",($close * $vo['num'] * $lever_fee / 100)); if($minfo['usdt'] >= $fee){ $data['price'] = $close; $data['status'] = 2; $data['addtime'] = date("Y-m-d H:i:s",time()); $re_a = M("leverorder")->where(array('id'=>$id))->save($data); $re_b = M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$fee); $ubill['uid'] = $uid; $ubill['username'] = $uinfo['username']; $ubill['num'] = $fee; $ubill['coinname'] = "usdt"; $ubill['afternum'] = $minfo['usdt'] - $fee; $ubill['type'] = 19; $ubill['addtime'] = date("Y-m-d H:i:s",time()); $ubill['st'] = 2; $ubill['remark'] = L('合约交易开仓手续费'); $re_c = M("bill")->add($ubill); if($re_a && $re_b && $re_c){ echo "=订单ID:".$id.",开仓成功="; } } }else{ echo "=订单ID:".$id.",做多,价格不合适="; } }else if($direction == 2){ //做空(下跌) 当前价大于等于委托价格就开仓 要涨了才开仓 if($close >= $wt_price){ $data['fee'] = $fee = sprintf("%.2f",($close * $vo['num'] * $lever_fee / 100)); if($minfo['usdt'] >= $fee){ $data['price'] = $close; $data['status'] = 2; $data['addtime'] = date("Y-m-d H:i:s",time()); $re_a = M("leverorder")->where(array('id'=>$id))->save($data); $re_b = M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$fee); $ubill['uid'] = $uid; $ubill['username'] = $uinfo['username']; $ubill['num'] = $fee; $ubill['coinname'] = "usdt"; $ubill['afternum'] = $minfo['usdt'] - $fee; $ubill['type'] = 19; $ubill['addtime'] = date("Y-m-d H:i:s",time()); $ubill['st'] = 2; $ubill['remark'] = L('合约交易开仓手续费'); $re_c = M("bill")->add($ubill); if($re_a && $re_b && $re_c){ echo "=订单ID:".$id.",开仓成功="; } } }else{ echo "=订单ID:".$id.",做空,价格不合适="; } } } } } //自动释放冻结的认购币,设置计划任务,每天执行一次 public function releaseissue(){ $nowday = date("Y-m-d",time()); $map['status'] = 1; $map['endday'] = array('elt',$nowday); $list = M("issue_log")->where($map)->select(); if(!empty($list)){ foreach($list as $key=>$vo){ $id = $vo['id']; $uid = $vo['uid']; $num = $vo['num']; $cname = trim($vo['coinname']); $cnamed = trim($vo['coinname'])."d"; //修改记录状态 $result = M("issue_log")->where(array('id'=>$id))->save(array('status'=>2)); if($result){ $minfo = M("user_coin")->where(array('userid'=>$uid))->find(); //扣除冻结的资产 M("user_coin")->where(array('userid'=>$uid))->setDec($cnamed,$num); //增加可用资产的数量 M("user_coin")->where(array('userid'=>$uid))->setInc($cname,$num); //写入日志 $data['uid'] = $uid; $data['username'] = $vo['account']; $data['num'] = $num; $data['coinname'] = $cname; $data['afternum'] = $minfo[$cname] + $num; $data['type'] = 18; $data['addtime'] = date("Y-m-d H:i:s",time()); $data['st'] = 1; $data['remark'] = L("认购资产释放"); M("bill")->add($data); echo "==认购记录ID:".$id."释放成功"; }else{ echo "==认购记录ID:".$id."释放失败"; } } }else{ echo "==没有可释放认购记录=="; } } //委托订单自动交易 //设置成5-10秒执行一次的计划任务 public function autoxjtade(){ $list = M("bborder")->where(array('ordertype'=>1,'status'=>1))->select(); if(!empty($list)){ foreach($list as $k=>$v){ $type = $v['type']; $uid = $v['uid']; $id = $v['id']; $symbol = strtolower($v['coin']).'usdt'; $lowercoin = strtolower($v['coin']); //限价单价 $xjprice = $v['xjprice']; $sxfbl = $v['sxfbl']; if($lowercoin == "ukb"){ $priceinfo = M("market")->where(array('name'=>"ukb_usdt"))->field("new_price")->find(); $newprice = $priceinfo['new_price']; }else{ //获取当前行情价 $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol; $newprice = $this->getnewprice($coinapi); } //买入,当行情价小于等于限价时则交易 $minfo = M("user_coin")->where(array('userid'=>$uid))->find(); if($type == 1){ $usdtnum = $v['usdtnum']; if($newprice <= $xjprice){ //计算能够买到的量 $buy_coinnum = sprintf("%.8f",($usdtnum / $newprice)); //手续费 $fee = $buy_coinnum * $sxfbl / 100; //实际到账号的金额 $tcoinnum = $buy_coinnum - $fee; //更新订单 $data['coinnum'] = $tcoinnum; $data['price'] = $newprice; $data['tradetime'] = date("Y-m-d H:i:s",time()); $data['fee'] = $fee; $data['status'] = 2; $savere = M("bborder")->where(array('id'=>$id))->save($data); //增加购买数量并写入日志 $incre = M("user_coin")->where(array('userid'=>$uid))->setInc($lowercoin,$tcoinnum); $cincbill['uid'] = $uid; $cincbill['username'] = $v['account']; $cincbill['num'] = $tcoinnum; $cincbill['coinname'] = $lowercoin; $cincbill['afternum'] = $minfo[$lowercoin] + $tcoinnum; $cincbill['type'] = 10; $cincbill['addtime'] = date("Y-m-d H:i:s",time()); $cincbill['st'] = 1; $cincbill['remark'] = L('币币交易限价购买委托成交'); $cincre = M("bill")->add($cincbill); //扣除冻结的USDT并写入日志 $decre = M("user_coin")->where(array('userid'=>$uid))->setDec("usdtd",$usdtnum); $uincbill['uid'] = $uid; $uincbill['username'] = $v['account']; $uincbill['num'] = $usdtnum; $uincbill['coinname'] = "usdt"; $uincbill['afternum'] = $minfo['usdt'] - $usdtnum; $uincbill['type'] = 9; $uincbill['addtime'] = date("Y-m-d H:i:s",time()); $uincbill['st'] = 2; $uincbill['remark'] = L('币币交易限价购买委托成交'); $uincre = M("bill")->add($uincbill); if($savere && $cincre && $uincre){ $notice['uid'] = $uid; $notice['account'] = $v['account']; $notice['title'] = L('币币交易限价委托交易'); $notice['content'] = L('币币交易限价购买委托订单购买成功'); $notice['addtime'] = date("Y-m-d H:i:s",time()); $notice['status'] = 1; M("notice")->add($notice); echo "==委托订单ID:".$id.",购买成功=="; } }else{ echo "==委托订单ID:".$id.",没有达到限价购买价格=="; } //卖出,当行情价大于等于限价时则交易 }elseif($type == 2){ $coinnum = $v['coinnum']; if($newprice >= $xjprice){ //求出卖出所得的USDT量 $allusdt = sprintf("%.8f",($coinnum * $newprice)); //求出手续费 $fee = $allusdt * $sxfbl / 100; //求出实际到账USDT量 $tusdtnum = $allusdt - $fee; //更新订单 $data['usdtnum'] = $tusdtnum; $data['price'] = $newprice; $data['tradetime'] = date("Y-m-d H:i:s",time()); $data['fee'] = $fee; $data['status'] = 2; $savere = M("bborder")->where(array('id'=>$id))->save($data); //增加卖出所得的USDT量并写入日志 $incre = M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$tusdtnum); $uincbill['uid'] = $uid; $uincbill['username'] = $v['account']; $uincbill['num'] = $tusdtnum; $uincbill['coinname'] = 'usdt'; $uincbill['afternum'] = $minfo['usdt'] + $tusdtnum; $uincbill['type'] = 9; $uincbill['addtime'] = date("Y-m-d H:i:s",time()); $uincbill['st'] = 1; $uincbill['remark'] = L('币币交易限价出售委托成交'); $uincre = M("bill")->add($uincbill); //扣除冻结的卖出币量并写入日志 $decre = M("user_coin")->where(array('userid'=>$uid))->setDec($lowercoin."d",$coinnum); $cincbill['uid'] = $uid; $cincbill['username'] = $v['account']; $cincbill['num'] = $coinnum; $cincbill['coinname'] = $lowercoin; $cincbill['afternum'] = $minfo[$lowercoin] - $coinnum; $cincbill['type'] = 10; $cincbill['addtime'] = date("Y-m-d H:i:s",time()); $cincbill['st'] = 2; $cincbill['remark'] = L('币币交易限价出售委托成交'); $cincre = M("bill")->add($cincbill); if($savere && $cincre && $uincre){ $notice['uid'] = $uid; $notice['account'] = $v['account']; $notice['title'] = L('币币交易限价委托交易'); $notice['content'] = L('币币交易限价购买委托订单出售成功'); $notice['addtime'] = date("Y-m-d H:i:s",time()); $notice['status'] = 1; M("notice")->add($notice); echo "==委托订单ID:".$id.",出售成功=="; } }else{ echo "==委托订单ID:".$id.",没有达到限价出售价格=="; } } } }else{ echo "没有限价委托可交易!"; } } //释放冻结的矿机收益币 //设置一天执行一次的计划任务 public function releasedjprofit(){ $nowday = date("Y-m-d",time()); $where['thawday'] = array('elt',$nowday); $where['status'] = array('eq',1); $list = M("djprofit")->where($where)->select(); if(!empty($list)){ foreach($list as $key=>$vo){ $id = $vo['id']; $uid = $vo['uid']; $username = $vo['username']; $num = $vo['num']; $coinname = trim($vo['coin']); $minfo = M("user_coin")->where(array('userid'=>$uid))->find(); //修改冻结状态 M("djprofit")->where(array('id'=>$id))->save(array('status'=>2)); //添加财务日志 $billdata['uid'] = $uid; $billdata['username'] = $username; $billdata['num'] = $num; $billdata['coinname'] = $coinname; $billdata['afternum'] = $minfo[$coinname] + $num; $billdata['type'] = 8; $billdata['addtime'] = date("Y-m-d H:i:s",time()); $billdata['st'] = 1; $billdata['remark'] = L('释放冻结收益'); M("bill")->add($billdata); //增加会员资产,减少冻结额度 $coinname_d = $coinname."d"; M("user_coin")->where(array('userid'=>$uid))->setDec($coinname_d,$num); M("user_coin")->where(array('userid'=>$uid))->setInc($coinname,$num); $notice['uid'] = $uid; $notice['account'] = $username; $notice['title'] = L('释放冻结收益'); $notice['content'] = L('您冻结的矿机收益释放成功,可以交易'); $notice['addtime'] = date("Y-m-d H:i:s",time()); $notice['status'] = 1; M("notice")->add($notice); echo "==ID:".$id."释放".$num.$coinname."成功=="; echo "
"; } }else{ echo "====没有可释放的冻结记录===="; } } //共享矿机自动结算收益,设置一天执行一次的计划任务 public function authsharesjsy(){ $kjlist = M("kjorder")->where(array('status'=>1,'type'=>2))->select(); if(!empty($kjlist)){ foreach($kjlist as $key=>$vo){ $id = $vo['id']; $uid = $vo['uid']; $username = $vo['username']; $minfo = M("user_coin")->where(array('userid'=>$uid))->find(); $kid = $vo['kid']; $nowdate = date("Y-m-d",time()); $profitinfo = M("kjprofit")->where(array('uid'=>$uid,'kid'=>$id,'day'=>$nowdate))->find(); if(empty($profitinfo)){ $sharbltxt = $vo['sharbltxt']; if($sharbltxt <= 0){ echo "===共享矿机ID".$id."共享码有误==="; }else{ $sharekj = M("kjorder")->where(array('sharbltxt'=>$sharbltxt))->count(); if($sharekj >= 2){ //查找矿机收益的类型以及查找收益是否需要冻结及冻结天数 $outtype = $vo['outtype']; if($outtype == 1){//按产值需要查找产出币种的最新行情 $coinname = strtolower(trim($vo['outcoin'])); $outnum = $vo['outusdt']; $symbol = $coinname.'usdt'; $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol; $newprice = $this->getnewprice($coinapi); $tcoinnum = sprintf("%.6f",($outnum / $newprice)); //实际产生的币量,保留6位小数 }elseif($outtype == 2){ $coinname = strtolower(trim($vo['outcoin'])); $tcoinnum = $vo['outnum']; } $djout = $vo['djout'];//1冻结2不冻结 $djday = $vo['djnum'];//冻结天数 //写入矿机收益日志 $kjprofit_d['uid'] = $uid; $kjprofit_d['username'] = $username; $kjprofit_d['kid'] = $id; $kjprofit_d['ktitle'] = $vo['kjtitle']; $kjprofit_d['num'] = $tcoinnum; $kjprofit_d['coin'] = $coinname; $kjprofit_d['addtime'] = date("Y-m-d H:i:s",time()); $kjprofit_d['day'] = date("Y-m-d",time()); M("kjprofit")->add($kjprofit_d); if($djout == 2){ $coin_d = $coinname."d"; M("user_coin")->where(array('userid'=>$uid))->setInc($coin_d,$tcoinnum); $djprofit_d['uid'] = $uid; $djprofit_d['username'] = $username; $djprofit_d['num'] = $tcoinnum; $djprofit_d['coin'] = $coinname; $djprofit_d['status'] = 1; $djprofit_d['addtime'] = date("Y-m-d H:i:s",time()); $djprofit_d['addday'] = date("Y-m-d",time()); $djprofit_d['thawtime'] = date("Y-m-d H:i:s",(time() + 86400 * $djday)); $djprofit_d['thawday'] = date("Y-m-d",(time() + 86400 * $djday)); $djprofit_d['remark'] = L('冻结矿机释放收益'); M("djprofit")->add($djprofit_d); //写资金日志 $billdata['uid'] = $uid; $billdata['username'] = $username; $billdata['num'] = $tcoinnum; $billdata['coinname'] = $coinname; $billdata['afternum'] = $minfo[$coin_d] + $tcoinnum; $billdata['type'] = 7; $billdata['addtime'] = date("Y-m-d H:i:s",time()); $billdata['st'] = 1; $billdata['remark'] = L('矿机收益释放冻结'); M("bill")->add($billdata); $notice['uid'] = $uid; $notice['account'] = $username; $notice['title'] = L('矿机收益'); $notice['content'] = L('今日矿机收益已成功到账,请注册查收'); $notice['addtime'] = date("Y-m-d H:i:s",time()); $notice['status'] = 1; M("notice")->add($notice); }elseif($djout == 1){ M("user_coin")->where(array('userid'=>$uid))->setInc($coinname,$tcoinnum); //写资金日志 $billdata['uid'] = $uid; $billdata['username'] = $username; $billdata['num'] = $tcoinnum; $billdata['coinname'] = $coinname; $billdata['afternum'] = $minfo[$coinname] + $tcoinnum; $billdata['type'] = 8; $billdata['addtime'] = date("Y-m-d H:i:s",time()); $billdata['st'] = 1; $billdata['remark'] = L('矿机收益释放'); M("bill")->add($billdata); } //修改矿机收益次数 M("kjorder")->where(array('id'=>$id))->setDec("synum",1); $reinfo = M("kjorder")->where(array('id'=>$id))->find(); if($reinfo['synum'] < 1){ M("kjorder")->where(array('id'=>$id))->save(array('status'=>3)); } echo "==共享矿机ID:".$kid."收益成功=="; echo "
"; }else{ echo "===共享矿机ID".$id."另一部分没有购买,不能收益==="; } } }else{ echo "==矿机ID:".$kid."不能重复收益=="; echo "
"; } } } } //独资矿机自动收益,每天执行一次 //设置一天执行一次的计划任务 public function autokjsy(){ $kjlist = M("kjorder")->where(array('status'=>1,'type'=>1))->select(); if(!empty($kjlist)){ foreach($kjlist as $key=>$vo){ $id = $vo['id']; $uid = $vo['uid']; $username = $vo['username']; $minfo = M("user_coin")->where(array('userid'=>$uid))->find(); $kid = $vo['kid']; $nowdate = date("Y-m-d",time()); $profitinfo = M("kjprofit")->where(array('uid'=>$uid,'kid'=>$id,'day'=>$nowdate))->find(); if(empty($profitinfo)){ //查找矿机收益的类型以及查找收益是否需要冻结及冻结天数 $outtype = $vo['outtype']; if($outtype == 1){//按产值需要查找产出币种的最新行情 $coinname = strtolower(trim($vo['outcoin'])); $outnum = $vo['outusdt']; $symbol = $coinname.'usdt'; $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol; $newprice = $this->getnewprice($coinapi); $tcoinnum = sprintf("%.6f",($outnum / $newprice)); //实际产生的币量,保留6位小数 }elseif($outtype == 2){ $coinname = strtolower(trim($vo['outcoin'])); $tcoinnum = $vo['outnum']; } $djout = $vo['djout'];//1冻结2不冻结 $djday = $vo['djnum'];//冻结天数 //写入矿机收益日志 $kjprofit_d['uid'] = $uid; $kjprofit_d['username'] = $username; $kjprofit_d['kid'] = $id; $kjprofit_d['ktitle'] = $vo['kjtitle']; $kjprofit_d['num'] = $tcoinnum; $kjprofit_d['coin'] = $coinname; $kjprofit_d['addtime'] = date("Y-m-d H:i:s",time()); $kjprofit_d['day'] = date("Y-m-d",time()); M("kjprofit")->add($kjprofit_d); if($djout == 2){ $coin_d = $coinname."d"; M("user_coin")->where(array('userid'=>$uid))->setInc($coin_d,$tcoinnum); $djprofit_d['uid'] = $uid; $djprofit_d['username'] = $username; $djprofit_d['num'] = $tcoinnum; $djprofit_d['coin'] = $coinname; $djprofit_d['status'] = 1; $djprofit_d['addtime'] = date("Y-m-d H:i:s",time()); $djprofit_d['addday'] = date("Y-m-d",time()); $djprofit_d['thawtime'] = date("Y-m-d H:i:s",(time() + 86400 * $djday)); $djprofit_d['thawday'] = date("Y-m-d",(time() + 86400 * $djday)); $djprofit_d['remark'] = L('冻结矿机释放收益'); M("djprofit")->add($djprofit_d); //写资金日志 $billdata['uid'] = $uid; $billdata['username'] = $username; $billdata['num'] = $tcoinnum; $billdata['coinname'] = $coinname; $billdata['afternum'] = $minfo[$coin_d] + $tcoinnum; $billdata['type'] = 7; $billdata['addtime'] = date("Y-m-d H:i:s",time()); $billdata['st'] = 1; $billdata['remark'] = L('矿机收益释放冻结'); M("bill")->add($billdata); $notice['uid'] = $uid; $notice['account'] = $username; $notice['title'] = L('矿机收益'); $notice['content'] = L('今日矿机收益已成功到账,请注册查收'); $notice['addtime'] = date("Y-m-d H:i:s",time()); $notice['status'] = 1; M("notice")->add($notice); }elseif($djout == 1){ M("user_coin")->where(array('userid'=>$uid))->setInc($coinname,$tcoinnum); //写资金日志 $billdata['uid'] = $uid; $billdata['username'] = $username; $billdata['num'] = $tcoinnum; $billdata['coinname'] = $coinname; $billdata['afternum'] = $minfo[$coinname] + $tcoinnum; $billdata['type'] = 8; $billdata['addtime'] = date("Y-m-d H:i:s",time()); $billdata['st'] = 1; $billdata['remark'] = L('矿机收益释放'); M("bill")->add($billdata); } //修改矿机收益次数 M("kjorder")->where(array('id'=>$id))->setDec("synum",1); $reinfo = M("kjorder")->where(array('id'=>$id))->find(); if($reinfo['synum'] < 1){ M("kjorder")->where(array('id'=>$id))->save(array('status'=>3)); } echo "==矿机ID:".$kid."收益成功=="; echo "
"; }else{ echo "==矿机ID:".$kid."不能重复收益=="; echo "
"; } } }else{ echo "++||没有正常运行的矿机||++"; } } //休验订单自动按风控比例设置订单的盈亏比例 //设置成5-10秒执行一次的计划任务 public function setwl_ty(){ $map['status'] = 1; $map['kongyk'] = 0; $orderobj = M("tyhyorder"); $count = $orderobj->where($map)->count(); $setting = M("hysetting")->where(array('id'=>1))->field("hy_fkgl")->find(); if($setting['hy_fkgl'] > 0){ $ylcount = intval($count * $setting['hy_fkgl'] / 100); $kscount = $count - $ylcount; if($ylcount > 0){ $yllist = $orderobj->where($map)->order("num asc")->limit($ylcount)->select(); if(!empty($yllist)){ foreach($yllist as $k=>$v){ $yid = $v['id']; $orderobj->where(array('id'=>$yid))->save(array('kongyk'=>1)); echo "订单ID:".$yid."设为盈利=="; } } } if($kscount > 0){ $kslist = $orderobj->where($map)->order("num asc")->limit($kscount)->select(); if(!empty($kslist)){ foreach($kslist as $k=>$v){ $kid = $v['id']; $orderobj->where(array('id'=>$kid))->save(array('kongyk'=>2)); echo "订单ID:".$kid."设为亏损=="; } } } } echo "操作成功"; } //自动按风控比例设置订单的盈亏比例 //设置成5-10秒执行一次的计划任务 public function setwl(){ $map['status'] = 1; $map['kongyk'] = 0; $orderobj = M("hyorder"); $count = $orderobj->where($map)->count(); $setting = M("hysetting")->where(array('id'=>1))->field("hy_fkgl")->find(); if($setting['hy_fkgl'] > 0){ $ylcount = intval($count * $setting['hy_fkgl'] / 100); $kscount = $count - $ylcount; if($ylcount > 0){ $yllist = $orderobj->where($map)->order("num asc")->limit($ylcount)->select(); if(!empty($yllist)){ foreach($yllist as $k=>$v){ $yid = $v['id']; $orderobj->where(array('id'=>$yid))->save(array('kongyk'=>1)); echo "订单ID:".$yid."设为盈利=="; } } } if($kscount > 0){ $kslist = $orderobj->where($map)->order("num asc")->limit($kscount)->select(); if(!empty($kslist)){ foreach($kslist as $k=>$v){ $kid = $v['id']; $orderobj->where(array('id'=>$kid))->save(array('kongyk'=>2)); echo "订单ID:".$kid."设为亏损=="; } } } } echo "操作成功"; } //自动结算合约订单 public function hycarryout_ty(){ $nowtime = time(); $map['status'] = 1; $map['intselltime'] = array('elt',$nowtime); $orderobj = M("tyhyorder"); $list = $orderobj->where($map)->select(); if(!empty($list)){ foreach($list as $key=>$vo){ $coinname = $vo['coinname']; $coinarr = explode("/",$coinname); $symbol = strtolower($coinarr[0]).strtolower($coinarr[1]); $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol; $newprice = $this->getnewprice($coinapi); $randnum = "0.".rand(1000,9999); $buyprice = $vo['buyprice']; $otype = $vo['hyzd']; //合约方向 $dkong = $vo['kongyk']; //单控设置 $uid = $vo['uid'];//会员ID $id = $vo['id'];//记录ID $num = $vo['num']; $hybl = $vo['hybl']; //收益比例 $ylnum = $num * ($hybl / 100); //盈利金额 $money = $num + $ylnum;//本金+盈利金额 //$dkong分三种情况 1、0表示随行情,1表示盈利 2 表示亏损 //盈利时增加$money,,亏损时亏本金 if($dkong == 0){ //买涨 if($otype == 1){ //买跌 if($newprice > $buyprice){ //盈利 //增加资产 //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); M("user")->where(array('id'=>$uid))->setInc("money",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $newprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 //$this->addlog($uid,$vo['username'],$money); }else{//亏损 //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $newprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } }elseif($otype == 2){ //买跌 if($newprice < $buyprice){ //盈利 //增加资产 //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); M("user")->where(array('id'=>$uid))->setInc("money",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $newprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 //$this->addlog($uid,$vo['username'],$money); }else{//亏损 //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $newprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } } }elseif($dkong == 1){//单控盈利 if($otype == 1){//买涨 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $newprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //增加资产 //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); M("user")->where(array('id'=>$uid))->setInc("money",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 //$this->addlog($uid,$vo['username'],$money); }elseif($otype == 2){//买跌 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //增加资产 //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); M("user")->where(array('id'=>$uid))->setInc("money",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 //$this->addlog($uid,$vo['username'],$money); } }elseif($dkong == 2){ if($otype == 1){//买涨 //买涨,指定亏损,结算价格要低于买入价格 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); }elseif($otype == 2){//买跌 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $buyprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } } echo "==订单ID:".$id."出售成功=="; } }else{ echo "没有订单可以结算!"; } } //自动结算体验合约订单 public function hycarryout_ty_old(){ $nowtime = time(); $map['status'] = 1; $map['intselltime'] = array('elt',$nowtime); $orderobj = M("tyhyorder"); $list = $orderobj->where($map)->select(); //获取合约参数 $setting = M("hysetting")->where(array('id'=>1))->field("hy_ksid,hy_ylid,hy_fkgl")->find(); //指定盈利ID组 $winarr = explode(',',$setting['hy_ylid']); //指定亏损ID组 $lossarr = explode(',',$setting['hy_ksid']); //风控比例组 $fkarr = explode(',',$setting['hy_fkgl']); if(!empty($list)){ foreach($list as $key=>$vo){ $coinname = $vo['coinname']; $coinarr = explode("/",$coinname); $symbol = strtolower($coinarr[0]).strtolower($coinarr[1]); $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol; $newprice = $this->getnewprice($coinapi); $randnum = "0.".rand(1000,9999); $buyprice = $vo['buyprice']; $otype = $vo['hyzd']; //合约方向 $dkong = $vo['kongyk']; //单控设置 $uid = $vo['uid'];//会员ID $id = $vo['id'];//记录ID $num = $vo['num']; $hybl = $vo['hybl']; $ylnum = $num * ($hybl / 100); $money = $num + $ylnum;//盈利金额 //买涨 if($otype == 1){ if(in_array($uid,$winarr)){//如果有指定盈利ID,则按盈利结算 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $newprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //增加资产 //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); M("user")->where(array('id'=>$uid))->setInc("money",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 //$this->addlog($uid,$vo['username'],$money); }elseif(in_array($uid,$lossarr)){//如果有指定亏损ID,则按亏损结算 //买涨,指定亏损,结算价格要低于买入价格 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); }else{//如果未指定盈利和亏损,则按单控的计算 if($dkong == 1){//盈利 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $newprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } // echo '买入价格:'.$buyprice; // echo "
"; // echo '结算价格:'.$sellprice;die; //增加资产 //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); M("user")->where(array('id'=>$uid))->setInc("money",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 //$this->addlog($uid,$vo['username'],$money); }elseif($dkong == 2){//亏损 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } // echo '买入价格:'.$buyprice; // echo "
"; // echo '结算价格:'.$sellprice;die; //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } } //买跌 }elseif($otype == 2){ if(in_array($uid,$winarr)){//如果有指定盈利ID,则按盈利结算 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //增加资产 //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); M("user")->where(array('id'=>$uid))->setInc("money",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 //$this->addlog($uid,$vo['username'],$money); }elseif(in_array($uid,$lossarr)){//如果有指定亏损ID,则按亏损结算 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $buyprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); }else{//如果未指定盈利和亏损,则按单控的计算 if($dkong == 1){//盈利 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //增加资产 //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); M("user")->where(array('id'=>$uid))->setInc("money",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 //$this->addlog($uid,$vo['username'],$money); }elseif($dkong == 2){//亏损 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $buyprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } } } echo "==订单ID:".$id."出售成功=="; } }else{ echo "没有订单可以结算!"; } } //自动结算合约订单 public function hycarryout(){ $nowtime = time(); $map['status'] = 1; $map['intselltime'] = array('elt',$nowtime); $orderobj = M("hyorder"); $list = $orderobj->where($map)->select(); if(!empty($list)){ foreach($list as $key=>$vo){ $coinname = $vo['coinname']; $coinarr = explode("/",$coinname); $symbol = strtolower($coinarr[0]).strtolower($coinarr[1]); $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol; $newprice = $this->getnewprice($coinapi); $randnum = "0.".rand(1000,9999); $buyprice = $vo['buyprice']; $otype = $vo['hyzd']; //合约方向 $dkong = $vo['kongyk']; //单控设置 $uid = $vo['uid'];//会员ID $id = $vo['id'];//记录ID $num = $vo['num']; $hybl = $vo['hybl']; //收益比例 $ylnum = $num * ($hybl / 100); //盈利金额 $money = $num + $ylnum;//本金+盈利金额 //$dkong分三种情况 1、0表示随行情,1表示盈利 2 表示亏损 //盈利时增加$money,,亏损时亏本金 if($dkong == 0){ //买涨 if($otype == 1){ //买跌 if($newprice > $buyprice){ //盈利 //增加资产 M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $newprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 $this->addlog($uid,$vo['username'],$money); }else{//亏损 //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $newprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } }elseif($otype == 2){ //买跌 if($newprice < $buyprice){ //盈利 //增加资产 M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $newprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 $this->addlog($uid,$vo['username'],$money); }else{//亏损 //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $newprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } } }elseif($dkong == 1){//单控盈利 if($otype == 1){//买涨 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $newprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //增加资产 M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 $this->addlog($uid,$vo['username'],$money); }elseif($otype == 2){//买跌 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //增加资产 M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 $this->addlog($uid,$vo['username'],$money); } }elseif($dkong == 2){ if($otype == 1){//买涨 //买涨,指定亏损,结算价格要低于买入价格 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); }elseif($otype == 2){//买跌 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $buyprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } } echo "==订单ID:".$id."出售成功=="; } }else{ echo "没有订单可以结算!"; } } //自动结算合约订单 public function hycarryout____old(){ $nowtime = time(); $map['status'] = 1; $map['intselltime'] = array('elt',$nowtime); $orderobj = M("hyorder"); $list = $orderobj->where($map)->select(); //获取合约参数 $setting = M("hysetting")->where(array('id'=>1))->field("hy_ksid,hy_ylid,hy_fkgl")->find(); //指定盈利ID组 $winarr = explode(',',$setting['hy_ylid']); //指定亏损ID组 $lossarr = explode(',',$setting['hy_ksid']); //风控比例组 $fkarr = explode(',',$setting['hy_fkgl']); if(!empty($list)){ foreach($list as $key=>$vo){ $coinname = $vo['coinname']; $coinarr = explode("/",$coinname); $symbol = strtolower($coinarr[0]).strtolower($coinarr[1]); $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol; $newprice = $this->getnewprice($coinapi); $randnum = "0.".rand(1000,9999); $buyprice = $vo['buyprice']; $otype = $vo['hyzd']; //合约方向 $dkong = $vo['kongyk']; //单控设置 $uid = $vo['uid'];//会员ID $id = $vo['id'];//记录ID $num = $vo['num']; $hybl = $vo['hybl']; $ylnum = $num * ($hybl / 100); $money = $num + $ylnum;//盈利金额 //买涨 if($otype == 1){ if(in_array($uid,$winarr)){//如果有指定盈利ID,则按盈利结算 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $newprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //增加资产 M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 $this->addlog($uid,$vo['username'],$money); }elseif(in_array($uid,$lossarr)){//如果有指定亏损ID,则按亏损结算 //买涨,指定亏损,结算价格要低于买入价格 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); }else{//如果未指定盈利和亏损,则按单控的计算 if($dkong == 1){//盈利 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $newprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } // echo '买入价格:'.$buyprice; // echo "
"; // echo '结算价格:'.$sellprice;die; //增加资产 M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 $this->addlog($uid,$vo['username'],$money); }elseif($dkong == 2){//亏损 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } // echo '买入价格:'.$buyprice; // echo "
"; // echo '结算价格:'.$sellprice;die; //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } } //买跌 }elseif($otype == 2){ if(in_array($uid,$winarr)){//如果有指定盈利ID,则按盈利结算 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //增加资产 M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 $this->addlog($uid,$vo['username'],$money); }elseif(in_array($uid,$lossarr)){//如果有指定亏损ID,则按亏损结算 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $buyprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); }else{//如果未指定盈利和亏损,则按单控的计算 if($dkong == 1){//盈利 if($newprice > $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice == $buyprice){ $sellprice = $buyprice - $randnum; }elseif($newprice < $buyprice){ $sellprice = $newprice; } //增加资产 M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money); //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 1; $sd['sellprice'] = $sellprice; $sd['ploss'] = $ylnum; $orderobj->where(array('id'=>$id))->save($sd); //写财务日志 $this->addlog($uid,$vo['username'],$money); }elseif($dkong == 2){//亏损 if($newprice > $buyprice){ $sellprice = $newprice; }elseif($newprice == $buyprice){ $sellprice = $buyprice + $randnum; }elseif($newprice < $buyprice){ $sellprice = $buyprice + $randnum; } //修改订单状态 $sd['status'] = 2; $sd['is_win'] = 2; $sd['sellprice'] = $sellprice; $sd['ploss'] = $num; $orderobj->where(array('id'=>$id))->save($sd); } } } echo "==订单ID:".$id."出售成功=="; } }else{ echo "没有订单可以结算!"; } } //写财务日志 public function addlog($uid,$username,$money){ $minfo = M("user_coin")->where(array('userid'=>$uid))->find(); $data['uid'] = $uid; $data['username'] = $username; $data['num'] = $money; $data['coinname'] = "usdt"; $data['afternum'] = $minfo['usdt'] + $money; $data['type'] = 4; $data['addtime'] = date("Y-m-d H:i:s",time()); $data['st'] = 1; $data['remark'] = L('合约出售'); M("bill")->add($data); $notice['uid'] = $uid; $notice['account'] = $username; $notice['title'] = L('快速合约交易'); $notice['content'] = L('快速合约已平仓,请及时加仓'); $notice['addtime'] = date("Y-m-d H:i:s",time()); $notice['status'] = 1; M("notice")->add($notice); } //获取行情数据 public function getnewprice($api){ $ch = curl_init(); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_setopt ($ch, CURLOPT_URL, $api ); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10); $result = json_decode(curl_exec($ch),true); $price_arr = $result['data'][0]; $close = $price_arr['close'];//现价 return $close; } } ?>