Browse Source

首页登录无套餐校验量表测评

hurixing 2 months ago
parent
commit
916dd46acb

+ 2 - 2
baselib/build.gradle

@@ -38,8 +38,8 @@ android {
             buildConfigField "Boolean", "SINGLE_MODULE", "${singleModule}"
 //            buildConfigField "String", "BUGLY_APPID", "\"d400f20398\""
 //            buildConfigField "String", "API_URL", "\"http://60.205.122.15/hcp-app-api\""
-//            buildConfigField "String", "API_URL", "\"http://192.168.0.118:8110\""
-            buildConfigField "String", "API_URL", "\"http://yaorongtest.yaorongmedical.com/hcp-app-api\""
+            buildConfigField "String", "API_URL", "\"http://192.168.0.118:8110\""
+//            buildConfigField "String", "API_URL", "\"http://yaorongtest.yaorongmedical.com/hcp-app-api\""
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
 

+ 14 - 0
baselib/src/main/java/com/yingyangfly/baselib/utils/JumpUtil.kt

@@ -47,6 +47,20 @@ object JumpUtil {
         }
     }
 
+    fun jumpActivityWithBoolean(path: String, ck: Boolean, content: Context) {
+        if (TextUtils.equals(RouterUrlCommon.home, path)) {
+            ARouter.getInstance().build(path)
+                .withBoolean("ck", ck)
+                .withTransition(R.anim.rightin, R.anim.rightout)
+                .navigation(content)
+        } else {
+            ARouter.getInstance().build(path)
+                .withBoolean("ck", ck)
+                .withTransition(R.anim.leftin, R.anim.leftout)
+                .navigation(content)
+        }
+    }
+
     fun jumpActivityWithString(path: String, string: Map.Entry<String, String>) {
         ARouter.getInstance().build(path)
             .withString(string.key, string.value)

+ 1 - 0
baselib/src/main/res/values/colors.xml

@@ -60,4 +60,5 @@
     <color name="color_20acc1">#20acc1</color>
     <color name="color_15a1b6">#15a1b6</color>
     <color name="color_6ee06f">#6ee06f</color>
+    <color name="color_077a8f">#077a8f</color>
 </resources>

+ 1 - 0
baselib/src/main/res/values/dimens.xml

@@ -10,6 +10,7 @@
     <dimen name="divider_834px" tools:ignore="ResourceName">834px</dimen>
     <dimen name="divider_800px" tools:ignore="ResourceName">800px</dimen>
     <dimen name="divider_760px" tools:ignore="ResourceName">760px</dimen>
+    <dimen name="divider_700px" tools:ignore="ResourceName">700px</dimen>
     <dimen name="divider_689px" tools:ignore="ResourceName">689px</dimen>
     <dimen name="divider_670px" tools:ignore="ResourceName">670px</dimen>
     <dimen name="divider_667px" tools:ignore="ResourceName">667px</dimen>

+ 1 - 1
config.gradle

@@ -13,7 +13,7 @@ ext {
             applicationId    : "com.yingyangfly",
             minSdkVersion    : 26,
             targetSdkVersion : 30,
-            versionCode      : 27,
+            versionCode      : 29,
             versionName      : "1.0.0",
     ]
     //androidx配置

+ 133 - 1
home/src/main/java/com/yingyangfly/home/evaluation/EvaluationActivity.kt

@@ -1,22 +1,30 @@
 package com.yingyangfly.home.evaluation
 
 import android.annotation.SuppressLint
+import android.os.Bundle
 import android.text.TextUtils
 import android.view.MotionEvent
 import android.view.View
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.alibaba.android.arouter.facade.annotation.Route
+import com.tencent.imsdk.v2.V2TIMCallback
+import com.tencent.imsdk.v2.V2TIMManager
 import com.yingyang.home.R
 import com.yingyang.home.databinding.ActivityEvaluationBinding
 import com.yingyangfly.baselib.bean.Evaluation
 import com.yingyangfly.baselib.db.QuestionsBean
+import com.yingyangfly.baselib.db.VoicePlayerBean
 import com.yingyangfly.baselib.ext.getEndAnimation
 import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
+import com.yingyangfly.baselib.player.VoicePlayer
 import com.yingyangfly.baselib.router.RouterUrlCommon
 import com.yingyangfly.baselib.utils.JumpUtil
+import com.yingyangfly.baselib.utils.LiveEventBusUtil
+import com.yingyangfly.baselib.utils.RxBusCodes
+import com.yingyangfly.baselib.utils.User
 import com.yingyangfly.home.adapter.EvaluationListAdapter
 
 /**
@@ -32,7 +40,17 @@ class EvaluationActivity : BaseMVVMActivity<ActivityEvaluationBinding, Evaluatio
     private var exclusiveList = mutableListOf<Evaluation>()
     private val exclusiveGameAdapter by lazy {EvaluationListAdapter()}
 
+    private var myBoolean: Boolean = true
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        myBoolean =  intent.getBooleanExtra("ck",true)
+        super.onCreate(savedInstanceState)
+    }
+
     override fun initViews() {
+        if (!myBoolean) {
+            voicePlayer = VoicePlayer.getInstance(mContext)
+        }
         binding {
             rvEvaluation.layoutManager = LinearLayoutManager(this@EvaluationActivity, RecyclerView.HORIZONTAL, false)
             rvEvaluation.adapter = exclusiveGameAdapter
@@ -48,6 +66,9 @@ class EvaluationActivity : BaseMVVMActivity<ActivityEvaluationBinding, Evaluatio
     @SuppressLint("SetTextI18n")
     override fun onResume() {
         super.onResume()
+        if (!myBoolean) {
+            binding.rollback.setBackgroundResource(R.mipmap.icon_back_1)
+        }
         exclusiveList.clear()
         exclusiveList.add(Evaluation("MMSE","https://yaorongoss.yaorongmedical.com/appraisal/evaluation/pingce_icon_mmse.png","MMSE"))
         exclusiveList.add(Evaluation("MOCA","https://yaorongoss.yaorongmedical.com/appraisal/evaluation/pingce_icon_moca.png","MOCA"))
@@ -69,7 +90,30 @@ class EvaluationActivity : BaseMVVMActivity<ActivityEvaluationBinding, Evaluatio
     }
 
     override fun initData() {
+        if (!myBoolean) {
+            //语音合成
+            LiveEventBusUtil.observer<String>(this, RxBusCodes.SPEECHSYNTHESIS) {
+                if (TextUtils.isEmpty(it).not()) {
+                    speak(it)
+                }
+            }
+
+            //结束语音播放
+            LiveEventBusUtil.observer<String>(this, RxBusCodes.STOPVOICE) {
+                if (voicePlayer != null) {
+                    if (voicePlayer!!.isPlaying) {
+                        voicePlayer?.stop()
+                    }
+                }
+            }
 
+            //退出登录
+            LiveEventBusUtil.observer<String>(this, RxBusCodes.LOGINOUT) {
+                runOnUiThread {
+                    finish()
+                }
+            }
+        }
     }
 
     private fun loadData(type: String) {
@@ -101,6 +145,54 @@ class EvaluationActivity : BaseMVVMActivity<ActivityEvaluationBinding, Evaluatio
         }
     }
 
+
+    /**
+     * 语音合成
+     */
+    private var voicePlayer: VoicePlayer? = null
+
+    /**
+     * 语音合成
+     */
+    private fun speak(desn: String) {
+        if (voicePlayerDao != null) {
+            val voicePlayerBean = voicePlayerDao?.getVoicePlayerBean(desn)
+            if (voicePlayerBean != null) {
+                if (voicePlayer != null) {
+                    voicePlayer?.play(voicePlayerBean.url) {
+                        LiveEventBusUtil.send(RxBusCodes.STARTMUSIC, "")
+                    }
+                }
+            } else {
+                getVoiceUrl(desn)
+            }
+        } else {
+            getVoiceUrl(desn)
+        }
+    }
+
+    /**
+     * 获取声音url
+     */
+    private fun getVoiceUrl(taskDesn: String) {
+        viewModel.getVoiceUrl(taskDesn, fail = {}, success = {
+            if (TextUtils.isEmpty(it).not()) {
+                if (voicePlayerDao != null) {
+                    val voicePlayerBean = VoicePlayerBean().apply {
+                        url = it
+                        words = taskDesn
+                    }
+                    voicePlayerDao?.insert(voicePlayerBean)
+                }
+                if (voicePlayer != null) {
+                    voicePlayer?.play(it) {
+                        LiveEventBusUtil.send(RxBusCodes.STARTMUSIC, "")
+                    }
+                }
+            }
+        })
+    }
+
     @SuppressLint("ClickableViewAccessibility")
     override fun onTouch(v: View, event: MotionEvent): Boolean {
         when (event.action) {
@@ -122,7 +214,12 @@ class EvaluationActivity : BaseMVVMActivity<ActivityEvaluationBinding, Evaluatio
 //                    }
 
                     R.id.layoutHome -> {
-                        finish()
+                        if (myBoolean) {
+                            finish()
+                        }else {
+                            loginOut()
+                        }
+
                     }
 
                     R.id.tvEvaluationHistory -> {
@@ -140,6 +237,41 @@ class EvaluationActivity : BaseMVVMActivity<ActivityEvaluationBinding, Evaluatio
         return true
     }
 
+    /**
+     * 退出登录
+     */
+    private fun loginOut() {
+        viewModel.logout(fail = {
+            "退出失败,请重试".toast()
+        }, success = {
+            runOnUiThread {
+                User.saveSaveGameSoundDate("")
+                User.saveUserId("")
+                User.saveName("")
+                User.saveAvatar("")
+                User.saveUserAge("")
+                User.saveUserSex("")
+                User.saveToken("")
+                User.saveMobile("")
+                User.saveIdCard("")
+                User.saveOrgCode("")
+                User.savePadNo("")
+                V2TIMManager.getInstance().logout(object : V2TIMCallback {
+                    override fun onSuccess() {
+                    }
+
+                    override fun onError(p0: Int, p1: String?) {
+
+                    }
+                })
+                LiveEventBusUtil.send(RxBusCodes.LOGINOUT, "")
+                LiveEventBusUtil.send(RxBusCodes.IMLoginOut, "")
+                JumpUtil.jumpActivity(RouterUrlCommon.login, mContext)
+                finish()
+            }
+        })
+    }
+
     /**
      * 获取测评任务
      */

+ 23 - 0
home/src/main/java/com/yingyangfly/home/evaluation/EvaluationViewModel.kt

@@ -52,4 +52,27 @@ class EvaluationViewModel : BaseViewModel() {
         success,
         fail
     )
+
+    fun logout(
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: String?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        HOME_API.logout()
+    }.runUI(
+        success,
+        fail
+    )
+
+    /**
+     * 获取声音url
+     */
+    fun getVoiceUrl(
+        msg: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: String?) -> Unit)? = null
+    ) = launchFlow(false) {
+        HOME_API.getVoiceUrl(msg)
+    }.runUI(
+        success, fail
+    )
 }

+ 6 - 0
home/src/main/java/com/yingyangfly/home/net/HomeApiService.kt

@@ -117,4 +117,10 @@ interface HomeApiService {
     @POST("app/reviewTask/selectReviewTask")
     suspend fun selectReviewTask(@Body requestBody: RequestBody): BaseResp<ReviewTask>
 
+    /**
+     * 退出登录
+     */
+    @POST("app/logout")
+    suspend fun logout(): BaseResp<String>
+
 }

+ 1 - 0
home/src/main/res/layout/activity_evaluation.xml

@@ -14,6 +14,7 @@
             tools:ignore="MissingConstraints">
 
             <ImageView
+                android:id="@+id/rollback"
                 android:layout_width="@dimen/divider_110px"
                 android:layout_height="@dimen/divider_48px"
                 android:layout_marginStart="@dimen/divider_65px"

+ 1 - 2
login/src/main/java/com/yingyang/login/net/LoginApiService.kt

@@ -28,8 +28,7 @@ interface LoginApiService {
      */
     @POST("app/loginMsg")
     suspend fun loginMsg(
-        @Query("mobile") mobile: String,
-        @Query("checkCode") checkCode: String
+        @Body requestBody: RequestBody
     ): BaseResp<String>
 
     /**

+ 44 - 18
login/src/main/java/com/yingyang/login/ui/login/LoginActivity.kt

@@ -37,6 +37,7 @@ import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
 import com.yingyangfly.baselib.utils.AESUtil
+import com.yingyangfly.baselib.utils.JumpUtil
 import com.yingyangfly.baselib.utils.RxTimer
 import com.yingyangfly.baselib.utils.User
 import com.yingyangfly.baselib.utils.User.context
@@ -75,6 +76,7 @@ class LoginActivity : BaseMVVMActivity<ActivityLoginBinding, LoginViewModel>(),
             verifyPass.addTextChangedListener(passwordWatcher) // 新增对确认密码框的监听
             submit.setOnTouchListener(this@LoginActivity)  // 提交按钮监听
             tvAlterCode.setOnTouchListener(this@LoginActivity)
+            scaleEvaluation.setOnTouchListener(this@LoginActivity)
         }
     }
 
@@ -175,19 +177,32 @@ class LoginActivity : BaseMVVMActivity<ActivityLoginBinding, LoginViewModel>(),
     /**
      * 用户验证码登录
      */
-    private fun loginCode() {
+    private fun loginCode(ck: Boolean) {
         viewModel.loginMsg(binding.username.text.toString().trim(),
             binding.password.text.toString().trim(),
+            ck,
             fail = {
                 it.toast()
             },
             success = {
                 runOnUiThread {
                     if (TextUtils.isEmpty(it).not()) {
-                        User.savePhone(binding.username.text.toString().trim())
-                        User.saveSaveGameSoundDate("")
-                        User.saveToken(it!!)
-                        getUserInfo()
+                        if (it.equals("false")) {
+                            var buyPackageDialog = BuyPackageDialog();
+                            buyPackageDialog.setMobile(binding.username.text.toString())
+                            buyPackageDialog.show(supportFragmentManager,"buyPackageDialog")
+                        }else {
+                            if(ck) {
+                                User.savePhone(binding.username.text.toString().trim())
+                                User.saveSaveGameSoundDate("")
+                                User.saveToken(it!!)
+                                getUserInfo()
+                            } else {
+                                User.savePhone(binding.username.text.toString().trim())
+                                User.saveToken(it!!)
+                                JumpUtil.jumpActivityWithBoolean(RouterUrlCommon.evaluation, ck, mContext)
+                            }
+                        }
                     }
                 }
             })
@@ -197,10 +212,10 @@ class LoginActivity : BaseMVVMActivity<ActivityLoginBinding, LoginViewModel>(),
     /**
      * 用户密码登录
      */
-    private fun loginPass() {
+    private fun loginPass(ck: Boolean) {
         var encrypt = AESUtil.encrypt(binding.password2.text.toString().trim())
         viewModel.login(binding.username.text.toString().trim(),
-            encrypt,
+            encrypt,ck,
             fail = {
                 it.toast()
             },
@@ -212,10 +227,17 @@ class LoginActivity : BaseMVVMActivity<ActivityLoginBinding, LoginViewModel>(),
                             buyPackageDialog.setMobile(binding.username.text.toString())
                             buyPackageDialog.show(supportFragmentManager,"buyPackageDialog")
                         }else {
-                            User.savePhone(binding.username.text.toString().trim())
-                            User.saveSaveGameSoundDate("")
-                            User.saveToken(it!!)
-                            getUserInfo()
+                            if (ck) {
+                                User.savePhone(binding.username.text.toString().trim())
+                                User.saveSaveGameSoundDate("")
+                                User.saveToken(it!!)
+                                getUserInfo()
+                            }else {
+                                User.savePhone(binding.username.text.toString().trim())
+                                User.saveToken(it!!)
+                                JumpUtil.jumpActivityWithBoolean(RouterUrlCommon.evaluation, ck, mContext)
+                            }
+
                         }
                     }
                 }
@@ -300,12 +322,20 @@ class LoginActivity : BaseMVVMActivity<ActivityLoginBinding, LoginViewModel>(),
                 if (v.id == R.id.login) { // 验证码登录
                     if (judgeByCode()) {
                         if (loginType == 0){
-                            loginPass()
+                            loginPass(true)
+                        } else {
+                            loginCode(true)
+                        }
+                    }
+                } else if (v.id == R.id.scaleEvaluation){
+                    if (judgeByCode()) {
+                        if (loginType == 0){
+                            loginPass(false)
                         } else {
-                            loginCode()
+                            loginCode(false)
                         }
                     }
-                } else if (v.id == R.id.tvCode) { // 登录验证码获取
+                }else if (v.id == R.id.tvCode) { // 登录验证码获取
                     if (judgeFormCode()) {
                         sendCode()
                     }
@@ -383,10 +413,6 @@ class LoginActivity : BaseMVVMActivity<ActivityLoginBinding, LoginViewModel>(),
         }, success = {
             if (it == true){
                 timer()
-            }else{
-                var buyPackageDialog = BuyPackageDialog();
-                buyPackageDialog.setMobile(binding.username.text.toString())
-                buyPackageDialog.show(supportFragmentManager,"buyPackageDialog")
             }
         })
     }

+ 1 - 0
login/src/main/java/com/yingyang/login/ui/login/LoginRequestBodyBean.kt

@@ -4,5 +4,6 @@ class LoginRequestBodyBean {
 
     var loginName: String? = null//用户名
     var passWord: String? = null//密码
+    var comboCheck: Boolean? = true// 是否校验套餐
 
 }

+ 10 - 1
login/src/main/java/com/yingyang/login/ui/login/LoginViewModel.kt

@@ -15,12 +15,14 @@ class LoginViewModel : BaseViewModel() {
     fun login(
         name: String,
         pwd: String,
+        ck: Boolean,
         fail: ((msg: String) -> Unit)? = null,
         success: ((success: String?) -> Unit)? = null
     ) = launchFlow(true) {
         val requestBean = LoginRequestBodyBean().apply {
             loginName = name
             passWord = pwd
+            comboCheck = ck
         }
         val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
         LOGIN_API.login(body)
@@ -43,10 +45,17 @@ class LoginViewModel : BaseViewModel() {
     fun loginMsg(
         mobile: String,
         checkCode: String,
+        ck: Boolean,
         fail: ((msg: String) -> Unit)? = null,
         success: ((success: String?) -> Unit)? = null
     ) = launchFlow(true) {
-        LOGIN_API.loginMsg(mobile, checkCode)
+        val requestBean = LoginRequestBodyBean().apply {
+            loginName = mobile
+            passWord = checkCode
+            comboCheck = ck
+        }
+        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        LOGIN_API.loginMsg(body)
     }.runUI(
         success,
         fail

+ 23 - 10
login/src/main/res/layout/activity_login.xml

@@ -16,7 +16,7 @@
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/layoutLogin"
             android:layout_width="@dimen/divider_400px"
-            android:layout_height="@dimen/divider_600px"
+            android:layout_height="@dimen/divider_640px"
             android:background="@mipmap/xitongdenglu_pop_bg"
             android:layout_marginEnd="@dimen/divider_120px"
             app:layout_constraintBottom_toBottomOf="parent"
@@ -163,25 +163,40 @@
                 android:id="@+id/forgetPass"
                 android:layout_width="@dimen/divider_120px"
                 android:layout_height="@dimen/divider_30px"
-                android:layout_marginBottom="@dimen/divider_160px"
+                android:layout_marginBottom="@dimen/divider_20px"
                 android:layout_marginEnd="@dimen/divider_10px"
                 android:text="忘记密码?"
                 android:textSize="@dimen/divider_22px"
                 android:textColor="@color/color_2EF3FA"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintBottom_toTopOf="@+id/textViewAppVersion"/>
+                app:layout_constraintBottom_toTopOf="@+id/login"/>
 
             <androidx.appcompat.widget.AppCompatButton
                 android:id="@+id/login"
                 android:layout_width="match_parent"
                 android:layout_height="@dimen/divider_60px"
                 android:layout_marginStart="@dimen/divider_25px"
-                android:layout_marginBottom="@dimen/divider_68px"
+                android:layout_marginBottom="@dimen/divider_25px"
                 android:layout_marginEnd="@dimen/divider_25px"
                 android:background="@mipmap/xitongdenglu_pop_btn"
                 android:text="@string/action_sign_in"
-                android:textColor="@android:color/white"
-                android:textSize="@dimen/divider_32px"
+                android:textColor="@color/color_077a8f"
+                android:textSize="@dimen/divider_28px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintBottom_toTopOf="@+id/scaleEvaluation" />
+
+            <androidx.appcompat.widget.AppCompatButton
+                android:id="@+id/scaleEvaluation"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/divider_60px"
+                android:layout_marginStart="@dimen/divider_25px"
+                android:layout_marginBottom="@dimen/divider_48px"
+                android:layout_marginEnd="@dimen/divider_25px"
+                android:background="@mipmap/xitongdenglu_pop_btn"
+                android:text="@string/scale_evaluation_in"
+                android:textColor="@color/color_077a8f"
+                android:textSize="@dimen/divider_28px"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintBottom_toTopOf="@+id/appModel" />
@@ -399,12 +414,11 @@
                 android:id="@+id/appModel1"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginBottom="@dimen/divider_20px"
+                android:layout_marginBottom="@dimen/divider_30px"
                 android:layout_marginStart="@dimen/divider_20px"
                 android:text="@string/app_model"
                 android:textColor="@android:color/white"
                 android:textSize="@dimen/divider_20px"
-                android:textStyle="bold"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 />
@@ -417,8 +431,7 @@
                 android:textColor="@android:color/white"
                 android:textSize="@dimen/divider_20px"
                 android:layout_marginEnd="@dimen/divider_20px"
-                android:layout_marginBottom="@dimen/divider_20px"
-                android:textStyle="bold"
+                android:layout_marginBottom="@dimen/divider_30px"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent" />
 

+ 1 - 0
login/src/main/res/values/strings.xml

@@ -5,6 +5,7 @@
     <string name="verify_prompt_password" tools:ignore="ResourceName">请再次输入密码</string>
     <string name="prompt_verification_code" tools:ignore="ResourceName">请输入验证码</string>
     <string name="action_sign_in" tools:ignore="ResourceName">登录</string>
+    <string name="scale_evaluation_in" tools:ignore="ResourceName">量表测评</string>
     <string name="account_login" tools:ignore="ResourceName">账号登录</string>
     <string name="account_phone" tools:ignore="ResourceName">手机号登录</string>
     <string name="future_dolphin_awareness_platform" tools:ignore="ResourceName">未来蓝豚强脑系统</string>

+ 1 - 1
workbenches/src/main/res/drawable/bg_train_complete.xml

@@ -4,5 +4,5 @@
     android:shape="oval"
     tools:ignore="ResourceName">
     <!--指定了形状内部的填充颜色-->
-    <solid android:color="@color/color_FF4A76FF" />
+    <solid android:color="@color/color_00FF00" />
 </shape>