* Format fields of response data.

This commit is contained in:
zhujinyong
2021-07-21 06:44:41 +08:00
parent 51558901a5
commit 8f6bf9800e
20 changed files with 155 additions and 39 deletions
+2 -2
View File
@@ -15,7 +15,7 @@ class bugEntry extends entry
$data = $this->getData();
$bug = $data->data->bug;
$this->send(200, $bug);
$this->send(200, $this->format($bug, 'activatedDate:time,openedDate:time,assignedDate:time,resolvedDate:time,closedDate:time,lastEditedDate:time'));
}
public function put($bugID)
@@ -35,7 +35,7 @@ class bugEntry extends entry
if(!isset($data->status)) return $this->sendError(400, 'error');
$bug = $this->bug->getByID($bugID);
$this->send(200, $bug);
$this->send(200, $this->format($bug, 'activatedDate:time,openedDate:time,assignedDate:time,resolvedDate:time,closedDate:time,lastEditedDate:time'));
}
public function delete($bugID)
+2 -2
View File
@@ -21,7 +21,7 @@ class bugsEntry extends entry
$result = array();
foreach($bugs as $bug)
{
$result[] = $bug;
$result[] = $this->format($bug, 'activatedDate:time,openedDate:time,assignedDate:time,resolvedDate:time,closedDate:time,lastEditedDate:time');
}
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'bugs' => $result));
}
@@ -51,6 +51,6 @@ class bugsEntry extends entry
$bug = $this->loadModel('bug')->getByID($data->id);
$this->send(200, $bug);
$this->send(200, $this->format($bug, 'activatedDate:time,openedDate:time,assignedDate:time,resolvedDate:time,closedDate:time,lastEditedDate:time'));
}
}
+2 -2
View File
@@ -15,7 +15,7 @@ class executionEntry extends Entry
$data = $this->getData();
$execution = $data->data->execution;
$this->send(200, $execution);
$this->send(200, $this->format($execution, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time'));
}
public function put($executionID)
@@ -36,7 +36,7 @@ class executionEntry extends Entry
if(!isset($data->result)) return $this->sendError(400, 'error');
$execution = $this->execution->getByID($executionID);
$this->sendSuccess(200, $execution);
$this->send(200, $this->format($execution, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time'));
}
public function delete($executionID)
+8 -3
View File
@@ -16,8 +16,13 @@ class executionsEntry extends entry
if(isset($data->status) and $data->status == 'success')
{
$pager = $data->data->pager;
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'executions' => $data->data->executionStats));
$pager = $data->data->pager;
$result = array();
foreach($data->data->executionStats as $execution)
{
$result[] = $this->format($execution, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time');
}
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'executions' => $result));
}
if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message);
@@ -46,6 +51,6 @@ class executionsEntry extends entry
$execution = $this->loadModel('execution')->getByID($data->id);
$this->send(200, $execution);
$this->send(201, $this->format($execution, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time'));
}
}
+3 -2
View File
@@ -14,7 +14,7 @@ class productEntry extends Entry
$control->view($productID);
$data = $this->getData();
if(isset($data->status) and $data->status == 'success') return $this->send(200, $data->data->product);
if(isset($data->status) and $data->status == 'success') return $this->send(200, $this->format($data->data->product, 'createdDate:time'));
if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message);
$this->sendError(400, 'error');
@@ -34,7 +34,8 @@ class productEntry extends Entry
$data = $this->getData();
if(isset($data->result) and $data->result == 'fail') return $this->sendError(400, $data->message);
$this->sendSuccess(200, 'success');
$product = $this->product->getByID($productID);
$this->sendSuccess(200, $this->format($product, 'createdDate:time'));
}
public function delete($productID)
+10 -7
View File
@@ -12,17 +12,18 @@ class productsEntry extends entry
{
$control = $this->loadController('product', 'all');
$control->all();
$data = $this->getData();
$pager = $data->data->pager;
/* Response */
$data = $this->getData();
if(isset($data->status) and $data->status == 'success')
{
return $this->send(200, array('products' => $data->data->productStats));
}
if(isset($data->status) and $data->status == 'fail')
{
return $this->sendError(400, $data->message);
$result = array();
$products = $data->data->productStats;
foreach($products as $product) $result[] = $this->format($product, 'createdDate:time');
return $this->send(200, array('products' => $result));
}
if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message);
return $this->sendError(400, 'error');
}
@@ -43,7 +44,9 @@ class productsEntry extends entry
$data = $this->getData();
if(isset($data->result) and $data->result == 'fail') return $this->sendError(400, $data->message);
/* Response */
$product = $this->loadModel('product')->getByID($data->id);
$product = $this->format($product, 'createdDate:time,whitelist:[]string');
$this->send(200, $product);
}
+1 -1
View File
@@ -20,7 +20,7 @@ class ProgramsEntry extends Entry
$result = array();
foreach($programs as $program)
{
$result[] = $program;
$result[] = $this->format($program, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time');
}
return $this->send(200, array('programs' => $result));
}
+2 -2
View File
@@ -14,7 +14,7 @@ class projectEntry extends entry
$control->view($projectID);
$data = $this->getData();
if(isset($data->status) and $data->status == 'success') return $this->send(200, $data->data->project);
if(isset($data->status) and $data->status == 'success') return $this->send(200, $this->format($data->data->project, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time'));
if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message);
$this->sendError(400, 'error');
@@ -47,7 +47,7 @@ class projectEntry extends entry
if(!isset($data->result)) return $this->sendError(400, 'error');
$project = $this->project->getByID($projectID);
$this->send(200, $project);
$this->send(200, $this->format($project, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time'));
}
public function delete($projectID)
+7 -2
View File
@@ -17,7 +17,12 @@ class projectsEntry extends entry
if(isset($data->status) and $data->status == 'success')
{
$pager = $data->data->pager;
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'projects' => $data->data->projectStats));
$result = array();
foreach($data->data->projectStats as $project)
{
$result[] = $this->format($project, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time');
}
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'projects' => $result));
}
if(isset($data->status) and $data->status == 'fail')
{
@@ -49,6 +54,6 @@ class projectsEntry extends entry
$project = $this->loadModel('project')->getByID($data->id);
$this->send(201, $project);
$this->send(201, $this->format($project, 'openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time'));
}
}
+2 -2
View File
@@ -21,7 +21,7 @@ class storiesEntry extends entry
$result = array();
foreach($stories as $story)
{
$result[] = $story;
$result[] = $this->format($story, 'openedDate:time,assignedDate:time,reviewedDate:time,lastEditedDate:time,closedDate:time');
}
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'stories' => $result));
}
@@ -54,6 +54,6 @@ class storiesEntry extends entry
$story = $this->loadModel('story')->getByID($data->id);
$this->send(200, $story);
$this->send(200, $this->format($story, 'openedDate:time,assignedDate:time,reviewedDate:time,lastEditedDate:time,closedDate:time'));
}
}
+3 -2
View File
@@ -15,7 +15,7 @@ class storyEntry extends Entry
$data = $this->getData();
$story = $data->data->story;
$this->send(200, $story);
$this->send(200, $this->format($story, 'openedDate:time,assignedDate:time,reviewedDate:time,lastEditedDate:time,closedDate:time'));
}
public function put($storyID)
@@ -31,7 +31,8 @@ class storyEntry extends Entry
$control->edit($storyID);
$this->getData();
$this->sendSuccess(200, 'success');
$story = $this->story->getByID($storyID);
$this->sendSuccess(200, $this->format($story, 'openedDate:time,assignedDate:time,reviewedDate:time,lastEditedDate:time,closedDate:time'));
}
public function delete($storyID)
+1 -1
View File
@@ -34,6 +34,6 @@ class storyChangeEntry extends Entry
$story = $this->loadModel('story')->getByID($storyID);
$this->send(200, $story);
$this->send(200, $this->format($story, 'openedDate:time,assignedDate:time,reviewedDate:time,lastEditedDate:time,closedDate:time'));
}
}
+2 -2
View File
@@ -15,7 +15,7 @@ class taskEntry extends Entry
$data = $this->getData();
$task = $data->data->task;
$this->send(200, $task);
$this->send(200, $this->format($task, 'openedDate:time,assignedDate:time,realStarted:time,finishedDate:time,canceledDate:time,closedDate:time,lastEditedDate:time'));
}
public function put($taskID)
@@ -31,7 +31,7 @@ class taskEntry extends Entry
$this->getData();
$task = $this->task->getByID($taskID);
$this->send(200, $task);
$this->send(200, $this->format($task, 'openedDate:time,assignedDate:time,realStarted:time,finishedDate:time,canceledDate:time,closedDate:time,lastEditedDate:time'));
}
public function delete($taskID)
+1 -1
View File
@@ -25,6 +25,6 @@ class taskAssignToEntry extends Entry
$task = $this->loadModel('task')->getByID($taskID);
$this->send(200, $task);
$this->send(200, $this->format($task, 'openedDate:time,assignedDate:time,realStarted:time,finishedDate:time,canceledDate:time,closedDate:time,lastEditedDate:time'));
}
}
+1 -1
View File
@@ -30,6 +30,6 @@ class taskFinishEntry extends Entry
$task = $this->loadModel('task')->getByID($taskID);
$this->send(200, $task);
$this->send(200, $this->format($task, 'openedDate:time,assignedDate:time,realStarted:time,finishedDate:time,canceledDate:time,closedDate:time,lastEditedDate:time'));
}
}
+3 -3
View File
@@ -11,7 +11,7 @@ class tasksEntry extends entry
public function get($executionID)
{
$control = $this->loadController('execution', 'task');
$control->task($executionID);
$control->task($executionID, 'all');
$data = $this->getData();
if(isset($data->status) and $data->status == 'success')
@@ -21,7 +21,7 @@ class tasksEntry extends entry
$result = array();
foreach($tasks as $task)
{
$result[] = $task;
$result[] = $this->format($task, 'openedDate:time,assignedDate:time,realStarted:time,finishedDate:time,canceledDate:time,closedDate:time,lastEditedDate:time');
}
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'tasks' => $result));
}
@@ -46,6 +46,6 @@ class tasksEntry extends entry
$task = $this->loadModel('task')->getByID($data->id);
$this->send(201, $task);
$this->send(201, $this->format($task, 'openedDate:time,assignedDate:time,realStarted:time,finishedDate:time,canceledDate:time,closedDate:time,lastEditedDate:time'));
}
}
+2 -2
View File
@@ -17,7 +17,7 @@ class userEntry extends Entry
$user = $data->data->user;
unset($user->password);
$this->send(200, $user);
$this->send(200, $this->format($user, 'last:time,locked:time'));
}
public function put($userID)
@@ -39,7 +39,7 @@ class userEntry extends Entry
$user = $this->user->getByID($userID, 'id');
unset($user->password);
$this->send(200, $user);
$this->send(200, $this->format($user, 'last:time,locked:time'));
}
public function delete($userID)
+2 -2
View File
@@ -19,7 +19,7 @@ class usersEntry extends entry
$users = $data->data->users;
$pager = $data->data->pager;
$result = array();
foreach($users as $user) $result[] = $user;
foreach($users as $user) $result[] = $this->format($user, 'locked:time');
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'users' => $result));
}
@@ -50,6 +50,6 @@ class usersEntry extends entry
$user = $this->loadModel('user')->getByID($data->id, 'id');
unset($user->password);
$this->send(201, $user);
$this->send(201, $this->format($user, 'last:time,locked:time'));
}
}
+99
View File
@@ -381,4 +381,103 @@ class baseEntry
}
}
}
/**
* 格式化数据的字段类型.
* Format fields of response data.
*
* @param object|array $data
* @param string $fields
* @access public
* @return object|array
*/
public function format($data, $fields)
{
if(is_array($data))
{
foreach($data as $object) $this->formatFields($object, $fields);
}
$this->formatFields($data, $fields);
return $data;
}
/**
* 格式化对象的字段类型.
* Format fields of object.
*
* @param object $object
* @param string $fields
* @access public
* @return object
*/
private function formatFields(&$object, $fields)
{
$fields = explode(',', $fields);
foreach($fields as $field)
{
$field = explode(':', $field);
$key = $field[0];
$type = $field[1];
$isArray = false;
$pos = strpos($type, ']');
if($pos !== FALSE)
{
$is_array = true;
$type = substr($type, $pos + 1);
}
/* Format value. */
if(!$isArray)
{
$object->$key = $this->cast($object->$key, $type);
continue;
}
/* Format array. */
$value = array();
if(is_array($object->$key))
{
foreach($object->$key as $v) $value[] = $this->cast($v, $type);
}
else
{
$vs = implode(',', $object->$key);
foreach($vs as $v)
{
if($v === '') continue;
$value[] = $this->cast($v, $type);
}
}
$object->$key = $value;
}
}
/**
* 类型转换.
* Typecasting.
*
* @param mixed $vaule
* @param string $type
* @access public
* @return mixed
*/
private function cast($value, $type)
{
switch($type)
{
case 'time':
$timeFormat = $this->param('timeFormat', '');
if($timeFormat == 'utc')
{
if(!$value or $value == '0000-00-00 00:00:00') return null;
return gmdate("Y-m-d\TH:i:s\Z", strtotime($value));
}
return $value;
default:
return $value;
}
}
}
+2
View File
@@ -2207,6 +2207,8 @@ class baseRouter
if(!isset($params->emulatePrepare) and PHP_OS == 'Linux') $params->emulatePrepare = true;
if(!isset($params->bufferQuery) and PHP_OS == 'Linux') $params->bufferQuery = true;
if(defined('RUN_MODE') and RUN_MODE == 'api') $params->emulatePrepare = false;
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($params->strictMode) and $params->strictMode == false) $dbh->exec("SET @@sql_mode= ''");