123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695 |
- <?php
- namespace Home\Controller;
- class AutoexeController extends \Think\Controller
- {
- protected function _initialize()
- {
- $allow_action = array("hycarryout","getnewprice","setwl","setwl_ty","autokjsy","releasedjprofit","autoxjtade","authsharesjsy","releaseissue","hycarryout_ty","AutoCreateOrder","AutoCloseOrder");
- if(!in_array(ACTION_NAME,$allow_action)){
- $this->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 "<br />";
- }
- }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 "<br />";
-
- }else{
- echo "===共享矿机ID".$id."另一部分没有购买,不能收益===";
- }
- }
-
- }else{
- echo "==矿机ID:".$kid."不能重复收益==";
- echo "<br />";
- }
-
-
- }
- }
-
- }
-
- //独资矿机自动收益,每天执行一次
- //设置一天执行一次的计划任务
- 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 "<br />";
- }else{
- echo "==矿机ID:".$kid."不能重复收益==";
- echo "<br />";
- }
-
-
- }
-
- }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 "<br />";
- // 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 "<br />";
- // 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 "<br />";
- // 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 "<br />";
- // 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;
- }
-
- }
- ?>
|