cxos-node-frame
Version:
适用于中小型企业项目快速全栈开发框架
127 lines (115 loc) • 3.45 kB
JavaScript
// ================================================
// PS.请不要把这里的接口暴露APP用户角色使用,仅能给后台管理人员使用。
// 除非开发的系统安全性很低的情况下可适当放出查询业务相关接口,保存数据的接口一定不要暴露!!!!
// 除非你不想干了!!!!
// ================================================
module.exports = (builder) => {
const RestAPI = require("../base/restapi")()
const BaseService = require('../service/baseService')(builder)
const JWTUtils = require("../utils/jwtUtils")(builder)
/**
* 顶级controller层
*/
class BaseController {
/**
* 获取当前操作用户信息
* @param ctx
* @returns {{}|*}
*/
getCurrentUser(ctx){
return JWTUtils.verify(ctx.header['authorization'] || ctx.query['Authorization'])
}
/**
* 获取当前操作用户ID
* @param cxt
* @returns {string|*}
*/
getCurrentUserId(cxt){
const user = this.getCurrentUser(cxt)
if (user) return user.id
return ''
}
/**
* 根据ID和表名称取数据
* @param ctx
* @param next
* @returns {Promise<void>}
*/
async getById(ctx, next) {
const { id, _t } = ctx.request.body
const result = await new BaseService().getById(id, _t)
ctx.body = JSON.stringify(new RestAPI(result))
}
/**
* 根据ID和表名称删除数据
* @param ctx
* @param next
* @returns {Promise<void>}
*/
async removeById(ctx, next) {
const { id, _t } = ctx.request.body
const result = await new BaseService().removeById(id, _t)
ctx.body = JSON.stringify(new RestAPI(result))
}
/**
* 根据ID数组和表名称批量删除数据
* @param ctx
* @param next
* @returns {Promise<void>}
*/
async removeByIds(ctx, next) {
const { ids, _t } = ctx.request.body
const result = await new BaseService().removeByIds(ids, _t)
ctx.body = JSON.stringify(new RestAPI(result))
}
/**
* 保存数据
* @param ctx
* @param next
* @returns {Promise<void>}
*/
async saveOrUpdate(ctx, next) {
const userId = new BaseController().getCurrentUserId(ctx)
const _t = ctx.request.body['_t']
const result = await new BaseService().saveOrUpdate(ctx.request.body, _t, userId)
ctx.body = JSON.stringify(new RestAPI(result))
}
/**
* 批量保存数据
* @param ctx
* @param next
* @returns {Promise<void>}
*/
async saveOrUpdateBatch(ctx,next){
const userId = new BaseController().getCurrentUserId(ctx)
const _t = ctx.request.body['_t']
const datas = ctx.request.body['datas']
const result = await new BaseService().saveOrUpdateBatch(datas, _t, userId)
ctx.body = JSON.stringify(new RestAPI(result))
}
/**
* 执行单表分页
* @param ctx
* @param next
* @returns {Promise<void>}
*/
async fetchList(ctx, next) {
const body = ctx.request.body
const result = await new BaseService().fetchList(body)
ctx.body = JSON.stringify(new RestAPI(result))
}
/**
* 执行单表查询列表
* @param ctx
* @param next
* @returns {Promise<void>}
*/
async findList(ctx, next) {
const body = ctx.request.body
const result = await new BaseService().findList(body)
ctx.body = JSON.stringify(new RestAPI(result))
}
}
return BaseController
}