网址整理
视频教程地址:
https://www.ixigua.com/7017702820048536071
后端接口仓库地址:
https://gitee.com/maoshushare/fast-todolist
第一节 项目计划和准备工作
项目简介
本项目是一个fastadmin+微信小程序的实战案例,一个简单的todolist任务管理功能,包括后台数据增删改查、数据统计、api接口开发(小程序对接登录、小程序端管理数据)等。
功能比较简单,覆盖到的知识点不会太多,适合初学者,尤其适合没有做过小程序和fa结合使用的同学。
为便于大家利用碎片时间学习,每节课的时间会尽量控制在10分钟左右。
效果截图
本项目是模仿滴答清单的部分功能,大概界面是这样:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6vrVqSwq-1641880230864)(https://cdn.jsdelivr.net/gh/978165754/picgo@master/blog/20211011104255.png)]
项目计划
本项目制作思路:
- 1.先制作基础的后端api部分。
- 2.再制作小程序界面。
- 3.小程序对接api,打通基本功能。
- 4.缺少的api一边补充一边对接。
准备工作
- 1.准备工具:VsCode(或phpStorm)、phpStudy、chrome浏览器(或Edge)、微信小程序开发工具、apipost
- 2.下载fastadmin框架代码(https://gitee.com/maoshushare/fastmodel)
- 3.导入mysql数据库,配置环境,启动项目
第二节 登录和自动注册api
验证字段必填
先引入Validate,use think\Validate;
$rule = [
'openid' => 'require|length:10,30'
];
$msg = [
'openid.require' => '缺少openid',
'openid.length' => 'openid长度不符合',
];
$v = new Validate($rule,$msg);
登录和注册
如果已经存在,则登录,不存在则先注册,然后再自动登录
api相关的拓展教程:https://www.bilibili.com/video/BV1Ji4y1V7ZV?p=11
$post=$this->request->param();
if (!$v->check($post)) {
$this->error('登录失败:' . $v->getError());
}
$u = model('admin/User')->where('openid',$post["openid"])->find();
if($u){
Token::clear($u["id"]);
$this->auth->direct($u["id"]);
$this->success('登录成功', $this->auth->getUserinfo());
}
else{
$username = $post["openid"];
// 初始密码给一个随机数
$password = Random::alnum(15);
$this->auth->register($username,$password,'','',[
"openid"=>$post["openid"]
]);
$this->success('注册成功', $this->auth->getUserinfo());
}
第三节 创建数据表 生成crud
创建数据表:todo
字段:
userid task status tags prio desc
todotime
donetime
giveuptime
createtime updatetime deletetime
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LNJbJLnN-1641880230868)(https://cdn.jsdelivr.net/gh/978165754/picgo@master/blog/20211012141903.png)]
一键生成CRUD
第四节 编写增删改查api
新建一个控制器Xcxtodo,专门写关于任务控制的api
增加 和 修改
增加和修改写在一起,方便维护
增加
$this->model
->allowField(true)
->save([
"userid"=>$this->uid,
"tags"=>"测试",
"task"=>"测试3331232233",
]);
修改
$this->model
->allowField([
"task"
])
->save([
"task"=>"89898",
],["id"=>20]);
删除
根据任务id删除(软删除)
关于软删除的文档说明:https://www.kancloud.cn/manual/thinkphp5/189658
$this->model->get($id)->delete();
$this->model->destroy($id);
查询
-
根据关键词查询任务内容(模糊查询)
$task = input("task"); $where=[ "userid"=>$this->uid, ]; if($task){ $where["task"]=["like","%$task%"]; } $list = $this->model->where($where)->select();
处理标签id为标签文字
$tags = model('admin/Todotags')->where([ "userid"=>$this->uid, ])->column('tags','id'); foreach ($list as $key => &$value) { $tagsArr = explode(',',$value["tags"]); $tagsNameArr = []; foreach ($tagsArr as $id) { $tagsNameArr[] = $tags[$id] ?? $id; } $value["tagsName"] = implode(',',$tagsNameArr); }
-
根据关键词查询标签
$tags = input("tags"); $where=[ "userid"=>$this->uid, ]; if($tags){ $where["tags"]=["like","%$tags%"]; } $list = $this->model->where($where)->group("tags")->column("tags");
改为专表之后:
$tags = input("tags"); $where=[ "userid"=>$this->uid, ]; if($tags){ $where["tags"]=["like","%$tags%"]; } $list = model('admin/Todotags')->where($where)->select();
-
根据标签查询任务
$tags = input("tags"); $where=[ "userid"=>$this->uid, ]; if($tags){ $where["tags"]=$tags; } $list = $this->model->where($where)->select();
改为专表之后:
注意exp的写法(https://www.kancloud.cn/manual/thinkphp5/135182)$tags = input("tags"); $where=[ "userid"=>$this->uid, ]; $list = $this->model ->where($where); if($tags)