chenbo 4 éve%!(EXTRA string=óta)
szülő
commit
bdeade1852

+ 14 - 5
api/v1.0/index_recent_days.php

@@ -33,11 +33,20 @@ try {
         return ;
     }
 
-    $filter = array(
-        'code' => array($code, '=s'),
-        'date' => array($start_date, '<=n'),
-    );
-    $stock_info = Index_day_k::getListOrderByDate($filter, 0, 0, 0, $order, $traceback_days);
+    //循环找到最近天数的起始日期
+    $count = 0;
+    $recent_date = AddOrSubDate($start_date, -$traceback_days);
+    while (($count < $traceback_days) and ($recent_date >= 20140101)) {
+        $filter = array(
+            'code' => array($code, '=s'),
+            'date' => array($start_date, 'date_between', $recent_date),
+        );
+        $count = Index_day_k::getList($filter, 1);
+        $recent_date = AddOrSubDate($recent_date, -1);
+    }
+
+    //获取列表
+    $stock_info = Index_day_k::getListOrderByDate($filter, 0, 0, 0, $order);
 
     if(!empty($stock_info)){
         $params=array();

+ 2 - 2
lib/index_day_k.class.php

@@ -32,10 +32,10 @@ class Index_day_k {
         return $Table_index_day_k->getList();
     }
 
-    static public function getListOrderByDate($filter = array(), $count=0, $page=0, $pagesize=0, $order=0, $limit = 0)
+    static public function getListOrderByDate($filter = array(), $count=0, $page=0, $pagesize=0, $order=0)
     {
         $Table_index_day_k = new Table_index_day_k();
-        return $Table_index_day_k->getListOrderByDate($filter, $count, $page, $pagesize, $order, $limit);
+        return $Table_index_day_k->getListOrderByDate($filter, $count, $page, $pagesize, $order);
     }
 
     static public function addOrUpdateByCodeDate($attrs)

+ 9 - 8
lib/table/table.class.php

@@ -126,7 +126,7 @@ abstract class Table {
     //@param $page -- 当前第几页
     //@param $pagesize -- 每页数量
     // $page 参数 和  $limit 不能同时使用,只能使用一个对limit进行限制
-    public function getList($filter = array(), $count = 0, $page = 0, $pagesize = 0, $order = 0, $limit = 0){
+    public function getList($filter = array(), $count = 0, $page = 0, $pagesize = 0, $order = 0){
         $where = $this->filterToWhere($filter);
         $orderByStr = (empty($order) ? 'asc' : 'desc');
 
@@ -137,9 +137,6 @@ abstract class Table {
                 $startrow = ($page - 1) * $pagesize;
                 $sql_limit = " limit $startrow, $pagesize";
                 $sql .= $sql_limit;
-            } else if ($limit > 0) {
-                $sql_limit = " limit $limit ";
-                $sql .= $sql_limit;
             }
 
             $rs  = $this->pdo->sqlQuery($sql);
@@ -173,7 +170,7 @@ abstract class Table {
     //@param $pagesize -- 每页数量
     // $page 参数 和  $limit 不能同时使用,只能使用一个对limit进行限制
     //本函数与 getList 区别在于,使用date字段进行排序,没有date字段的表不能使用本函数
-    public function getListOrderByDate($filter = array(), $count = 0, $page = 0, $pagesize = 0, $order = 0, $limit = 0){
+    public function getListOrderByDate($filter = array(), $count = 0, $page = 0, $pagesize = 0, $order = 0){
         $where = $this->filterToWhere($filter);
         $orderByStr = (empty($order) ? 'asc' : 'desc');
 
@@ -184,9 +181,6 @@ abstract class Table {
                 $startrow = ($page - 1) * $pagesize;
                 $sql_limit = " limit $startrow, $pagesize";
                 $sql .= $sql_limit;
-            } else if ($limit > 0) {
-                $sql_limit = " limit $limit ";
-                $sql .= $sql_limit;
             }
 
             $rs  = $this->pdo->sqlQuery($sql);
@@ -340,6 +334,7 @@ abstract class Table {
 			if(is_array($v)){
 				$val = $v[0];
 				$operator = $v[1];
+				$extraParam = $v[2];      //仅自定义的特殊方法使用
 			}else{
 				$val = $v;
 				$operator = '=s';
@@ -420,6 +415,12 @@ abstract class Table {
                 $where .= ") ";
             }
 
+            //以下是本项目特殊处理方法
+            if($operator == 'date_between'){//date在两个日期之间
+                $val = $this->pdo->sql_check_input(array('number', $val));
+                $extraParam = $this->pdo->sql_check_input(array('number', $extraParam));
+                $where .= " and $field_name > $extraParam and $field_name <= $val ";
+            }
 
 		}
 		return $where;

+ 6 - 0
setting.inc.php

@@ -29,6 +29,12 @@ function ConverseDate($originDate)
     return (int)date('Ymd', strtotime($originDate));
 }
 
+//日期数字 20210108 增减天数
+function AddOrSubDate($date, $days)
+{
+    return (int)date('Ymd', strtotime($date) + $days * 86400);
+}
+
 //空字符串转为0
 function EmptyToZero($str)
 {