Skip to content

Commit

Permalink
增加统一响应格式方法
Browse files Browse the repository at this point in the history
  • Loading branch information
EvanLiu2968 committed Oct 6, 2019
1 parent 07c2fa1 commit f867972
Show file tree
Hide file tree
Showing 18 changed files with 174 additions and 72 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
node_modules
uploadFile
.idea
logs
run
8 changes: 8 additions & 0 deletions app/contract/request/auth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
'use strict';

module.exports = {
loginRequest: {
account: { type: 'string', required: true, description: '登录帐号,用户手机号码或手机邮箱' },
password: { type: 'string', required: true, description: '登录密码' },
},
};
8 changes: 8 additions & 0 deletions app/contract/request/base.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
'use strict';

module.exports = {
baseRequest: {
page: { type: 'number', default: 1 },
size: { type: 'number', default: 10 },
},
};
File renamed without changes.
5 changes: 3 additions & 2 deletions app/contract/response/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

module.exports = {
baseResponse: {
result: { type: 'boolean', required: true },
errorMessage: { type: 'string' },
code: { type: 'number', required: true, default: 0 },
message: { type: 'string', default: '请求成功' },
data: { type: 'object', default: null },
},
};
4 changes: 2 additions & 2 deletions app/contract/response/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
module.exports = {
queryUserResponse: {
users: { type: 'array', itemType: 'user' },
pageNo: { type: 'integer' },
pageSize: { type: 'integer' },
page: { type: 'integer' },
size: { type: 'integer' },
totalCount: { type: 'integer' },
},
getUserResponse: {
Expand Down
22 changes: 10 additions & 12 deletions app/controller/login.js → app/controller/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,51 +3,49 @@
const Controller = require('egg').Controller;

/**
* @controller LoginController 用户权鉴
* @controller AuthController 用户权鉴
*/
class LoginController extends Controller {

/**
* @summary 用户登录
* @router post /v1/login
* @request body createUserRequest *body
* @router post /v1/auth/login
* @request body loginRequest *body
* @response 200 baseResponse 创建成功
*/
async login() {
const { ctx, service } = this;
// 校验参数
ctx.validate(ctx.rule.createUserRequest);
ctx.validate(ctx.rule.loginRequest);

let user = ctx.request.body;

ctx.body = await service.user.createUser(user);
ctx.setSuccess(null);

}

/**
* @summary 用户退出登录
* @router get /v1/logout
* @router get /v1/auth/logout
* @response 200 baseResponse 操作成功
*/
async logout() {
const { ctx, service } = this;

let pageNo = Number(ctx.query.pageNo || 1);
let pageSize = Number(ctx.query.pageSize || 20);

ctx.body = await service.user.queryUser(pageNo, pageSize);
ctx.setSuccess(null);
}

/**
* @summary 获取登录用户信息
* @description 获取登录用户信息
* @router get /v1/getUser
* @router get /v1/auth/getUser
* @response 200 getUserResponse 用户信息
*/
async getUser() {
const { ctx, service } = this;

ctx.body = await service.user.getUser(0);
const data = await service.user.getUser(1);
ctx.setSuccess(data);
}

}
Expand Down
13 changes: 6 additions & 7 deletions app/controller/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,31 +19,30 @@ class CommonController extends Controller {
* @summary 获取幸运礼包
* @description 随机抽取一个神秘礼包,最高500万代金券哦
* @Deprecated
* @router get /v1/getMoney
* @router get /v1/common/getMoney
* @response 200 giftResponse 成功获得一个幸运礼包
*/
async getGift() {
const { ctx } = this;
ctx.body = {
ctx.setSuccess({
message: '谢谢惠顾',
coupon: null,
};
});
}

/**
* @summary 上传文件
* @router post /v1/upload
* @router post /v1/common/upload
* @request formData file *file
* @response 200 uploadResponse 上传的文件信息
*/
async upload() {
const { ctx, service } = this;

const stream = await ctx.getFileStream();
const id = stream.fields.id;
const origin = ctx.origin;

ctx.body = await service.common.uploadFile(origin, id, stream);
const data = await service.common.uploadFile(stream);
ctx.setSuccess(data);
}
}
module.exports = CommonController;
22 changes: 9 additions & 13 deletions app/controller/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class GroupController extends Controller {

/**
* @summary 新增用户组
* @router post /v1/createGroup
* @router post /v1/group/createGroup
* @request body createGroupRequest *body
* @response 200 createGroupResponse 创建成功
*/
Expand All @@ -20,28 +20,24 @@ class GroupController extends Controller {

let group = ctx.request.body;

ctx.body = await service.group.createGroup(group);

const data = await service.group.createGroup(group);
ctx.setSuccess(data);
}

/**
* @summary 获取用户组列表
* @router get /v1/groups
* @request query integer pageNo 页码 默认 1
* @request query integer pageSize 单页数量 默认 10
* @router get /v1/group/getGroups
* @request query integer page 页码 默认 1
* @request query integer size 单页数量 默认 10
* @response 200 getGroupResponse 用户组信息
*/
async getGroups() {
const { ctx, service } = this;

const query = {};

let pageNo = Number(ctx.query.pageNo || 1);
let pageSize = Number(ctx.query.pageSize || 10);
query.offset = (pageNo - 1) * pageSize;
query.limit = pageSize;
const query = ctx.formatPager(ctx.query);

ctx.body = await service.group.queryGroup(query);
const data = await service.group.queryGroup(query);
ctx.setSuccess(data, query);
}

}
Expand Down
43 changes: 21 additions & 22 deletions app/controller/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class UserController extends Controller {
/**
* @summary 创建用户
* @description 创建用户,记录用户账户/密码/类型
* @router post /v1/users
* @router post /v1/user/createUser
* @request body createUserRequest *body
* @response 200 baseResponse 创建成功
*/
Expand All @@ -21,47 +21,44 @@ class UserController extends Controller {

let user = ctx.request.body;

ctx.body = await service.user.createUser(user);

const data = await service.user.createUser(user);
ctx.setSuccess(data);
}

/**
* @summary 获取用户
* @description 分页获取用户信息
* @router get /v1/users
* @request query integer pageNo 页码 默认 1
* @request query integer pageSize 单页数量 默认 10
* @summary 获取用户列表
* @router get /v1/user/getUsers
* @request query integer page 页码 默认 1
* @request query integer size 单页数量 默认 10
* @response 200 queryUserResponse successed
*/
async query() {
const { ctx, service } = this;
const query = {};
let pageNo = Number(ctx.query.pageNo || 1);
let pageSize = Number(ctx.query.pageSize || 10);
query.offset = (pageNo - 1) * pageSize;
query.limit = pageSize;

ctx.body = await service.user.queryUser(query);
const query = ctx.formatPager(ctx.query);

const data = await service.user.queryUser(query);
ctx.setSuccess(data, query);
}

/**
* @summary 获取用户
* @description 获取用户信息
* @router get /v1/users/{id}
* @summary 根据id获取用户
* @router get /v1/user/getUserById/{id}
* @request path string *id
* @response 200 getUserResponse 用户信息
*/
async get() {
const { ctx, service } = this;
let id = ctx.params.id;

ctx.body = await service.user.getUser(id);
const data = await service.user.getUser(id);
ctx.setSuccess(data);
}

/**
* @summary 删除用户
* @description 删除用户信息
* @router delete /v1/users/{id}
* @router delete /v1/user/deleteUser/{id}
* @request path string *id
* @response 200 baseResponse 删除成功
*/
Expand All @@ -70,13 +67,14 @@ class UserController extends Controller {

let id = ctx.params.id;

ctx.body = await service.user.delUser(id);
const data = await service.user.delUser(id);
ctx.setSuccess(data);
}

/**
* @summary 更新用户
* @description 创建用户,记录用户账户/密码/类型
* @router put /v1/users/{id}
* @router put /v1/user/updateUser/{id}
* @request path string *id
* @request body updateUserRequest *body
* @response 200 user 更新成功
Expand All @@ -87,7 +85,8 @@ class UserController extends Controller {
// 校验参数
ctx.validate(ctx.rule.updateUserRequest);

ctx.body = await service.user.updateUser(id, ctx.request.body);
const data = await service.user.updateUser(id, ctx.request.body);
ctx.setSuccess(data);
}

}
Expand Down
84 changes: 84 additions & 0 deletions app/extend/context.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
'use strict';

/*
* 统一接口返回数据模型
*/
const codeMsg = {
0: '请求成功',
// 系统异常错误 01-10
1: '服务异常',
// 请求参数错误 11-20
11: '请求参数为空',
12: '请求参数错误',
// 权限错误 21-30
21: '您尚未登录,请登录后继续操作',
22: '您没有权限访问',
23: '签名验证错误',
24: 'Token已失效',
25: 'Session已失效',
26: '您的账号在其它地方登录,请重新登录或者修改密码',
// 预留错误类型 31-50
31: '未知错误',
// 表单/参数校验错误 51+
51: '用户信息不存在',
52: '用户名已存在',
53: '手机号已存在',
54: '邮箱已存在',
55: '用户未激活',
56: '用户未激活',
57: '用户已禁用',
58: '用户已冻结',
59: '用户已注销',
61: '用户名或密码错误',
62: '验证码错误',
63: '两次输入密码不一致',
64: '姓名与身份证号码不匹配',
};
// this === ctx
module.exports = {
setResponse(code, data, message) {
const ctx = this;
code = code || 0;
message = message || codeMsg[code];
data = data || null;
ctx.status = 200;
ctx.body = {
code: code,
message: message,
data,
};
},
setSuccess(data, query) {
const ctx = this;
if (query && query.limit) {
const { offset = 0, limit = 10 } = query;
data = {
page: offset / limit + 1,
size: limit,
total: data ? data.count : 0,
records: data ? data.rows : [],
};
}
ctx.setResponse(0, data);
},
setError(e) {
const ctx = this;
ctx.setResponse(1);
if (e) {
console.log(e.stack);
ctx.logger.error(e.stack);
}
},
setDeny() {
const ctx = this;
ctx.setResponse(22);
},
formatPager(query = {}) {
let page = Number(query.page || 1);
let size = Number(query.size || 10);
return {
offset: (page - 1) * size,
limit: size,
};
},
};
2 changes: 2 additions & 0 deletions app/model/file.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,7 @@ module.exports = app => {
create_time: DATE,
});

File.sync({ alter: true });

return File;
};
2 changes: 2 additions & 0 deletions app/model/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,7 @@ module.exports = app => {
app.model.User.hasMany(app.model.UserGroup, { as: 'group' });
};

User.sync({ alter: true });

return User;
};
Loading

0 comments on commit f867972

Please sign in to comment.