AutoexeController.class.php 80 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695
  1. <?php
  2. namespace Home\Controller;
  3. class AutoexeController extends \Think\Controller
  4. {
  5. protected function _initialize()
  6. {
  7. $allow_action = array("hycarryout","getnewprice","setwl","setwl_ty","autokjsy","releasedjprofit","autoxjtade","authsharesjsy","releaseissue","hycarryout_ty","AutoCreateOrder","AutoCloseOrder");
  8. if(!in_array(ACTION_NAME,$allow_action)){
  9. $this->error("非法操作!");
  10. }
  11. }
  12. //永续合约自动结算
  13. public function AutoCloseOrder(){
  14. $list = M("leverorder")->where(array('status'=>2))->select();
  15. if(!empty($list)){
  16. $sysinfo = M("leversetting")->where(array('id'=>1))->find();
  17. $lever_fee = $sysinfo['lever_fee'];//费率
  18. foreach($list as $key=>$vo){
  19. $id = $vo['id'];
  20. $uid = $vo['uid'];
  21. $uinfo = M("user")->where(array('id'=>$uid))->field("id,username")->find();
  22. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  23. $bond_money_info = M("levermoney")->where(array('uid'=>$uid))->find();
  24. $lowercoin = $vo['coinname'];
  25. $user = M('levermoney')->where(['uid' => $uid])->find();
  26. if($lowercoin == 'ukbusdt'){
  27. $o_symbol = $vo['symbol'];
  28. $symbol_arr = explode('/',$o_symbol);
  29. $symbol = strtolower($symbol_arr[0])."_".strtolower($symbol_arr[1]);
  30. $mlist = M("market")->where(array('name'=>$symbol))->field("new_price,min_price")->find();
  31. $close = $mlist['new_price'];
  32. }else{
  33. $url = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$lowercoin;
  34. $close = $this->getnewprice($url);
  35. }
  36. $price = $vo['price']; //开仓价格
  37. $direction = $vo['direction']; //交易方向
  38. $zsprice = $vo['zsprice']; //止损价格
  39. $zyprice = $vo['zyprice']; //止盈价格
  40. if($direction == 1){//做多(买涨) 现价大于等于止盈价格就结算
  41. if($zyprice > 0){ //说明设置了止盈价格
  42. if($close >= $zyprice){
  43. //收益计算
  44. //例:BTC/USDT永续合约开多仓100张,成交价格为10000 USDT,以11000 USDT价格平仓,
  45. //则:平仓盈亏 = 收益(平仓) =( 11000 – 10000 )* 100 * 0.001 = 100 USDT。
  46. $profit = sprintf("%.2f",(($close - $price) * 100 * 0.001 * $vo['ggan']));
  47. $tprofit = abs($profit);
  48. $data['pc_price'] = $close;
  49. $data['status'] = 3;
  50. $data['yk_status'] = 1;
  51. $data['ylmoney'] = $tprofit;
  52. $data['endtime'] = date("Y-m-d H:i:s",time());
  53. $result = M("leverorder")->where(array('id'=>$id))->save($data);
  54. $ubill['uid'] = $uid;
  55. $ubill['username'] = $uinfo['username'];
  56. $ubill['num'] = $tprofit;
  57. $ubill['coinname'] = "usdt";
  58. $ubill['afternum'] = $minfo['usdt'] + $tprofit;
  59. $ubill['type'] = 20;
  60. $ubill['addtime'] = date("Y-m-d H:i:s",time());
  61. $ubill['st'] = 1;
  62. $ubill['remark'] = L('合约交易止盈平仓盈利收益');
  63. $ubillre = M("bill")->add($ubill);
  64. $bond_ubill = [
  65. 'uid' => $uid,
  66. 'username' => $uinfo['username'],
  67. 'num' => $vo['bond'],
  68. 'coinname' => 'lever',
  69. 'afternum' => $user['money'] + $vo['bond'],
  70. 'type' => 19,
  71. 'addtime' => date("Y-m-d H:i:s",time()),
  72. 'st' => 1,
  73. 'remark' => '合約交易止盈平倉返還佔用合約'
  74. ];// 扣除合约保证金
  75. M("levermoney")->where(array('uid'=>$uid))->setInc('money', $vo['bond']);
  76. M("bill")->add($bond_ubill);
  77. if($result && $ubillre){
  78. M("user_coin")->where(array('userid'=>$uid))->setInc('usdt',$tprofit);
  79. echo "=订单ID:".$id.",止盈平仓=";
  80. }
  81. }
  82. }else{ //如果行情下跌 直到爆仓结算
  83. //风险度=(持仓合约账户/合约账户权益)*100%,
  84. //合约账户权益=持仓合约账户+持仓浮动盈亏+当前账户可用金额
  85. //当风险度等于100%时,您的仓位被视为爆仓
  86. //如果现价下跌,现价 - 开仓价格为负数
  87. $profit_fd = sprintf("%.2f",(($close - $price) * 100 * 0.001 * $vo['ggan']));
  88. if ($profit_fd < 0){
  89. if ($profit_fd > $vo['bond']){
  90. $price = $tprofit - $vo['bond'];
  91. M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$price);
  92. $ubill['uid'] = $uid;
  93. $ubill['username'] = $uinfo['username'];
  94. $ubill['num'] = $price;
  95. $ubill['coinname'] = "usdt";
  96. $ubill['afternum'] = $minfo['usdt'] + $tprofit;
  97. $ubill['type'] = 20;
  98. $ubill['addtime'] = date("Y-m-d H:i:s",time());
  99. $ubill['st'] = 2;
  100. $ubill['remark'] = '合約交易爆倉,並扣除餘額'.$price;
  101. $ubillre = M("bill")->add($ubill);
  102. }
  103. }
  104. echo "=订单ID:".$id.",爆仓=";
  105. // $account_qy = $bond_money_info['money'] + $profit_fd + $minfo['usdt'];//账户权益
  106. // $risk = $bond_money_info['money'] / $account_qy;
  107. // if($risk >= 1){ //如果风险度大于1刚爆仓,清零合约账户,清零USDT资
  108. // $data['pc_price'] = $close;
  109. // $data['status'] = 4;
  110. // $data['yk_status'] = 2;
  111. // $data['ylmoney'] = $ks_money = $bond_money_info['money'] + $minfo['usdt'];
  112. // $data['endtime'] = date("Y-m-d H:i:s",time());
  113. // M("leverorder")->where(array('id'=>$id))->save($data);
  114. //
  115. // $ubill['uid'] = $uid;
  116. // $ubill['username'] = $uinfo['username'];
  117. // $ubill['num'] = $ks_money;
  118. // $ubill['coinname'] = "usdt";
  119. // $ubill['type'] = 20;
  120. // $ubill['afternum'] = $minfo['usdt'] - $minfo['usdt'];
  121. // $ubill['addtime'] = date("Y-m-d H:i:s",time());
  122. // $ubill['st'] = 1;
  123. // $ubill['remark'] = L('合约交易爆仓,资产清零');
  124. // $ubillre = M("bill")->add($ubill);
  125. //
  126. // M("user_coin")->where(array('userid'=>$uid))->save(array('usdt'=>0));
  127. // M("levermoney")->where(array('uid'=>$uid))->save(array('money',0));
  128. // echo "=订单ID:".$id.",爆仓=";
  129. // }
  130. }
  131. }elseif($direction == 2){//做空(买涨) 现价小于开仓价格就结算
  132. if($zsprice > 0){ //说明设置了止损价格
  133. if($close <= $zsprice){ // 现价小于止损价格就结算
  134. //收益计算
  135. //例:BTC/USDT永续合约开多仓100张,成交价格为10000 USDT,以11000 USDT价格平仓,
  136. //则:平仓盈亏 = 收益(平仓) =( 11000 – 10000 )* 100 * 0.001 = 100 USDT。
  137. $profit = sprintf("%.2f",(($price - $close ) * 100 * 0.001 * $vo['ggan']));
  138. $tprofit = abs($profit);
  139. if($minfo['usdt'] >= $tprofit){
  140. M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$tprofit);
  141. $ubill['afternum'] = $minfo['usdt'] - $tprofit;
  142. }else{
  143. $tpro_a = $minfo['usdt'];
  144. $tpro_b = $tprofit - $minfo['usdt'];
  145. M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$tpro_a);
  146. $ubill['afternum'] = $minfo['usdt'] - $tpro_a;
  147. $levermoney_info = M("levermoney")->where(array('uid'=>$uid))->find();
  148. if($levermoney_info['money'] >= $tpro_b){
  149. M("levermoney")->where(array('uid'=>$uid))->setDec("money",$tpro_b);
  150. }else{
  151. M("levermoney")->where(array('uid'=>$uid))->save(array('money',0));
  152. }
  153. }
  154. $data['pc_price'] = $close;
  155. $data['status'] = 3;
  156. $data['yk_status'] = 2;
  157. $data['ylmoney'] = $tprofit;
  158. $data['endtime'] = date("Y-m-d H:i:s",time());
  159. $result = M("leverorder")->where(array('id'=>$id))->save($data);
  160. $ubill['uid'] = $uid;
  161. $ubill['username'] = $uinfo['username'];
  162. $ubill['num'] = $tprofit;
  163. $ubill['coinname'] = "usdt";
  164. $ubill['type'] = 20;
  165. $ubill['addtime'] = date("Y-m-d H:i:s",time());
  166. $ubill['st'] = 1;
  167. $ubill['remark'] = L('合约交易止损平仓收益');
  168. $ubillre = M("bill")->add($ubill);
  169. if($result && $ubillre){
  170. echo "=订单ID:".$id.",止损平仓=";
  171. }
  172. }else{//如果价格上涨 直至 爆仓操作
  173. //风险度=(持仓合约账户/合约账户权益)*100%,
  174. //合约账户权益=持仓合约账户+持仓浮动盈亏+当前账户可用金额
  175. //当风险度等于100%时,您的仓位被视为爆仓
  176. //如果现价上涨,开仓价格-现价为负数
  177. $profit_fd = sprintf("%.2f",(($price - $close ) * 100 * 0.001 * $vo['ggan']));
  178. $account_qy = $bond_money_info['money'] + $profit_fd + $minfo['usdt'];//账户权益
  179. $risk = $bond_money_info['money'] / $account_qy;
  180. if($risk >= 1){ //如果风险度大于1则爆仓,清零合约账户,清零USDT资
  181. $data['pc_price'] = $close;
  182. $data['status'] = 4;
  183. $data['yk_status'] = 2;
  184. $data['ylmoney'] = $ks_money = $bond_money_info['money'] + $minfo['usdt'];
  185. $data['endtime'] = date("Y-m-d H:i:s",time());
  186. M("leverorder")->where(array('id'=>$id))->save($data);
  187. $ubill['uid'] = $uid;
  188. $ubill['username'] = $uinfo['username'];
  189. $ubill['num'] = $ks_money;
  190. $ubill['coinname'] = "usdt";
  191. $ubill['type'] = 20;
  192. $ubill['afternum'] = $minfo['usdt'] - $minfo['usdt'];
  193. $ubill['addtime'] = date("Y-m-d H:i:s",time());
  194. $ubill['st'] = 1;
  195. $ubill['remark'] = L('合约交易爆仓,资产清零');
  196. $ubillre = M("bill")->add($ubill);
  197. M("user_coin")->where(array('userid'=>$uid))->save(array('usdt'=>0));
  198. M("levermoney")->where(array('uid'=>$uid))->save(array('money',0));
  199. echo "=订单ID:".$id.",爆仓=";
  200. }
  201. }
  202. }else{//如果价格上涨 直至 爆仓操作
  203. $profit_fd = sprintf("%.2f",(($price - $close ) * 100 * 0.001 * $vo['ggan']));
  204. $account_qy = $bond_money_info['money'] + $profit_fd + $minfo['usdt'];//账户权益
  205. $risk = $bond_money_info['money'] / $account_qy;
  206. if($risk >= 1){ //如果风险度大于1刚爆仓,清零合约账户,清零USDT资
  207. $data['pc_price'] = $close;
  208. $data['status'] = 4;
  209. $data['yk_status'] = 2;
  210. $data['ylmoney'] = $ks_money = $bond_money_info['money'] + $minfo['usdt'];
  211. $data['endtime'] = date("Y-m-d H:i:s",time());
  212. M("leverorder")->where(array('id'=>$id))->save($data);
  213. $ubill['uid'] = $uid;
  214. $ubill['username'] = $uinfo['username'];
  215. $ubill['num'] = $ks_money;
  216. $ubill['coinname'] = "usdt";
  217. $ubill['type'] = 20;
  218. $ubill['afternum'] = $minfo['usdt'] - $minfo['usdt'];
  219. $ubill['addtime'] = date("Y-m-d H:i:s",time());
  220. $ubill['st'] = 1;
  221. $ubill['remark'] = L('合约交易爆仓,资产清零');
  222. $ubillre = M("bill")->add($ubill);
  223. M("user_coin")->where(array('userid'=>$uid))->save(array('usdt'=>0));
  224. M("levermoney")->where(array('uid'=>$uid))->save(array('money',0));
  225. echo "=订单ID:".$id.",爆仓=";
  226. }
  227. }
  228. }
  229. }
  230. }
  231. }
  232. //永续合约委托定单自动建仓
  233. public function AutoCreateOrder(){
  234. $list = M("leverorder")->where(array('status'=>1))->select();
  235. if(!empty($list)){
  236. $sysinfo = M("leversetting")->where(array('id'=>1))->find();
  237. $lever_fee = $sysinfo['lever_fee'];//费率
  238. foreach($list as $key=>$vo){
  239. $id = $vo['id'];
  240. $uid = $vo['uid'];
  241. $uinfo = M("user")->where(array('id'=>$uid))->field("id,username")->find();
  242. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  243. $lowercoin = $vo['coinname'];
  244. if($lowercoin == 'ukbusdt'){
  245. $o_symbol = $vo['symbol'];
  246. $symbol_arr = explode('/',$o_symbol);
  247. $symbol = strtolower($symbol_arr[0])."_".strtolower($symbol_arr[1]);
  248. $mlist = M("market")->where(array('name'=>$symbol))->field("new_price,min_price")->find();
  249. $close = $mlist['new_price'];
  250. }else{
  251. $url = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$lowercoin;
  252. $close = $this->getnewprice($url);
  253. }
  254. //手续费计算(开仓价格 * 开仓数量 * 手续费率) ,开仓时扣除手续费
  255. $wt_price = $vo['wt_price']; //委托价格
  256. $direction = $vo['direction']; //交易方向
  257. if($direction == 1){ //做多(上涨) 当前价小于等于委托价格就开仓 要跌了才开仓
  258. if($close <= $wt_price){
  259. $data['fee'] = $fee = sprintf("%.2f",($close * $vo['num'] * $lever_fee / 100));
  260. if($minfo['usdt'] >= $fee){
  261. $data['price'] = $close;
  262. $data['status'] = 2;
  263. $data['addtime'] = date("Y-m-d H:i:s",time());
  264. $re_a = M("leverorder")->where(array('id'=>$id))->save($data);
  265. $re_b = M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$fee);
  266. $ubill['uid'] = $uid;
  267. $ubill['username'] = $uinfo['username'];
  268. $ubill['num'] = $fee;
  269. $ubill['coinname'] = "usdt";
  270. $ubill['afternum'] = $minfo['usdt'] - $fee;
  271. $ubill['type'] = 19;
  272. $ubill['addtime'] = date("Y-m-d H:i:s",time());
  273. $ubill['st'] = 2;
  274. $ubill['remark'] = L('合约交易开仓手续费');
  275. $re_c = M("bill")->add($ubill);
  276. if($re_a && $re_b && $re_c){
  277. echo "=订单ID:".$id.",开仓成功=";
  278. }
  279. }
  280. }else{
  281. echo "=订单ID:".$id.",做多,价格不合适=";
  282. }
  283. }else if($direction == 2){ //做空(下跌) 当前价大于等于委托价格就开仓 要涨了才开仓
  284. if($close >= $wt_price){
  285. $data['fee'] = $fee = sprintf("%.2f",($close * $vo['num'] * $lever_fee / 100));
  286. if($minfo['usdt'] >= $fee){
  287. $data['price'] = $close;
  288. $data['status'] = 2;
  289. $data['addtime'] = date("Y-m-d H:i:s",time());
  290. $re_a = M("leverorder")->where(array('id'=>$id))->save($data);
  291. $re_b = M("user_coin")->where(array('userid'=>$uid))->setDec('usdt',$fee);
  292. $ubill['uid'] = $uid;
  293. $ubill['username'] = $uinfo['username'];
  294. $ubill['num'] = $fee;
  295. $ubill['coinname'] = "usdt";
  296. $ubill['afternum'] = $minfo['usdt'] - $fee;
  297. $ubill['type'] = 19;
  298. $ubill['addtime'] = date("Y-m-d H:i:s",time());
  299. $ubill['st'] = 2;
  300. $ubill['remark'] = L('合约交易开仓手续费');
  301. $re_c = M("bill")->add($ubill);
  302. if($re_a && $re_b && $re_c){
  303. echo "=订单ID:".$id.",开仓成功=";
  304. }
  305. }
  306. }else{
  307. echo "=订单ID:".$id.",做空,价格不合适=";
  308. }
  309. }
  310. }
  311. }
  312. }
  313. //自动释放冻结的认购币,设置计划任务,每天执行一次
  314. public function releaseissue(){
  315. $nowday = date("Y-m-d",time());
  316. $map['status'] = 1;
  317. $map['endday'] = array('elt',$nowday);
  318. $list = M("issue_log")->where($map)->select();
  319. if(!empty($list)){
  320. foreach($list as $key=>$vo){
  321. $id = $vo['id'];
  322. $uid = $vo['uid'];
  323. $num = $vo['num'];
  324. $cname = trim($vo['coinname']);
  325. $cnamed = trim($vo['coinname'])."d";
  326. //修改记录状态
  327. $result = M("issue_log")->where(array('id'=>$id))->save(array('status'=>2));
  328. if($result){
  329. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  330. //扣除冻结的资产
  331. M("user_coin")->where(array('userid'=>$uid))->setDec($cnamed,$num);
  332. //增加可用资产的数量
  333. M("user_coin")->where(array('userid'=>$uid))->setInc($cname,$num);
  334. //写入日志
  335. $data['uid'] = $uid;
  336. $data['username'] = $vo['account'];
  337. $data['num'] = $num;
  338. $data['coinname'] = $cname;
  339. $data['afternum'] = $minfo[$cname] + $num;
  340. $data['type'] = 18;
  341. $data['addtime'] = date("Y-m-d H:i:s",time());
  342. $data['st'] = 1;
  343. $data['remark'] = L("认购资产释放");
  344. M("bill")->add($data);
  345. echo "==认购记录ID:".$id."释放成功";
  346. }else{
  347. echo "==认购记录ID:".$id."释放失败";
  348. }
  349. }
  350. }else{
  351. echo "==没有可释放认购记录==";
  352. }
  353. }
  354. //委托订单自动交易
  355. //设置成5-10秒执行一次的计划任务
  356. public function autoxjtade(){
  357. $list = M("bborder")->where(array('ordertype'=>1,'status'=>1))->select();
  358. if(!empty($list)){
  359. foreach($list as $k=>$v){
  360. $type = $v['type'];
  361. $uid = $v['uid'];
  362. $id = $v['id'];
  363. $symbol = strtolower($v['coin']).'usdt';
  364. $lowercoin = strtolower($v['coin']);
  365. //限价单价
  366. $xjprice = $v['xjprice'];
  367. $sxfbl = $v['sxfbl'];
  368. if($lowercoin == "ukb"){
  369. $priceinfo = M("market")->where(array('name'=>"ukb_usdt"))->field("new_price")->find();
  370. $newprice = $priceinfo['new_price'];
  371. }else{
  372. //获取当前行情价
  373. $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  374. $newprice = $this->getnewprice($coinapi);
  375. }
  376. //买入,当行情价小于等于限价时则交易
  377. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  378. if($type == 1){
  379. $usdtnum = $v['usdtnum'];
  380. if($newprice <= $xjprice){
  381. //计算能够买到的量
  382. $buy_coinnum = sprintf("%.8f",($usdtnum / $newprice));
  383. //手续费
  384. $fee = $buy_coinnum * $sxfbl / 100;
  385. //实际到账号的金额
  386. $tcoinnum = $buy_coinnum - $fee;
  387. //更新订单
  388. $data['coinnum'] = $tcoinnum;
  389. $data['price'] = $newprice;
  390. $data['tradetime'] = date("Y-m-d H:i:s",time());
  391. $data['fee'] = $fee;
  392. $data['status'] = 2;
  393. $savere = M("bborder")->where(array('id'=>$id))->save($data);
  394. //增加购买数量并写入日志
  395. $incre = M("user_coin")->where(array('userid'=>$uid))->setInc($lowercoin,$tcoinnum);
  396. $cincbill['uid'] = $uid;
  397. $cincbill['username'] = $v['account'];
  398. $cincbill['num'] = $tcoinnum;
  399. $cincbill['coinname'] = $lowercoin;
  400. $cincbill['afternum'] = $minfo[$lowercoin] + $tcoinnum;
  401. $cincbill['type'] = 10;
  402. $cincbill['addtime'] = date("Y-m-d H:i:s",time());
  403. $cincbill['st'] = 1;
  404. $cincbill['remark'] = L('币币交易限价购买委托成交');
  405. $cincre = M("bill")->add($cincbill);
  406. //扣除冻结的USDT并写入日志
  407. $decre = M("user_coin")->where(array('userid'=>$uid))->setDec("usdtd",$usdtnum);
  408. $uincbill['uid'] = $uid;
  409. $uincbill['username'] = $v['account'];
  410. $uincbill['num'] = $usdtnum;
  411. $uincbill['coinname'] = "usdt";
  412. $uincbill['afternum'] = $minfo['usdt'] - $usdtnum;
  413. $uincbill['type'] = 9;
  414. $uincbill['addtime'] = date("Y-m-d H:i:s",time());
  415. $uincbill['st'] = 2;
  416. $uincbill['remark'] = L('币币交易限价购买委托成交');
  417. $uincre = M("bill")->add($uincbill);
  418. if($savere && $cincre && $uincre){
  419. $notice['uid'] = $uid;
  420. $notice['account'] = $v['account'];
  421. $notice['title'] = L('币币交易限价委托交易');
  422. $notice['content'] = L('币币交易限价购买委托订单购买成功');
  423. $notice['addtime'] = date("Y-m-d H:i:s",time());
  424. $notice['status'] = 1;
  425. M("notice")->add($notice);
  426. echo "==委托订单ID:".$id.",购买成功==";
  427. }
  428. }else{
  429. echo "==委托订单ID:".$id.",没有达到限价购买价格==";
  430. }
  431. //卖出,当行情价大于等于限价时则交易
  432. }elseif($type == 2){
  433. $coinnum = $v['coinnum'];
  434. if($newprice >= $xjprice){
  435. //求出卖出所得的USDT量
  436. $allusdt = sprintf("%.8f",($coinnum * $newprice));
  437. //求出手续费
  438. $fee = $allusdt * $sxfbl / 100;
  439. //求出实际到账USDT量
  440. $tusdtnum = $allusdt - $fee;
  441. //更新订单
  442. $data['usdtnum'] = $tusdtnum;
  443. $data['price'] = $newprice;
  444. $data['tradetime'] = date("Y-m-d H:i:s",time());
  445. $data['fee'] = $fee;
  446. $data['status'] = 2;
  447. $savere = M("bborder")->where(array('id'=>$id))->save($data);
  448. //增加卖出所得的USDT量并写入日志
  449. $incre = M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$tusdtnum);
  450. $uincbill['uid'] = $uid;
  451. $uincbill['username'] = $v['account'];
  452. $uincbill['num'] = $tusdtnum;
  453. $uincbill['coinname'] = 'usdt';
  454. $uincbill['afternum'] = $minfo['usdt'] + $tusdtnum;
  455. $uincbill['type'] = 9;
  456. $uincbill['addtime'] = date("Y-m-d H:i:s",time());
  457. $uincbill['st'] = 1;
  458. $uincbill['remark'] = L('币币交易限价出售委托成交');
  459. $uincre = M("bill")->add($uincbill);
  460. //扣除冻结的卖出币量并写入日志
  461. $decre = M("user_coin")->where(array('userid'=>$uid))->setDec($lowercoin."d",$coinnum);
  462. $cincbill['uid'] = $uid;
  463. $cincbill['username'] = $v['account'];
  464. $cincbill['num'] = $coinnum;
  465. $cincbill['coinname'] = $lowercoin;
  466. $cincbill['afternum'] = $minfo[$lowercoin] - $coinnum;
  467. $cincbill['type'] = 10;
  468. $cincbill['addtime'] = date("Y-m-d H:i:s",time());
  469. $cincbill['st'] = 2;
  470. $cincbill['remark'] = L('币币交易限价出售委托成交');
  471. $cincre = M("bill")->add($cincbill);
  472. if($savere && $cincre && $uincre){
  473. $notice['uid'] = $uid;
  474. $notice['account'] = $v['account'];
  475. $notice['title'] = L('币币交易限价委托交易');
  476. $notice['content'] = L('币币交易限价购买委托订单出售成功');
  477. $notice['addtime'] = date("Y-m-d H:i:s",time());
  478. $notice['status'] = 1;
  479. M("notice")->add($notice);
  480. echo "==委托订单ID:".$id.",出售成功==";
  481. }
  482. }else{
  483. echo "==委托订单ID:".$id.",没有达到限价出售价格==";
  484. }
  485. }
  486. }
  487. }else{
  488. echo "没有限价委托可交易!";
  489. }
  490. }
  491. //释放冻结的矿机收益币
  492. //设置一天执行一次的计划任务
  493. public function releasedjprofit(){
  494. $nowday = date("Y-m-d",time());
  495. $where['thawday'] = array('elt',$nowday);
  496. $where['status'] = array('eq',1);
  497. $list = M("djprofit")->where($where)->select();
  498. if(!empty($list)){
  499. foreach($list as $key=>$vo){
  500. $id = $vo['id'];
  501. $uid = $vo['uid'];
  502. $username = $vo['username'];
  503. $num = $vo['num'];
  504. $coinname = trim($vo['coin']);
  505. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  506. //修改冻结状态
  507. M("djprofit")->where(array('id'=>$id))->save(array('status'=>2));
  508. //添加财务日志
  509. $billdata['uid'] = $uid;
  510. $billdata['username'] = $username;
  511. $billdata['num'] = $num;
  512. $billdata['coinname'] = $coinname;
  513. $billdata['afternum'] = $minfo[$coinname] + $num;
  514. $billdata['type'] = 8;
  515. $billdata['addtime'] = date("Y-m-d H:i:s",time());
  516. $billdata['st'] = 1;
  517. $billdata['remark'] = L('释放冻结收益');
  518. M("bill")->add($billdata);
  519. //增加会员资产,减少冻结额度
  520. $coinname_d = $coinname."d";
  521. M("user_coin")->where(array('userid'=>$uid))->setDec($coinname_d,$num);
  522. M("user_coin")->where(array('userid'=>$uid))->setInc($coinname,$num);
  523. $notice['uid'] = $uid;
  524. $notice['account'] = $username;
  525. $notice['title'] = L('释放冻结收益');
  526. $notice['content'] = L('您冻结的矿机收益释放成功,可以交易');
  527. $notice['addtime'] = date("Y-m-d H:i:s",time());
  528. $notice['status'] = 1;
  529. M("notice")->add($notice);
  530. echo "==ID:".$id."释放".$num.$coinname."成功==";
  531. echo "<br />";
  532. }
  533. }else{
  534. echo "====没有可释放的冻结记录====";
  535. }
  536. }
  537. //共享矿机自动结算收益,设置一天执行一次的计划任务
  538. public function authsharesjsy(){
  539. $kjlist = M("kjorder")->where(array('status'=>1,'type'=>2))->select();
  540. if(!empty($kjlist)){
  541. foreach($kjlist as $key=>$vo){
  542. $id = $vo['id'];
  543. $uid = $vo['uid'];
  544. $username = $vo['username'];
  545. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  546. $kid = $vo['kid'];
  547. $nowdate = date("Y-m-d",time());
  548. $profitinfo = M("kjprofit")->where(array('uid'=>$uid,'kid'=>$id,'day'=>$nowdate))->find();
  549. if(empty($profitinfo)){
  550. $sharbltxt = $vo['sharbltxt'];
  551. if($sharbltxt <= 0){
  552. echo "===共享矿机ID".$id."共享码有误===";
  553. }else{
  554. $sharekj = M("kjorder")->where(array('sharbltxt'=>$sharbltxt))->count();
  555. if($sharekj >= 2){
  556. //查找矿机收益的类型以及查找收益是否需要冻结及冻结天数
  557. $outtype = $vo['outtype'];
  558. if($outtype == 1){//按产值需要查找产出币种的最新行情
  559. $coinname = strtolower(trim($vo['outcoin']));
  560. $outnum = $vo['outusdt'];
  561. $symbol = $coinname.'usdt';
  562. $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  563. $newprice = $this->getnewprice($coinapi);
  564. $tcoinnum = sprintf("%.6f",($outnum / $newprice)); //实际产生的币量,保留6位小数
  565. }elseif($outtype == 2){
  566. $coinname = strtolower(trim($vo['outcoin']));
  567. $tcoinnum = $vo['outnum'];
  568. }
  569. $djout = $vo['djout'];//1冻结2不冻结
  570. $djday = $vo['djnum'];//冻结天数
  571. //写入矿机收益日志
  572. $kjprofit_d['uid'] = $uid;
  573. $kjprofit_d['username'] = $username;
  574. $kjprofit_d['kid'] = $id;
  575. $kjprofit_d['ktitle'] = $vo['kjtitle'];
  576. $kjprofit_d['num'] = $tcoinnum;
  577. $kjprofit_d['coin'] = $coinname;
  578. $kjprofit_d['addtime'] = date("Y-m-d H:i:s",time());
  579. $kjprofit_d['day'] = date("Y-m-d",time());
  580. M("kjprofit")->add($kjprofit_d);
  581. if($djout == 2){
  582. $coin_d = $coinname."d";
  583. M("user_coin")->where(array('userid'=>$uid))->setInc($coin_d,$tcoinnum);
  584. $djprofit_d['uid'] = $uid;
  585. $djprofit_d['username'] = $username;
  586. $djprofit_d['num'] = $tcoinnum;
  587. $djprofit_d['coin'] = $coinname;
  588. $djprofit_d['status'] = 1;
  589. $djprofit_d['addtime'] = date("Y-m-d H:i:s",time());
  590. $djprofit_d['addday'] = date("Y-m-d",time());
  591. $djprofit_d['thawtime'] = date("Y-m-d H:i:s",(time() + 86400 * $djday));
  592. $djprofit_d['thawday'] = date("Y-m-d",(time() + 86400 * $djday));
  593. $djprofit_d['remark'] = L('冻结矿机释放收益');
  594. M("djprofit")->add($djprofit_d);
  595. //写资金日志
  596. $billdata['uid'] = $uid;
  597. $billdata['username'] = $username;
  598. $billdata['num'] = $tcoinnum;
  599. $billdata['coinname'] = $coinname;
  600. $billdata['afternum'] = $minfo[$coin_d] + $tcoinnum;
  601. $billdata['type'] = 7;
  602. $billdata['addtime'] = date("Y-m-d H:i:s",time());
  603. $billdata['st'] = 1;
  604. $billdata['remark'] = L('矿机收益释放冻结');
  605. M("bill")->add($billdata);
  606. $notice['uid'] = $uid;
  607. $notice['account'] = $username;
  608. $notice['title'] = L('矿机收益');
  609. $notice['content'] = L('今日矿机收益已成功到账,请注册查收');
  610. $notice['addtime'] = date("Y-m-d H:i:s",time());
  611. $notice['status'] = 1;
  612. M("notice")->add($notice);
  613. }elseif($djout == 1){
  614. M("user_coin")->where(array('userid'=>$uid))->setInc($coinname,$tcoinnum);
  615. //写资金日志
  616. $billdata['uid'] = $uid;
  617. $billdata['username'] = $username;
  618. $billdata['num'] = $tcoinnum;
  619. $billdata['coinname'] = $coinname;
  620. $billdata['afternum'] = $minfo[$coinname] + $tcoinnum;
  621. $billdata['type'] = 8;
  622. $billdata['addtime'] = date("Y-m-d H:i:s",time());
  623. $billdata['st'] = 1;
  624. $billdata['remark'] = L('矿机收益释放');
  625. M("bill")->add($billdata);
  626. }
  627. //修改矿机收益次数
  628. M("kjorder")->where(array('id'=>$id))->setDec("synum",1);
  629. $reinfo = M("kjorder")->where(array('id'=>$id))->find();
  630. if($reinfo['synum'] < 1){
  631. M("kjorder")->where(array('id'=>$id))->save(array('status'=>3));
  632. }
  633. echo "==共享矿机ID:".$kid."收益成功==";
  634. echo "<br />";
  635. }else{
  636. echo "===共享矿机ID".$id."另一部分没有购买,不能收益===";
  637. }
  638. }
  639. }else{
  640. echo "==矿机ID:".$kid."不能重复收益==";
  641. echo "<br />";
  642. }
  643. }
  644. }
  645. }
  646. //独资矿机自动收益,每天执行一次
  647. //设置一天执行一次的计划任务
  648. public function autokjsy(){
  649. $kjlist = M("kjorder")->where(array('status'=>1,'type'=>1))->select();
  650. if(!empty($kjlist)){
  651. foreach($kjlist as $key=>$vo){
  652. $id = $vo['id'];
  653. $uid = $vo['uid'];
  654. $username = $vo['username'];
  655. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  656. $kid = $vo['kid'];
  657. $nowdate = date("Y-m-d",time());
  658. $profitinfo = M("kjprofit")->where(array('uid'=>$uid,'kid'=>$id,'day'=>$nowdate))->find();
  659. if(empty($profitinfo)){
  660. //查找矿机收益的类型以及查找收益是否需要冻结及冻结天数
  661. $outtype = $vo['outtype'];
  662. if($outtype == 1){//按产值需要查找产出币种的最新行情
  663. $coinname = strtolower(trim($vo['outcoin']));
  664. $outnum = $vo['outusdt'];
  665. $symbol = $coinname.'usdt';
  666. $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  667. $newprice = $this->getnewprice($coinapi);
  668. $tcoinnum = sprintf("%.6f",($outnum / $newprice)); //实际产生的币量,保留6位小数
  669. }elseif($outtype == 2){
  670. $coinname = strtolower(trim($vo['outcoin']));
  671. $tcoinnum = $vo['outnum'];
  672. }
  673. $djout = $vo['djout'];//1冻结2不冻结
  674. $djday = $vo['djnum'];//冻结天数
  675. //写入矿机收益日志
  676. $kjprofit_d['uid'] = $uid;
  677. $kjprofit_d['username'] = $username;
  678. $kjprofit_d['kid'] = $id;
  679. $kjprofit_d['ktitle'] = $vo['kjtitle'];
  680. $kjprofit_d['num'] = $tcoinnum;
  681. $kjprofit_d['coin'] = $coinname;
  682. $kjprofit_d['addtime'] = date("Y-m-d H:i:s",time());
  683. $kjprofit_d['day'] = date("Y-m-d",time());
  684. M("kjprofit")->add($kjprofit_d);
  685. if($djout == 2){
  686. $coin_d = $coinname."d";
  687. M("user_coin")->where(array('userid'=>$uid))->setInc($coin_d,$tcoinnum);
  688. $djprofit_d['uid'] = $uid;
  689. $djprofit_d['username'] = $username;
  690. $djprofit_d['num'] = $tcoinnum;
  691. $djprofit_d['coin'] = $coinname;
  692. $djprofit_d['status'] = 1;
  693. $djprofit_d['addtime'] = date("Y-m-d H:i:s",time());
  694. $djprofit_d['addday'] = date("Y-m-d",time());
  695. $djprofit_d['thawtime'] = date("Y-m-d H:i:s",(time() + 86400 * $djday));
  696. $djprofit_d['thawday'] = date("Y-m-d",(time() + 86400 * $djday));
  697. $djprofit_d['remark'] = L('冻结矿机释放收益');
  698. M("djprofit")->add($djprofit_d);
  699. //写资金日志
  700. $billdata['uid'] = $uid;
  701. $billdata['username'] = $username;
  702. $billdata['num'] = $tcoinnum;
  703. $billdata['coinname'] = $coinname;
  704. $billdata['afternum'] = $minfo[$coin_d] + $tcoinnum;
  705. $billdata['type'] = 7;
  706. $billdata['addtime'] = date("Y-m-d H:i:s",time());
  707. $billdata['st'] = 1;
  708. $billdata['remark'] = L('矿机收益释放冻结');
  709. M("bill")->add($billdata);
  710. $notice['uid'] = $uid;
  711. $notice['account'] = $username;
  712. $notice['title'] = L('矿机收益');
  713. $notice['content'] = L('今日矿机收益已成功到账,请注册查收');
  714. $notice['addtime'] = date("Y-m-d H:i:s",time());
  715. $notice['status'] = 1;
  716. M("notice")->add($notice);
  717. }elseif($djout == 1){
  718. M("user_coin")->where(array('userid'=>$uid))->setInc($coinname,$tcoinnum);
  719. //写资金日志
  720. $billdata['uid'] = $uid;
  721. $billdata['username'] = $username;
  722. $billdata['num'] = $tcoinnum;
  723. $billdata['coinname'] = $coinname;
  724. $billdata['afternum'] = $minfo[$coinname] + $tcoinnum;
  725. $billdata['type'] = 8;
  726. $billdata['addtime'] = date("Y-m-d H:i:s",time());
  727. $billdata['st'] = 1;
  728. $billdata['remark'] = L('矿机收益释放');
  729. M("bill")->add($billdata);
  730. }
  731. //修改矿机收益次数
  732. M("kjorder")->where(array('id'=>$id))->setDec("synum",1);
  733. $reinfo = M("kjorder")->where(array('id'=>$id))->find();
  734. if($reinfo['synum'] < 1){
  735. M("kjorder")->where(array('id'=>$id))->save(array('status'=>3));
  736. }
  737. echo "==矿机ID:".$kid."收益成功==";
  738. echo "<br />";
  739. }else{
  740. echo "==矿机ID:".$kid."不能重复收益==";
  741. echo "<br />";
  742. }
  743. }
  744. }else{
  745. echo "++||没有正常运行的矿机||++";
  746. }
  747. }
  748. //休验订单自动按风控比例设置订单的盈亏比例
  749. //设置成5-10秒执行一次的计划任务
  750. public function setwl_ty(){
  751. $map['status'] = 1;
  752. $map['kongyk'] = 0;
  753. $orderobj = M("tyhyorder");
  754. $count = $orderobj->where($map)->count();
  755. $setting = M("hysetting")->where(array('id'=>1))->field("hy_fkgl")->find();
  756. if($setting['hy_fkgl'] > 0){
  757. $ylcount = intval($count * $setting['hy_fkgl'] / 100);
  758. $kscount = $count - $ylcount;
  759. if($ylcount > 0){
  760. $yllist = $orderobj->where($map)->order("num asc")->limit($ylcount)->select();
  761. if(!empty($yllist)){
  762. foreach($yllist as $k=>$v){
  763. $yid = $v['id'];
  764. $orderobj->where(array('id'=>$yid))->save(array('kongyk'=>1));
  765. echo "订单ID:".$yid."设为盈利==";
  766. }
  767. }
  768. }
  769. if($kscount > 0){
  770. $kslist = $orderobj->where($map)->order("num asc")->limit($kscount)->select();
  771. if(!empty($kslist)){
  772. foreach($kslist as $k=>$v){
  773. $kid = $v['id'];
  774. $orderobj->where(array('id'=>$kid))->save(array('kongyk'=>2));
  775. echo "订单ID:".$kid."设为亏损==";
  776. }
  777. }
  778. }
  779. }
  780. echo "操作成功";
  781. }
  782. //自动按风控比例设置订单的盈亏比例
  783. //设置成5-10秒执行一次的计划任务
  784. public function setwl(){
  785. $map['status'] = 1;
  786. $map['kongyk'] = 0;
  787. $orderobj = M("hyorder");
  788. $count = $orderobj->where($map)->count();
  789. $setting = M("hysetting")->where(array('id'=>1))->field("hy_fkgl")->find();
  790. if($setting['hy_fkgl'] > 0){
  791. $ylcount = intval($count * $setting['hy_fkgl'] / 100);
  792. $kscount = $count - $ylcount;
  793. if($ylcount > 0){
  794. $yllist = $orderobj->where($map)->order("num asc")->limit($ylcount)->select();
  795. if(!empty($yllist)){
  796. foreach($yllist as $k=>$v){
  797. $yid = $v['id'];
  798. $orderobj->where(array('id'=>$yid))->save(array('kongyk'=>1));
  799. echo "订单ID:".$yid."设为盈利==";
  800. }
  801. }
  802. }
  803. if($kscount > 0){
  804. $kslist = $orderobj->where($map)->order("num asc")->limit($kscount)->select();
  805. if(!empty($kslist)){
  806. foreach($kslist as $k=>$v){
  807. $kid = $v['id'];
  808. $orderobj->where(array('id'=>$kid))->save(array('kongyk'=>2));
  809. echo "订单ID:".$kid."设为亏损==";
  810. }
  811. }
  812. }
  813. }
  814. echo "操作成功";
  815. }
  816. //自动结算合约订单
  817. public function hycarryout_ty(){
  818. $nowtime = time();
  819. $map['status'] = 1;
  820. $map['intselltime'] = array('elt',$nowtime);
  821. $orderobj = M("tyhyorder");
  822. $list = $orderobj->where($map)->select();
  823. if(!empty($list)){
  824. foreach($list as $key=>$vo){
  825. $coinname = $vo['coinname'];
  826. $coinarr = explode("/",$coinname);
  827. $symbol = strtolower($coinarr[0]).strtolower($coinarr[1]);
  828. $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  829. $newprice = $this->getnewprice($coinapi);
  830. $randnum = "0.".rand(1000,9999);
  831. $buyprice = $vo['buyprice'];
  832. $otype = $vo['hyzd']; //合约方向
  833. $dkong = $vo['kongyk']; //单控设置
  834. $uid = $vo['uid'];//会员ID
  835. $id = $vo['id'];//记录ID
  836. $num = $vo['num'];
  837. $hybl = $vo['hybl']; //收益比例
  838. $ylnum = $num * ($hybl / 100); //盈利金额
  839. $money = $num + $ylnum;//本金+盈利金额
  840. //$dkong分三种情况 1、0表示随行情,1表示盈利 2 表示亏损
  841. //盈利时增加$money,,亏损时亏本金
  842. if($dkong == 0){
  843. //买涨
  844. if($otype == 1){ //买跌
  845. if($newprice > $buyprice){ //盈利
  846. //增加资产
  847. //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  848. M("user")->where(array('id'=>$uid))->setInc("money",$money);
  849. //修改订单状态
  850. $sd['status'] = 2;
  851. $sd['is_win'] = 1;
  852. $sd['sellprice'] = $newprice;
  853. $sd['ploss'] = $ylnum;
  854. $orderobj->where(array('id'=>$id))->save($sd);
  855. //写财务日志
  856. //$this->addlog($uid,$vo['username'],$money);
  857. }else{//亏损
  858. //修改订单状态
  859. $sd['status'] = 2;
  860. $sd['is_win'] = 2;
  861. $sd['sellprice'] = $newprice;
  862. $sd['ploss'] = $num;
  863. $orderobj->where(array('id'=>$id))->save($sd);
  864. }
  865. }elseif($otype == 2){ //买跌
  866. if($newprice < $buyprice){ //盈利
  867. //增加资产
  868. //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  869. M("user")->where(array('id'=>$uid))->setInc("money",$money);
  870. //修改订单状态
  871. $sd['status'] = 2;
  872. $sd['is_win'] = 1;
  873. $sd['sellprice'] = $newprice;
  874. $sd['ploss'] = $ylnum;
  875. $orderobj->where(array('id'=>$id))->save($sd);
  876. //写财务日志
  877. //$this->addlog($uid,$vo['username'],$money);
  878. }else{//亏损
  879. //修改订单状态
  880. $sd['status'] = 2;
  881. $sd['is_win'] = 2;
  882. $sd['sellprice'] = $newprice;
  883. $sd['ploss'] = $num;
  884. $orderobj->where(array('id'=>$id))->save($sd);
  885. }
  886. }
  887. }elseif($dkong == 1){//单控盈利
  888. if($otype == 1){//买涨
  889. if($newprice > $buyprice){
  890. $sellprice = $newprice;
  891. }elseif($newprice == $buyprice){
  892. $sellprice = $newprice + $randnum;
  893. }elseif($newprice < $buyprice){
  894. $sellprice = $buyprice + $randnum;
  895. }
  896. //增加资产
  897. //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  898. M("user")->where(array('id'=>$uid))->setInc("money",$money);
  899. //修改订单状态
  900. $sd['status'] = 2;
  901. $sd['is_win'] = 1;
  902. $sd['sellprice'] = $sellprice;
  903. $sd['ploss'] = $ylnum;
  904. $orderobj->where(array('id'=>$id))->save($sd);
  905. //写财务日志
  906. //$this->addlog($uid,$vo['username'],$money);
  907. }elseif($otype == 2){//买跌
  908. if($newprice > $buyprice){
  909. $sellprice = $buyprice - $randnum;
  910. }elseif($newprice == $buyprice){
  911. $sellprice = $buyprice - $randnum;
  912. }elseif($newprice < $buyprice){
  913. $sellprice = $newprice;
  914. }
  915. //增加资产
  916. //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  917. M("user")->where(array('id'=>$uid))->setInc("money",$money);
  918. //修改订单状态
  919. $sd['status'] = 2;
  920. $sd['is_win'] = 1;
  921. $sd['sellprice'] = $sellprice;
  922. $sd['ploss'] = $ylnum;
  923. $orderobj->where(array('id'=>$id))->save($sd);
  924. //写财务日志
  925. //$this->addlog($uid,$vo['username'],$money);
  926. }
  927. }elseif($dkong == 2){
  928. if($otype == 1){//买涨
  929. //买涨,指定亏损,结算价格要低于买入价格
  930. if($newprice > $buyprice){
  931. $sellprice = $buyprice - $randnum;
  932. }elseif($newprice == $buyprice){
  933. $sellprice = $buyprice - $randnum;
  934. }elseif($newprice < $buyprice){
  935. $sellprice = $newprice;
  936. }
  937. //修改订单状态
  938. $sd['status'] = 2;
  939. $sd['is_win'] = 2;
  940. $sd['sellprice'] = $sellprice;
  941. $sd['ploss'] = $num;
  942. $orderobj->where(array('id'=>$id))->save($sd);
  943. }elseif($otype == 2){//买跌
  944. if($newprice > $buyprice){
  945. $sellprice = $newprice;
  946. }elseif($newprice == $buyprice){
  947. $sellprice = $buyprice + $randnum;
  948. }elseif($newprice < $buyprice){
  949. $sellprice = $buyprice + $randnum;
  950. }
  951. //修改订单状态
  952. $sd['status'] = 2;
  953. $sd['is_win'] = 2;
  954. $sd['sellprice'] = $sellprice;
  955. $sd['ploss'] = $num;
  956. $orderobj->where(array('id'=>$id))->save($sd);
  957. }
  958. }
  959. echo "==订单ID:".$id."出售成功==";
  960. }
  961. }else{
  962. echo "没有订单可以结算!";
  963. }
  964. }
  965. //自动结算体验合约订单
  966. public function hycarryout_ty_old(){
  967. $nowtime = time();
  968. $map['status'] = 1;
  969. $map['intselltime'] = array('elt',$nowtime);
  970. $orderobj = M("tyhyorder");
  971. $list = $orderobj->where($map)->select();
  972. //获取合约参数
  973. $setting = M("hysetting")->where(array('id'=>1))->field("hy_ksid,hy_ylid,hy_fkgl")->find();
  974. //指定盈利ID组
  975. $winarr = explode(',',$setting['hy_ylid']);
  976. //指定亏损ID组
  977. $lossarr = explode(',',$setting['hy_ksid']);
  978. //风控比例组
  979. $fkarr = explode(',',$setting['hy_fkgl']);
  980. if(!empty($list)){
  981. foreach($list as $key=>$vo){
  982. $coinname = $vo['coinname'];
  983. $coinarr = explode("/",$coinname);
  984. $symbol = strtolower($coinarr[0]).strtolower($coinarr[1]);
  985. $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  986. $newprice = $this->getnewprice($coinapi);
  987. $randnum = "0.".rand(1000,9999);
  988. $buyprice = $vo['buyprice'];
  989. $otype = $vo['hyzd']; //合约方向
  990. $dkong = $vo['kongyk']; //单控设置
  991. $uid = $vo['uid'];//会员ID
  992. $id = $vo['id'];//记录ID
  993. $num = $vo['num'];
  994. $hybl = $vo['hybl'];
  995. $ylnum = $num * ($hybl / 100);
  996. $money = $num + $ylnum;//盈利金额
  997. //买涨
  998. if($otype == 1){
  999. if(in_array($uid,$winarr)){//如果有指定盈利ID,则按盈利结算
  1000. if($newprice > $buyprice){
  1001. $sellprice = $newprice;
  1002. }elseif($newprice == $buyprice){
  1003. $sellprice = $newprice + $randnum;
  1004. }elseif($newprice < $buyprice){
  1005. $sellprice = $buyprice + $randnum;
  1006. }
  1007. //增加资产
  1008. //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1009. M("user")->where(array('id'=>$uid))->setInc("money",$money);
  1010. //修改订单状态
  1011. $sd['status'] = 2;
  1012. $sd['is_win'] = 1;
  1013. $sd['sellprice'] = $sellprice;
  1014. $sd['ploss'] = $ylnum;
  1015. $orderobj->where(array('id'=>$id))->save($sd);
  1016. //写财务日志
  1017. //$this->addlog($uid,$vo['username'],$money);
  1018. }elseif(in_array($uid,$lossarr)){//如果有指定亏损ID,则按亏损结算
  1019. //买涨,指定亏损,结算价格要低于买入价格
  1020. if($newprice > $buyprice){
  1021. $sellprice = $buyprice - $randnum;
  1022. }elseif($newprice == $buyprice){
  1023. $sellprice = $buyprice - $randnum;
  1024. }elseif($newprice < $buyprice){
  1025. $sellprice = $newprice;
  1026. }
  1027. //修改订单状态
  1028. $sd['status'] = 2;
  1029. $sd['is_win'] = 2;
  1030. $sd['sellprice'] = $sellprice;
  1031. $sd['ploss'] = $num;
  1032. $orderobj->where(array('id'=>$id))->save($sd);
  1033. }else{//如果未指定盈利和亏损,则按单控的计算
  1034. if($dkong == 1){//盈利
  1035. if($newprice > $buyprice){
  1036. $sellprice = $newprice;
  1037. }elseif($newprice == $buyprice){
  1038. $sellprice = $newprice + $randnum;
  1039. }elseif($newprice < $buyprice){
  1040. $sellprice = $buyprice + $randnum;
  1041. }
  1042. // echo '买入价格:'.$buyprice;
  1043. // echo "<br />";
  1044. // echo '结算价格:'.$sellprice;die;
  1045. //增加资产
  1046. //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1047. M("user")->where(array('id'=>$uid))->setInc("money",$money);
  1048. //修改订单状态
  1049. $sd['status'] = 2;
  1050. $sd['is_win'] = 1;
  1051. $sd['sellprice'] = $sellprice;
  1052. $sd['ploss'] = $ylnum;
  1053. $orderobj->where(array('id'=>$id))->save($sd);
  1054. //写财务日志
  1055. //$this->addlog($uid,$vo['username'],$money);
  1056. }elseif($dkong == 2){//亏损
  1057. if($newprice > $buyprice){
  1058. $sellprice = $buyprice - $randnum;
  1059. }elseif($newprice == $buyprice){
  1060. $sellprice = $buyprice - $randnum;
  1061. }elseif($newprice < $buyprice){
  1062. $sellprice = $newprice;
  1063. }
  1064. // echo '买入价格:'.$buyprice;
  1065. // echo "<br />";
  1066. // echo '结算价格:'.$sellprice;die;
  1067. //修改订单状态
  1068. $sd['status'] = 2;
  1069. $sd['is_win'] = 2;
  1070. $sd['sellprice'] = $sellprice;
  1071. $sd['ploss'] = $num;
  1072. $orderobj->where(array('id'=>$id))->save($sd);
  1073. }
  1074. }
  1075. //买跌
  1076. }elseif($otype == 2){
  1077. if(in_array($uid,$winarr)){//如果有指定盈利ID,则按盈利结算
  1078. if($newprice > $buyprice){
  1079. $sellprice = $buyprice - $randnum;
  1080. }elseif($newprice == $buyprice){
  1081. $sellprice = $buyprice - $randnum;
  1082. }elseif($newprice < $buyprice){
  1083. $sellprice = $newprice;
  1084. }
  1085. //增加资产
  1086. //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1087. M("user")->where(array('id'=>$uid))->setInc("money",$money);
  1088. //修改订单状态
  1089. $sd['status'] = 2;
  1090. $sd['is_win'] = 1;
  1091. $sd['sellprice'] = $sellprice;
  1092. $sd['ploss'] = $ylnum;
  1093. $orderobj->where(array('id'=>$id))->save($sd);
  1094. //写财务日志
  1095. //$this->addlog($uid,$vo['username'],$money);
  1096. }elseif(in_array($uid,$lossarr)){//如果有指定亏损ID,则按亏损结算
  1097. if($newprice > $buyprice){
  1098. $sellprice = $newprice;
  1099. }elseif($newprice == $buyprice){
  1100. $sellprice = $buyprice + $randnum;
  1101. }elseif($newprice < $buyprice){
  1102. $sellprice = $buyprice + $randnum;
  1103. }
  1104. //修改订单状态
  1105. $sd['status'] = 2;
  1106. $sd['is_win'] = 2;
  1107. $sd['sellprice'] = $sellprice;
  1108. $sd['ploss'] = $num;
  1109. $orderobj->where(array('id'=>$id))->save($sd);
  1110. }else{//如果未指定盈利和亏损,则按单控的计算
  1111. if($dkong == 1){//盈利
  1112. if($newprice > $buyprice){
  1113. $sellprice = $buyprice - $randnum;
  1114. }elseif($newprice == $buyprice){
  1115. $sellprice = $buyprice - $randnum;
  1116. }elseif($newprice < $buyprice){
  1117. $sellprice = $newprice;
  1118. }
  1119. //增加资产
  1120. //M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1121. M("user")->where(array('id'=>$uid))->setInc("money",$money);
  1122. //修改订单状态
  1123. $sd['status'] = 2;
  1124. $sd['is_win'] = 1;
  1125. $sd['sellprice'] = $sellprice;
  1126. $sd['ploss'] = $ylnum;
  1127. $orderobj->where(array('id'=>$id))->save($sd);
  1128. //写财务日志
  1129. //$this->addlog($uid,$vo['username'],$money);
  1130. }elseif($dkong == 2){//亏损
  1131. if($newprice > $buyprice){
  1132. $sellprice = $newprice;
  1133. }elseif($newprice == $buyprice){
  1134. $sellprice = $buyprice + $randnum;
  1135. }elseif($newprice < $buyprice){
  1136. $sellprice = $buyprice + $randnum;
  1137. }
  1138. //修改订单状态
  1139. $sd['status'] = 2;
  1140. $sd['is_win'] = 2;
  1141. $sd['sellprice'] = $sellprice;
  1142. $sd['ploss'] = $num;
  1143. $orderobj->where(array('id'=>$id))->save($sd);
  1144. }
  1145. }
  1146. }
  1147. echo "==订单ID:".$id."出售成功==";
  1148. }
  1149. }else{
  1150. echo "没有订单可以结算!";
  1151. }
  1152. }
  1153. //自动结算合约订单
  1154. public function hycarryout(){
  1155. $nowtime = time();
  1156. $map['status'] = 1;
  1157. $map['intselltime'] = array('elt',$nowtime);
  1158. $orderobj = M("hyorder");
  1159. $list = $orderobj->where($map)->select();
  1160. if(!empty($list)){
  1161. foreach($list as $key=>$vo){
  1162. $coinname = $vo['coinname'];
  1163. $coinarr = explode("/",$coinname);
  1164. $symbol = strtolower($coinarr[0]).strtolower($coinarr[1]);
  1165. $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  1166. $newprice = $this->getnewprice($coinapi);
  1167. $randnum = "0.".rand(1000,9999);
  1168. $buyprice = $vo['buyprice'];
  1169. $otype = $vo['hyzd']; //合约方向
  1170. $dkong = $vo['kongyk']; //单控设置
  1171. $uid = $vo['uid'];//会员ID
  1172. $id = $vo['id'];//记录ID
  1173. $num = $vo['num'];
  1174. $hybl = $vo['hybl']; //收益比例
  1175. $ylnum = $num * ($hybl / 100); //盈利金额
  1176. $money = $num + $ylnum;//本金+盈利金额
  1177. //$dkong分三种情况 1、0表示随行情,1表示盈利 2 表示亏损
  1178. //盈利时增加$money,,亏损时亏本金
  1179. if($dkong == 0){
  1180. //买涨
  1181. if($otype == 1){ //买跌
  1182. if($newprice > $buyprice){ //盈利
  1183. //增加资产
  1184. M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1185. //修改订单状态
  1186. $sd['status'] = 2;
  1187. $sd['is_win'] = 1;
  1188. $sd['sellprice'] = $newprice;
  1189. $sd['ploss'] = $ylnum;
  1190. $orderobj->where(array('id'=>$id))->save($sd);
  1191. //写财务日志
  1192. $this->addlog($uid,$vo['username'],$money);
  1193. }else{//亏损
  1194. //修改订单状态
  1195. $sd['status'] = 2;
  1196. $sd['is_win'] = 2;
  1197. $sd['sellprice'] = $newprice;
  1198. $sd['ploss'] = $num;
  1199. $orderobj->where(array('id'=>$id))->save($sd);
  1200. }
  1201. }elseif($otype == 2){ //买跌
  1202. if($newprice < $buyprice){ //盈利
  1203. //增加资产
  1204. M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1205. //修改订单状态
  1206. $sd['status'] = 2;
  1207. $sd['is_win'] = 1;
  1208. $sd['sellprice'] = $newprice;
  1209. $sd['ploss'] = $ylnum;
  1210. $orderobj->where(array('id'=>$id))->save($sd);
  1211. //写财务日志
  1212. $this->addlog($uid,$vo['username'],$money);
  1213. }else{//亏损
  1214. //修改订单状态
  1215. $sd['status'] = 2;
  1216. $sd['is_win'] = 2;
  1217. $sd['sellprice'] = $newprice;
  1218. $sd['ploss'] = $num;
  1219. $orderobj->where(array('id'=>$id))->save($sd);
  1220. }
  1221. }
  1222. }elseif($dkong == 1){//单控盈利
  1223. if($otype == 1){//买涨
  1224. if($newprice > $buyprice){
  1225. $sellprice = $newprice;
  1226. }elseif($newprice == $buyprice){
  1227. $sellprice = $newprice + $randnum;
  1228. }elseif($newprice < $buyprice){
  1229. $sellprice = $buyprice + $randnum;
  1230. }
  1231. //增加资产
  1232. M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1233. //修改订单状态
  1234. $sd['status'] = 2;
  1235. $sd['is_win'] = 1;
  1236. $sd['sellprice'] = $sellprice;
  1237. $sd['ploss'] = $ylnum;
  1238. $orderobj->where(array('id'=>$id))->save($sd);
  1239. //写财务日志
  1240. $this->addlog($uid,$vo['username'],$money);
  1241. }elseif($otype == 2){//买跌
  1242. if($newprice > $buyprice){
  1243. $sellprice = $buyprice - $randnum;
  1244. }elseif($newprice == $buyprice){
  1245. $sellprice = $buyprice - $randnum;
  1246. }elseif($newprice < $buyprice){
  1247. $sellprice = $newprice;
  1248. }
  1249. //增加资产
  1250. M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1251. //修改订单状态
  1252. $sd['status'] = 2;
  1253. $sd['is_win'] = 1;
  1254. $sd['sellprice'] = $sellprice;
  1255. $sd['ploss'] = $ylnum;
  1256. $orderobj->where(array('id'=>$id))->save($sd);
  1257. //写财务日志
  1258. $this->addlog($uid,$vo['username'],$money);
  1259. }
  1260. }elseif($dkong == 2){
  1261. if($otype == 1){//买涨
  1262. //买涨,指定亏损,结算价格要低于买入价格
  1263. if($newprice > $buyprice){
  1264. $sellprice = $buyprice - $randnum;
  1265. }elseif($newprice == $buyprice){
  1266. $sellprice = $buyprice - $randnum;
  1267. }elseif($newprice < $buyprice){
  1268. $sellprice = $newprice;
  1269. }
  1270. //修改订单状态
  1271. $sd['status'] = 2;
  1272. $sd['is_win'] = 2;
  1273. $sd['sellprice'] = $sellprice;
  1274. $sd['ploss'] = $num;
  1275. $orderobj->where(array('id'=>$id))->save($sd);
  1276. }elseif($otype == 2){//买跌
  1277. if($newprice > $buyprice){
  1278. $sellprice = $newprice;
  1279. }elseif($newprice == $buyprice){
  1280. $sellprice = $buyprice + $randnum;
  1281. }elseif($newprice < $buyprice){
  1282. $sellprice = $buyprice + $randnum;
  1283. }
  1284. //修改订单状态
  1285. $sd['status'] = 2;
  1286. $sd['is_win'] = 2;
  1287. $sd['sellprice'] = $sellprice;
  1288. $sd['ploss'] = $num;
  1289. $orderobj->where(array('id'=>$id))->save($sd);
  1290. }
  1291. }
  1292. echo "==订单ID:".$id."出售成功==";
  1293. }
  1294. }else{
  1295. echo "没有订单可以结算!";
  1296. }
  1297. }
  1298. //自动结算合约订单
  1299. public function hycarryout____old(){
  1300. $nowtime = time();
  1301. $map['status'] = 1;
  1302. $map['intselltime'] = array('elt',$nowtime);
  1303. $orderobj = M("hyorder");
  1304. $list = $orderobj->where($map)->select();
  1305. //获取合约参数
  1306. $setting = M("hysetting")->where(array('id'=>1))->field("hy_ksid,hy_ylid,hy_fkgl")->find();
  1307. //指定盈利ID组
  1308. $winarr = explode(',',$setting['hy_ylid']);
  1309. //指定亏损ID组
  1310. $lossarr = explode(',',$setting['hy_ksid']);
  1311. //风控比例组
  1312. $fkarr = explode(',',$setting['hy_fkgl']);
  1313. if(!empty($list)){
  1314. foreach($list as $key=>$vo){
  1315. $coinname = $vo['coinname'];
  1316. $coinarr = explode("/",$coinname);
  1317. $symbol = strtolower($coinarr[0]).strtolower($coinarr[1]);
  1318. $coinapi = "https://api.huobi.pro/market/history/kline?period=1day&size=1&symbol=".$symbol;
  1319. $newprice = $this->getnewprice($coinapi);
  1320. $randnum = "0.".rand(1000,9999);
  1321. $buyprice = $vo['buyprice'];
  1322. $otype = $vo['hyzd']; //合约方向
  1323. $dkong = $vo['kongyk']; //单控设置
  1324. $uid = $vo['uid'];//会员ID
  1325. $id = $vo['id'];//记录ID
  1326. $num = $vo['num'];
  1327. $hybl = $vo['hybl'];
  1328. $ylnum = $num * ($hybl / 100);
  1329. $money = $num + $ylnum;//盈利金额
  1330. //买涨
  1331. if($otype == 1){
  1332. if(in_array($uid,$winarr)){//如果有指定盈利ID,则按盈利结算
  1333. if($newprice > $buyprice){
  1334. $sellprice = $newprice;
  1335. }elseif($newprice == $buyprice){
  1336. $sellprice = $newprice + $randnum;
  1337. }elseif($newprice < $buyprice){
  1338. $sellprice = $buyprice + $randnum;
  1339. }
  1340. //增加资产
  1341. M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1342. //修改订单状态
  1343. $sd['status'] = 2;
  1344. $sd['is_win'] = 1;
  1345. $sd['sellprice'] = $sellprice;
  1346. $sd['ploss'] = $ylnum;
  1347. $orderobj->where(array('id'=>$id))->save($sd);
  1348. //写财务日志
  1349. $this->addlog($uid,$vo['username'],$money);
  1350. }elseif(in_array($uid,$lossarr)){//如果有指定亏损ID,则按亏损结算
  1351. //买涨,指定亏损,结算价格要低于买入价格
  1352. if($newprice > $buyprice){
  1353. $sellprice = $buyprice - $randnum;
  1354. }elseif($newprice == $buyprice){
  1355. $sellprice = $buyprice - $randnum;
  1356. }elseif($newprice < $buyprice){
  1357. $sellprice = $newprice;
  1358. }
  1359. //修改订单状态
  1360. $sd['status'] = 2;
  1361. $sd['is_win'] = 2;
  1362. $sd['sellprice'] = $sellprice;
  1363. $sd['ploss'] = $num;
  1364. $orderobj->where(array('id'=>$id))->save($sd);
  1365. }else{//如果未指定盈利和亏损,则按单控的计算
  1366. if($dkong == 1){//盈利
  1367. if($newprice > $buyprice){
  1368. $sellprice = $newprice;
  1369. }elseif($newprice == $buyprice){
  1370. $sellprice = $newprice + $randnum;
  1371. }elseif($newprice < $buyprice){
  1372. $sellprice = $buyprice + $randnum;
  1373. }
  1374. // echo '买入价格:'.$buyprice;
  1375. // echo "<br />";
  1376. // echo '结算价格:'.$sellprice;die;
  1377. //增加资产
  1378. M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1379. //修改订单状态
  1380. $sd['status'] = 2;
  1381. $sd['is_win'] = 1;
  1382. $sd['sellprice'] = $sellprice;
  1383. $sd['ploss'] = $ylnum;
  1384. $orderobj->where(array('id'=>$id))->save($sd);
  1385. //写财务日志
  1386. $this->addlog($uid,$vo['username'],$money);
  1387. }elseif($dkong == 2){//亏损
  1388. if($newprice > $buyprice){
  1389. $sellprice = $buyprice - $randnum;
  1390. }elseif($newprice == $buyprice){
  1391. $sellprice = $buyprice - $randnum;
  1392. }elseif($newprice < $buyprice){
  1393. $sellprice = $newprice;
  1394. }
  1395. // echo '买入价格:'.$buyprice;
  1396. // echo "<br />";
  1397. // echo '结算价格:'.$sellprice;die;
  1398. //修改订单状态
  1399. $sd['status'] = 2;
  1400. $sd['is_win'] = 2;
  1401. $sd['sellprice'] = $sellprice;
  1402. $sd['ploss'] = $num;
  1403. $orderobj->where(array('id'=>$id))->save($sd);
  1404. }
  1405. }
  1406. //买跌
  1407. }elseif($otype == 2){
  1408. if(in_array($uid,$winarr)){//如果有指定盈利ID,则按盈利结算
  1409. if($newprice > $buyprice){
  1410. $sellprice = $buyprice - $randnum;
  1411. }elseif($newprice == $buyprice){
  1412. $sellprice = $buyprice - $randnum;
  1413. }elseif($newprice < $buyprice){
  1414. $sellprice = $newprice;
  1415. }
  1416. //增加资产
  1417. M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1418. //修改订单状态
  1419. $sd['status'] = 2;
  1420. $sd['is_win'] = 1;
  1421. $sd['sellprice'] = $sellprice;
  1422. $sd['ploss'] = $ylnum;
  1423. $orderobj->where(array('id'=>$id))->save($sd);
  1424. //写财务日志
  1425. $this->addlog($uid,$vo['username'],$money);
  1426. }elseif(in_array($uid,$lossarr)){//如果有指定亏损ID,则按亏损结算
  1427. if($newprice > $buyprice){
  1428. $sellprice = $newprice;
  1429. }elseif($newprice == $buyprice){
  1430. $sellprice = $buyprice + $randnum;
  1431. }elseif($newprice < $buyprice){
  1432. $sellprice = $buyprice + $randnum;
  1433. }
  1434. //修改订单状态
  1435. $sd['status'] = 2;
  1436. $sd['is_win'] = 2;
  1437. $sd['sellprice'] = $sellprice;
  1438. $sd['ploss'] = $num;
  1439. $orderobj->where(array('id'=>$id))->save($sd);
  1440. }else{//如果未指定盈利和亏损,则按单控的计算
  1441. if($dkong == 1){//盈利
  1442. if($newprice > $buyprice){
  1443. $sellprice = $buyprice - $randnum;
  1444. }elseif($newprice == $buyprice){
  1445. $sellprice = $buyprice - $randnum;
  1446. }elseif($newprice < $buyprice){
  1447. $sellprice = $newprice;
  1448. }
  1449. //增加资产
  1450. M("user_coin")->where(array('userid'=>$uid))->setInc("usdt",$money);
  1451. //修改订单状态
  1452. $sd['status'] = 2;
  1453. $sd['is_win'] = 1;
  1454. $sd['sellprice'] = $sellprice;
  1455. $sd['ploss'] = $ylnum;
  1456. $orderobj->where(array('id'=>$id))->save($sd);
  1457. //写财务日志
  1458. $this->addlog($uid,$vo['username'],$money);
  1459. }elseif($dkong == 2){//亏损
  1460. if($newprice > $buyprice){
  1461. $sellprice = $newprice;
  1462. }elseif($newprice == $buyprice){
  1463. $sellprice = $buyprice + $randnum;
  1464. }elseif($newprice < $buyprice){
  1465. $sellprice = $buyprice + $randnum;
  1466. }
  1467. //修改订单状态
  1468. $sd['status'] = 2;
  1469. $sd['is_win'] = 2;
  1470. $sd['sellprice'] = $sellprice;
  1471. $sd['ploss'] = $num;
  1472. $orderobj->where(array('id'=>$id))->save($sd);
  1473. }
  1474. }
  1475. }
  1476. echo "==订单ID:".$id."出售成功==";
  1477. }
  1478. }else{
  1479. echo "没有订单可以结算!";
  1480. }
  1481. }
  1482. //写财务日志
  1483. public function addlog($uid,$username,$money){
  1484. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  1485. $data['uid'] = $uid;
  1486. $data['username'] = $username;
  1487. $data['num'] = $money;
  1488. $data['coinname'] = "usdt";
  1489. $data['afternum'] = $minfo['usdt'] + $money;
  1490. $data['type'] = 4;
  1491. $data['addtime'] = date("Y-m-d H:i:s",time());
  1492. $data['st'] = 1;
  1493. $data['remark'] = L('合约出售');
  1494. M("bill")->add($data);
  1495. $notice['uid'] = $uid;
  1496. $notice['account'] = $username;
  1497. $notice['title'] = L('快速合约交易');
  1498. $notice['content'] = L('快速合约已平仓,请及时加仓');
  1499. $notice['addtime'] = date("Y-m-d H:i:s",time());
  1500. $notice['status'] = 1;
  1501. M("notice")->add($notice);
  1502. }
  1503. //获取行情数据
  1504. public function getnewprice($api){
  1505. $ch = curl_init();
  1506. curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
  1507. curl_setopt ($ch, CURLOPT_URL, $api );
  1508. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  1509. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);
  1510. $result = json_decode(curl_exec($ch),true);
  1511. $price_arr = $result['data'][0];
  1512. $close = $price_arr['close'];//现价
  1513. return $close;
  1514. }
  1515. }
  1516. ?>