document.ts 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. import { Context } from 'koa';
  2. import { InterfaceResponseData } from '@utils/response';
  3. import { InterfaceDocument, InterfacePage, InterfaceTag, InterfaceDocumentList } from '@/controllers/document';
  4. import { CODE, decipher, cipher, MapDocMethod } from '@/utils';
  5. const putDocument = async (ctx: Context, params: InterfaceDocument) :Promise<InterfaceResponseData> => {
  6. const reData: InterfaceResponseData = {
  7. data: null,
  8. message: '',
  9. success: false,
  10. code: 400000
  11. };
  12. return new Promise(resolve => {
  13. ctx.$db.doc.findOne({ url: params.url }, (err, findDoc) => {
  14. if (err) {
  15. ctx.$log.error(err);
  16. ctx.status = 500;
  17. resolve(reData);
  18. return;
  19. };
  20. if (findDoc) {
  21. reData.message = 'url已存在';
  22. reData.code = CODE.EXIST_PARAMS;
  23. resolve(reData);
  24. return;
  25. };
  26. ctx.$db.tag.findOne({ _id: params.tag }, (err, findTag) => {
  27. if (err) {
  28. ctx.$log.error(err);
  29. ctx.status = 500;
  30. resolve(reData);
  31. return;
  32. };
  33. if (!findTag) {
  34. reData.message = '版本不存在';
  35. reData.code = CODE.ERR_PARAMS;
  36. resolve(reData);
  37. return;
  38. };
  39. ctx.$db.doc.insert(params, (err, saveDoc) => {
  40. if (err) {
  41. ctx.$log.error(err);
  42. ctx.status = 500;
  43. resolve(reData);
  44. return;
  45. };
  46. reData.data = saveDoc;
  47. reData.message = '保存成功';
  48. reData.success = true;
  49. reData.code = CODE.SUCCESS;
  50. resolve(reData);
  51. });
  52. });
  53. });
  54. });
  55. };
  56. const getDocument = async (ctx: Context, id: string) :Promise<InterfaceResponseData> => {
  57. const decodeId = decipher(id);
  58. const reData: InterfaceResponseData = {
  59. data: null,
  60. message: '',
  61. success: false,
  62. code: 400000
  63. };
  64. return new Promise(resolve => {
  65. ctx.$db.doc.findOne({ _id: decodeId }, (err, findDoc) => {
  66. if (err) {
  67. ctx.$log.error(err);
  68. ctx.status = 500;
  69. resolve(reData);
  70. return;
  71. };
  72. findDoc._id = id;
  73. findDoc.method_des = MapDocMethod[findDoc.method];
  74. reData.data = findDoc;
  75. reData.message = '成功';
  76. reData.success = true;
  77. reData.code = CODE.SUCCESS;
  78. resolve(reData);
  79. });
  80. });
  81. };
  82. const getDocumentList = async (ctx: Context, params: InterfaceDocumentList) :Promise<InterfaceResponseData> => {
  83. const reData: InterfaceResponseData = {
  84. data: null,
  85. message: '',
  86. success: false,
  87. code: 400000
  88. };
  89. return new Promise(resolve => {
  90. ctx.$db.doc.find({ tag: params._id }).sort({ url: 1 }).exec((err, docs) => {
  91. if (err) {
  92. ctx.$log.error(err);
  93. ctx.status = 500;
  94. resolve(reData);
  95. return;
  96. };
  97. docs.forEach(el => {
  98. el._id = cipher(el._id);
  99. el.method_des = MapDocMethod[el.method];
  100. console.log(MapDocMethod[el.method]);
  101. });
  102. reData.data = docs;
  103. reData.message = '成功';
  104. reData.success = true;
  105. reData.code = CODE.SUCCESS;
  106. ctx.$db.doc.count({}, (err, count) => {
  107. if (err) {
  108. ctx.$log.error(err);
  109. ctx.status = 500;
  110. resolve(reData);
  111. return;
  112. };
  113. reData.data.total = count;
  114. resolve(reData);
  115. });
  116. });
  117. });
  118. };
  119. const deleteDocument = async (ctx: Context, id: string) :Promise<InterfaceResponseData> => {
  120. const decodeId = decipher(id);
  121. const reData: InterfaceResponseData = {
  122. data: null,
  123. message: '',
  124. success: false,
  125. code: 400000
  126. };
  127. return new Promise(resolve => {
  128. ctx.$db.doc.remove({ _id: decodeId }, {}, (err) => {
  129. if (err) {
  130. ctx.$log.error(err);
  131. ctx.status = 500;
  132. resolve(reData);
  133. return;
  134. };
  135. reData.data = null;
  136. reData.message = '删除成功';
  137. reData.success = true;
  138. reData.code = CODE.SUCCESS;
  139. resolve(reData);
  140. });
  141. });
  142. };
  143. const updateDocument = async (ctx:Context, { _id, tag, ...params }: InterfaceDocument) :Promise<InterfaceResponseData> => {
  144. const decodeId = decipher(_id || '');
  145. const reData: InterfaceResponseData = {
  146. data: null,
  147. message: '',
  148. success: false,
  149. code: 400000
  150. };
  151. return new Promise(resolve => {
  152. ctx.$db.tag.findOne({ _id: tag }, (err, findTag) => {
  153. if (err) {
  154. ctx.$log.error(err);
  155. ctx.status = 500;
  156. resolve(reData);
  157. return;
  158. };
  159. if (!findTag) {
  160. reData.message = '版本不存在';
  161. reData.code = CODE.ERR_PARAMS;
  162. resolve(reData);
  163. return;
  164. };
  165. ctx.$db.doc.update({ _id: decodeId }, { $set: { ...params }}, {}, err => {
  166. if (err) {
  167. ctx.$log.error(err);
  168. ctx.status = 500;
  169. resolve(reData);
  170. return;
  171. };
  172. reData.data = null;
  173. reData.message = '更新成功';
  174. reData.success = true;
  175. reData.code = CODE.SUCCESS;
  176. resolve(reData);
  177. });
  178. });
  179. });
  180. };
  181. const putTag = async (ctx:Context, params: InterfaceTag) :Promise<InterfaceResponseData> => {
  182. const reData: InterfaceResponseData = {
  183. data: null,
  184. message: '',
  185. success: false,
  186. code: 400000
  187. };
  188. return new Promise(resolve => {
  189. ctx.$db.tag.findOne({ name: params.name }, (err, findTag) => {
  190. if (err) {
  191. ctx.$log.error(err)
  192. ctx.status = 500;
  193. resolve(reData);
  194. return;
  195. };
  196. if (findTag) {
  197. reData.message = '版本已经存在';
  198. reData.code = CODE.EXIST_PARAMS;
  199. reData.success = false;
  200. resolve(reData);
  201. return;
  202. };
  203. ctx.$db.tag.insert(params, (err, saveTag) => {
  204. if (err) {
  205. ctx.$log.error(err);
  206. ctx.status = 500;
  207. resolve(reData);
  208. return;
  209. };
  210. reData.data = saveTag;
  211. reData.message = '保存成功';
  212. reData.success = true;
  213. reData.code = CODE.SUCCESS;
  214. resolve(reData);
  215. });
  216. });
  217. });
  218. };
  219. const updateTag = async (ctx:Context, { _id, ...params }: InterfaceTag) :Promise<InterfaceResponseData> => {
  220. const reData: InterfaceResponseData = {
  221. data: null,
  222. message: '',
  223. success: false,
  224. code: 400000
  225. };
  226. return new Promise(resolve => {
  227. ctx.$db.tag.findOne({ _id }, (err, findTag) => {
  228. if (err) {
  229. ctx.$log.error(err);
  230. ctx.status = 500;
  231. resolve(reData);
  232. return;
  233. };
  234. if (!findTag) {
  235. reData.message = '数据不存在';
  236. reData.code = CODE.ERR_PARAMS;
  237. reData.success = false;
  238. resolve(reData);
  239. return;
  240. };
  241. ctx.$db.tag.findOne({ name: params.name }, (err, findTagName) => {
  242. if (err) {
  243. ctx.$log.error(err);
  244. ctx.status = 500;
  245. resolve(reData);
  246. return;
  247. }
  248. if (findTagName) {
  249. reData.message = '版本已经存在';
  250. reData.code = CODE.EXIST_PARAMS;
  251. reData.success = false;
  252. resolve(reData);
  253. return;
  254. }
  255. ctx.$db.tag.update({ _id }, { $set: { ...params }}, {}, err => {
  256. if (err) {
  257. ctx.$log.error(err);
  258. ctx.status = 500;
  259. resolve(reData);
  260. return;
  261. };
  262. reData.message = '保存成功';
  263. reData.success = true;
  264. reData.code = CODE.SUCCESS;
  265. resolve(reData);
  266. });
  267. })
  268. });
  269. });
  270. };
  271. const getTagList = async (ctx: Context, params: InterfacePage) :Promise<InterfaceResponseData> => {
  272. const reData: InterfaceResponseData = {
  273. data: null,
  274. message: '',
  275. success: false,
  276. code: 400000
  277. };
  278. return new Promise(resolve => {
  279. ctx.$db.tag.find({}).sort({ url: 1 }).skip((params.page - 1) * params.size).limit(params.size).exec((err, tags) => {
  280. if (err) {
  281. ctx.$log.error(err);
  282. ctx.status = 500;
  283. resolve(reData);
  284. return;
  285. };
  286. reData.data = {
  287. list: tags,
  288. page: params.page,
  289. size: params.size
  290. };
  291. reData.message = '成功';
  292. reData.success = true;
  293. reData.code = CODE.SUCCESS;
  294. ctx.$db.tag.count({}, (err, count) => {
  295. if (err) {
  296. ctx.$log.error(err);
  297. ctx.status = 500;
  298. resolve(reData);
  299. return;
  300. };
  301. reData.data.total = count;
  302. resolve(reData);
  303. });
  304. });
  305. });
  306. };
  307. const deleteTag = async (ctx: Context, id: string) :Promise<InterfaceResponseData> => {
  308. const reData: InterfaceResponseData = {
  309. data: null,
  310. message: '',
  311. success: false,
  312. code: 400000
  313. };
  314. return new Promise(resolve => {
  315. ctx.$db.tag.remove({ _id: id }, {}, (err) => {
  316. if (err) {
  317. ctx.$log.error(err);
  318. ctx.status = 500;
  319. resolve(reData);
  320. return;
  321. };
  322. reData.data = null;
  323. reData.message = '删除成功';
  324. reData.success = true;
  325. reData.code = CODE.SUCCESS;
  326. resolve(reData);
  327. });
  328. });
  329. };
  330. export default {
  331. putDocument,
  332. getDocument,
  333. getDocumentList,
  334. deleteDocument,
  335. updateDocument,
  336. putTag,
  337. updateTag,
  338. getTagList,
  339. deleteTag
  340. }