[2016-10-24]
目标:凭借accessToken来添加一条账目
对应接口item/add
创建基类
完成json默认输出格式
实现json输出函数,$data每次必传,msg,code可以缺省
header("Content-type: application/json");
defined('BASEPATH') OR exit('No direct script access allowed');
class BaseController extends CI_Controller {
protected function json_output($data, $msg = '加载成功', $code = 200){
echo json_encode(array('code' => $code, 'msg' => $msg,'data' => $data));
}
}
调用示例
引入BaseController.php
继承之
起一个add方法,输出一个标准json
require_once 'BaseController.php';
class Item extends BaseController {
public function add() {
$this->json_output(array(), '成功', 200);
}
}
账目保存数据库
1.建表
CREATE TABLE `item` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(32) DEFAULT NULL,
`cate` varchar(32) DEFAULT NULL,
`account` decimal(10,1) DEFAULT NULL,
`date` date DEFAULT NULL,
`uid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2.对accessToken进行认证
声明一个auth的私有方法,在构造函数__construct()中调用,如果认证通过返回true,使得程序继续执行;失败则输出json错误提示信息,不再执行,退出程序。
protected $uid;
/**
* 构造函数,子类如Item控制器会自动调用它
*/
function __construct() {
parent::__construct();
$this->auth();
}
/**
* 认证,拿到accessToken,表明用户是已授权微信登录的用户,该accessToken缓存在小程序侧
*/
private function auth(){
$accessToken = $this->input->get('accessToken');
$query = $this->db->query("select * from user where accessToken = '$accessToken'");
if ($query->num_rows() > 0) {
$this->uid = $query->first_row()->uid;
return true;
}
$this->json_output(array(), '认证失败', 401);
exit;
}
3.控制器add方法写入数据库
public function add() {
$data = $this->input->get();
unset($data['accessToken']);
$data['uid'] = $this->uid;
if ($this->db->insert('item', $data)) {
return $this->json_output(array(), '添加成功', 200);
}
}
4.依样画葫芦,完成CRUD的其他操作,注意访问权限,不可跨用户操作
public function del(){
$id = $this->input->get('id');
$this->db->delete('item', array('id'=>$id, 'uid'=>$this->uid));
if ($this->db->affected_rows() > 0) {
$this->json_output(array(), '删除成功', 200);
} else {
$this->json_output(array(), '权限不足', 400);
}
}
public function view(){
$id = $this->input->get('id');
$query = $this->db->get_where('item', array('id' => $id, 'uid' => $this->uid));
if ($query->num_rows() > 0) {
$this->json_output($query->first_row(), '加载成功', 200);
} else {
$this->json_output(array(), '权限不足', 400);
}
}
public function update() {
$data = $this->input->get();
unset($data['accessToken']);
$query = $this->db->get_where('item', array('id' => $data['id'], 'uid' => $this->uid));
if ($query->num_rows() > 0) {
if ($this->db->update('item', $data, array('id'=>$data['id']))) {
$this->json_output(array(), '修改成功', 200);
}
} else {
$this->json_output(array(), '权限不足', 400);
}
}
public function all(){
$query = $this->db->get_where('item', array('uid'=>$this->uid));
$this->json_output($query->result(), '加载成功', 200);
}
附:
接口规范:1.用户登录
user/login
参数:openid
返回uid nickname accessToken
2.添加一条账目,accessToken均需要入参,下同
item/add
入参:title,cate,account,date
返回是否成功
3.读取一条账目
入参:id
返回
id,title,cate,account,date
4.修改一条账目
item/edit
入参:id,title,cate,account,date
5.删除一条账目
入参:id
6.读取自己的账目
item/all
入参:除accessToken无
源码下载:关注下方的公众号->回复数字1009
对小程序开发有趣的朋友关注公众号: huangxiujie85,QQ群: 575136499,微信: small_application,陆续还将推出更多作品。