From 0584b8b323a75b470399c89e12a2f7c047da2624 Mon Sep 17 00:00:00 2001 From: leiyun Date: Tue, 11 May 2021 15:18:28 +0800 Subject: [PATCH] fix bug --- .../java/com/yzx/webebook/MainActivity.kt | 8 +- .../yzx/webebook/activity/PDFViewActivity.kt | 23 +++-- .../yzx/webebook/activity/ReadActivity.java | 22 +++-- .../com/yzx/webebook/activity/WebActivity.kt | 8 ++ .../main/java/com/yzx/webebook/model/Book.kt | 1 + .../yzx/webebook/presenter/ReadPresenter.java | 88 ++++++++++++++----- .../com/yzx/webebook/presenter/ReadView.java | 1 + 7 files changed, 111 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/com/yzx/webebook/MainActivity.kt b/app/src/main/java/com/yzx/webebook/MainActivity.kt index 9f3b0ea..224baa2 100644 --- a/app/src/main/java/com/yzx/webebook/MainActivity.kt +++ b/app/src/main/java/com/yzx/webebook/MainActivity.kt @@ -50,7 +50,9 @@ class MainActivity : BaseActivity(),ReadView { Config.APP_NAME = "家校互通(测试)" Config.BASE_URL = "http://192.168.69.99:9009" Config.M_URL = "http://192.168.69.99:8098" - User.clearUserInfo() + if (BuildConfig.BUILD_TYPE != "debug") { + User.clearUserInfo() + } startActivity() } btn3.setOnClickListener { @@ -201,5 +203,9 @@ class MainActivity : BaseActivity(),ReadView { // startActivity("book_id" to "xxjs") + } + + override fun onProgressSuccess(progress: Float) { + } } diff --git a/app/src/main/java/com/yzx/webebook/activity/PDFViewActivity.kt b/app/src/main/java/com/yzx/webebook/activity/PDFViewActivity.kt index 17112b8..1ff06ff 100644 --- a/app/src/main/java/com/yzx/webebook/activity/PDFViewActivity.kt +++ b/app/src/main/java/com/yzx/webebook/activity/PDFViewActivity.kt @@ -28,6 +28,7 @@ class PDFViewActivity : BaseActivity(), ReadView { var currPage = 0 var total = 0 var oldPosition = 0 + var lastProgress = 0f //控制屏幕常亮 private var mWakeLock: WakeLock? = null @@ -46,6 +47,7 @@ class PDFViewActivity : BaseActivity(), ReadView { loadPdf() } + mPresenter?.getReadProgress(mRealBookId, mReadTaskId) } private fun loadPdf() { @@ -86,8 +88,8 @@ class PDFViewActivity : BaseActivity(), ReadView { } }) - val pos = mBookRecord?.pagePos?:0; - pdf.currentItem =pos + val pos = mBookRecord?.pagePos ?: 0; + pdf.currentItem = pos currPage = pos } @@ -133,6 +135,7 @@ class PDFViewActivity : BaseActivity(), ReadView { super.onResume() mWakeLock?.acquire() } + override fun onPause() { super.onPause() mWakeLock?.release() @@ -140,12 +143,14 @@ class PDFViewActivity : BaseActivity(), ReadView { if (mBookRecord != null) { BookRepository.getInstance() .saveBookRecord(mBookRecord) - if (mBookRecord!!.pagePos > oldPosition) { + + val currProgress = getPercent( + (mBookRecord!!.pagePos + 1).toFloat(), + total.toFloat() + ).toFloat() + if (mBookRecord!!.pagePos > oldPosition && currProgress > lastProgress) { mPresenter?.updateReadProgress( - mRealBookId, mReadTaskId, getPercent( - (mBookRecord!!.pagePos + 1).toFloat(), - total.toFloat() - ) + mRealBookId, mReadTaskId, currProgress.toString() ) } } @@ -159,4 +164,8 @@ class PDFViewActivity : BaseActivity(), ReadView { override fun showCategory(localId: String?) { } + + override fun onProgressSuccess(progress: Float) { + lastProgress = progress + } } \ No newline at end of file diff --git a/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java b/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java index bc481cb..31f010f 100644 --- a/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java +++ b/app/src/main/java/com/yzx/webebook/activity/ReadActivity.java @@ -33,6 +33,7 @@ import androidx.core.content.ContextCompat; import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; +import com.blankj.utilcode.util.NumberUtils; import com.google.android.material.appbar.AppBarLayout; import com.yzx.webebook.R; import com.yzx.webebook.activity.base.BaseActivity; @@ -222,8 +223,11 @@ public class ReadActivity extends BaseActivity implements ReadVie mReadTaskId = getIntent().getStringExtra("read_task_id"); mRealBookId = getIntent().getStringExtra("real_book_id"); loadBookData(id); + + getMPresenter().getReadProgress(mRealBookId, mReadTaskId); } + private void loadBookData(String id) { mCollBook = BookRepository.getInstance().getCollBook(id); @@ -338,12 +342,6 @@ public class ReadActivity extends BaseActivity implements ReadVie mSbChapterProgress.post( () -> { mSbChapterProgress.setProgress(pos); - int max = mSbChapterProgress.getMax() + 1; - float progress = (pos + 1) * 1.0f / max; - if (progress > 0 && progress > lastProgress) { - lastProgress = progress; - - } } ); } @@ -666,8 +664,11 @@ public class ReadActivity extends BaseActivity implements ReadVie saveBookInfo(); mPageLoader.saveRecord(); } - if(getMPresenter()!=null && mPageLoader!=null){ - getMPresenter().updateReadProgress(mRealBookId, mReadTaskId, String.valueOf(mPageLoader.getPercent())); + if (getMPresenter() != null && mPageLoader != null) { + float currProgress = Float.parseFloat(mPageLoader.getPercent()); + if (currProgress > lastProgress) { + getMPresenter().updateReadProgress(mRealBookId, mReadTaskId, String.valueOf(mPageLoader.getPercent())); + } } } @@ -721,4 +722,9 @@ public class ReadActivity extends BaseActivity implements ReadVie } } + + @Override + public void onProgressSuccess(float progress) { + lastProgress = progress; + } } \ No newline at end of file diff --git a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt index 8045fba..ebedb1b 100644 --- a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt +++ b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt @@ -484,6 +484,10 @@ class YzxJavascriptInterface(var ctx: Activity) { } + override fun onProgressSuccess(progress: Float) { + + } + override fun errorChapter() { } @@ -531,6 +535,10 @@ class YzxJavascriptInterface(var ctx: Activity) { } } + override fun onProgressSuccess(progress: Float) { + + } + }) presenter.loadCategory(bookTaskId) } diff --git a/app/src/main/java/com/yzx/webebook/model/Book.kt b/app/src/main/java/com/yzx/webebook/model/Book.kt index 3b2959c..c80946b 100644 --- a/app/src/main/java/com/yzx/webebook/model/Book.kt +++ b/app/src/main/java/com/yzx/webebook/model/Book.kt @@ -7,6 +7,7 @@ class Book { var book_file_id:String = "" var author:String = "" var read_requires:String = "" + var read_progress:Float = 0f var volumes:MutableList = mutableListOf() } diff --git a/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java b/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java index 5ff7a17..883aa81 100644 --- a/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java +++ b/app/src/main/java/com/yzx/webebook/presenter/ReadPresenter.java @@ -2,7 +2,11 @@ package com.yzx.webebook.presenter; import android.util.Log; +import com.blankj.utilcode.util.FileIOUtils; +import com.blankj.utilcode.util.FileUtils; +import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.TimeUtils; +import com.blankj.utilcode.util.ToastUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.lzy.okgo.OkGo; @@ -19,8 +23,6 @@ import com.yzx.webebook.model.Volumes; import com.yzx.webebook.model.bean.CollBookBean; import com.yzx.webebook.model.local.BookRepository; import com.yzx.webebook.presenter.base.BasePresenter; -import com.yzx.webebook.utils.FileUtils; -import com.yzx.webebook.utils.MD5Utils; import com.yzx.webebook.widget.page.TxtChapter; import org.jetbrains.annotations.NotNull; @@ -36,6 +38,34 @@ public class ReadPresenter extends BasePresenter { super(view); } + public void getReadProgress(String bookId,String readTaskId){ + User user = User.Companion.getUser(); + String url = Config.INSTANCE.getBASE_URL() + "/parent/readTask/getBookWarehouseContent"; + HttpHeaders headers = new HttpHeaders(); + headers.put("phone", user.getPhone()); + headers.put("token", user.getToken()); + OkGo.post(url) + .tag(this) + .params("id", bookId) + .params("read_task_id", readTaskId) + .headers(headers) + .execute(new StringCallback() { + + @Override + public void onSuccess(Response response) { + Gson gson = new Gson(); + BaseBean bean = gson.fromJson(response.body(), new TypeToken>() { + }.getType()); + getMView().onProgressSuccess(bean.getData().getRead_progress()); + } + + @Override + public void onError(Response response) { + super.onError(response); + } + }); + } + public void loadCategory(String bookTaskId) { User user = User.Companion.getUser(); @@ -64,36 +94,46 @@ public class ReadPresenter extends BasePresenter { downloadBook(bean.getData(), bookTaskId); } else { Book book = bean.getData(); - StringBuilder builder = new StringBuilder(); + StringBuffer builder = new StringBuffer() ; if (book.getVolumes().size() > 0) { for (Volumes volume : book.getVolumes()) { - builder.append(volume.getTitle()); + builder.append("----------"); + builder.append("\r\n"); for (Sections section : volume.getSections()) { builder.append(section.getTitle()); + builder.append("\r\n"); builder.append(section.getContent()); + builder.append("\r\n"); } } } - String filePath = FileUtils.writeTxtToFile(builder.toString(), NOTE_FOLDER_DIR, user.getUser_id() + "_" + bookTaskId + ".txt"); - CollBookBean bookBean = new CollBookBean(); - String localId = user.getUser_id() + "_" + bookTaskId; - bookBean.set_id(localId); - bookBean.setAuthor(book.getAuthor()); - bookBean.setTitle(book.getBook_name()); - bookBean.setShortIntro(book.getRead_requires()); - bookBean.setLastChapter("开始阅读"); - bookBean.setUpdate(true); - bookBean.setIsLocal(true); - bookBean.setLastRead(TimeUtils.getNowString()); - bookBean.setUpdated(TimeUtils.getNowString()); - bookBean.setCover(filePath); - - List list = new ArrayList(); - list.add(bookBean); - BookRepository.getInstance() - .saveCollBooks(list); - - getMView().showCategory(localId); + LogUtils.d(builder); + LogUtils.d(builder.toString()); + String filePath = NOTE_FOLDER_DIR + user.getUser_id() + "_" + bookTaskId + ".txt"; + boolean success = FileUtils.createOrExistsFile(filePath); + boolean whiteSuccess = FileIOUtils.writeFileFromString(new File(filePath),builder.toString()); + if(success && whiteSuccess){ + CollBookBean bookBean = new CollBookBean(); + String localId = user.getUser_id() + "_" + bookTaskId; + bookBean.set_id(localId); + bookBean.setAuthor(book.getAuthor()); + bookBean.setTitle(book.getBook_name()); + bookBean.setShortIntro(book.getRead_requires()); + bookBean.setLastChapter("开始阅读"); + bookBean.setUpdate(true); + bookBean.setIsLocal(true); + bookBean.setLastRead(TimeUtils.getNowString()); + bookBean.setUpdated(TimeUtils.getNowString()); + bookBean.setCover(filePath); + + List list = new ArrayList(); + list.add(bookBean); + BookRepository.getInstance() + .saveCollBooks(list); + getMView().showCategory(localId); + }else{ + ToastUtils.showLong("书籍信息读取失败!"); + } } } diff --git a/app/src/main/java/com/yzx/webebook/presenter/ReadView.java b/app/src/main/java/com/yzx/webebook/presenter/ReadView.java index 745938d..21ba838 100644 --- a/app/src/main/java/com/yzx/webebook/presenter/ReadView.java +++ b/app/src/main/java/com/yzx/webebook/presenter/ReadView.java @@ -11,4 +11,5 @@ public interface ReadView extends IView { void showCategory(String localId); void finishChapter(); void errorChapter(); + void onProgressSuccess(float progress); }