routes.ts 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import express from 'express';
  2. const router = express.Router();
  3. // GET /api/store — 获取门店列表
  4. router.get('/', async (_req, res) => {
  5. try {
  6. const Parse = (globalThis as any).Parse;
  7. const q = new Parse.Query('StoreConfig');
  8. q.ascending('code');
  9. q.limit(100);
  10. const list = await q.find({ useMasterKey: true });
  11. const data = list.map((s: any) => ({
  12. id: s.id,
  13. name: s.get('name'),
  14. code: s.get('code'),
  15. }));
  16. res.json(data);
  17. } catch (e: any) {
  18. // 如果 StoreConfig 表还不存在,返回默认列表
  19. res.json([
  20. { id: 's01', name: '真北北馆一队', code: 'ZB1' },
  21. { id: 's02', name: '真北北馆二队', code: 'ZB2' },
  22. { id: 's03', name: '真北南馆一队', code: 'ZN1' },
  23. { id: 's04', name: '真北南馆二队', code: 'ZN2' },
  24. { id: 's05', name: '浦东一队', code: 'PD1' },
  25. { id: 's06', name: '浦东二队', code: 'PD2' },
  26. { id: 's07', name: '徐汇一队', code: 'XH1' },
  27. { id: 's08', name: '徐汇二队', code: 'XH2' },
  28. { id: 's09', name: '闵行一队', code: 'MH1' },
  29. { id: 's10', name: '闵行二队', code: 'MH2' },
  30. { id: 's11', name: '杨浦一队', code: 'YP1' },
  31. { id: 's12', name: '杨浦二队', code: 'YP2' },
  32. { id: 's13', name: '长宁一队', code: 'CN1' },
  33. { id: 's14', name: '长宁二队', code: 'CN2' },
  34. { id: 's15', name: '虹口一队', code: 'HK1' },
  35. { id: 's16', name: '虹口二队', code: 'HK2' },
  36. { id: 's17', name: '松江一队', code: 'SJ1' },
  37. { id: 's18', name: '松江二队', code: 'SJ2' },
  38. { id: 's19', name: '家装渠道部', code: 'JZ1' },
  39. ]);
  40. }
  41. });
  42. // POST /api/store — 新增门店
  43. router.post('/', async (req, res) => {
  44. try {
  45. const Parse = (globalThis as any).Parse;
  46. const { name, code } = req.body;
  47. if (!name || !code) {
  48. return res.status(400).json({ success: false, error: 'name 和 code 不能为空' });
  49. }
  50. const StoreConfig = Parse.Object.extend('StoreConfig');
  51. const obj = new StoreConfig();
  52. obj.set('name', name);
  53. obj.set('code', code);
  54. const saved = await obj.save(null, { useMasterKey: true });
  55. res.json({ success: true, data: { id: saved.id, name, code } });
  56. } catch (e: any) {
  57. res.status(500).json({ success: false, error: e.message });
  58. }
  59. });
  60. // PUT /api/store/:id — 更新门店
  61. router.put('/:id', async (req, res) => {
  62. try {
  63. const Parse = (globalThis as any).Parse;
  64. const q = new Parse.Query('StoreConfig');
  65. const obj = await q.get(req.params.id, { useMasterKey: true });
  66. const { name, code } = req.body;
  67. if (name) obj.set('name', name);
  68. if (code) obj.set('code', code);
  69. await obj.save(null, { useMasterKey: true });
  70. res.json({ success: true });
  71. } catch (e: any) {
  72. res.status(500).json({ success: false, error: e.message });
  73. }
  74. });
  75. // DELETE /api/store/:id — 删除门店
  76. router.delete('/:id', async (req, res) => {
  77. try {
  78. const Parse = (globalThis as any).Parse;
  79. const q = new Parse.Query('StoreConfig');
  80. const obj = await q.get(req.params.id, { useMasterKey: true });
  81. await obj.destroy({ useMasterKey: true });
  82. res.json({ success: true });
  83. } catch (e: any) {
  84. res.status(500).json({ success: false, error: e.message });
  85. }
  86. });
  87. export default router;