// +---------------------------------------------------------------------- namespace Admin\Logic; /** * 文档模型子模型 - 下载模型 */ class DownloadLogic extends BaseLogic{ /* 自动验证规则 */ protected $_validate = array( array('content', 'require', '详细内容不能为空!', self::MUST_VALIDATE , 'regex', self::MODEL_BOTH), array('download', 'number', '下载次数请输入整数!', self::VALUE_VALIDATE , 'regex', self::MODEL_BOTH), array('file_id', 'require', '请上传附件!', self::MUST_VALIDATE , 'regex', self::MODEL_BOTH), ); /** * 获取模型详细信息 * @param integer $id 文档ID * @return array 当前模型详细信息 * @author huajie */ public function detail($id){ $data = $this->field(true)->find($id); if(!$data){ $this->error = '获取详细信息出错!'; return false; } $file = D('File')->field(true)->find($data['file_id']); return $data; } /** * 更新数据 * @param intger $id * @author huajie */ public function update($id = 0){ /* 获取下载数据 */ //TODO: 根据不同用户获取允许更改或添加的字段 $data = $this->create(); if(!$data){ return false; } $file = json_decode(think_decrypt(I('post.file_id')), true); if(!empty($file)){ $data['file_id'] = $file['id']; $data['size'] = $file['size']; } else { $this->error = '获取上传文件信息失败!'; return false; } /* 添加或更新数据 */ if(empty($data['id'])){//新增数据 $data['id'] = $id; $id = $this->add($data); if(!$id){ $this->error = '新增详细内容失败!'; return false; } } else { //更新数据 $status = $this->save($data); if(false === $status){ $this->error = '更新详细内容失败!'; return false; } } return true; } /** * 下载文件 * @param number $id 文档ID * @return boolean 下载失败返回false */ public function download($id){ $info = $this->find($id); if(empty($info)){ $this->error = "不存在的文档ID:{$id}"; return false; } $File = D('File'); $root = C('DOWNLOAD_UPLOAD.rootPath'); $call = array($this, 'setDownload'); if(false === $File->download($root, $info['file_id'], $call, $info['id'])){ $this->error = $File->getError(); } } /** * 新增下载次数(File模型回调方法) */ public function setDownload($id){ $map = array('id' => $id); $this->where($map)->setInc('download'); } /** * 保存为草稿 * @return true 成功, false 保存出错 * @author huajie */ public function autoSave($id = 0){ $this->_validate = array(); /* 获取文章数据 */ $data = $this->create(); if(!$data){ return false; } $file = json_decode(think_decrypt(I('post.file_id')), true); if(!empty($file)){ $data['file_id'] = $file['id']; $data['size'] = $file['size']; } /* 添加或更新数据 */ if(empty($data['id'])){//新增数据 $data['id'] = $id; $id = $this->add($data); if(!$id){ $this->error = '新增详细内容失败!'; return false; } } else { //更新数据 $status = $this->save($data); if(false === $status){ $this->error = '更新详细内容失败!'; return false; } } return true; } }