Browse Source

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

王鹏鹏 2 years ago
parent
commit
452aefe212

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

@@ -14,7 +14,7 @@ class ConsultationDataAdapter(override val layoutId: Int = R.layout.item_consult
         item: String,
         position: Int
     ) {
-
+        binding.data = item
     }
 
 }

+ 115 - 3
healthconsultation/src/main/java/com/yingyang/healthconsultation/paid/PaidActivity.kt

@@ -1,25 +1,137 @@
 package com.yingyang.healthconsultation.paid
 
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.text.TextUtils
+import android.view.MotionEvent
+import android.view.View
+import androidx.recyclerview.widget.GridLayoutManager
 import com.alibaba.android.arouter.facade.annotation.Route
+import com.yingyang.healthconsultation.R
+import com.yingyang.healthconsultation.adapter.ConsultationDataAdapter
 import com.yingyang.healthconsultation.databinding.ActivityPaidBinding
+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
+import com.yingyangfly.baselib.utils.JumpUtil
 
 /**
  * 已支付
  */
 @Route(path = RouterUrlCommon.paid)
-class PaidActivity : BaseMVVMActivity<ActivityPaidBinding, PaidViewModel>() {
+class PaidActivity : BaseMVVMActivity<ActivityPaidBinding, PaidViewModel>(),
+    View.OnTouchListener {
 
-    override fun initViews() {
+    private var id: String = ""
+    private var doctorId = ""
+    private var imageList = mutableListOf<String>()
+    private val adapter by lazy { ConsultationDataAdapter() }
 
+    override fun onCreate(savedInstanceState: Bundle?) {
+        id = intent.getStringExtra("id") ?: ""
+        doctorId = intent.getStringExtra("doctorId") ?: ""
+        super.onCreate(savedInstanceState)
     }
 
-    override fun initListener() {
+    override fun initViews() {
+        binding {
+            rvUploadData.layoutManager = GridLayoutManager(mContext, 9)
+            rvUploadData.adapter = adapter
+            adapter.setData(imageList)
+        }
+    }
 
+    @SuppressLint("ClickableViewAccessibility")
+    override fun initListener() {
+        binding {
+            backLayout.setOnTouchListener(this@PaidActivity)
+            doctorLayout.setOnTouchListener(this@PaidActivity)
+        }
     }
 
     override fun initData() {
 
     }
+
+    override fun onResume() {
+        super.onResume()
+        getDoctorDetail()
+        getMedicalConsultationDetail()
+    }
+
+    /**
+     * 获取问诊详情信息
+     */
+    private fun getMedicalConsultationDetail() {
+        if (TextUtils.isEmpty(id).not()) {
+            viewModel.getMedicalConsultationDetail(id, fail = {
+                it.toast()
+            }, success = {
+                imageList.clear()
+                if (it != null) {
+                    binding.data = it
+                    doctorId = it.sysUserId
+                    if (it.images.isNullOrEmpty().not()) {
+                        val images = it.images.split(",")
+                        if (images.isNullOrEmpty().not()) {
+                            images.forEach {
+                                if (it.isNullOrEmpty().not()) {
+                                    imageList.add(it)
+                                }
+                            }
+                        }
+                    }
+                }
+                adapter.setData(imageList)
+            })
+        }
+    }
+
+    /**
+     * 获取医生信息
+     */
+    private fun getDoctorDetail() {
+        if (TextUtils.isEmpty(doctorId).not()) {
+            viewModel.getDoctorDetail(doctorId, fail = {
+                it.toast()
+            }, success = {
+                if (it != null) {
+                    binding.doctor = it
+                }
+            })
+        }
+    }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.backLayout || v.id == R.id.doctorLayout) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                if (v.id == R.id.backLayout) {
+                    finish()
+                } else if (v.id == R.id.doctorLayout) {
+                    if (TextUtils.isEmpty(doctorId).not()) {
+                        JumpUtil.jumpActivityWithUrl(
+                            RouterUrlCommon.doctorDetails,
+                            doctorId,
+                            mContext
+                        )
+                    }
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.backLayout || v.id == R.id.doctorLayout) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
 }

+ 34 - 0
healthconsultation/src/main/java/com/yingyang/healthconsultation/paid/PaidViewModel.kt

@@ -1,11 +1,45 @@
 package com.yingyang.healthconsultation.paid
 
+import com.yingyang.healthconsultation.entity.GetDoctorDetailsBean
+import com.yingyang.healthconsultation.entity.MedicalConsultationDetailBean
+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 PaidViewModel : BaseViewModel() {
 
+    fun getMedicalConsultationDetail(
+        consultationId: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: MedicalConsultationDetailBean?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        val requestBean = GetDoctorDetailsBean().apply {
+            id = consultationId
+        }
+        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        HEALTHCONSULTATION_API.getMedicalConsultationDetail(body)
+    }.runUI(
+        success,
+        fail
+    )
 
+    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 - 1
healthconsultation/src/main/java/com/yingyang/healthconsultation/record/ConsultationRecordActivity.kt

@@ -85,7 +85,11 @@ class ConsultationRecordActivity :
             }
 
             adapter.onClickListener = {
-                JumpUtil.jumpActivityWithUrl(RouterUrlCommon.paid, it.id, mContext)
+                ARouter.getInstance().build(RouterUrlCommon.paid)
+                    .withString("id", it.id)
+                    .withString("doctorId", it.sysUserId)
+                    .withTransition(R.anim.leftin, R.anim.leftout)
+                    .navigation(mContext)
             }
         }
     }

+ 23 - 7
healthconsultation/src/main/res/layout/activity_paid.xml

@@ -4,6 +4,17 @@
     xmlns:tools="http://schemas.android.com/tools"
     tools:ignore="ResourceName">
 
+    <data>
+
+        <variable
+            name="data"
+            type="com.yingyang.healthconsultation.entity.MedicalConsultationDetailBean" />
+
+        <variable
+            name="doctor"
+            type="com.yingyangfly.baselib.db.DoctorBean" />
+    </data>
+
     <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -123,6 +134,7 @@
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/divider_32px"
                         android:layout_marginEnd="@dimen/divider_36px"
+                        android:text='@{"¥ "+data.price}'
                         android:textColor="@color/color_FF000000"
                         android:textSize="@dimen/divider_32px"
                         android:textStyle="bold"
@@ -148,8 +160,10 @@
                             android:layout_height="@dimen/divider_100px"
                             android:layout_marginStart="@dimen/divider_32px"
                             android:layout_marginTop="@dimen/divider_25px"
+                            app:isCircle="@{true}"
                             app:layout_constraintStart_toStartOf="parent"
-                            app:layout_constraintTop_toTopOf="parent" />
+                            app:layout_constraintTop_toTopOf="parent"
+                            app:loadHeadImg="@{doctor.avatar}" />
 
                         <androidx.appcompat.widget.AppCompatTextView
                             android:id="@+id/tvName"
@@ -157,6 +171,7 @@
                             android:layout_height="wrap_content"
                             android:layout_marginStart="@dimen/divider_32px"
                             android:layout_marginTop="@dimen/divider_40px"
+                            android:text="@{doctor.userName}"
                             android:textColor="@color/color_FF333333"
                             android:textSize="@dimen/divider_28px"
                             android:textStyle="bold"
@@ -169,6 +184,7 @@
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             android:layout_marginStart="@dimen/divider_32px"
+                            android:text="@{doctor.title+doctor.departmentName}"
                             android:textColor="@color/color_FF333333"
                             android:textSize="@dimen/divider_24px"
                             app:layout_constraintStart_toEndOf="@+id/imageHead"
@@ -206,7 +222,7 @@
                         android:layout_height="wrap_content"
                         android:layout_marginStart="@dimen/divider_38px"
                         android:layout_marginTop="@dimen/divider_12px"
-                        android:text="@string/patient_information"
+                        android:text='@{"患者信息: "+data.appUserName}'
                         android:textColor="@color/color_FF333333"
                         android:textSize="@dimen/divider_24px"
                         app:layout_constraintEnd_toEndOf="parent"
@@ -219,7 +235,7 @@
                         android:layout_height="wrap_content"
                         android:layout_marginStart="@dimen/divider_38px"
                         android:layout_marginTop="@dimen/divider_8px"
-                        android:text="@string/time_illness"
+                        android:text='@{"患病时间: "+data.sickTime}'
                         android:textColor="@color/color_FF333333"
                         android:textSize="@dimen/divider_24px"
                         app:layout_constraintEnd_toEndOf="parent"
@@ -232,7 +248,7 @@
                         android:layout_height="wrap_content"
                         android:layout_marginStart="@dimen/divider_38px"
                         android:layout_marginTop="@dimen/divider_8px"
-                        android:text="@string/have_you_ever_seen_a_doctor"
+                        android:text='@{"是否就诊过: "+data.isConsultation}'
                         android:textColor="@color/color_FF333333"
                         android:textSize="@dimen/divider_24px"
                         app:layout_constraintEnd_toEndOf="parent"
@@ -245,7 +261,7 @@
                         android:layout_height="wrap_content"
                         android:layout_marginStart="@dimen/divider_38px"
                         android:layout_marginTop="@dimen/divider_8px"
-                        android:text="@string/description_of_the_condition"
+                        android:text='@{"病情描述: "+data.remark}'
                         android:textColor="@color/color_FF333333"
                         android:textSize="@dimen/divider_24px"
                         app:layout_constraintEnd_toEndOf="parent"
@@ -268,7 +284,7 @@
                         android:id="@+id/rvUploadData"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="@dimen/divider_8px"
+                        app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toEndOf="@+id/tvUploadData"
                         app:layout_constraintTop_toBottomOf="@+id/tvConditionDescription" />
@@ -387,9 +403,9 @@
                         android:layout_marginTop="@dimen/divider_78px"
                         android:background="@drawable/bg_contact_doctor"
                         android:gravity="center"
+                        android:text="@string/contact_doctor"
                         android:textColor="@android:color/white"
                         android:textSize="@dimen/divider_28px"
-                        android:text="@string/contact_doctor"
                         app:layout_constraintStart_toEndOf="@+id/btnCancleOrder"
                         app:layout_constraintTop_toBottomOf="@+id/tvPaymentTime" />
 

+ 9 - 1
healthconsultation/src/main/res/layout/item_consultation_data.xml

@@ -4,6 +4,13 @@
     xmlns:tools="http://schemas.android.com/tools"
     tools:ignore="ResourceName">
 
+    <data>
+
+        <variable
+            name="data"
+            type="java.lang.String" />
+    </data>
+
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -15,7 +22,8 @@
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
+            app:layout_constraintTop_toTopOf="parent"
+            app:loadHeadImg="@{data}" />
 
     </LinearLayout>