昨天写到的登录功能,大家可以使用postman测试下
接下来我们开始写业务模块了,更新包管理与客户端管理都是属于单表操作,所以只要做个GRUD功能即可。以更新包管理为例;
首先我们还是在控制器目录下创建一个更新包管理的控制器 Upgradepackage.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Upgradepackage extends BaseController {
private $upgradepackage_path = '';
public function __construct()
{
parent::__construct();
$this->upgradepackage_path = APPPATH.'../upgradepackages/';
$this->load->model('M_upgradepackage',"m_upgradepackage"); // 加载模型
}
public function pagelist()
{
$result = $this->m_upgradepackage->getPage($this->_pdata);
IResponse::responseJson($result, 'success');
}
public function detail()
{
list($result, $data) = $this->m_upgradepackage->detail($this->_pdata);
if($result == 'success') {
IResponse::responseJson($data, 'success');
} else {
IResponse::responseJson([], 'faild', 'info', $result);
}
}
public function update()
{
$this->_pdata['package_path'] = $this->upgradepackage_path;
list($result, $dataid) = $this->m_upgradepackage->update($this->_pdata);
if($result == 'success') {
IResponse::responseJson([], 'success', 'info', $this->lang->line('update_success'));
} else {
IResponse::responseJson([], 'faild', 'info', $result);
}
}
public function delete()
{
list($result, $dataid) = $this->m_upgradepackage->delete($this->_pdata);
if($result == 'success') {
IResponse::responseJson([], 'success', 'info', $this->lang->line('delete_success'));
} else {
IResponse::responseJson([], 'faild', 'info', $result);
}
}
public function upload()
{
// 保存数据
$this->_pdata = $this->input->post();
$filename = '';
if(isset($this->_pdata['id']) && intval($this->_pdata['id']) > 0) {
list($result, $dataid) = $this->m_upgradepackage->update($this->_pdata);
$packagepath = $this->_pdata['package_path'];
$filename = $this->_pdata['filename'];
} else {
$this->_pdata['package_path'] = $this->upgradepackage_path;
list($result, $dataid, $packagepath) = $this->m_upgradepackage->add($this->_pdata);
$filename = md5($this->_pdata['version']);
}
if($result === 'success') {
$config['upload_path'] = $packagepath;
$config['allowed_types'] = 'zip';
$config['max_size'] = 1024*100;
$config['file_ext_tolower'] = true;
$config['overwrite'] = true;
$config['file_name'] = $filename;
$this->load->library('upload', $config);
if ( !$this->upload->do_upload('file'))
{
// 删除记录
$this->m_upgradepackage->delete(['id'=>$dataid]);
IResponse::responseJson([], 'faild', 'info', $this->upload->display_errors());
return;
} else {
if(isset($this->_pdata['id']) && intval($this->_pdata['id']) > 0) {
IResponse::responseJson([], 'success', 'info', $this->lang->line('update_success'));
} else {
IResponse::responseJson([], 'success', 'info', $this->lang->line('add_success'));
}
return;
}
} else {
IResponse::responseJson([], 'faild', 'info', $result);
}
}
}
有了控制器当然少了一个数据模型啦!在 models 中创建 M_upgradepackage.php
<?php
/**
* @author Tim
* @version 1.0
* @since 1.0
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class M_upgradepackage extends BaseModel
{
private $TBN_SYSTEMMANAGER; // 表名
public function __construct()
{
parent::__construct();
$this->TBN = $this->db->dbprefix('upgradepackage');
$this->TBN_SYSTEMMANAGER = $this->db->dbprefix('systemmanager');
}
/**
* [getPage 获取分页数据]
* @Author Tim
* @param array $filter 过滤条件
* @param int $pagenum 每页显示数量
* @param int $pagenow 当前页码
* @param string $sortby 排序
* @param string $sorttype 排序方式
* @return array
*/
public function getPage(array $filter)
{
$result = array();
if(isset($filter['search'])) {
$this->orLikeFilter($this->db, $this->TBN, 'upgrade_description', $filter['search'])
->orLikeFilter($this->db, $this->TBN, 'package_path', $filter['search'])
->orLikeFilter($this->db, $this->TBN, 'note', $filter['search'])
->orLikeFilter($this->db, $this->TBN, 'version', $filter['search'])
->whereFilter($this->db, $this->TBN, 'system_id', $filter['search']);
}
$this->db->join($this->TBN_SYSTEMMANAGER, $this->TBN_SYSTEMMANAGER.'.id='.$this->TBN.'.system_id', 'left');
$totalrecord = $this->db->count_all_results($this->TBN);
// 处理分页参数
list($pagenum, $sortby, $sorttype, $offset, $result) = $this->pagesFilter($filter, $totalrecord, $result);
if(isset($filter['search'])) {
$this->orLikeFilter($this->db, $this->TBN, 'upgrade_description', $filter['search'])
->orLikeFilter($this->db, $this->TBN, 'package_path', $filter['search'])
->orLikeFilter($this->db, $this->TBN, 'note', $filter['search'])
->orLikeFilter($this->db, $this->TBN, 'version', $filter['search'])
->whereFilter($this->db, $this->TBN, 'system_id', $filter['search']);
}
$this->db->join($this->TBN_SYSTEMMANAGER, $this->TBN_SYSTEMMANAGER.'.id='.$this->TBN.'.system_id', 'left');
$query = $this->db->select($this->TBN.'.*,'.$this->TBN_SYSTEMMANAGER.'.system_name,'.$this->TBN_SYSTEMMANAGER.'.system_flag')->from($this->TBN)->limit($pagenum)->offset($offset)->order_by($sortby, $sorttype)->get();
$result['entitys'] = $query->result_array();
$query->free_result();
return $result;
}
/**
* [add 添加]
* @Author Tim
* @param array $data 添加数据
*
* @return array
*/
public function add($data)
{
$this->db->trans_start();
$verify_result = $this->modelRule($data);
$data['filename'] = md5($data['version']).'.zip';
if($verify_result !== 'success') {
return [$verify_result, 0, ''];
}
if($this->checkPackageVersion($data['version'], $data['system_id'])) {
return [$this->lang->line('upgradepackage_version_exist'), 0, ''];
}
// get system flag
$this->db->select('*')->from($this->TBN_SYSTEMMANAGER)->where('id', $data['system_id']);
$query = $this->db->get();
$systemEntity = $query->row_array();
$query->free_result();
if(empty($systemEntity)) {
return [$this->lang->line('not_found'), 0, ''];
}
$path = $data['package_path'].$systemEntity['system_flag'];
log_message('error', $path.'-->'.json_encode($systemEntity));
if(!is_dir($path) && !mkdir($path, 0777, true)) {
return [$this->lang->line('create_filepath_faild'), 0, ''];
}
$data['package_path'] = $path;
$this->db->insert($this->TBN, $this->getModel($data, 1));
$id = $this->db->insert_id();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('add_faild'), 0, ''];
} else {
return ['success', $id, $path];
}
}
/**
* [detail 详情]
* @Author Tim
* @param array $data 详情数据
*
* @return array
*/
public function detail($data)
{
$id = isset($data['id'])?$data['id']:0;
$this->db->trans_start();
$this->db->select($this->TBN.'.*,'.$this->TBN_SYSTEMMANAGER.'.system_name,'.$this->TBN_SYSTEMMANAGER.'.system_flag')->from($this->TBN);
$this->db->join($this->TBN_SYSTEMMANAGER, $this->TBN_SYSTEMMANAGER.'.id='.$this->TBN.'.system_id', 'left');
$this->db->where($this->TBN.'.id', $data['id']);
$query = $this->db->get();
$result = $query->row_array();
$query->free_result();
return ['success', $result];
}
/**
* [update 修改信息]
* @Author Tim
* @param array $data 修改数据
*
* @return array
*/
public function update($data)
{
$this->db->trans_start();
log_message('error', 'update data:'.json_encode($data));
$id = isset($data['id'])?intval($data['id']):'';
if(empty($id)) {
return [$this->lang->line('illegal_param'), 0, ''];
}
$verify_result = $this->modelRule($data);
if($verify_result !== 'success') {
return [$verify_result, $id];
}
if($this->checkPackageVersion($data['version'], $data['system_id'], $id)) {
return [$this->lang->line('upgradepackage_version_exist'), $id];
}
$this->db->where('id', $id)->update($this->TBN, $this->getModel($data, 2));
$num = $this->db->affected_rows();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('update_faild'), $id, ''];
} else {
return ['success', $id];
}
}
/**
* [delete 删除]
* @Author Tim
* @param int $id 数据ID
*
* @return array
*/
public function delete($data)
{
$id = isset($data['id'])?$data['id']:'';
if(empty($id)) {
return [$this->lang->line('illegal_param'), 0];
}
$entity = $this->findById($id);
if(empty($entity)) {
return [$this->lang->line('not_found'), $id];
}
// get system flag
$this->db->select('*')->from($this->TBN_SYSTEMMANAGER)->where('id', $entity['system_id']);
$query = $this->db->get();
$systemEntity = $query->row_array();
$query->free_result();
$this->db->trans_start();
$this->db->where('id', intval($id))->delete($this->TBN);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('delete_faild'), $id];
} else {
// remove file
$filename = $entity['package_path'].'/'.$systemEntity['system_flag'].'/'.$entity['filename'];
log_message('error', 'delete file:'.$filename);
if(file_exists($filename)) {
@unlink($filename);
}
return ['success', $id];
}
}
/**
* [modelRule 模型规则]
* @Author Tim
* @param [array] $data [参数]
* @return string
*/
private function modelRule($data)
{
if(!isset($data['system_id']) || empty($data['system_id'])) {
return $this->lang->line('system_flag_required');
}
if(!isset($data['version']) || empty($data['version'])) {
return $this->lang->line('upgradepackage_version_required');
}
if(!isset($data['git_version']) || empty($data['git_version'])) {
return $this->lang->line('upgradepackage_git_version_required');
}
return 'success';
}
/**
* [getModel 转换数据模型]
* @Author Tim
* @param [array] $data [前端传入参数]
* @param [int] $action 1=新增 2=修改
* @return [array]
*/
private function getModel($data, $action)
{
$adata = [];
$adata['system_id'] = $data['system_id'];
if($action == 1) {
$adata['package_path'] = $data['package_path'];
$adata['upload_time'] = time();
$adata['filename'] = $data['filename'];
$adata['version'] = $data['version'];
}
$adata['git_version'] = $data['git_version'];
$adata['can_upgrade'] = $data['can_upgrade']=='true'?1:2;
$adata['upgrade_description'] = $data['upgrade_description'];
$adata['note'] = $data['note'];
return $adata;
}
/**
* [checkPackageVersion 检测系统版本号是否存在]
* @Author Tim
* @param string $version 系统版本
* @param string $systemid 系统标识
* @return bool
*/
private function checkPackageVersion($version, $systemid, $id=0)
{
// 验证分组名字是否存在
$query = $this->db->select('id')->from($this->TBN)->where('version', $version)->where('system_id', $systemid);
if($id > 0) {
$query->where('id !=', $id);
}
$query = $query->get();
$entity = $query->result_array();
$query->free_result();
if(empty($entity)) {
return false;
} else {
return true;
}
}
/**
* findById
* 获取用户数据
*
* @access public
* @param int $id 用户id
* @since 1.0
* @return array
*/
public function findById($id)
{
$result = NULL;
$this->db->select('*')->from($this->TBN)->where('id', $id);
$query = $this->db->get();
// 返回多条数据,判定为异常数据
if($query->num_rows() == 1)
{
$result = $query->row_array();
} else {
log_message('error', '返回多条或没有!id='.$id);
}
$query->free_result();
return $result;
}
/**
* [getUpgradePackage 获取更新包]
* @Author Tim
* @param [string] $system_flag [系统标识]
* @param [decimal] $version [当前系统]
* @return [type] [description]
*/
public function getUpgradePackage($system_flag, $version)
{
$this->db->join($this->TBN_SYSTEMMANAGER, $this->TBN_SYSTEMMANAGER.'.id='.$this->TBN.'.system_id', 'left');
$query = $this->db->select($this->TBN.'.*,'.$this->TBN_SYSTEMMANAGER.'.system_name,'.$this->TBN_SYSTEMMANAGER.'.system_flag')
->from($this->TBN)->where($this->TBN_SYSTEMMANAGER.'.system_flag', $system_flag)
->where($this->TBN.'.version >',$version)->where($this->TBN.'.can_upgrade',1)->order_by('version', 'desc')->get();
$result = $query->result_array();
$query->free_result();
return $result;
}
}
为了代码的可重用性,我对控制器与数据模型做了个简单的封装,每个业务控制器与数据模型都要先继承父类;CI框架重写核心类需要在指定目录下创建,我们在前面有提过。所以父类控制器与父类数据模型都放在了 core 下
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class BaseController extends CI_Controller {
public $__needlogin__ = true; // 是否需要验证登录
public $__lang__ = ''; // 当前语言
public $_pdata = [];
public $_ajax_type = 'form'; // form/json
public function __construct()
{
parent::__construct();
// 加载语言包
$this->lang->load('base_lang', $this->__lang__);
// 统一请求方式
if($this->requestMethod()) {
// 是否需要验证登录
if($this->__needlogin__ === false) {
} else {
// 判断是否已登录
if($this->auth->isLogin()) {
// log_message('error', '登录成功');
// 登录成功
// do something
} else {
IResponse::responseJson(['recirect'=>'login'], 'faild', 'redirect', $this->lang->line('illegal_request_without'));
die;
}
}
} else {
IResponse::responseJson(['recirect'=>'login'], 'faild', 'redirect', $this->lang->line('illegal_request'));
die;
}
}
/**
* [reloadLang 重新加载语言]
* @Author Tim
* @return void
*/
public function reloadLang() {
$this->lang->load('base_lang', $this->__lang__);
}
/**
* [requestMethod 纺一请求方式]
* @Author Tim
* @return bool
*/
private function requestMethod()
{
return true; // todo
// 请求方式强制使用ajax
if($this->input->is_ajax_request()) {
return true;
} else {
return false;
}
}
}
<?php
/**
* 父模型
*
* 数据模型父类
* @author Tim
* @version 1.0
* @since 1.0
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class BaseModel extends CI_Model
{
protected $_default_page = 20;
private $_nav_length = 5; // 导航长度
public $TBN = ''; // 默认表名
public function __construct()
{
parent::__construct();
}
/**
* [findById 根据ID查找数据]
* @Author Tim
* @param [int] $id [主键]
* @return array
*/
public function findById($id)
{
$result = NULL;
$this->db->select('*')->from($this->TBN)->where('id',$id);
$query = $this->db->get();
$result = $query->row_array();
$query->free_result();
return $result;
}
/**
* [whereFilter 创建查询条件]
* @Author Tim
* @param object $db 数据库对像
* @param string $prefix 字段名前缀
* @param string $key 字段名
* @return object
*/
protected function whereFilter($db, $prefix, $key, $filter)
{
if(isset($filter[$key]) && !empty($filter[$key])) {
$this->db->where($prefix.'.'.$key, $filter[$key]);
}
return $this;
}
/**
* [pagesFilter 处理分页参数]
* @Author Tim
* @param array $filter 条件参数
* $filter['pagination']['pagesize'] 每页显示条数
* $filter['pagination']['pagenow'] 当前页码
* $filter['pagination']['sortby'] 排序
* $filter['pagination']['sorttype'] 排序方式
* @param int $totalrecord 总数据条数
* @param array $result 分页结果
* @return array
*/
protected function pagesFilter($filter, $totalrecord, $result)
{
$pagesize = intval(isset($filter['pagination']['pagesize'])?$filter['pagination']['pagesize']:100);
$pagenow = intval(isset($filter['pagination']['pagecurrent'])?$filter['pagination']['pagecurrent']:1);
$sortby = isset($filter['pagination']['sortby'])?$filter['pagination']['sortby']:'id';
$sorttype = isset($filter['pagination']['sorttype'])?$filter['pagination']['sorttype']:'desc';
$pagesize = empty($pagesize) ? $this->_default_page : ($pagesize == 999999999999999 ? ($totalrecord == 0 ? 1 : $totalrecord) : $pagesize); // 每页显示数
$totalpage = $totalrecord % $pagesize == 0 ? ($totalrecord / $pagesize == 0 ? 1 : $totalrecord / $pagesize) : ($totalrecord / $pagesize < 1 ? 1 : (floor($totalrecord/$pagesize)+1)); // 总页数
$pagenow = empty($pagenow) ? 1 : (($pagenow >= $totalpage) ? $totalpage : ($pagenow < 1 ? 1 : $pagenow));
$offset = ($pagenow - 1) * $pagesize;
$navstart = $pagenow - 2 <= 1 ? 1 : $pagenow - 2; // 导航页开始码
$navend = (($navstart + $this->_nav_length - 1) > $totalpage) ? $totalpage : ($navstart + $this->_nav_length - 1); // 导航页结束码
$navstart = ($navend - $navstart < $this->_nav_length - 1 && $navend - $this->_nav_length - 1 > 0) ? $navend - $this->_nav_length - 1 : $navstart; // 如果总长度小于导航长度 重新计算起始页
$result['navstart'] = $navstart;
$result['navend'] = $navend;
$result['totalpage'] = $totalpage;
$result['pagenow'] = $pagenow;
$result['pagesize'] = $pagesize;
return [$pagesize, $sortby, $sorttype, $offset, $result];
}
/**
* [likeFilter 创建查询条件]
* @Author Tim
* @param object $db 数据库对像
* @param string $prefix 字段名前缀
* @param string $key 字段名
* @return object
*/
protected function likeFilter($db, $prefix, $key, $filter, $match='both')
{
if(isset($filter['filtervalue']) && !empty($filter['filtervalue'])) {
$this->db->like($prefix.'.'.$key, $filter['filtervalue'], $match);
}
return $this;
}
/**
* [orLikeFilter 创建查询条件]
* @Author Tim
* @param object $db 数据库对像
* @param string $prefix 字段名前缀
* @param string $key 字段名
* @return object
*/
protected function orLikeFilter($db, $prefix, $key, $filter, $match='both')
{
if(isset($filter['filtervalue']) && !empty($filter['filtervalue'])) {
$this->db->or_like($prefix.'.'.$key, $filter['filtervalue'], $match);
}
return $this;
}
}
至此 更新包管理功能已经可以使用了,我们用postman测试下,因为更新包管理还涉及到文件上传,postman对文件上传的测试不方便,所以我把他放在前端代码写好后再测试。
接下来继续写客户端的管理功能,做法与更新包管理功能一样,直接上代码
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Clientmanager extends BaseController {
public function __construct()
{
parent::__construct();
$this->load->model('M_clientmanager',"m_clientmanager"); // 加载模型
}
public function pagelist()
{
$result = $this->m_clientmanager->getPage($this->_pdata);
IResponse::responseJson($result, 'success');
}
public function add()
{
list($result, $dataid) = $this->m_clientmanager->add($this->_pdata);
if($result == 'success') {
IResponse::responseJson([], 'success', 'info', $this->lang->line('add_success'));
} else {
IResponse::responseJson([], 'faild', 'info', $result);
}
}
public function detail()
{
list($result, $data) = $this->m_clientmanager->detail($this->_pdata);
if($result == 'success') {
IResponse::responseJson($data, 'success');
} else {
IResponse::responseJson([], 'faild', 'info', $result);
}
}
public function update()
{
list($result, $dataid) = $this->m_clientmanager->update($this->_pdata);
if($result == 'success') {
IResponse::responseJson([], 'success', 'info', $this->lang->line('update_success'));
} else {
IResponse::responseJson([], 'faild', 'info', $result);
}
}
public function delete()
{
list($result, $dataid) = $this->m_clientmanager->delete($this->_pdata);
if($result == 'success') {
IResponse::responseJson([], 'success', 'info', $this->lang->line('delete_success'));
} else {
IResponse::responseJson([], 'faild', 'info', $result);
}
}
}
<?php
/**
* @author Tim
* @version 1.0
* @since 1.0
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class M_clientmanager extends BaseModel
{
public function __construct()
{
parent::__construct();
$this->TBN = $this->db->dbprefix('clientmanager');
}
/**
* [getPage 获取分页数据]
* @Author Tim
* @param array $filter 过滤条件
* @param int $pagenum 每页显示数量
* @param int $pagenow 当前页码
* @param string $sortby 排序
* @param string $sorttype 排序方式
* @return array
*/
public function getPage(array $filter)
{
$result = array();
if(isset($filter['search'])) {
$this->orLikeFilter($this->db, $this->TBN, 'client_name', $filter['search'])
->orLikeFilter($this->db, $this->TBN, 'client_url', $filter['search']);
}
$totalrecord = $this->db->count_all_results($this->TBN);
// 处理分页参数
list($pagenum, $sortby, $sorttype, $offset, $result) = $this->pagesFilter($filter, $totalrecord, $result);
if(isset($filter['search'])) {
$this->orLikeFilter($this->db, $this->TBN, 'client_name', $filter['search'])
->orLikeFilter($this->db, $this->TBN, 'client_url', $filter['search']);
}
$query = $this->db->select('*')->from($this->TBN)->limit($pagenum)->offset($offset)->order_by($sortby, $sorttype)->get();
$result['entitys'] = $query->result_array();
$query->free_result();
return $result;
}
/**
* [add 添加]
* @Author Tim
* @param array $data 添加数据
*
* @return array
*/
public function add($data)
{
$this->db->trans_start();
$verify_result = $this->modelRule($data);
if($verify_result !== 'success') {
return [$verify_result, 0];
}
$origin = trim(substr($data['client_url'], stripos($data['client_url'], '://')+3), '/');
$data['auth_code'] = md5($origin);
if(!empty($this->findByAuthcode($origin))) {
return [$this->lang->line('clientmanager_url_exist'), 0];
}
$this->db->insert($this->TBN, $this->getModel($data, 1));
$id = $this->db->insert_id();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('add_faild'), 0];
} else {
return ['success', $id];
}
}
/**
* [detail 详情]
* @Author Tim
* @param array $data 详情数据
*
* @return array
*/
public function detail($data)
{
$id = isset($data['id'])?$data['id']:0;
$this->db->trans_start();
$this->db->select($this->TBN.'.*')->from($this->TBN);
$this->db->where($this->TBN.'.id', $id);
$query = $this->db->get();
$result = $query->row_array();
$query->free_result();
return ['success', $result];
}
/**
* [update 修改信息]
* @Author Tim
* @param array $data 修改数据
*
* @return array
*/
public function update($data)
{
$this->db->trans_start();
$id = isset($data['id'])?$data['id']:'';
if(empty($id)) {
return [$this->lang->line('illegal_param'), 0];
}
$verify_result = $this->modelRule($data);
if($verify_result !== 'success') {
return [$verify_result, $id];
}
$this->db->where('id', intval($id))->update($this->TBN, $this->getModel($data, 2));
$num = $this->db->affected_rows();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('update_faild'), 0];
} else {
return ['success', $id];
}
}
/**
* [delete 删除]
* @Author Tim
* @param int $id 数据ID
*
* @return array
*/
public function delete($data)
{
$id = isset($data['id'])?$data['id']:'';
if(empty($id)) {
return [$this->lang->line('illegal_param'), 0];
}
$this->db->trans_start();
$this->db->where('id', intval($id))->delete($this->TBN);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('delete_faild'), 0];
} else {
return ['success', $id];
}
}
/**
* [modelRule 模型规则]
* @Author Tim
* @param [array] $data [参数]
* @return string
*/
private function modelRule($data)
{
if(!isset($data['client_name']) || empty($data['client_name'])) {
return $this->lang->line('clientmanager_client_name_required');
}
if(!isset($data['client_url']) || empty($data['client_url'])) {
return $this->lang->line('clientmanager_client_url_required');
}
if(!isset($data['expire_time']) || empty($data['expire_time'])) {
return $this->lang->line('clientmanager_expire_time_required');
}
if(strtotime($data['expire_time']) - strtotime($data['auth_time']) <= 0) {
return $this->lang->line('clientmanager_expire_time_illegal');
}
return 'success';
}
/**
* [getModel 转换数据模型]
* @Author Tim
* @param [array] $data [前端传入参数]
* @param [int] $action 1=新增 2=修改
* @return [array]
*/
private function getModel($data, $action)
{
$adata = [];
$adata['client_name'] = $data['client_name'];
$adata['client_url'] = $data['client_url'];
$adata['system_flag'] = $data['system_flag'];
if($action == 1) {
$adata['auth_code'] = $data['auth_code'];
}
$adata['expire_time'] = strtotime($data['expire_time']);
$adata['allow_server'] = $data['allow_server'];
$adata['allow_line'] = $data['allow_line'];
$adata['note'] = $data['note'];
return $adata;
}
/**
* [findByAuthcode 根据授权码获取客户端]
* @Author Tim
* @param [string] $authcode [授权码]
* @return [array]
*/
public function findByAuthcode($authcode)
{
$result = NULL;
$this->db->select('*')->from($this->TBN)->where('auth_code', $authcode);
$query = $this->db->get();
$result = $query->row_array();
$query->free_result();
return $result;
}
/**
* findById
* 获取数据
*
* @access public
* @param int $id id
* @since 1.0
* @return array
*/
public function findById($id)
{
$result = NULL;
$this->db->select('*')->from($this->TBN)->where('id', $id);
$query = $this->db->get();
// 返回多条数据,判定为异常数据
if($query->num_rows() == 1)
{
$result = $query->row_array();
} else {
log_message('error', '返回多条或没有!id='.$id);
}
$query->free_result();
return $result;
}
/**
* [updateAuthcode 更新授权码]
* @Author Tim
* @param [int] $id [id]
* @param [array] $udata [更新参数]
* @return bool
*/
public function updateAuthcode($id, $udata)
{
$this->db->where('id', $id)->update($this->TBN,
['auth_code_shadow'=>$udata['auth_code_shadow'], 'init_auth'=>1,
'client_ip'=>$udata['client_ip'], 'auth_time'=>$udata['auth_time']]);
$num = $this->db->affected_rows();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('update_faild'), $id];
} else {
return ['success', $id];
}
}
/**
* [updateVersion 更新版本信息]
* @Author Tim
* @param [int] $id [id]
* @param [decimal] $version [当前版本号]
* @return bool
*/
public function updateVersion($id, $version)
{
$this->db->where('id', $id)->update($this->TBN, ['current_version'=>$version]);
$num = $this->db->affected_rows();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('update_faild'), $id];
} else {
return ['success', $id];
}
}
/**
* [updateStatus 更新状态]
* @Author Tim
* @param [int] $id [id]
* @param [string] $status [状态码]
* @return bool
*/
public function updateStatus($id, $status)
{
$this->db->where('id', $id)->update($this->TBN, ['update_status'=>$status]);
$num = $this->db->affected_rows();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('update_faild'), $id];
} else {
return ['success', $id];
}
}
/**
* [updateDownloadCode 更新下载码]
* @Author Tim
* @param [int] $id [id]
* @param [string] $downloadcode [下载码]
* @param [int] $downloadcodetime [下载码到期时间]
* @return bool
*/
public function updateDownloadCode($id, $downloadcode, $downloadcodetime)
{
$this->db->where('id', $id)->update($this->TBN, ['download_code'=>$downloadcode, 'download_code_time'=>$downloadcodetime]);
$num = $this->db->affected_rows();
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
return [$this->lang->line('update_faild'), $id];
} else {
return ['success', $id];
}
}
}
postman 测试结果
好了,后端业务模块基本上完成了,等前端写完录入基础数据后,再回来写升级那块的逻辑,那部分的逻辑才是这个项目的核心,哈哈。明天开始搭建Vue 开发环境。