热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

[2016-10-24]目标:凭借accessToken来添加一条账目对应接口itemadd创建基类完成json默认输出格式实现json输出函数,$data每次必传,msg,code可以缺省<

[2016-10-24]

如图1

目标:凭借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错误提示信息,不再执行,退出程序。

    // 缓存uid
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);
// 如果没有查询到,直接结束程序,不必走正常控制器方法如item/add的json输出
exit;
}

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

// 添加账目
public function add() {
// 取到数组
$data = $this->input->get();
// 移除accessToken,因不被添加到数据表
unset($data['accessToken']);
// 添加uid
$data['uid'] = $this->uid;
// 写入数据库
if ($this->db->insert('item', $data)) {
// 返回结果
return $this->json_output(array(), '添加成功', 200);
}
}

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


// 删除账目
public function del(){
// 获取id
$id = $this->input->get('id');
// 数据库中删除。需依据id与uid,保证资源的合法性,只删除自己的账目
$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
$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();
// 移除accessToken,因不被添加到数据表
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,陆续还将推出更多作品。

公众号


推荐阅读
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 微信小程序实现简易计算器功能_javascript技巧
    这篇文章主要为大家详细介绍了微信小程序实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的 ... [详细]
  • 微信小程序自定义组件与页面的相互传参
    这篇文章主要为大家介绍了微信小程序自定义组件与页面的相互传参过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • 本文介绍了ASP.NET Core MVC的入门及基础使用教程,根据微软的文档学习,建议阅读英文文档以便更好理解,微软的工具化使用方便且开发速度快。通过vs2017新建项目,可以创建一个基础的ASP.NET网站,也可以实现动态网站开发。ASP.NET MVC框架及其工具简化了开发过程,包括建立业务的数据模型和控制器等步骤。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • 微信小程序地图实现展示线路的方法
    这篇文章将为大家详细讲解有关微信小程序地图实现展示线路的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所 ... [详细]
  • 今天就跟大家聊聊有关怎么在微信小程序中监听全局变量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇 ... [详细]
  • 微信小程序工具库类lottie是千自学中一篇关于微信小程序的文章简介:lottie-miniprogramlottie动画库适配小程序的版本。lottie的相关介绍与动画生成方法等请参考 官方说明依赖小程序基础库版本>2.8.0的环境使用可参考该代码片段:http ... [详细]
author-avatar
和寧世杰471
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有