_img.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import { MockRequest, MockStatusError } from '@delon/mock';
  2. import { deepCopy } from '@delon/util';
  3. import { genMp } from './utils';
  4. interface ImgCat {
  5. id: number;
  6. parent_id: number;
  7. title: string;
  8. }
  9. interface Img {
  10. cat_id: number;
  11. id: number;
  12. title: string;
  13. mp: string;
  14. size: number;
  15. width: number;
  16. height: number;
  17. created: Date;
  18. }
  19. const CAT: ImgCat[] = [
  20. { id: 1, parent_id: 0, title: '店铺' },
  21. { id: 2, parent_id: 1, title: '产品图' },
  22. { id: 3, parent_id: 1, title: '品牌图' },
  23. { id: 4, parent_id: 0, title: '营销' },
  24. { id: 5, parent_id: 4, title: '双11' },
  25. { id: 6, parent_id: 4, title: '日常' },
  26. { id: 7, parent_id: 0, title: '其他' },
  27. ];
  28. const DATA: Img[] = [];
  29. for (let i = 1; i <= 50; i += 1) {
  30. DATA.push(gen(i));
  31. }
  32. function gen(i: number): any {
  33. return {
  34. cat_id: [1, 2, 3, 4, 5, 6, 7][Math.floor(Math.random() * 10) % 7],
  35. id: i * 10000,
  36. title: `title ${i}`,
  37. mp: genMp(),
  38. size: Math.floor(Math.random() * 1000) % 1000,
  39. width: Math.floor(Math.random() * 1000) % 1000,
  40. height: Math.floor(Math.random() * 1000) % 1000,
  41. created: new Date(),
  42. };
  43. }
  44. function get(params: any): any {
  45. let ret = deepCopy(DATA);
  46. const cat_id = +(params.cat_id || '0');
  47. if (cat_id > 0) {
  48. ret = ret.filter((data: any) => data.cat_id === cat_id);
  49. }
  50. if (params.q) {
  51. ret = ret.filter((data: any) => data.title.indexOf(params.q) > -1);
  52. }
  53. return ret;
  54. }
  55. function getIdx(id: number): number {
  56. id = +id;
  57. const idx = DATA.findIndex((w) => w.id === id);
  58. if (idx === -1) {
  59. throw new MockStatusError(404);
  60. }
  61. return idx;
  62. }
  63. export const IMGS = {
  64. '/img/cat': () => deepCopy(CAT),
  65. '/img': (req: MockRequest) => {
  66. const pi = +(req.queryString.pi || 1);
  67. const ps = +(req.queryString.ps || 10);
  68. const data = get(req.queryString);
  69. return {
  70. total: data.length,
  71. list: data.slice((pi - 1) * ps, pi * ps),
  72. };
  73. },
  74. 'POST /img': (req: MockRequest) => {
  75. const id = req.body.id || 0;
  76. if (id > 0) {
  77. const idx = getIdx(id);
  78. DATA[idx] = { ...DATA[idx], ...req.body };
  79. return { msg: 'ok', item: DATA[idx] };
  80. }
  81. const item = Object.assign(gen(DATA.sort((a, b) => b.id - a.id)[0].id + 1), req.body);
  82. DATA.push(item);
  83. return { msg: 'ok', item };
  84. },
  85. '/img/:id': (req: MockRequest) => {
  86. const idx = getIdx(req.params.id || 0);
  87. const item = { ...DATA[idx], ...req.body };
  88. return item;
  89. },
  90. 'DELETE /img/:id': (req: MockRequest) => {
  91. const idx = getIdx(req.params.id || 0);
  92. DATA.splice(idx, 1);
  93. return { msg: 'ok' };
  94. },
  95. };