Browse Source

1.添加联系售后弹窗

王鹏鹏 2 years ago
parent
commit
1d2fab4a63

+ 1 - 1
personalcenter/src/main/java/com/yingyang/personalcenter/entity/OrgBean.kt → baselib/src/main/java/com/yingyangfly/baselib/bean/OrgBean.kt

@@ -1,4 +1,4 @@
-package com.yingyang.personalcenter.entity
+package com.yingyangfly.baselib.bean
 
 /**
  * 机构信息

+ 1 - 1
personalcenter/src/main/java/com/yingyang/personalcenter/help/HelpViewModel.kt

@@ -1,7 +1,7 @@
 package com.yingyang.personalcenter.help
 
-import com.yingyang.personalcenter.entity.OrgBean
 import com.yingyang.personalcenter.net.PERSONALCENTER_API
+import com.yingyangfly.baselib.bean.OrgBean
 import com.yingyangfly.baselib.mvvm.BaseViewModel
 import com.yingyangfly.baselib.utils.User
 

+ 1 - 1
personalcenter/src/main/java/com/yingyang/personalcenter/net/PersonalCenterApiService.kt

@@ -1,7 +1,7 @@
 package com.yingyang.personalcenter.net
 
-import com.yingyang.personalcenter.entity.OrgBean
 import com.yingyang.personalcenter.entity.VersionBean
+import com.yingyangfly.baselib.bean.OrgBean
 import com.yingyangfly.baselib.bean.UserInfoBean
 import com.yingyangfly.baselib.net.BaseResp
 import retrofit2.http.POST

+ 1 - 1
personalcenter/src/main/res/layout/activity_help.xml

@@ -8,7 +8,7 @@
 
         <variable
             name="data"
-            type="com.yingyang.personalcenter.entity.OrgBean" />
+            type="com.yingyangfly.baselib.bean.OrgBean" />
     </data>
 
     <LinearLayout

+ 7 - 0
workbenches/src/main/java/com/yingyang/workbenches/adapter/OrderListAdapter.kt

@@ -4,6 +4,8 @@ import com.yingyang.workbenches.R
 import com.yingyang.workbenches.databinding.ItemOrderListBinding
 import com.yingyang.workbenches.entity.OrderBean
 import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
+import com.yingyangfly.baselib.ext.click
+import com.yingyangfly.baselib.ext.setOnSingleClickListener
 
 /**
  * 订单记录adapter
@@ -11,7 +13,12 @@ import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
 class OrderListAdapter(override val layoutId: Int = R.layout.item_order_list) :
     BaseDataBindingAdapter<OrderBean, ItemOrderListBinding>() {
 
+    var onOrderClickListener: ((bean: OrderBean) -> Unit)? = null
+
     override fun onBindViewHolder(binding: ItemOrderListBinding, item: OrderBean, position: Int) {
         binding.data = item
+        binding.tvContactAfterSalesService.setOnSingleClickListener {
+            onOrderClickListener?.invoke(item)
+        }
     }
 }

+ 97 - 0
workbenches/src/main/java/com/yingyang/workbenches/dialog/CustomerServiceDialog.kt

@@ -0,0 +1,97 @@
+package com.yingyang.workbenches.dialog
+
+import android.content.Context
+import android.os.Bundle
+import android.text.TextUtils
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.appcompat.widget.AppCompatButton
+import androidx.appcompat.widget.AppCompatImageView
+import androidx.appcompat.widget.AppCompatTextView
+import androidx.fragment.app.DialogFragment
+import com.gyf.immersionbar.BarHide
+import com.gyf.immersionbar.ktx.immersionBar
+import com.yingyang.workbenches.R
+import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.utils.GlideImgUtil
+import com.yingyangfly.baselib.utils.ViewTool
+
+/**
+ * 联系客服弹窗
+ * @author 王鹏鹏
+ */
+class CustomerServiceDialog : DialogFragment() {
+
+    private var qrCode: String = ""
+    private var mobile: String = ""
+    private var payOrderId: String = ""
+
+    private var mContext: Context? = null
+    private var qrCodeImage: AppCompatImageView? = null
+    private var tvPayOrderId: AppCompatTextView? = null
+    private var tvMobile: AppCompatTextView? = null
+    private var closeBtn: AppCompatButton? = null
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        isCancelable = false
+        dialog?.setCanceledOnTouchOutside(true)
+    }
+
+    fun setData(qrCode: String, mobile: String, payOrderId: String) {
+        this.qrCode = qrCode
+        this.mobile = mobile
+        this.payOrderId = payOrderId
+    }
+
+    override fun onStart() {
+        super.onStart()
+        dialog?.window?.setLayout(
+            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
+        )
+        dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
+    ): View? {
+        immersionBar {
+            hideBar(BarHide.FLAG_HIDE_BAR)
+            navigationBarColor(R.color.transparent)
+        }
+        val rootView = ViewTool.inflateFragmentPixels(
+            activity, R.layout.dialog_customer_service, container, 1194, 834
+        )
+        mContext = activity
+        findId(rootView)
+        init()
+        return rootView
+    }
+
+    private fun findId(rootView: View) {
+        qrCodeImage = rootView.findViewById(R.id.qrCodeImage)
+        tvPayOrderId = rootView.findViewById(R.id.tvPayOrderId)
+        tvMobile = rootView.findViewById(R.id.tvMobile)
+        closeBtn = rootView.findViewById(R.id.closeBtn)
+    }
+
+    private fun init() {
+        if (mContext != null && TextUtils.isEmpty(qrCode).not()) {
+            GlideImgUtil.loadImg(mContext!!, qrCode, qrCodeImage!!)
+        }
+        tvPayOrderId?.text = if (TextUtils.isEmpty(payOrderId)) {
+            "订单编号:"
+        } else {
+            "订单编号:$payOrderId"
+        }
+        tvMobile?.text = if (TextUtils.isEmpty(mobile)) {
+            "客服电话:"
+        } else {
+            "客服电话:$mobile"
+        }
+        closeBtn?.setOnSingleClickListener {
+            dismiss()
+        }
+    }
+}

+ 7 - 0
workbenches/src/main/java/com/yingyang/workbenches/net/WorkbenchesApiService.kt

@@ -1,6 +1,7 @@
 package com.yingyang.workbenches.net
 
 import com.yingyang.workbenches.entity.*
+import com.yingyangfly.baselib.bean.OrgBean
 import com.yingyangfly.baselib.bean.Record
 import com.yingyangfly.baselib.net.BaseResp
 import okhttp3.RequestBody
@@ -105,4 +106,10 @@ interface WorkbenchesApiService {
      */
     @POST("app/game/replay")
     suspend fun gameReplay(@Query("id") id: String): BaseResp<Any>
+
+    /**
+     * 获取机构信息
+     */
+    @POST("app/sysOrg/findByOrgCode")
+    suspend fun findByOrgCode(@Query("orgCode") orgCode: String): BaseResp<OrgBean>
 }

+ 33 - 0
workbenches/src/main/java/com/yingyang/workbenches/orderlist/OrderListActivity.kt

@@ -7,6 +7,7 @@ import com.alibaba.android.arouter.facade.annotation.Route
 import com.yingyang.workbenches.R
 import com.yingyang.workbenches.adapter.OrderListAdapter
 import com.yingyang.workbenches.databinding.ActivityOrderListBinding
+import com.yingyang.workbenches.dialog.CustomerServiceDialog
 import com.yingyang.workbenches.entity.OrderBean
 import com.yingyangfly.baselib.ext.*
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
@@ -19,12 +20,20 @@ import com.yingyangfly.baselib.router.RouterUrlCommon
 class OrderListActivity : BaseMVVMActivity<ActivityOrderListBinding, OrderListViewModel>(),
     View.OnTouchListener {
 
+    private var qrCode: String = ""
+    private var mobile: String = ""
+
     private var orderListList = mutableListOf<OrderBean>()
     private val orderListAdapter by lazy { OrderListAdapter() }
 
     override fun initViews() {
         binding {
             rvOrderList.adapter = orderListAdapter
+            orderListAdapter.onOrderClickListener = {
+                val customerServiceDialog = CustomerServiceDialog()
+                customerServiceDialog.setData(qrCode, mobile, it.payOrderId)
+                customerServiceDialog.show(supportFragmentManager, "customerServiceDialog")
+            }
         }
     }
 
@@ -34,6 +43,14 @@ class OrderListActivity : BaseMVVMActivity<ActivityOrderListBinding, OrderListVi
     }
 
     override fun initData() {
+        getOrderList()
+        findByOrgCode()
+    }
+
+    /**
+     * 获取服务套餐类型列表
+     */
+    private fun getOrderList() {
         orderListList.clear()
         viewModel.getOrderList(fail = {
             it.toast()
@@ -47,6 +64,20 @@ class OrderListActivity : BaseMVVMActivity<ActivityOrderListBinding, OrderListVi
         })
     }
 
+    /**
+     * 获取机构信息
+     */
+    private fun findByOrgCode() {
+        viewModel.findByOrgCode(fail = {
+            "获取用户机构信息失败".toast()
+        }, success = {
+            if (it != null) {
+                qrCode = it.wxUrl
+                mobile = it.phone
+            }
+        })
+    }
+
     @SuppressLint("ClickableViewAccessibility")
     override fun onTouch(v: View, event: MotionEvent): Boolean {
         when (event.action) {
@@ -55,12 +86,14 @@ class OrderListActivity : BaseMVVMActivity<ActivityOrderListBinding, OrderListVi
                     v.startAnimation(getScaleAnimation())
                 }
             }
+
             MotionEvent.ACTION_UP -> {
                 v.startAnimation(getEndAnimation())
                 if (v.id == R.id.backLayout) {
                     finish()
                 }
             }
+
             MotionEvent.ACTION_CANCEL -> {
                 if (v.id == R.id.backLayout) {
                     v.startAnimation(getEndAnimation())

+ 15 - 0
workbenches/src/main/java/com/yingyang/workbenches/orderlist/OrderListViewModel.kt

@@ -2,7 +2,9 @@ package com.yingyang.workbenches.orderlist
 
 import com.yingyang.workbenches.entity.OrderBean
 import com.yingyang.workbenches.net.WORKBENCHES_API
+import com.yingyangfly.baselib.bean.OrgBean
 import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.baselib.utils.User
 
 /**
  * @author 王鹏鹏
@@ -23,4 +25,17 @@ class OrderListViewModel : BaseViewModel() {
         fail
     )
 
+    /**
+     * 获取机构信息
+     */
+    fun findByOrgCode(
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: OrgBean?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        WORKBENCHES_API.findByOrgCode(User.getOrgCode())
+    }.runUI(
+        success,
+        fail
+    )
+
 }

+ 93 - 0
workbenches/src/main/res/layout/dialog_customer_service.xml

@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="ResourceName">
+
+    <com.google.android.material.card.MaterialCardView
+        android:layout_width="@dimen/divider_667px"
+        android:layout_height="wrap_content"
+        android:theme="@style/Theme.MaterialComponents.NoActionBar"
+        app:cardBackgroundColor="@android:color/white"
+        app:cardCornerRadius="@dimen/divider_42px"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:paddingBottom="@dimen/divider_42px">
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvTitle"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/color_4A76FF"
+                android:gravity="center"
+                android:paddingStart="@dimen/divider_42px"
+                android:paddingTop="@dimen/divider_23px"
+                android:paddingEnd="@dimen/divider_42px"
+                android:paddingBottom="@dimen/divider_23px"
+                android:text="小豚温馨提示:您在使用过程中有任何问题,可以添加小豚微信或者直接致电,感谢~"
+                android:textColor="@android:color/white"
+                android:textSize="@dimen/divider_28px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/qrCodeImage"
+                android:layout_width="@dimen/divider_218px"
+                android:layout_height="@dimen/divider_218px"
+                android:layout_marginStart="@dimen/divider_12px"
+                android:layout_marginTop="@dimen/divider_26px"
+                android:scaleType="centerInside"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvPayOrderId"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="@dimen/divider_8px"
+                android:layout_marginTop="@dimen/divider_98px"
+                android:text="订单编号:"
+                android:textColor="@color/color_FF333333"
+                android:textSize="@dimen/divider_24px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/qrCodeImage"
+                app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvMobile"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="@dimen/divider_8px"
+                android:layout_marginTop="@dimen/divider_28px"
+                android:text="客服电话:"
+                android:textColor="@color/color_FF333333"
+                android:textSize="@dimen/divider_24px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/qrCodeImage"
+                app:layout_constraintTop_toBottomOf="@+id/tvPayOrderId" />
+
+            <androidx.appcompat.widget.AppCompatButton
+                android:id="@+id/closeBtn"
+                android:layout_width="@dimen/divider_240px"
+                android:layout_height="@dimen/divider_68px"
+                android:layout_marginTop="@dimen/divider_34px"
+                android:background="@drawable/bg_work_benches_btn"
+                android:text="关闭"
+                android:textColor="@android:color/white"
+                android:textSize="@dimen/divider_28px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/qrCodeImage" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+    </com.google.android.material.card.MaterialCardView>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 10 - 8
workbenches/src/main/res/layout/item_order_list.xml

@@ -18,7 +18,7 @@
         android:background="@drawable/bg_item_order_list"
         android:paddingBottom="@dimen/divider_28px">
 
-        <TextView
+        <androidx.appcompat.widget.AppCompatTextView
             android:id="@+id/tvPackageType"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -30,7 +30,7 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-        <TextView
+        <androidx.appcompat.widget.AppCompatTextView
             android:id="@+id/tvPayOrderId"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -42,7 +42,7 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tvPackageType" />
 
-        <TextView
+        <androidx.appcompat.widget.AppCompatTextView
             android:id="@+id/tvPayMoney"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -55,19 +55,21 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tvPayOrderId" />
 
-        <TextView
+        <androidx.appcompat.widget.AppCompatTextView
             android:id="@+id/tvContactAfterSalesService"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginTop="@dimen/divider_28px"
-            android:layout_marginEnd="@dimen/divider_38px"
+            android:paddingStart="@dimen/divider_6px"
+            android:paddingTop="@dimen/divider_28px"
+            android:paddingEnd="@dimen/divider_38px"
+            android:paddingBottom="@dimen/divider_6px"
             android:text="@string/contact_after_sales_service"
             android:textColor="@color/color_FF2B70FF"
             android:textSize="@dimen/divider_24px"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-        <TextView
+        <androidx.appcompat.widget.AppCompatTextView
             android:id="@+id/tvSendPayTime"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -80,7 +82,7 @@
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tvContactAfterSalesService" />
 
-        <TextView
+        <androidx.appcompat.widget.AppCompatTextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/divider_16px"

+ 2 - 0
workbenches/src/main/res/values/dimens.xml

@@ -39,6 +39,7 @@
     <dimen name="divider_249px" tools:ignore="ResourceName">249px</dimen>
     <dimen name="divider_245px" tools:ignore="ResourceName">245px</dimen>
     <dimen name="divider_241px" tools:ignore="ResourceName">241px</dimen>
+    <dimen name="divider_240px" tools:ignore="ResourceName">240px</dimen>
     <dimen name="divider_237px" tools:ignore="ResourceName">237px</dimen>
     <dimen name="divider_230px" tools:ignore="ResourceName">230px</dimen>
     <dimen name="divider_229px" tools:ignore="ResourceName">229px</dimen>
@@ -82,6 +83,7 @@
     <dimen name="divider_100px" tools:ignore="ResourceName">100px</dimen>
     <dimen name="divider_98px" tools:ignore="ResourceName">98px</dimen>
     <dimen name="divider_96px" tools:ignore="ResourceName">96px</dimen>
+    <dimen name="divider_93px" tools:ignore="ResourceName">93px</dimen>
     <dimen name="divider_90px" tools:ignore="ResourceName">90px</dimen>
     <dimen name="divider_88px" tools:ignore="ResourceName">88px</dimen>
     <dimen name="divider_82px" tools:ignore="ResourceName">82px</dimen>