table_day_k.class.php 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: 王刚涛
  5. * Date: 2020/11/24
  6. * Time: 14:51
  7. */
  8. class Table_day_k extends Table {
  9. protected $base = ""; //分表的后缀日期,在进行数据库操作的时候"Table_day_k_".$base
  10. protected $table_name = "day_k";//表名,不带前缀,前缀在config中定义
  11. protected $table_id = "day_k_id";//指定ID字段名称,必须
  12. protected $table_status = '';//指定状态字段名称,如果有
  13. protected $table_order = '';//指定排序字段名称,如果有
  14. //数据库结构
  15. protected function struct(){
  16. $attr = array();
  17. $attr['id'] = 'day_k_id';
  18. $attr['timestamp'] = 'day_k_timestamp';
  19. $attr['date'] = 'day_k_date';
  20. $attr['code'] = 'day_k_code';
  21. $attr['name'] = 'day_k_name';
  22. $attr['open_price'] = 'day_k_open_price';
  23. $attr['close_price'] = 'day_k_close_price';
  24. $attr['highest_price'] = 'day_k_highest_price';
  25. $attr['lowest_price'] = 'day_k_lowest_price';
  26. $attr['increase_price'] = 'day_k_increase_price';
  27. $attr['increase_ratio'] = 'day_k_increase_ratio';
  28. $attr['turnover'] = 'day_k_turnover';
  29. $attr['amount'] = 'day_k_amount';
  30. $attr['value'] = 'day_k_value';
  31. $attr['m5'] = 'day_k_m5';
  32. $attr['m10'] = 'day_k_m10';
  33. $attr['m20'] = 'day_k_m20';
  34. $attr['m30'] = 'day_k_m30';
  35. $attr['m60'] = 'day_k_m60';
  36. $attr['m233'] = 'day_k_m233';
  37. $attr['tradable_amount'] = 'day_k_tradable_amount';
  38. $attr['tradable_value'] = 'day_k_tradable_value';
  39. $attr['total_amount'] = 'day_k_total_amount';
  40. $attr['total_value'] = 'day_k_total_amount';
  41. $attr['profitable'] = 'day_k_profitable';
  42. $attr['pb'] = 'day_k_pb';
  43. $attr['pe_static'] = 'day_k_pe_static';
  44. $attr['pe_dynamic'] = 'day_k_pe_dynamic';
  45. $attr['pe_ttm'] = 'day_k_pe_ttm';
  46. return $attr;
  47. }
  48. /****
  49. * @param $attr
  50. * @return mixed
  51. * 王刚涛
  52. */
  53. public function add($attr){
  54. $param = array (
  55. 'day_k_timestamp ' => array('number', $attr['timestamp']),
  56. 'day_k_date' => array('number', $attr['date']),
  57. 'day_k_code' => array('string', $attr['code']),
  58. 'day_k_name' => array('string', $attr['name']),
  59. 'day_k_open_price' => array('number', $attr['open_price']),
  60. 'day_k_close_price' => array('number', $attr['close_price']),
  61. 'day_k_highest_price' => array('number', $attr['highest_price']),
  62. 'day_k_lowest_price' => array('number', $attr['lowest_price']),
  63. 'day_k_amount' => array('number', $attr['amount']),
  64. 'day_k_value' => array('number', $attr['value']),
  65. 'day_k_increase_price' => array('number', $attr['increase_price']),// 涨跌价
  66. 'day_k_increase_ratio' => array('number', $attr['increase_ratio']),// 涨跌幅
  67. 'day_k_turnover' => array('number', $attr['turnover']),// 换手率
  68. 'day_k_pe_ttm' => array('number', $attr['pe_ttm']),
  69. 'day_k_tradable_value' => array('number', $attr['tradable_value']),
  70. 'day_k_total_value' => array('number', $attr['total_value']),
  71. 'day_k_pb' => array('number', $attr['pb']),
  72. 'day_k_pe_dynamic' => array('number', $attr['pe_dynamic']),
  73. 'day_k_pe_static' => array('number', $attr['pe_static']),
  74. );
  75. return $this->pdo->sqlinsert($this->table_fullname, $param);
  76. }
  77. /****
  78. * @param $attr
  79. * @return mixed
  80. *插入当天的数据
  81. */
  82. public function insert($attr){
  83. $param = array (
  84. 'day_k_date' => array('number', strtotime($attr['date'])),
  85. 'day_k_code' => array('number', $attr['code']),
  86. 'day_k_name' => array('string', $attr['name']),
  87. 'day_k_open_price' => array('number', $attr['open_price']),
  88. 'day_k_highest_price' => array('number', $attr['highest_price']),
  89. 'day_k_lowest_price' => array('number', $attr['lowest_price']),
  90. 'day_k_value' => array('number', $attr['value']),
  91. 'day_k_amount' => array('number', $attr['amount']),
  92. 'day_k_close_price' => array('number', $attr['close_price']),
  93. 'day_k_close_price_qfq' => array('number', $attr['close_price_qfq']),
  94. 'day_k_increase_price' => array('number', $attr['increase_price']),
  95. 'day_k_increase_value' => array('number', $attr['increase_value']),
  96. 'day_k_turnover' => array('number', $attr['turnover']),
  97. );
  98. $msg=$this->pdo->sqlinsert($this->table_fullname, $param);
  99. return $msg;
  100. }
  101. /***
  102. * @param $attr
  103. * @return mixed
  104. * day_k的历史数据
  105. */
  106. public function HistoryDayK($attr){
  107. $param = array (
  108. 'day_k_timestamp ' => array('number', $attr['timestamp']),
  109. 'day_k_date' => array('number', $attr['date']),
  110. 'day_k_code' => array('string', $attr['code']),
  111. 'day_k_name' => array('string', $attr['name']),
  112. 'day_k_open_price' => array('number', $attr['open_price']),
  113. 'day_k_highest_price' => array('number', $attr['highest_price']),
  114. 'day_k_lowest_price' => array('number', $attr['lowest_price']),
  115. 'day_k_close_price' => array('number', $attr['close_price']),
  116. 'day_k_value' => array('number', $attr['value']),
  117. 'day_k_amount' => array('number', $attr['amount']),
  118. 'day_k_increase_price' => array('number', $attr['increase_price']),
  119. 'day_k_increase_ratio' => array('number', $attr['increase_ratio']),
  120. );
  121. $msg=$this->pdo->sqlinsert($this->table_fullname, $param);
  122. return $msg;
  123. }
  124. public function stock_recent_days($code,$start_date,$traceback_days,$order)
  125. {
  126. //查询语句必须用sql_check_input检查参数
  127. $stock_code = $this->pdo->sql_check_input(array('string', $code));//类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
  128. $sql = "select * from ". $this->table_fullname ." where 1=1 ";
  129. $where =" and day_k_code=".$stock_code." and day_k_timestamp <=".$start_date ;
  130. $sql.=$where;
  131. $orderInfo=" ORDER BY day_k_date desc";
  132. $sql.=$orderInfo;
  133. $limit=" limit ".$traceback_days;
  134. $sql.=$limit;
  135. if($order==1){
  136. $sql= " SELECT a.* FROM "."($sql) a ORDER BY a.day_k_timestamp desc ";
  137. }else{
  138. $sql= " SELECT a.* FROM "."($sql) a ORDER BY a.day_k_timestamp asc";
  139. }
  140. $rs = $this->pdo->sqlQuery($sql);
  141. $r = array();
  142. if($rs){
  143. foreach($rs as $key => $val){
  144. $r[$key] = $this->dataToAttr($val);
  145. }
  146. return $r;
  147. }else{
  148. return $r;
  149. }
  150. }
  151. /***
  152. * @param $code
  153. * @param $start_date
  154. * @param $end_date
  155. * @return array
  156. *
  157. */
  158. public function get_day_k_info($code,$start_date,$end_date,$order_info)
  159. {
  160. //查询语句必须用sql_check_input检查参数
  161. $stock_code = $this->pdo->sql_check_input(array('string', $code));//类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
  162. $start_date= $this->pdo->sql_check_input(array('number', $start_date));
  163. $end_date = $this->pdo->sql_check_input(array('number', $end_date));
  164. $sql = "select * from ". $this->table_fullname ." where 1=1 ";
  165. $where =" and day_k_code=".$stock_code ." and day_k_timestamp between ".$start_date." and ".$end_date ;
  166. $sql.=$where;
  167. if($order_info==1)
  168. {
  169. $order=" order by day_k_timestamp desc";
  170. }
  171. else
  172. {
  173. $order=" order by day_k_timestamp asc";
  174. }
  175. $sql.=$order;
  176. $rs = $this->pdo->sqlQuery($sql);
  177. $r = array();
  178. if($rs){
  179. foreach($rs as $key => $val){
  180. $r[$key] = $this->dataToAttr($val);
  181. }
  182. return $r;
  183. }else{
  184. return $r;
  185. }
  186. }
  187. public function get_current_day_k($code,$date)
  188. {
  189. //查询语句必须用sql_check_input检查参数
  190. $stock_code = $this->pdo->sql_check_input(array('string', $code));//类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
  191. $sql = "select * from ". $this->table_fullname ." where 1=1 ";
  192. $where =" and day_k_code=".$stock_code ;
  193. if($date==0){//获取的是当天的数据
  194. // $date = (int)(strtotime(date("Y-m-d",time())));
  195. $date=date("Ymd",time());
  196. $where.=" and day_k_date = ".$date;
  197. }else{//获取某一天的数据
  198. $date = $this->pdo->sql_check_input(array('number', $date));
  199. $where.=" and day_k_date =".$date;
  200. }
  201. $sql.=$where;
  202. $rs = $this->pdo->sqlQuery($sql);
  203. $r = array();
  204. if($rs){
  205. foreach($rs as $key => $val){
  206. $r[$key] = $this->dataToAttr($val);
  207. }
  208. return $r[0];
  209. }else{
  210. return $r;
  211. }
  212. }
  213. }
  214. ?>