├── php-api/ # 改造后的PHP接口层 ├── java-ad-service/ # 若依框架微服务(广告+VIP+分账) ├── uniapp-reader/ # UniApp前端项目 │ ├── pages/ # 各端页面 │ └──
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

readingService.js 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { request } from '@/utils/request'
  2. export const readingService = {
  3. // 保存阅读进度
  4. async saveProgress(progress) {
  5. // 本地保存
  6. const key = `progress_${progress.novelId}_${progress.chapterId}`
  7. uni.setStorageSync(key, JSON.stringify(progress))
  8. // 用户登录时同步到服务器
  9. if (uni.getStorageSync('token')) {
  10. try {
  11. await request({
  12. url: '/reading/progress',
  13. method: 'POST',
  14. data: progress,
  15. headers: {
  16. 'Content-Type': 'application/json',
  17. 'Authorization': `Bearer ${uni.getStorageSync('token')}`
  18. }
  19. })
  20. } catch (e) {
  21. console.error('进度同步失败', e)
  22. }
  23. }
  24. },
  25. // 获取阅读进度
  26. async getProgress(novelId, chapterId) {
  27. // 优先从本地获取
  28. const key = `progress_${novelId}_${chapterId}`
  29. const localData = uni.getStorageSync(key)
  30. if (localData) {
  31. return JSON.parse(localData)
  32. }
  33. // 用户登录时从服务器获取
  34. if (uni.getStorageSync('token')) {
  35. try {
  36. const res = await request({
  37. url: `/reading/progress?novelId=${novelId}&chapterId=${chapterId}`,
  38. method: 'GET',
  39. headers: {
  40. 'Authorization': `Bearer ${uni.getStorageSync('token')}`
  41. }
  42. })
  43. if (res.data.success) {
  44. return res.data.data
  45. }
  46. } catch (e) {
  47. console.error('进度获取失败', e)
  48. }
  49. }
  50. return null
  51. },
  52. // 同步所有本地进度
  53. async syncAllLocalProgress() {
  54. if (!uni.getStorageSync('token')) return
  55. const allKeys = uni.getStorageInfoSync().keys
  56. const progressKeys = allKeys.filter(key => key.startsWith('progress_'))
  57. for (const key of progressKeys) {
  58. const progress = JSON.parse(uni.getStorageSync(key))
  59. try {
  60. await request({
  61. url: '/reading/progress',
  62. method: 'POST',
  63. data: progress,
  64. headers: {
  65. 'Content-Type': 'application/json',
  66. 'Authorization': `Bearer ${uni.getStorageSync('token')}`
  67. }
  68. })
  69. // 同步成功后移除本地记录
  70. uni.removeStorageSync(key)
  71. } catch (e) {
  72. console.error(`进度同步失败: ${key}`, e)
  73. }
  74. }
  75. }
  76. }