wish.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { mockWishes, type Wish } from './data'
  2. let nextId = 100
  3. export function getWishesByTree(treeId: number, page = 1, pageSize = 20) {
  4. const list = mockWishes
  5. .filter((w) => w.treeId === treeId && w.isPublic)
  6. .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())
  7. const start = (page - 1) * pageSize
  8. return Promise.resolve({
  9. list: list.slice(start, start + pageSize),
  10. total: list.length,
  11. })
  12. }
  13. export function getMyWishes(userId: string, page = 1, pageSize = 20) {
  14. const list = mockWishes
  15. .filter((w) => w.userId === userId)
  16. .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())
  17. const start = (page - 1) * pageSize
  18. return Promise.resolve({
  19. list: list.slice(start, start + pageSize),
  20. total: list.length,
  21. })
  22. }
  23. export function getWishById(id: number) {
  24. const wish = mockWishes.find((w) => w.id === id)
  25. return Promise.resolve(wish || null)
  26. }
  27. export function createWish(data: Omit<Wish, 'id' | 'status' | 'likes' | 'createdAt'>) {
  28. const wish: Wish = {
  29. ...data,
  30. id: nextId++,
  31. likes: 0,
  32. status: 0,
  33. createdAt: new Date().toISOString().replace('T', ' ').substring(0, 19),
  34. }
  35. mockWishes.unshift(wish)
  36. return Promise.resolve(wish)
  37. }
  38. export function deleteWish(id: number) {
  39. const idx = mockWishes.findIndex((w) => w.id === id)
  40. if (idx > -1) {
  41. mockWishes.splice(idx, 1)
  42. return Promise.resolve(true)
  43. }
  44. return Promise.resolve(false)
  45. }
  46. export function likeWish(id: number) {
  47. const wish = mockWishes.find((w) => w.id === id)
  48. if (wish) {
  49. wish.likes++
  50. return Promise.resolve(wish.likes)
  51. }
  52. return Promise.resolve(0)
  53. }