博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序记账应用实例课程(三)服务端实现账目CRUD
阅读量:5920 次
发布时间:2019-06-19

本文共 3265 字,大约阅读时间需要 10 分钟。

hot3.png

[2016-10-24]

如图1

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

对应接口item/add

##创建基类

完成json默认输出格式

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

$code, 'msg' => $msg,'data' => $data)); }}

##调用示例

引入BaseController.php

继承之

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

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群: 581513218,微信: small_application,陆续还将推出更多作品。

公众号

转载于:https://my.oschina.net/huangxiujie/blog/774780

你可能感兴趣的文章
怎么把无线由器限
查看>>
Java实现的冒泡排序
查看>>
APP中的第三方“支付”功能该如何测试
查看>>
HDU 1907
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
SQL Over
查看>>
shell 批量压缩指定文件夹及子文件夹内图片
查看>>
TextGrocery中文文本分类处理
查看>>
WinForm 之 自定义标题栏的窗体移动
查看>>
PHP合并数组+与array_merge的区别
查看>>
可汗学院超经典、超实用概率论总结——商女不知忘国恨,隔江犹看概率论
查看>>
ftoa浮点型转换成字符串
查看>>
翻译:MariaDB wait/nowait
查看>>
使用Costura.Fody将源DLL合并到目标EXE
查看>>
今年暑假不AC
查看>>
sql语句中----删除表数据drop、truncate和delete的用法
查看>>
Office2010从第三页开始设置页码
查看>>
想知道Java与内存的关系?这篇文章全部告诉你
查看>>