小程序教程

微信小程序记账应用实例课程(三)服务端实现账目CRUD

字号+ 作者: 来源: 2016-11-23 09:49 我要评论( )

目标:凭借accessToken来添加一条账目

对应接口item/add

创建基类

完成json默认输出格式

实现json输出函数,$data每次必传,msg,code可以缺省

  1. <?php
  2. header("Content-type: application/json");
  3. defined('BASEPATH') OR exit('No direct script access allowed');

  4. class BaseController extends CI_Controller {
  5.     protected function json_output($data, $msg = '加载成功', $code = 200){
  6.         echo json_encode(array('code' => $code, 'msg' => $msg,'data' => $data));
  7.     }
  8. }
复制代码

调用示例

引入BaseController.php

继承之

起一个add方法,输出一个标准json

  1. <?php
  2. require_once 'BaseController.php';

  3. class Item extends BaseController {
  4.     public function add() {
  5.         $this->json_output(array(), '成功', 200);
  6.     }
  7. }
复制代码

账目保存数据库

1.建表

  1. CREATE TABLE `item` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `title` varchar(32) DEFAULT NULL,
  4.   `cate` varchar(32) DEFAULT NULL,
  5.   `account` decimal(10,1) DEFAULT NULL,
  6.   `date` date DEFAULT NULL,
  7.   `uid` int(11) DEFAULT NULL,
  8.   PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
复制代码

2.对accessToken进行认证

声明一个auth的私有方法,在构造函数__construct()中调用,如果认证通过返回true,使得程序继续执行;失败则输出json错误提示信息,不再执行,退出程序。

  1.     //     缓存uid
  2.     protected $uid;

  3. /**
  4.      * 构造函数,子类如Item控制器会自动调用它
  5.      */
  6.     function __construct() {
  7.         parent::__construct();
  8.         $this->auth();
  9.     }

  10.     /**
  11.      * 认证,拿到accessToken,表明用户是已授权微信登录的用户,该accessToken缓存在小程序侧
  12.      */
  13.     private function auth(){
  14.         $accessToken = $this->input->get('accessToken');
  15.         //         查询数据库,是否有此用户
  16.         $query = $this->db->query("select * from user where accessToken = '$accessToken'");
  17.         if ($query->num_rows() > 0) {
  18.             $this->uid = $query->first_row()->uid;
  19.             return true;
  20.         }
  21.         $this->json_output(array(), '认证失败', 401);
  22.         //         如果没有查询到,直接结束程序,不必走正常控制器方法如item/add的json输出
  23.         exit;
  24.     }
复制代码

3.控制器add方法写入数据库

  1. //     添加账目
  2.     public function add() {
  3. //         取到数组
  4.         $data = $this->input->get();
  5. //         移除accessToken,因不被添加到数据表
  6.         unset($data['accessToken']);
  7. //         添加uid
  8.         $data['uid'] = $this->uid;
  9. //         写入数据库
  10.         if ($this->db->insert('item', $data)) {
  11.     //         返回结果
  12.             return $this->json_output(array(), '添加成功', 200);
  13.         }
  14.     }
复制代码

4.依样画葫芦,完成CRUD的其他操作,注意访问权限,不可跨用户操作


  1.     //     删除账目
  2.     public function del(){
  3.         //         获取id
  4.         $id = $this->input->get('id');
  5.         //         数据库中删除。需依据id与uid,保证资源的合法性,只删除自己的账目
  6.         $this->db->delete('item', array('id'=>$id, 'uid'=>$this->uid));
  7.         if ($this->db->affected_rows() > 0) {
  8.             $this->json_output(array(), '删除成功', 200);
  9.         } else {
  10.             $this->json_output(array(), '权限不足', 400);
  11.         }
  12.     }

  13.     //     读取账目
  14.     public function view(){
  15.         //获取id
  16.         $id = $this->input->get('id');
  17.         //查询数据库
  18.         $query = $this->db->get_where('item', array('id' => $id, 'uid' => $this->uid));
  19.         if ($query->num_rows() > 0) {
  20.             //         输出账目
  21.             $this->json_output($query->first_row(), '加载成功', 200);
  22.         } else {
  23.             $this->json_output(array(), '权限不足', 400);
  24.         }
  25.     }

  26.     //     修改账目
  27.     public function update() {
  28.         //         获取提交进来的参数
  29.         $data = $this->input->get();
  30.         //         移除accessToken,因不被添加到数据表
  31.         unset($data['accessToken']);
  32. //         先判断资源所属
  33.         $query = $this->db->get_where('item', array('id' => $data['id'], 'uid' => $this->uid));
  34.         if ($query->num_rows() > 0) {
  35.             // 更新数据库
  36.             if ($this->db->update('item', $data, array('id'=>$data['id']))) {
  37.                 $this->json_output(array(), '修改成功', 200);
  38.             }
  39.         } else {
  40.             $this->json_output(array(), '权限不足', 400);
  41.         }
  42.     }

  43.     //     账目列表
  44.     public function all(){
  45.         //         查询该用户下的所有账目
  46.         $query = $this->db->get_where('item', array('uid'=>$this->uid));
  47.         $this->json_output($query->result(), '加载成功', 200);
  48.     }
复制代码

附:

接口规范: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无


 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 微信小程序 轮播图 swiper图片组件

    微信小程序 轮播图 swiper图片组件

    2016-11-23 09:49

  • 微信小程序 开发 微信开发者工具 快捷键

    微信小程序 开发 微信开发者工具 快捷键

    2016-11-23 09:49

  • 微信小程序 页面跳转 传递参数

    微信小程序 页面跳转 传递参数

    2016-11-23 09:49

  • 微信小程序 如何获取时间

    微信小程序 如何获取时间

    2016-11-23 09:49

网友点评