123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- 'use strict';
- // 基类控制器
- const BaseController = require('../base.js');
- /**
- * [exports 继承基类控制骂]
- * @type {[type]}
- */
- module.exports = class ManagerController extends BaseController {
- /**
- * [useModel 当前使用的模型]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- get useModel() {
- throw new Error('未实现使用的模型定义,请检查');
- }
- /**
- * [createValidate 增的验证器]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- get createValidate() {
- throw new Error('未实现数据添加的验证器,请检查');
- }
- /**
- * [useModelPk 模型主键]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- get modelPk() {
- const that = this;
- const keys = Object.keys((that.useModel).primaryKeys);
- if (keys.length > 0) return keys[0];
- throw new Error('未找到模型主键,请检查');
- }
- /**
- * [modelName 模型名称]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- get modelName() {
- return '数据';
- }
- /**
- * [pkValidate 主键验证器]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- get pkValidate() {
- const that = this;
- const pkRules = {};
- pkRules[that.modelPk] = that.ctx.rules.name('主键字段')
- .required()
- .number();
- return pkRules;
- }
- /**
- * [selectValidate 数据查找验证器]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- get selectValidate() {
- const that = this;
- const selectRules = {
- page: that.ctx.rules.default(1)
- .number(),
- limit: that.ctx.rules.default(20)
- .number(),
- };
- const primary_key = that.modelPk;
- selectRules[primary_key] = that.ctx.rules.default(0)
- .number();
- return selectRules;
- }
- /**
- * [create 增]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- async create() {
- const that = this;
- try {
- const data = await that.ctx.validate(that.createValidate, await that.ctx.postParse());
- const createBean = that.app.comoBean.instance(data);
- const result = await that.service.manager.create(createBean, that.useModel, `${that.modelName}添加失败,请稍候重试`);
- return that.ctx.appJson(that.app.szjcomo.appResult('SUCCESS', result, false));
- } catch (err) {
- return that.ctx.appJson(that.app.szjcomo.appResult(err.message));
- }
- }
- /**
- * [delete 删]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- async delete() {
- const that = this;
- try {
- const data = await that.ctx.validate(that.deleteValidate || that.pkValidate, await that.ctx.anyParse());
- const primary_key = that.modelPk;
- const options = { where: {} };
- options.where[primary_key] = data[primary_key];
- const deleteBean = that.app.comoBean.instance(data, options);
- const result = await that.service.manager.delete(deleteBean, that.useModel, `${that.modelName}删除失败,请稍候重试`);
- return that.ctx.appJson(that.app.szjcomo.appResult('SUCCESS', result, false));
- } catch (err) {
- return that.ctx.appJson(that.app.szjcomo.appResult(err.message));
- }
- }
- /**
- * [update 改]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- async update() {
- const that = this;
- try {
- const data = await that.ctx.validate(that.updateValidate || that.pkValidate, await that.ctx.anyParse());
- const primary_key = that.modelPk;
- const admin_id = that.service.manager.ActionAdminUserId();
- data.admin_id = admin_id;
- const options = { where: {}, fields: Object.keys(data) };
- options.where[primary_key] = data[primary_key];
- const updateBean = that.app.comoBean.instance(data, options);
- const result = await that.service.manager.update(updateBean, that.useModel, `${that.modelName}更新失败,请稍候重试`);
- return that.ctx.appJson(that.app.szjcomo.appResult('SUCCESS', result, false));
- } catch (err) {
- return that.ctx.appJson(that.app.szjcomo.appResult(err.message));
- }
- }
- /**
- * [select 查]
- * @author szjcomo
- * @date 2020-11-02
- * @return {[type]} [description]
- */
- async select() {
- const that = this;
- try {
- const data = await that.ctx.validate(that.selectValidate, await that.ctx.anyParse());
- const primary_key = that.modelPk;
- let options = { where: {} };
- if (that.selectOptions instanceof Function) {
- options = await that.selectOptions(data);
- } else {
- if (data[primary_key]) {
- options.where[primary_key] = data[primary_key];
- } else {
- options = { offset: (data.page - 1) * data.limit, limit: data.limit };
- }
- }
- const selectBean = that.app.comoBean.instance(data, options);
- const count = (!data[primary_key]);
- const result = await that.service.manager.select(selectBean, that.useModel, `${that.modelName}查询失败,请稍候重试`, count, count);
- return that.ctx.appJson(that.app.szjcomo.appResult('SUCCESS', result, false));
- } catch (err) {
- return that.ctx.appJson(that.app.szjcomo.appResult(err.message));
- }
- }
- };
|