ChartController.class.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. <?php
  2. namespace Home\Controller;
  3. class ChartController extends \Think\Controller
  4. {
  5. public function getMarketSpecialtyJsonAitc($market=NULL,$step=null){
  6. // 过滤非法字符----------------S
  7. if (checkstr($market)) {
  8. $this->error('您输入的信息有误!');
  9. }
  10. if($step == 60){
  11. $type = 1;
  12. }elseif($step == 300){
  13. $type = 5;
  14. }elseif($step == 900){
  15. $type = 15;
  16. }elseif($step == 1800){
  17. $type = 30;
  18. }elseif($step == 1600){
  19. $type = 60;
  20. }elseif($step == 14400){
  21. $type = 240;
  22. }elseif($step == 86400){
  23. $type = 1440;
  24. }
  25. $market = "ukb_usdt";
  26. $list = M("trade_json")->where(array('type'=>$type))->field('data')->limit(100)->select();
  27. foreach($list as $key=>$vo){
  28. $vd = json_decode($vo['data']);
  29. $data[$key]['time'] = intval($vd[0]);
  30. $data[$key]['volume'] = $vd[1];
  31. $data[$key]['open'] = $vd[2];
  32. $data[$key]['high'] = $vd[3];
  33. $data[$key]['low'] = $vd[4];
  34. $data[$key]['close'] = $vd[5];
  35. }
  36. //时间,成交量,成交价,最高价,最低价,收盘价
  37. header("Content-type:application/json");
  38. header('X-Frame-Options: SAMEORIGIN');
  39. exit(json_encode($data));
  40. }
  41. public function getMarketSpecialtyJsonAitclast($market = NULL, $step=null){
  42. $market = "ukb_usdt";
  43. if($step == 60){
  44. $type = 1;
  45. }elseif($step == 300){
  46. $type = 5;
  47. }elseif($step == 900){
  48. $type = 15;
  49. }elseif($step == 1800){
  50. $type = 30;
  51. }elseif($step == 1600){
  52. $type = 60;
  53. }elseif($step == 14400){
  54. $type = 240;
  55. }elseif($step == 86400){
  56. $type = 1440;
  57. }
  58. $list = M("trade_json")->where(array('type'=>1,'data'=>['neq','']))->order('id desc')->field('data')->limit(1)->select();
  59. //$num = 0.001 * rand(1,9);
  60. foreach($list as $key=>$vo){
  61. $vd = json_decode($vo['data']);
  62. $data[$key]['time'] = intval($vd[0]);
  63. $data[$key]['open'] = $vd[2];
  64. $data[$key]['high'] = $vd[3];
  65. $data[$key]['low'] = $vd[4];
  66. $data[$key]['close'] = session('close')?:$vd[5];// + $num;
  67. $data[$key]['volume'] = $vd[1];
  68. $data[$key]['aa'] = session('close');
  69. }
  70. header("Content-type:application/json");
  71. header('X-Frame-Options: SAMEORIGIN');
  72. exit(json_encode($data));
  73. }
  74. public function getJsonData($market = NULL, $ajax = 'json')
  75. {
  76. // 过滤非法字符----------------S
  77. if (checkstr($market)) {
  78. $this->error('您输入的信息有误!');
  79. }
  80. // 过滤非法字符----------------E
  81. if ($market) {
  82. $data = (APP_DEBUG ? null : S('ChartgetJsonData' . $market));
  83. if (!$data) {
  84. $data[0] = $this->getTradeBuy($market);
  85. $data[1] = $this->getTradeSell($market);
  86. $data[2] = $this->getTradeLog($market);
  87. S('ChartgetJsonData' . $market, $data);
  88. }
  89. header("Content-type:application/json");
  90. header('X-Frame-Options: SAMEORIGIN');
  91. exit(json_encode($data));
  92. }
  93. }
  94. protected function getTradeBuy($market)
  95. {
  96. // 过滤非法字符----------------S
  97. if (checkstr($market)) {
  98. $this->error('您输入的信息有误!');
  99. }
  100. // 过滤非法字符----------------E
  101. $mo = M();
  102. $buy = $mo->query('select id,price,sum(num-deal)as nums from tw_trade where status=0 and type=1 and market =\'' . $market . '\' group by price order by price desc limit 100;');
  103. $data = '';
  104. if ($buy) {
  105. $maxNums = maxArrayKey($buy, 'nums') / 2;
  106. foreach ($buy as $k => $v) {
  107. $data .= '<tr><td class="buy" width="50">买' . ($k + 1) . '</td><td class="buy" width="80">' . floatval($v['price']) . '</td><td class="buy" width="120">' . floatval($v['nums']) . '</td><td width="100"><span class="buySpan" style="width: ' . ((($maxNums < $v['nums'] ? $maxNums : $v['nums']) / $maxNums) * 100) . 'px;" ></span></td></tr>';
  108. }
  109. }
  110. Vendor("XssFilter.XssFilter","",".php");
  111. $data=\XssFilter::xss_clean($data);
  112. return $data;
  113. }
  114. protected function getTradeSell($market)
  115. {
  116. // 过滤非法字符----------------S
  117. if (checkstr($market)) {
  118. $this->error('您输入的信息有误!');
  119. }
  120. // 过滤非法字符----------------E
  121. $mo = M();
  122. $sell = $mo->query('select id,price,sum(num-deal)as nums from tw_trade where status=0 and type=2 and market =\'' . $market . '\' group by price order by price asc limit 100;');
  123. $data = '';
  124. if ($sell) {
  125. $maxNums = maxArrayKey($sell, 'nums') / 2;
  126. foreach ($sell as $k => $v) {
  127. $data .= '<tr><td class="sell" width="50">卖' . ($k + 1) . '</td><td class="sell" width="80">' . floatval($v['price']) . '</td><td class="sell" width="120">' . floatval($v['nums']) . '</td><td style="width: 100px;"><span class="sellSpan" style="width: ' . ((($maxNums < $v['nums'] ? $maxNums : $v['nums']) / $maxNums) * 100) . 'px;" ></span></td></tr>';
  128. }
  129. }
  130. Vendor("XssFilter.XssFilter","",".php");
  131. $data=\XssFilter::xss_clean($data);
  132. return $data;
  133. }
  134. protected function getTradeLog($market)
  135. {
  136. // 过滤非法字符----------------S
  137. if (checkstr($market)) {
  138. $this->error('您输入的信息有误!');
  139. }
  140. // 过滤非法字符----------------E
  141. $log = M('TradeLog')->where(array('status' => 1, 'market' => $market))->order('id desc')->limit(100)->select();
  142. $data = '';
  143. if ($log) {
  144. foreach ($log as $k => $v) {
  145. if ($v['type'] == 1) {
  146. $type = 'buy';
  147. } else {
  148. $type = 'sell';
  149. }
  150. $data .= '<tr><td class="' . $type . '" width="70">' . date('H:i:s', $v['addtime']) . '</td><td class="' . $type . '" width="70">' . floatval($v['price']) . '</td><td class="' . $type . '" width="100">' . floatval($v['num']) . '</td><td class="' . $type . '">' . floatval($v['mum']) . '</td></tr>';
  151. }
  152. }
  153. Vendor("XssFilter.XssFilter","",".php");
  154. $data=\XssFilter::xss_clean($data);
  155. return $data;
  156. }
  157. public function trend()
  158. {
  159. // TODO: SEPARATE
  160. $input = I('get.');
  161. $market = (is_array(C('market')[$input['market']]) ? trim($input['market']) : C('market_mr'));
  162. $this->assign('market', $market);
  163. $this->display();
  164. }
  165. public function getMarketTrendJson()
  166. {
  167. // TODO: SEPARATE
  168. $input = I('get.');
  169. $market = (is_array(C('market')[$input['market']]) ? trim($input['market']) : C('market_mr'));
  170. $data = (APP_DEBUG ? null : S('ChartgetMarketTrendJson' . $market));
  171. if (!$data) {
  172. $data = M('TradeLog')->where(array(
  173. 'market' => $market,
  174. 'addtime' => array('gt', time() - (60 * 60 * 24 * 30 * 2))
  175. ))->select();
  176. S('ChartgetMarketTrendJson' . $market, $data);
  177. }
  178. $json_data=array();
  179. foreach ($data as $k => $v) {
  180. $json_data[$k][0] = intval($v['addtime']);
  181. $json_data[$k][1] = floatval($v['price']);
  182. }
  183. header("Content-type:application/json");
  184. header('X-Frame-Options: SAMEORIGIN');
  185. exit(json_encode($json_data));
  186. }
  187. public function ordinary()
  188. {
  189. // TODO: SEPARATE
  190. $input = I('get.');
  191. $market = (is_array(C('market')[$input['market']]) ? trim($input['market']) : C('market_mr'));
  192. $this->assign('market', $market);
  193. $this->display();
  194. }
  195. public function getMarketOrdinaryJson()
  196. {
  197. // TODO: SEPARATE
  198. $input = I("get.");
  199. $market = (is_array(C("market")[$input["market"]]) ? trim($input["market"]) : C("market_mr"));
  200. $timearr = array(1, 3, 5, 10, 15, 30, 60, 120, 240, 360, 720, 1440, 10080);
  201. if (in_array($input["time"], $timearr)) {
  202. $time = $input["time"];
  203. } else {
  204. $time = 5;
  205. }
  206. $timeaa = (APP_DEBUG ? null : S("ChartgetMarketOrdinaryJsontime" . $market . $time));
  207. if (($timeaa + 60) < time()) {
  208. S("ChartgetMarketOrdinaryJson" . $market . $time, null);
  209. S("ChartgetMarketOrdinaryJsontime" . $market . $time, time());
  210. }
  211. $tradeJson = (APP_DEBUG ? null : S("ChartgetMarketOrdinaryJson" . $market . $time));
  212. if (!$tradeJson) {
  213. $tradeJson = M("TradeJson")->where(array(
  214. "market" => $market,
  215. "type" => $time,
  216. "data" => array("neq", "")
  217. ))->order("id desc")->limit(100)->select();
  218. S("ChartgetMarketOrdinaryJson" . $market . $time, $tradeJson);
  219. }
  220. krsort($tradeJson);
  221. foreach ($tradeJson as $k => $v) {
  222. $json_data[] = json_decode($v["data"], true);
  223. }
  224. exit(json_encode($json_data));
  225. }
  226. public function specialty()
  227. {
  228. // TODO: SEPARATE
  229. $input = I('get.');
  230. $market = (is_array(C('market')[$input['market']]) ? trim($input['market']) : C('market_mr'));
  231. $this->assign('market', $market);
  232. $this->display();
  233. }
  234. public function getMarketSpecialtyJson()
  235. {
  236. // TODO: SEPARATE
  237. $input = I('get.');
  238. $market = (is_array(C('market')[$input['market']]) ? trim($input['market']) : C('market_mr'));
  239. $timearr = array(1, 3, 5, 10, 15, 30, 60, 120, 240, 360, 720, 1440, 10080);
  240. if (in_array($input['step'] / 60, $timearr)) {
  241. $time = floatval($input['step'] / 60);
  242. } else {
  243. $time = 5;
  244. }
  245. $timeaa = (APP_DEBUG ? null : S('ChartgetMarketSpecialtyJsontime' . $market . $time));
  246. if (($timeaa + 60) < time()) {
  247. S('ChartgetMarketSpecialtyJson' . $market . $time, null);
  248. S('ChartgetMarketSpecialtyJsontime' . $market . $time, time());
  249. }
  250. $tradeJson = (APP_DEBUG ? null : S('ChartgetMarketSpecialtyJson' . $market . $time));
  251. if (!$tradeJson) {
  252. $tradeJson = M('TradeJson')->where(array('type' => $time, 'market' => $market))->order('id asc')->limit(1000)->select();
  253. S('ChartgetMarketSpecialtyJson' . $market . $time, $tradeJson);
  254. }
  255. $json_data=array();
  256. Vendor("XssFilter.XssFilter","",".php");
  257. foreach ($tradeJson as $k => $v) {
  258. $v['data']=\XssFilter::xss_clean($v['data']);
  259. $json_data[] = json_decode($v['data'], true);
  260. }
  261. foreach ($json_data as $k => $v) {
  262. $data[$k][0] = $v[0];
  263. $data[$k][1] = 0;
  264. $data[$k][2] = 0;
  265. $data[$k][3] = $v[2];
  266. $data[$k][4] = $v[5];
  267. $data[$k][5] = $v[3];
  268. $data[$k][6] = $v[4];
  269. $data[$k][7] = $v[1];
  270. }
  271. header("Content-type:application/json");
  272. header('X-Frame-Options: SAMEORIGIN');
  273. exit(json_encode($data));
  274. }
  275. public function getSpecialtyTrades()
  276. {
  277. $input = I('get.');
  278. // 过滤非法字符----------------S
  279. if (checkstr($input['since']) || checkstr($input['market'])) {
  280. $this->error('您输入的信息有误!');
  281. }
  282. // 过滤非法字符----------------E
  283. $json_data=array();
  284. if (!$input['since']) {
  285. $tradeLog = M('TradeLog')->where(array('market' => $input['market']))->order('id desc')->find();
  286. $json_data[] = array('tid' => intval($tradeLog['id']), 'date' => intval($tradeLog['addtime']), 'price' => floatval($tradeLog['price']), 'amount' => floatval($tradeLog['num']), 'trade_type' => $tradeLog['type'] == 1 ? 'bid' : 'ask');
  287. header("Content-type:application/json");
  288. header('X-Frame-Options: SAMEORIGIN');
  289. exit(json_encode($json_data));
  290. } else {
  291. $tradeLog = M('TradeLog')->where(array(
  292. 'market' => $input['market'],
  293. 'id' => array('gt', $input['since'])
  294. ))->order('id desc')->select();
  295. foreach ($tradeLog as $k => $v) {
  296. $json_data[] = array('tid' => intval($v['id']), 'date' => intval($v['addtime']), 'price' => floatval($v['price']), 'amount' => floatval($v['num']), 'trade_type' => $v['type'] == 1 ? 'bid' : 'ask');
  297. }
  298. header("Content-type:application/json");
  299. header('X-Frame-Options: SAMEORIGIN');
  300. exit(json_encode($json_data));
  301. }
  302. }
  303. /* public function getSpecialtyTrades()
  304. {
  305. $input = I('get.');
  306. // 过滤非法字符----------------S
  307. if (checkstr($input['since']) || checkstr($input['market'])) {
  308. $this->error('您输入的信息有误!');
  309. }
  310. // 过滤非法字符----------------E
  311. $json_data=array();
  312. if (!$input['since']) {
  313. $tradeLog = M('TradeLog')->where(array('market' => $input['market']))->order('id desc')->find();
  314. $json_data[] = array('tid' => intval($tradeLog['id']), 'date' => intval($tradeLog['addtime']), 'price' => floatval($tradeLog['price']), 'amount' => floatval($tradeLog['num']), 'trade_type' => $tradeLog['type'] == 1 ? 'bid' : 'ask');
  315. header("Content-type:application/json");
  316. header('X-Frame-Options: SAMEORIGIN');
  317. exit(json_encode($json_data));
  318. }
  319. else {
  320. $tradeLog = M('TradeLog')->where(array(
  321. 'market' => $input['market'],
  322. 'id' => array('gt', $input['since'])
  323. ))->order('id desc')->select();
  324. foreach ($tradeLog as $k => $v) {
  325. $json_data[] = array('tid' => intval($v['id']), 'date' => intval($v['addtime']), 'price' => floatval($v['price']), 'amount' => floatval($v['num']), 'trade_type' => $v['type'] == 1 ? 'bid' : 'ask');
  326. }
  327. header("Content-type:application/json");
  328. header('X-Frame-Options: SAMEORIGIN');
  329. exit(json_encode($json_data));
  330. }
  331. }*/
  332. }
  333. ?>