验证
- Field验证(是否允许修改/删除/创建)
尤其在使用redis之前,可以提高性能
- 归属性验证
判断从属关系,是否在一个域内
- 存在性验证
判断是否存在,尤其在update时
代码例子
/**
* @param $id
* @param $parentId
* @param $name
* @param $code
* @return int 0-success;-1-CODE_DOES_NOT_EXIST;-2-CODE_DOES_NOT_EXIST;-3-DEFAULT_CODE_CAN_NOT_UPDATE;-4-DISABLED_SYSTEM_KEYWORDS;-5-CODE_EXIST;
*/
public function update($id,$parentId, $name, $code) {
//check field
$system_array = array("NEW","REGISTER","IMPORT");
if(in_array( strtoupper($code),$system_array)){
return -4;
}
$redis = $this->_context->getRedis();
//check permission
$rank = $redis->zRank('base:list:' . $parentId,$id);
if ($rank === false) {
return -2;
}
//check exist
if (!$redis->exists('base:detail:' . $id)) {
return -1;
}
//check code exists
$detail = $redis->hMGet('base:detail:' . $id,array('code','isDefault'));
$rank = $redis->zRank('base:code:list:' . $parentId, strtoupper($code));
if ($detail['code']!==$code && $rank!==false) {
return -5;
}
//check is default
if($detail['isDefault']==="1") {
return -3;
}
//delete old trackingCode
$redis->zRem('base:code:list:' . $parentId, strtoupper($detail['code']));
//create new trackingCode
$redis->hMset('base:detail:' . $id,
array(
'name' => $name,
'code' => $code
)
);
$redis->zAdd('base:code:list:' . $parentId,$id, strtoupper($code));
return 0;
}