Browse Source

1.添加获取单个医生信息接口

王鹏鹏 2 years ago
parent
commit
59223d2166

+ 16 - 3
healthconsultation/src/main/java/com/yingyang/healthconsultation/activity/HealthConsultationActivity.kt

@@ -1,11 +1,11 @@
 package com.yingyang.healthconsultation.activity
 
 import android.annotation.SuppressLint
+import android.text.TextUtils
 import android.view.MotionEvent
 import android.view.View
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.tencent.bugly.crashreport.CrashReport
-import com.tencent.imsdk.relationship.UserInfo
 import com.tencent.imsdk.v2.V2TIMCallback
 import com.tencent.imsdk.v2.V2TIMManager
 import com.yingyang.healthconsultation.R
@@ -51,8 +51,21 @@ class HealthConsultationActivity :
             }
             rvRecommended.adapter = recommendDoctorAdapter
             recommendDoctorAdapter.setData(doctorBeans)
-            recommendDoctorAdapter.onClickListener = {
-                JumpUtil.jumpActivityWithUrl(RouterUrlCommon.consultationRequest, it.id, mContext)
+            recommendDoctorAdapter.onClickListener = { bean, type ->
+                if (TextUtils.equals("doctor", type)) {
+                    JumpUtil.jumpActivityWithUrl(
+                        RouterUrlCommon.doctorDetails,
+                        bean.id,
+                        mContext
+                    )
+                } else {
+                    JumpUtil.jumpActivityWithUrl(
+                        RouterUrlCommon.consultationRequest,
+                        bean.id,
+                        mContext
+                    )
+                }
+
             }
         }
     }

+ 0 - 1
healthconsultation/src/main/java/com/yingyang/healthconsultation/adapter/ConsultationRecordAdapter.kt

@@ -2,7 +2,6 @@ package com.yingyang.healthconsultation.adapter
 
 import com.yingyang.healthconsultation.R
 import com.yingyang.healthconsultation.databinding.ItemConsultationRecordBinding
-import com.yingyang.healthconsultation.entity.Record
 import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
 import com.yingyangfly.baselib.db.DoctorBean
 import com.yingyangfly.baselib.ext.setOnSingleClickListener

+ 25 - 3
healthconsultation/src/main/java/com/yingyang/healthconsultation/adapter/RecommendDoctorAdapter.kt

@@ -19,7 +19,7 @@ import com.yingyangfly.baselib.ext.getScaleAnimation
 class RecommendDoctorAdapter(override val layoutId: Int = R.layout.item_recommend_doctor) :
     BaseDataBindingAdapter<DoctorBean, ItemRecommendDoctorBinding>() {
 
-    var onClickListener: ((bean: DoctorBean) -> Unit)? = null
+    var onClickListener: ((bean: DoctorBean, type: String) -> Unit)? = null
 
     @SuppressLint("ClickableViewAccessibility")
     override fun onBindViewHolder(
@@ -35,7 +35,6 @@ class RecommendDoctorAdapter(override val layoutId: Int = R.layout.item_recommen
             3, priceSpannableString.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
         )
         binding.tvPrice.text = priceSpannableString
-
         val consultationTotal = "咨询量:" + item.consultationTotal
         val spannableString = SpannableString(consultationTotal)
         spannableString.setSpan(
@@ -43,6 +42,29 @@ class RecommendDoctorAdapter(override val layoutId: Int = R.layout.item_recommen
             3, spannableString.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
         )
         binding.tvConsult.text = spannableString
+
+        binding.doctorLayour.setOnTouchListener { v, event ->
+            when (event.action) {
+                MotionEvent.ACTION_DOWN -> {
+                    if (v.id == R.id.doctorLayour) {
+                        v.startAnimation(getScaleAnimation())
+                    }
+                }
+                MotionEvent.ACTION_UP -> {
+                    if (v.id == R.id.doctorLayour) {
+                        v.startAnimation(getEndAnimation())
+                        onClickListener?.invoke(item, "doctor")
+                    }
+                }
+                MotionEvent.ACTION_CANCEL -> {
+                    if (v.id == R.id.doctorLayour) {
+                        v.startAnimation(getEndAnimation())
+                    }
+                }
+            }
+            true
+        }
+
         binding.btnConsultation.setOnTouchListener { v, event ->
             when (event.action) {
                 MotionEvent.ACTION_DOWN -> {
@@ -53,7 +75,7 @@ class RecommendDoctorAdapter(override val layoutId: Int = R.layout.item_recommen
                 MotionEvent.ACTION_UP -> {
                     if (v.id == R.id.btnConsultation) {
                         v.startAnimation(getEndAnimation())
-                        onClickListener?.invoke(item)
+                        onClickListener?.invoke(item, "consult")
                     }
                 }
                 MotionEvent.ACTION_CANCEL -> {

+ 0 - 1
healthconsultation/src/main/java/com/yingyang/healthconsultation/consultationsheet/ConsultationSheetActivity.kt

@@ -41,7 +41,6 @@ import top.zibin.luban.Luban
 import top.zibin.luban.OnCompressListener
 import java.io.File
 import java.util.*
-import kotlin.collections.ArrayList
 
 /**
  * 问诊单

+ 23 - 16
healthconsultation/src/main/java/com/yingyang/healthconsultation/doctordetails/DoctorDetailsActivity.kt

@@ -11,36 +11,28 @@ import android.view.View
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.yingyang.healthconsultation.R
 import com.yingyang.healthconsultation.databinding.ActivityDoctorDetailsBinding
-import com.yingyang.healthconsultation.entity.ConsultationBean
-import com.yingyangfly.baselib.base.BaseActivity
 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.router.RouterUrlCommon
 
 /**
  * 医生详情
  */
 @Route(path = RouterUrlCommon.doctorDetails)
-class DoctorDetailsActivity : BaseActivity<ActivityDoctorDetailsBinding>(), View.OnTouchListener {
+class DoctorDetailsActivity :
+    BaseMVVMActivity<ActivityDoctorDetailsBinding, DoctorDetailsViewModel>(), View.OnTouchListener {
 
-    private var doctorDetails: ConsultationBean? = null
+    private var id: String = ""
 
     override fun onCreate(savedInstanceState: Bundle?) {
-        doctorDetails = intent.getSerializableExtra("doctorDetails") as ConsultationBean
+        id = intent.getStringExtra("url") ?: ""
         super.onCreate(savedInstanceState)
     }
 
     override fun initViews() {
-        if (doctorDetails != null) {
-            binding.data = doctorDetails
-            val consultationTotal = "咨询量:" + doctorDetails!!.getConsultationTotalInfo()
-            val totalSpannableString = SpannableString(consultationTotal)
-            totalSpannableString.setSpan(
-                ForegroundColorSpan(Color.parseColor("#FF4A76FF")),
-                4, totalSpannableString.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
-            )
-            binding.tvConsult.text = totalSpannableString
-        }
+
     }
 
     @SuppressLint("ClickableViewAccessibility")
@@ -51,7 +43,22 @@ class DoctorDetailsActivity : BaseActivity<ActivityDoctorDetailsBinding>(), View
     }
 
     override fun initData() {
-
+        if (id.isNotEmpty()) {
+            viewModel.getDoctorDetail(id, fail = {
+                it.toast()
+            }, success = {
+                if (it != null) {
+                    binding.data = it
+                    val consultationTotal = "咨询量:" + it.consultationTotal
+                    val totalSpannableString = SpannableString(consultationTotal)
+                    totalSpannableString.setSpan(
+                        ForegroundColorSpan(Color.parseColor("#FF4A76FF")),
+                        4, totalSpannableString.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
+                    )
+                    binding.tvConsult.text = totalSpannableString
+                }
+            })
+        }
     }
 
     @SuppressLint("ClickableViewAccessibility")

+ 29 - 0
healthconsultation/src/main/java/com/yingyang/healthconsultation/doctordetails/DoctorDetailsViewModel.kt

@@ -0,0 +1,29 @@
+package com.yingyang.healthconsultation.doctordetails
+
+import com.yingyang.healthconsultation.entity.GetDoctorDetailsBean
+import com.yingyang.healthconsultation.net.HEALTHCONSULTATION_API
+import com.yingyangfly.baselib.db.DoctorBean
+import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.baselib.net.XUtils
+import com.yingyangfly.baselib.utils.GsonUtil
+
+/**
+ * @author 王鹏鹏
+ */
+class DoctorDetailsViewModel : BaseViewModel() {
+
+    fun getDoctorDetail(
+        doctorId: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: DoctorBean?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        val requestBean = GetDoctorDetailsBean().apply {
+            id = doctorId
+        }
+        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        HEALTHCONSULTATION_API.getDoctorDetail(body)
+    }.runUI(
+        success,
+        fail
+    )
+}

+ 5 - 0
healthconsultation/src/main/java/com/yingyang/healthconsultation/entity/GetDoctorDetailsBean.kt

@@ -0,0 +1,5 @@
+package com.yingyang.healthconsultation.entity
+
+class GetDoctorDetailsBean {
+    var id: String = ""
+}

+ 6 - 2
healthconsultation/src/main/java/com/yingyang/healthconsultation/net/HealthConsultationApiService.kt

@@ -5,8 +5,6 @@ import com.yingyang.healthconsultation.entity.UserInfoBean
 import com.yingyangfly.baselib.bean.PayImageBean
 import com.yingyangfly.baselib.db.DoctorBean
 import com.yingyangfly.baselib.net.BaseResp
-import com.yingyangfly.baselib.net.XBaseEntity
-import io.reactivex.Observable
 import okhttp3.MultipartBody
 import okhttp3.RequestBody
 import retrofit2.http.Body
@@ -73,4 +71,10 @@ interface HealthConsultationApiService {
      */
     @POST("im/user_sign")
     suspend fun getUserSign(@Query("userId") userId: String): BaseResp<String>
+
+    /**
+     * 医生详情
+     */
+    @POST("medical_consultation/doctor/detail")
+    suspend fun getDoctorDetail(@Body requestBody: RequestBody): BaseResp<DoctorBean>
 }

+ 4 - 1
healthconsultation/src/main/java/com/yingyang/healthconsultation/record/ConsultationRecordActivity.kt

@@ -8,7 +8,10 @@ import com.yingyang.healthconsultation.R
 import com.yingyang.healthconsultation.adapter.ConsultationRecordAdapter
 import com.yingyang.healthconsultation.databinding.ActivityConsultationRecordBinding
 import com.yingyangfly.baselib.db.DoctorBean
-import com.yingyangfly.baselib.ext.*
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
+import com.yingyangfly.baselib.ext.show
+import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
 

+ 4 - 4
healthconsultation/src/main/res/layout/activity_doctor_details.xml

@@ -8,7 +8,7 @@
 
         <variable
             name="data"
-            type="com.yingyang.healthconsultation.entity.ConsultationBean" />
+            type="com.yingyangfly.baselib.db.DoctorBean" />
     </data>
 
     <androidx.constraintlayout.widget.ConstraintLayout
@@ -119,7 +119,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginStart="@dimen/divider_40px"
                     android:layout_marginTop="@dimen/divider_44px"
-                    android:text='@{data.titleInfo()+data.departmentNameInfo()}'
+                    android:text='@{data.title+data.departmentName}'
                     android:textColor="@color/color_FF333333"
                     android:textSize="@dimen/divider_24px"
                     app:layout_constraintStart_toEndOf="@+id/tvName"
@@ -132,7 +132,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginStart="@dimen/divider_35px"
                     android:layout_marginTop="@dimen/divider_19px"
-                    android:text="@{data.specialityInfo()}"
+                    android:text="@{data.speciality}"
                     android:textColor="@color/color_FF333333"
                     android:textSize="@dimen/divider_24px"
                     app:layout_constraintEnd_toEndOf="parent"
@@ -158,7 +158,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/divider_23px"
                     android:layout_marginEnd="@dimen/divider_26px"
-                    android:text='@{"好评率"+data.getGoodRateInfo()}'
+                    android:text='@{"好评率"+data.goodRate}'
                     android:textColor="@color/color_FFFF9E05"
                     android:textSize="@dimen/divider_24px"
                     app:layout_constraintEnd_toEndOf="parent"

+ 1 - 0
healthconsultation/src/main/res/layout/item_recommend_doctor.xml

@@ -12,6 +12,7 @@
     </data>
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/doctorLayour"
         android:layout_width="match_parent"
         android:layout_height="@dimen/divider_196px">