reviewApi.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /**
  2. * 商品评价 API(与 miniprogram `src/api/reviewApi.ts` 路径与语义一致)
  3. */
  4. import { API_URL } from '@/config/api'
  5. import { request, parseResponseJson } from '@/utils/request'
  6. /**
  7. * 获取商品评价列表
  8. */
  9. export function fetchProductReviews(productId, params) {
  10. return new Promise((resolve, reject) => {
  11. if (!productId) {
  12. reject(new Error('missing productId'))
  13. return
  14. }
  15. request({
  16. url: `${API_URL.PRODUCT_REVIEWS}/${productId}`,
  17. method: 'GET',
  18. data: params || {}
  19. })
  20. .then((res) => {
  21. const body = parseResponseJson(res)
  22. if (body && body.code === 200) {
  23. resolve(body.data)
  24. } else {
  25. uni.showToast({ title: (body && body.message) || '获取评价列表失败', icon: 'none' })
  26. reject(body)
  27. }
  28. })
  29. .catch((err) => {
  30. uni.showToast({ title: (err && err.message) || '网络请求失败', icon: 'none' })
  31. reject(err)
  32. })
  33. })
  34. }
  35. /**
  36. * 提交评价
  37. */
  38. export function fetchCreateReview(data) {
  39. return new Promise((resolve, reject) => {
  40. request({
  41. url: API_URL.CREATE_REVIEW,
  42. method: 'POST',
  43. data
  44. })
  45. .then((res) => {
  46. const body = parseResponseJson(res)
  47. if (body && body.code === 200) {
  48. uni.showToast({ title: '评价提交成功', icon: 'success' })
  49. resolve(body.data)
  50. } else {
  51. uni.showToast({ title: (body && body.message) || '评价提交失败', icon: 'none' })
  52. reject(body)
  53. }
  54. })
  55. .catch((err) => {
  56. uni.showToast({ title: (err && err.message) || '网络请求失败', icon: 'none' })
  57. reject(err)
  58. })
  59. })
  60. }
  61. /**
  62. * 点赞评价
  63. */
  64. export function fetchLikeReview(reviewId) {
  65. return new Promise((resolve, reject) => {
  66. request({
  67. url: API_URL.REVIEW_LIKE(reviewId),
  68. method: 'POST'
  69. })
  70. .then((res) => {
  71. const body = parseResponseJson(res)
  72. if (body && body.code === 200) {
  73. resolve(body.data)
  74. } else {
  75. uni.showToast({ title: (body && body.message) || '点赞失败', icon: 'none' })
  76. reject(body)
  77. }
  78. })
  79. .catch((err) => {
  80. uni.showToast({ title: (err && err.message) || '网络请求失败', icon: 'none' })
  81. reject(err)
  82. })
  83. })
  84. }
  85. /**
  86. * 获取商品评价统计
  87. */
  88. export function fetchReviewStatistics(productId) {
  89. return new Promise((resolve, reject) => {
  90. request({
  91. url: API_URL.REVIEW_STATISTICS(productId),
  92. method: 'GET'
  93. })
  94. .then((res) => {
  95. const body = parseResponseJson(res)
  96. if (body && body.code === 200) {
  97. resolve(body.data)
  98. } else {
  99. uni.showToast({ title: (body && body.message) || '获取评价统计失败', icon: 'none' })
  100. reject(body)
  101. }
  102. })
  103. .catch((err) => {
  104. uni.showToast({ title: (err && err.message) || '网络请求失败', icon: 'none' })
  105. reject(err)
  106. })
  107. })
  108. }