Просмотр исходного кода

1.添加获取moca试题库module

王鹏鹏 2 лет назад
Родитель
Сommit
06e6dc3a70

+ 14 - 0
moca/src/main/java/com/yingyangfly/moca/net/MocaApiFactory.kt

@@ -0,0 +1,14 @@
+package com.yingyangfly.moca.net
+
+import com.yingyangfly.baselib.net.NetConfig
+import com.yingyangfly.baselib.net.initAPI
+
+val Any.MOCA_API: MocaApiService by lazy {
+    MocaApiFactory.api
+}
+
+object MocaApiFactory {
+    val api: MocaApiService by lazy {
+        initAPI(NetConfig.API_URL, MocaApiService::class.java)
+    }
+}

+ 15 - 0
moca/src/main/java/com/yingyangfly/moca/net/MocaApiService.kt

@@ -0,0 +1,15 @@
+package com.yingyangfly.moca.net
+
+import com.yingyangfly.baselib.net.BaseResp
+import okhttp3.RequestBody
+import retrofit2.http.Body
+import retrofit2.http.POST
+
+interface MocaApiService {
+
+    /**
+     * 提交试题
+     */
+    @POST("app/review/saveReviewRecord")
+    suspend fun submitQuestions(@Body requestBody: RequestBody): BaseResp<Unit>
+}

+ 32 - 7
moca/src/main/java/com/yingyangfly/moca/singlechoice/SingleChoiceFragment.kt

@@ -1,6 +1,7 @@
 package com.yingyangfly.moca.singlechoice
 
 import android.os.Bundle
+import android.text.TextUtils
 import android.util.Log
 import androidx.core.os.bundleOf
 import androidx.navigation.Navigation
@@ -11,13 +12,17 @@ import com.yingyangfly.baselib.base.BaseFragment
 import com.yingyangfly.baselib.db.QuestionsBean
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
 import com.yingyangfly.baselib.ext.toast
+import com.yingyangfly.baselib.mvvm.BaseMVVMFragment
+import com.yingyangfly.baselib.utils.RxBusCodes
 import com.yingyangfly.moca.adapter.ChoiceAdapter
 import com.yingyangfly.moca.adapter.SpeakResultAdapter
+import gorden.rxbus2.RxBus
 
 /**
  * 单选
  */
-class SingleChoiceFragment : BaseFragment<FragmentSingleChoiceBinding>() {
+class SingleChoiceFragment :
+    BaseMVVMFragment<FragmentSingleChoiceBinding, SingleChoiceViewModel>() {
 
     /**
      * 问题id
@@ -86,12 +91,7 @@ class SingleChoiceFragment : BaseFragment<FragmentSingleChoiceBinding>() {
                             loadData()
                         }
                         76 -> {
-
-
-
-
-
-
+                            submit()
                         }
                         else -> {
                             val controller = Navigation.findNavController(it)
@@ -158,4 +158,29 @@ class SingleChoiceFragment : BaseFragment<FragmentSingleChoiceBinding>() {
         }
         return true
     }
+
+    /**
+     * 提交测试
+     */
+    private fun submit() {
+        if (dao != null) {
+            val questionsBeans = dao?.getAllQuestions()
+            if (questionsBeans.isNullOrEmpty().not()) {
+                questionsBeans?.forEach {
+                    it.reviewId = it.id
+                    if (TextUtils.equals("0", it.correct)) {
+                        it.score = "0"
+                    } else {
+                        it.score = it.reviewScore
+                    }
+                }
+            }
+            viewModel.submitQuestions(questionsBeans!!, fail = {
+                it.toast()
+            }, success = {
+                "提交成功".toast()
+                RxBus.get().send(RxBusCodes.EndMOCAQuestion)
+            })
+        }
+    }
 }

+ 27 - 0
moca/src/main/java/com/yingyangfly/moca/singlechoice/SingleChoiceViewModel.kt

@@ -0,0 +1,27 @@
+package com.yingyangfly.moca.singlechoice
+
+import android.util.Log
+import com.alibaba.fastjson.JSON
+import com.yingyangfly.baselib.db.QuestionsBean
+import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.baselib.net.XUtils
+import com.yingyangfly.moca.net.MOCA_API
+
+class SingleChoiceViewModel : BaseViewModel() {
+
+    /**
+     * 获取游戏列表
+     */
+    fun submitQuestions(
+        questionsBeans: MutableList<QuestionsBean>,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: Unit?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        Log.e("wpp", JSON.toJSONString(questionsBeans))
+        val body = XUtils.createJson(JSON.toJSONString(questionsBeans))
+        MOCA_API.submitQuestions(body)
+    }.runUI(
+        success,
+        fail
+    )
+}