## 数据库设计
```mysql
DROP DATABASE IF EXISTS lost;
CREATE DATABASE lost;
use lost;
DROP TABLE IF EXISTS `think_event`;
CREATE TABLE `think_event`
(
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`user_id` int(11) COMMENT '用户ID',
`type` varchar(10) NOT NULL COMMENT '事件类型:lost|found',
`title` varchar(50) NOT NULL COMMENT '事件标题',
`linkman` varchar(50) NOT NULL COMMENT '联系人',
`mobile` varchar(50) NOT NULL COMMENT '联系电话',
`create_time` int(11) COMMENT '事件发生时间',
`image_ids` varchar(500) COMMENT '关联的图片ID串',
`tags` varchar(500) COMMENT 'tags',
`address` varchar(500) COMMENT '事件发生的地点',
`description` TEXT COMMENT '简要描述',
`status` int(11) COMMENT '状态',
`finished` int(11) COMMENT '事件已经结束?',
`deleted` int(11) DEFAULT 0 COMMENT '事件被发布人取消?'
) ENGINE = InnoDB
DEFAULT CHARSET = utf8 COMMENT ='失物招领事件表';
DROP TABLE IF EXISTS `think_image`;
CREATE TABLE IF NOT EXISTS `think_image`
(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id自增',
`storage` varchar(50) NOT NULL,
`path` varchar(255) NOT NULL DEFAULT '' COMMENT '路径',
`base_url` varchar(255) NOT NULL DEFAULT '' COMMENT '图片链接',
`md5` char(32) NOT NULL DEFAULT '' COMMENT '文件md5',
`create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE = MyISAM
DEFAULT CHARSET = utf8
AUTO_INCREMENT = 1;
--
-- 表的结构 `think_user`
--
/*用户基础信息,记录登陆账号信息*/
DROP TABLE IF EXISTS `think_user`;
CREATE TABLE `think_user`
(
`id` int(10) AUTO_INCREMENT PRIMARY KEY NOT NULL,
`username` varchar(50) NOT NULL,
`user_type` varchar(50) NOT NULL DEFAULT 'user', #注册用户的类型,user,school,student,teacher,company
`mobile` varchar(11) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`password` varchar(32) NOT NULL,
`encrypt` varchar(10) NOT NULL,
`avator_id` int DEFAULT 0 COMMENT '头像在image库中的ID',
`last_login_time` int DEFAULT 0,
`last_login_ip` varchar(50) DEFAULT '',
`login_count` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '登录次数',
`login_fail_count` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '登录失败次数',
`deletable` tinyint(2) NOT NULL DEFAULT 0 COMMENT '可删除,默认不可删除',
`status` tinyint(2) NOT NULL DEFAULT 1 COMMENT '状态,默认激活',
`deleted_flag` int NOT NULL DEFAULT 0,
`create_time` int NOT NULL DEFAULT 0,
`create_ip` varchar(50) NOT NULL DEFAULT ''
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
--
-- 转存表中的数据 `think_user`
-- password:123456
--
INSERT INTO `think_user` (`id`, `username`, `password`, `encrypt`)
VALUES (1, 'admin', 'ce9ac4724c59b5167ae89ecc345a57c9', 'Cc6bSCcc3N'),
(2, 'guest', 'ce9ac4724c59b5167ae89ecc345a57c9', 'Cc6bSCcc3N'),
(3, 'user', 'ce9ac4724c59b5167ae89ecc345a57c9', 'Cc6bSCcc3N');
/*用户的会员信息*/
DROP TABLE IF EXISTS `think_user_member`;
CREATE TABLE `think_user_member`
(
`uid` int NOT NULL,
`puid` int NOT NULL DEFAULT 0,
`invitation_code` VARCHAR(6) NULL DEFAULT NULL COMMENT '邀请码',
`qq` varchar(15) DEFAULT NULL,
`github` varchar(100) DEFAULT NULL,
`zhihu` varchar(100) DEFAULT NULL,
`weibo` varchar(100) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
INSERT INTO `think_user_member` (`uid`, `puid`, `invitation_code`)
VALUES (1, 0, 'ROOT12'),
(2, 0, 'ADMIN1'),
(3, 0, 'USER12');
```
## 修改配置文件
修改`/src/config/adapter.js`,设置数据库连接
```js
/**
* model adapter config
* @type {Object}
*/
exports.model = {
type: 'mysql',
common: {
logConnect: isDev,
logSql: isDev,
logger: msg => think.logger.info(msg)
},
mysql: {
handle: mysql,
database: 'lost',
prefix: 'think_',
encoding: 'utf8',
host: '127.0.0.1',
port: '3306',
user: 'root',
password: 'root',
dateStrings: true
}
};
```
## 添加测试数据
文件:src/controller/index.js
```js
const Base = require('./base.js');
const Mock = require('mockjs');
module.exports = class extends Base {
indexAction() {
return this.display();
}
async mockAction() {
if (this.isPost) {
//生成模拟数据
let mockOption = {
'data|20': [
{
'type|1': ['lost', 'found'], //事件类型
'user_id': 1,
'title|1': '@ctitle(10,20)', //学校名称
'address': '@county(true)', //学校地址
'image_ids': "1,2,3",
"linkman": '@cname()',
"mobile": /^1[38][1-9]\d{8}/, //联系电话
"create_time": "@integer(1547394126,1557762084)", //时间戳(秒)
"status": 1,
"finished": 0,
'description': '@cparagraph(10,20)', //介绍
}],
};
let data = await Mock.mock(mockOption);
//删除已有的数据
await this.model('event').where(true).delete();
//添加新的模拟数据
// for (let item of data.data) {
// await this.model('event').add(item);
// }
await this.model('event').addMany(data.data);
data = await this.model('event').select();
return this.success(data);
}
}
};
```
> 执行测试mockAction,添加测试数据
使用RESTer浏览器插件等发送POST请求执行 `http://localhost:8360/index/mock`。
![](https://box.kancloud.cn/b96971c5eff04cc4ac34d2d59a27fc72_1014x356.png)
生成的模拟数据样本
![](https://box.kancloud.cn/5a6bc82294cc8e2f9fa89309b4eadc9c_1172x429.png)
- 内容介绍
- EcmaScript基础
- 快速入门
- 常量与变量
- 字符串
- 函数的基本概念
- 条件判断
- 数组
- 循环
- while循环
- for循环
- 函数基础
- 对象
- 对象的方法
- 函数
- 变量作用域
- 箭头函数
- 闭包
- 高阶函数
- map/reduce
- filter
- sort
- Promise
- 基本对象
- Arguments 对象
- 剩余参数
- Map和Set
- Json基础
- RegExp
- Date
- async
- callback
- promise基础
- promise-api
- promise链
- async-await
- 项目实践
- 标签系统
- 远程API请求
- 面向对象编程
- 创建对象
- 原型继承
- 项目实践
- Classes
- 构造函数
- extends
- static
- 项目实践
- 模块
- import
- export
- 项目实践
- 第三方扩展库
- immutable
- Vue快速入门
- 理解MVVM
- Vue中的MVVM模型
- Webpack+Vue快速入门
- 模板语法
- 计算属性和侦听器
- Class 与 Style 绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 组件注册
- Prop
- 自定义事件
- 插槽
- 混入
- 过滤器
- 项目实践
- 标签编辑
- 移动客户端开发
- uni-app基础
- 快速入门程序
- 单页程序
- 底部Tab导航
- Vue语法基础
- 模版语法
- 计算属性与侦听器
- Class与Style绑定
- 样式与布局
- Box模型
- Flex布局
- 内置指令
- 基本指令
- v-model与表单
- 条件渲染指令
- 列表渲染指令v-for
- 事件与自定义属性
- 生命周期
- 项目实践
- 学生实验
- 贝店商品列表
- 加载更多数据
- 详情页面
- 自定义组件
- 内置组件
- 表单组件
- 技术专题
- 状态管理vuex
- Flyio
- Mockjs
- SCSS
- 条件编译
- 常用功能实现
- 上拉加载更多数据
- 数据加载综合案例
- Teaset UI组件库
- Teaset设计
- Teaset使用基础
- ts-tag
- ts-badge
- ts-button
- ta-banner
- ts-list
- ts-icon
- ts-load-more
- ts-segmented-control
- 代码模版
- 项目实践
- 标签组件
- 失物招领客户端原型
- 发布页面
- 检索页面
- 详情页面
- 服务端开发技术
- 服务端开发环境配置
- Koajs快速入门
- 快速入门
- 常用Koa中间件介绍
- 文件上传
- RestfulApi
- 一个复杂的RESTful例子
- 使用Mockjs生成模拟数据
- Thinkjs快速入门
- MVC模式
- Thinkjs介绍
- 快速入门
- RESTful服务
- RBAC案例
- 关联模型
- 应用开发框架
- 服务端开发
- PC端管理界面开发
- 移动端开发
- 项目实践
- 失物招领项目
- 移动客户端UI设计
- 服务端设计
- 数据库设计
- Event(事件)
- 客户端设计
- 事件列表页面
- 发布页面
- 事件详情页面
- API设计
- image
- event
- 微信公众号开发
- ui设计规范