error(L("非法操作"));
}
}
public function pclist(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
$finishlist = M("leverorder")->where("uid = {$uid} and (status = 3 or status = 3)")->order("id desc")->select();
$this->assign('list',$finishlist);
$this->display();
}
public function wtlist(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
//持仓订单
$list = M("leverorder")->where(array('uid'=>$uid,'status'=>1))->order("id desc")->select();
$this->assign('list',$list);
$this->display();
}
public function cclist(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
//持仓订单
$alllist = M("leverorder")->where(array('uid'=>$uid,'status'=>2))->order("id desc")->select();
$this->assign('list',$alllist);
$this->display();
}
public function tradlist(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
//委托订单
$list = M("leverorder")->where(array('uid'=>$uid,'status'=>1))->order("id desc")->field("id,direction,symbol,wt_price,num,ggan,wttime")->select();
$this->assign('list',$list);
//持仓订单
$alllist = M("leverorder")->where(array('uid'=>$uid,'status'=>2))->order("id desc")->select();
$this->assign('alllist',$alllist);
//成交订单
$finishlist = M("leverorder")->where("uid = {$uid} and (status = 3 or status = 3)")->order("id desc")->select();
$this->assign('finishlist',$finishlist);
$this->display();
}
public function closeorder(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
if($_POST){
$id = trim(I('post.id'));
if($id == '' || $id <= 0){
$this->ajaxReturn(['code'=>2,'info'=>L('缺少重要参数')]);exit();
}
$oinfo = M("leverorder")->where(array('id'=>$id,'status'=>2))->find();
if(empty($oinfo)){
$this->ajaxReturn(['code'=>2,'info'=>L('订单不存在')]);exit();
}
$uinfo = M("user")->where(array('id'=>$uid))->field("id,username")->find();
$lowercoin = $oinfo['coinname'];
if($lowercoin == 'ukbusdt'){
$o_symbol = $oinfo['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;
$result = $this->getprice($url);
$pdata = $result['data'][0];
$close = $pdata['close'];//现价
}
//收益计算
//例:BTC/USDT永续合约开多仓100张,成交价格为10000 USDT,以11000 USDT价格平仓,
//则:平仓盈亏 = 收益(平仓) =( 11000 – 10000 )* 100 * 0.001 = 100 USDT。
$direction = $oinfo['direction'];
if($direction == 1){ //做多
$profit = sprintf("%.2f",(($close - $oinfo['price']) * 100 * 0.001 * $oinfo['ggan']));
}elseif($direction == 2){ //做空
$profit = sprintf("%.2f",(($oinfo['price'] - $close) * 100 * 0.001 * $oinfo['ggan']));
}
if($profit >= 0){
$yk_status = 1;
}else{
$yk_status = 2;
}
$tprofit = abs($profit);
$data['pc_price'] = $close;
$data['status'] = 3;
$data['yk_status'] = $yk_status;
$data['ylmoney'] = $tprofit;
$data['endtime'] = date("Y-m-d H:i:s",time());
$result = M("leverorder")->where(array('id'=>$id,'status'=>2))->save($data);
if($result){
$minfo = M("user_coin")->where(array('userid'=>$uid))->find();
if($profit >= 0){
M("user_coin")->where(array('userid'=>$uid))->setInc('usdt',$tprofit);
$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);
}else{
if($minfo['usdt'] >= $tprofit){
M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$tprofit);
$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'] = 2;
$ubill['remark'] = L('合约交易手动平仓亏损');
$ubillre = M("bill")->add($ubill);
}else{
//如果亏损金额大于账户余额,账户余额全扣完,剩下的部分扣合约账户
$tpro_a = $minfo['usdt'];
$tpro_b = $tprofit - $minfo['usdt'];
M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$tpro_a);
$ubill['uid'] = $uid;
$ubill['username'] = $uinfo['username'];
$ubill['num'] = $tpro_a;
$ubill['coinname'] = "usdt";
$ubill['afternum'] = $minfo['usdt'] - $tpro_a;
$ubill['type'] = 20;
$ubill['addtime'] = date("Y-m-d H:i:s",time());
$ubill['st'] = 2;
$ubill['remark'] = L('合约交易手动平仓亏损');
$ubillre = M("bill")->add($ubill);
$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));
}
}
}
$this->ajaxReturn(['code'=>1,'info'=>L('操作成功')]);exit();
}else{
$this->ajaxReturn(['code'=>2,'info'=>L('操作失败')]);exit();
}
}else{
$this->ajaxReturn(['code'=>2,'info'=>L('非法操作')]);exit();
}
}
public function confimclose(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
if($_POST){
$id = trim(I('post.id'));
if($id == '' || $id <= 0){
$this->ajaxReturn(['code'=>2,'info'=>L('缺少重要参数')]);exit();
}
$oinfo = M("leverorder")->where(array('id'=>$id,'status'=>2))->find();
if(empty($oinfo)){
$this->ajaxReturn(['code'=>2,'info'=>L('订单不存在')]);exit();
}
$lowercoin = $oinfo['coinname'];
if($lowercoin == 'ukbusdt'){
$o_symbol = $oinfo['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;
$result = $this->getprice($url);
$pdata = $result['data'][0];
$close = $pdata['close'];//现价
}
//收益计算
//例:BTC/USDT永续合约开多仓100张,成交价格为10000 USDT,以11000 USDT价格平仓,
//则:平仓盈亏 = 收益(平仓) =( 11000 – 10000 )* 100 * 0.001 = 100 USDT。
$direction = $oinfo['direction'];
if($direction == 1){ //做多
$profit = sprintf("%.2f",(($close - $oinfo['price']) * 100 * 0.001 * $oinfo['ggan']));
}elseif($direction == 2){ //做空
$profit = sprintf("%.2f",(($oinfo['price'] - $close) * 100 * 0.001 * $oinfo['ggan']));
}
if($profit >= 0){
$html = ''.L("现在结算预计盈利").':'.$profit.'USDT,'.L("确定要结算吗?").'';
}else{
$html = ''.L("现在结算预计亏损").':'.$profit.'USDT,'.L("确定要结算吗?").'';
}
$data['txt'] = $html;
$data['id'] = $id;
$data['code'] = 1;
$this->ajaxReturn($data);exit();
}
}
public function clearorder(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
if($_POST){
$id = trim(I('post.id'));
if($id == '' || $id <= 0){
$this->ajaxReturn(['code'=>2,'info'=>L('缺少重要参数')]);exit();
}
$oinfo = M("leverorder")->where(array('id'=>$id))->find();
if(empty($oinfo)){
$this->ajaxReturn(['code'=>2,'info'=>L('订单不存在')]);exit();
}
if($oinfo['status'] != 1){
$this->ajaxReturn(['code'=>2,'info'=>L('该合约不能撤消')]);exit();
}
$result = M("leverorder")->where(array('id'=>$id))->delete();
if($result){
$this->ajaxReturn(['code'=>1,'info'=>L('撤消成功')]);exit();
}else{
$this->ajaxReturn(['code'=>2,'info'=>L('撤消失败')]);exit();
}
}else{
$this->ajaxReturn(['code'=>2,'info'=>L('非法操作')]);exit();
}
}
public function UpOrderHandle(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
if($_POST){
$sysinfo = M("leversetting")->where(array('id'=>1))->find();
if($sysinfo['lever_kg'] != 0){
$this->ajaxReturn(['code'=>0,'info'=>L('暂停交易')]);
}
$lever_fee = $sysinfo['lever_fee'];//费率
$uinfo = M("user")->where(array('id'=>$uid))->field('id,username')->find();
$direction = trim(I('post.direction')); //交易方向1做多2做空
$type = trim(I('post.type')); //1限价委托2市价委托
$symbolstr = trim(I('post.symbol')); //交易对
$mprice = trim(I('post.mprice')); //建仓或委托单价
$ggan = trim(I('post.ggan')); //杠杆倍数
$zyprice = trim(I('post.zyprice')); //止盈价格
$zsprice = trim(I('post.zsprice')); //止损价格
$num = trim(I('post.num')); //交易手数
$arr = explode("/",$symbolstr);
$symbol = strtolower($arr[0].$arr[1]);//交易对
$data['orderid'] = date("YmdHis",time()).time().$uid;
$data['uid'] = $uid;
$data['username'] = $uinfo['username'];
$data['direction'] = $direction;
$data['coinname'] = $symbol;
$data['symbol'] = $symbolstr;
if($type == 1){
$data['price'] = '';
$data['wt_price'] = $mprice;
$data['wttime'] = date('Y-m-d H:i:s',time());
$data['addtime'] = '';
$data['status'] = 1;
$data['fee'] = '';
}elseif($type == 2){
$data['price'] = $mprice;
$data['wt_price'] = $mprice;
$data['wttime'] = date('Y-m-d H:i:s',time());
$data['addtime'] = date('Y-m-d H:i:s',time());
//手续费计算(开仓价格 * 开仓数量 * 手续费率) ,开仓时扣除手续费
$data['fee'] = $fee = sprintf("%.2f",($mprice * $num * $lever_fee / 100));
$data['status'] = 2;
$minfo = M("user_coin")->where(array('userid'=>$uid))->find();
if($minfo['usdt'] < $fee){
$this->ajaxReturn(['code'=>2,'info'=>L('账户余额不足')]);exit();
}
}
$data['type'] = $type;
$data['num'] = $num;
$data['ggan'] = $ggan;
$data['yk_status'] = '';
$data['ylmoney'] = '';
$data['endtime'] = '';
$result = M("leverorder")->add($data);
if($result){
if($type == 2){
//扣除手续费
$decre = 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('合约交易开仓手续费');
$ubillre = M("bill")->add($ubill);
}
$this->ajaxReturn(['code'=>1,'info'=>L('订单创建成功')]);exit();
}else{
$this->ajaxReturn(['code'=>2,'info'=>L('订单创建失败')]);exit();
}
$this->ajaxReturn(['code'=>2,'info'=>L('未开放')]);exit();
}else{
$this->ajaxReturn(['code'=>2,'info'=>L('非法操作')]);exit();
}
}
//币币交易详情页面
public function index(){
$uid = userid();
if($uid <= 0){
$this->redirect('Login/index');
}
$symbol = trim(I('get.symbol'));
if($symbol == ''){
$symbol = "BTC";
}
$coin = strtolower($symbol);
$minfo = M("user_coin")->where(array('userid'=>$uid))->find();
$usdt_blance = $minfo['usdt'];
$coin_blance = $minfo[$coin];
$this->assign('usdt_blance',$usdt_blance);
$this->assign('coin_blance',$coin_blance);
$this->assign('uid',$uid);
$coinname = $symbol."/"."USDT";
$market = $coin.'usdt';
$this->assign('market',$market);
$this->assign('coinname',$coinname);
$this->assign('symbol',$symbol);
$sysinfo = M("leversetting")->where(array('id'=>1))->find();
$this->assign('sysinfo',$sysinfo);
$lmoneyinfo = M("levermoney")->where(array('uid'=>$uid))->find();
if(empty($lmoneyinfo)){
$this->update_levermoney($uid);
$levermoney = 0;
}else{
$levermoney = $lmoneyinfo['money'];
}
$this->assign('levermoney',$levermoney);
//委托订单
$wtlist = M("leverorder")->where(array('uid'=>$uid,'status'=>1))->order("id desc")->field("id,direction,symbol,wt_price,num,ggan,wttime")->select();
$this->assign('wtlist',$wtlist);
//持仓订单
$cclist = M("leverorder")->where(array('uid'=>$uid,'status'=>2))->order("id desc")->select();
$this->assign('cclist',$cclist);
$this->display();
}
public function update_levermoney($uid){
$uinfo = M("user")->where(array('id'=>$uid))->field("id,username")->find();
$data['uid'] = $uid;
$data['username'] = $uinfo['username'];
$data['money'] = 0;
M("levermoney")->add($data);
}
//合约K线
public function trans(){
$uid = userid();
$this->assign('uid',$uid);
$sytx = trim(I('get.sytx'));
$txarr = explode('/',$sytx);
$symbol = $txarr[0];
$market = strtolower($txarr[0].$txarr[1]);
if($symbol == ''){
$symbol = 'btc';
}
if($market == ''){
$market = 'btcusdt';
}
$upmarket = strtoupper($symbol)."/USDT";
$this->assign('upmarket',$upmarket);
$this->assign('market', $market);
$this->assign('smybol',$symbol);
$lowercoin = strtolower($symbol);
$cmarket = M("ctmarket")->where(array('coinname'=>$lowercoin))->field("state")->find();
$state = $cmarket['state'];
$this->assign('state',$state);
$this->display();
}
//获取行情数据
public function getprice($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);
return $result;
}
/**
* 普通K线图
*/
public function ordinaryh($market = NULL)
{
if($market == ''){
$market = "btcusdt";
}
$this->assign('market', $market);
$this->display();
}
/**
* 普通K线图
*/
public function ordinary($market = NULL)
{
if($market == ''){
$market = "btcusdt";
}
$this->assign('market', $market);
$this->display();
}
}
?>