|
@@ -1,44 +1,350 @@
|
|
import { Context } from 'koa';
|
|
import { Context } from 'koa';
|
|
import { InterfaceResponseData } from '@utils/response';
|
|
import { InterfaceResponseData } from '@utils/response';
|
|
-import { InterfaceDocument } from '@/controllers/document';
|
|
|
|
-import CODE from '@utils/code';
|
|
|
|
|
|
+import { InterfaceDocument, InterfacePage, InterfaceTag, InterfaceDocumentList } from '@/controllers/document';
|
|
|
|
+import { CODE, decipher, cipher, mapDocMethod } from '@/utils';
|
|
|
|
|
|
const putDocument = async (ctx: Context, params: InterfaceDocument) :Promise<InterfaceResponseData> => {
|
|
const putDocument = async (ctx: Context, params: InterfaceDocument) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
return new Promise(resolve => {
|
|
return new Promise(resolve => {
|
|
- const reData: InterfaceResponseData = {
|
|
|
|
- data: null,
|
|
|
|
- message: '',
|
|
|
|
- success: false,
|
|
|
|
- code: 400000
|
|
|
|
- }
|
|
|
|
ctx.$db.doc.findOne({ url: params.url }, (err, findDoc) => {
|
|
ctx.$db.doc.findOne({ url: params.url }, (err, findDoc) => {
|
|
if (err) {
|
|
if (err) {
|
|
- ctx.$log.error(err)
|
|
|
|
- ctx.status = 500
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
if (findDoc) {
|
|
if (findDoc) {
|
|
- reData.message = 'url已存在'
|
|
|
|
- reData.code = CODE.EXIST_PARAMS
|
|
|
|
- resolve(reData)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- ctx.$db.doc.insert(params, (err, saveDoc) => {
|
|
|
|
|
|
+ reData.message = 'url已存在';
|
|
|
|
+ reData.code = CODE.EXIST_PARAMS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ ctx.$db.tag.findOne({ _id: params.tag }, (err, findTag) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ if (!findTag) {
|
|
|
|
+ reData.message = '版本不存在';
|
|
|
|
+ reData.code = CODE.ERR_PARAMS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ ctx.$db.doc.insert(params, (err, saveDoc) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.data = saveDoc;
|
|
|
|
+ reData.message = '保存成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const getDocument = async (ctx: Context, id: string) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const decodeId = decipher(id);
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
+ ctx.$db.doc.findOne({ _id: decodeId }, (err, findDoc) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ findDoc._id = id;
|
|
|
|
+ findDoc.method_des = mapDocMethod[findDoc.method];
|
|
|
|
+ reData.data = findDoc;
|
|
|
|
+ reData.message = '成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const getDocumentList = async (ctx: Context, params: InterfaceDocumentList) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
+ ctx.$db.doc.find({ tag: params._id }).sort({ url: 1 }).exec((err, docs) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ docs.forEach(el => {
|
|
|
|
+ el._id = cipher(el._id);
|
|
|
|
+ el.method_des = mapDocMethod[el.method];
|
|
|
|
+ });
|
|
|
|
+ reData.data = docs;
|
|
|
|
+ reData.message = '成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ ctx.$db.doc.count({}, (err, count) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.data.total = count;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const deleteDocument = async (ctx: Context, id: string) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const decodeId = decipher(id);
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
+ ctx.$db.doc.remove({ _id: decodeId }, {}, (err) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.data = null;
|
|
|
|
+ reData.message = '删除成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const updateDocument = async (ctx:Context, { _id, tag, ...params }: InterfaceDocument) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const decodeId = decipher(_id || '');
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
+ ctx.$db.tag.findOne({ _id: tag }, (err, findTag) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ if (!findTag) {
|
|
|
|
+ reData.message = '版本不存在';
|
|
|
|
+ reData.code = CODE.ERR_PARAMS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ ctx.$db.doc.update({ _id: decodeId }, { $set: { ...params }}, {}, err => {
|
|
if (err) {
|
|
if (err) {
|
|
- ctx.$log.error(err)
|
|
|
|
- ctx.status = 500
|
|
|
|
- return
|
|
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.data = null;
|
|
|
|
+ reData.message = '更新成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const putTag = async (ctx:Context, params: InterfaceTag) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
+ ctx.$db.tag.findOne({ name: params.name }, (err, findTag) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err)
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ if (findTag) {
|
|
|
|
+ reData.message = '版本已经存在';
|
|
|
|
+ reData.code = CODE.EXIST_PARAMS;
|
|
|
|
+ reData.success = false;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ ctx.$db.tag.insert(params, (err, saveTag) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.data = saveTag;
|
|
|
|
+ reData.message = '保存成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const updateTag = async (ctx:Context, { _id, ...params }: InterfaceTag) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
+ ctx.$db.tag.findOne({ _id }, (err, findTag) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ if (!findTag) {
|
|
|
|
+ reData.message = '数据不存在';
|
|
|
|
+ reData.code = CODE.ERR_PARAMS;
|
|
|
|
+ reData.success = false;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ ctx.$db.tag.findOne({ name: params.name }, (err, findTagName) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (findTagName) {
|
|
|
|
+ reData.message = '版本已经存在';
|
|
|
|
+ reData.code = CODE.EXIST_PARAMS;
|
|
|
|
+ reData.success = false;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
- reData.data = saveDoc;
|
|
|
|
- reData.message = '保存成功'
|
|
|
|
- reData.success = true
|
|
|
|
- reData.code = CODE.SUCCESS
|
|
|
|
- resolve(reData)
|
|
|
|
|
|
+ ctx.$db.tag.update({ _id }, { $set: { ...params }}, {}, err => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.message = '保存成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
})
|
|
})
|
|
- })
|
|
|
|
- })
|
|
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const getTagList = async (ctx: Context, params: InterfacePage) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
+ ctx.$db.tag.find({}).sort({ url: 1 }).skip((params.page - 1) * params.size).limit(params.size).exec((err, tags) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.data = {
|
|
|
|
+ list: tags,
|
|
|
|
+ page: params.page,
|
|
|
|
+ size: params.size
|
|
|
|
+ };
|
|
|
|
+ reData.message = '成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ ctx.$db.tag.count({}, (err, count) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.data.total = count;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const deleteTag = async (ctx: Context, id: string) :Promise<InterfaceResponseData> => {
|
|
|
|
+ const reData: InterfaceResponseData = {
|
|
|
|
+ data: null,
|
|
|
|
+ message: '',
|
|
|
|
+ success: false,
|
|
|
|
+ code: 400000
|
|
|
|
+ };
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
+ ctx.$db.tag.remove({ _id: id }, {}, (err) => {
|
|
|
|
+ if (err) {
|
|
|
|
+ ctx.$log.error(err);
|
|
|
|
+ ctx.status = 500;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ return;
|
|
|
|
+ };
|
|
|
|
+ reData.data = null;
|
|
|
|
+ reData.message = '删除成功';
|
|
|
|
+ reData.success = true;
|
|
|
|
+ reData.code = CODE.SUCCESS;
|
|
|
|
+ resolve(reData);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
};
|
|
};
|
|
|
|
|
|
export default {
|
|
export default {
|
|
- putDocument
|
|
|
|
|
|
+ putDocument,
|
|
|
|
+ getDocument,
|
|
|
|
+ getDocumentList,
|
|
|
|
+ deleteDocument,
|
|
|
|
+ updateDocument,
|
|
|
|
+ putTag,
|
|
|
|
+ updateTag,
|
|
|
|
+ getTagList,
|
|
|
|
+ deleteTag
|
|
}
|
|
}
|