Browse Source

1.添加套餐列表支付弹窗

王鹏鹏 2 years ago
parent
commit
287dcd5e11

+ 3 - 0
.idea/misc.xml

@@ -44,6 +44,8 @@
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/drawable/bg_home_task.xml" value="0.2165" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/drawable/bg_item_report.xml" value="0.2265" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/drawable/bg_item_task.xml" value="0.2165" />
+        <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/drawable/bg_purchase_services.xml" value="0.219" />
+        <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/drawable/bg_purchase_services_button.xml" value="0.219" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/drawable/bg_record.xml" value="0.2265" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/drawable/bg_record_title.xml" value="0.2265" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/drawable/bg_select_training_package.xml" value="0.219" />
@@ -80,6 +82,7 @@
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/layout/activity_train_data.xml" value="0.4700413223140496" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/layout/activity_workbenches.xml" value="0.72" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/layout/dialog_course_treatment.xml" value="0.1" />
+        <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/layout/dialog_purchase_services.xml" value="0.2962239583333333" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/layout/fragment_brain_ability.xml" value="0.21014492753623187" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/layout/fragment_data_monitor.xml" value="0.1" />
         <entry key="..\:/workspace/hcp-pad/workbenches/src/main/res/layout/fragment_free_training.xml" value="0.21014492753623187" />

+ 7 - 0
baselib/src/main/java/com/yingyangfly/baselib/utils/RxBusCodes.kt

@@ -14,4 +14,11 @@ object RxBusCodes {
     //获取训练内容
     const val GetTrainContent = 9002
 
+    //微信支付
+    const val WECHATPAY = "wechatpay"
+
+    //支付宝支付
+    const val ALIPAYPAY = "alipaypay"
+
+
 }

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

@@ -6,6 +6,7 @@
     <dimen name="divider_775px" tools:ignore="PxUsage">775px</dimen>
     <dimen name="divider_675px" tools:ignore="PxUsage">675px</dimen>
     <dimen name="divider_667px" tools:ignore="PxUsage">667px</dimen>
+    <dimen name="divider_597px" tools:ignore="PxUsage">597px</dimen>
     <dimen name="divider_575px" tools:ignore="PxUsage">575px</dimen>
     <dimen name="divider_475px" tools:ignore="PxUsage">475px</dimen>
     <dimen name="divider_450px" tools:ignore="PxUsage">450px</dimen>

+ 90 - 0
workbenches/src/main/java/com/yingyang/workbenches/dialog/PurchaseServicesDialog.kt

@@ -0,0 +1,90 @@
+package com.yingyang.workbenches.dialog
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.appcompat.widget.AppCompatTextView
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.fragment.app.DialogFragment
+import com.yingyang.workbenches.R
+import com.yingyang.workbenches.entity.GetPayImageEvent
+import com.yingyang.workbenches.entity.PackageInfoBean
+import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.utils.LiveEventBusUtil
+import com.yingyangfly.baselib.utils.RxBusCodes
+import com.yingyangfly.baselib.utils.ViewTool
+import gorden.rxbus2.RxBus
+
+/**
+ * 购买服务弹窗l
+ */
+class PurchaseServicesDialog : DialogFragment() {
+
+    private var weChatLayout: ConstraintLayout? = null
+    private var alipayLayout: ConstraintLayout? = null
+    private var packageId = ""
+    private var payMoney = ""
+    private var packageName = ""
+
+    fun setPackageBean(packageId: String, payMoney: String, packageName: String) {
+        this.packageId = packageId
+        this.payMoney = payMoney
+        this.packageName = packageName
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        RxBus.get().register(this)
+        isCancelable = true
+        dialog?.setCanceledOnTouchOutside(true)
+    }
+
+    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? {
+        val rootView = ViewTool.inflateFragmentPixels(
+            activity, R.layout.dialog_purchase_services, container, 1194, 834
+        )
+        findId(rootView)
+        init()
+        return rootView
+    }
+
+    @SuppressLint("SetTextI18n")
+    private fun findId(rootView: View) {
+        val tvPackageMoney = rootView.findViewById<AppCompatTextView>(R.id.tvPackageMoney)
+        tvPackageMoney.text = "您购买的是" + payMoney + "元" + packageName
+        weChatLayout = rootView.findViewById(R.id.weChatLayout)
+        alipayLayout = rootView.findViewById(R.id.alipayLayout)
+        weChatLayout?.setOnSingleClickListener {
+            RxBus.get().send(GetPayImageEvent(packageId, "1", payMoney))
+        }
+
+        alipayLayout?.setOnSingleClickListener {
+            RxBus.get().send(GetPayImageEvent(packageId, "2", payMoney))
+        }
+    }
+
+    private fun init() {
+
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        RxBus.get().unRegister(this)
+    }
+
+}

+ 30 - 0
workbenches/src/main/java/com/yingyang/workbenches/entity/GetPayImageEvent.java

@@ -0,0 +1,30 @@
+package com.yingyang.workbenches.entity;
+
+/**
+ * 获取支付二维码
+ * @author 王鹏鹏
+ */
+public class GetPayImageEvent {
+
+    private String relationId;
+    private String payMethod;
+    private String payMoney;
+
+    public GetPayImageEvent(String relationId, String payMethod, String payMoney) {
+        this.relationId = relationId;
+        this.payMethod = payMethod;
+        this.payMoney = payMoney;
+    }
+
+    public String getRelationId() {
+        return relationId;
+    }
+
+    public String getPayMethod() {
+        return payMethod;
+    }
+
+    public String getPayMoney() {
+        return payMoney;
+    }
+}

+ 9 - 0
workbenches/src/main/java/com/yingyang/workbenches/entity/PayImageBean.kt

@@ -0,0 +1,9 @@
+package com.yingyang.workbenches.entity
+
+/**
+ * 获取支付二维码bean
+ */
+data class PayImageBean(
+    val orderNo: String,
+    val qrCode: String
+)

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

@@ -2,6 +2,8 @@ package com.yingyang.workbenches.net
 
 import com.yingyang.workbenches.entity.*
 import com.yingyangfly.baselib.net.BaseResp
+import okhttp3.RequestBody
+import retrofit2.http.Body
 import retrofit2.http.POST
 import retrofit2.http.Query
 
@@ -81,4 +83,12 @@ interface WorkbenchesApiService {
     @POST("app/warn/countMyMsg")
     suspend fun getCountMyMsg(): BaseResp<String>
 
+    /**
+     * 获取支付二维码
+     */
+    @POST("app/pay/createPreOrder")
+    suspend fun getPayImage(
+        @Body requestBody: RequestBody
+    ): BaseResp<PayImageBean>
+
 }

+ 21 - 1
workbenches/src/main/java/com/yingyang/workbenches/servicepackage/ServicePackageActivity.kt

@@ -5,6 +5,8 @@ import com.alibaba.android.arouter.facade.annotation.Route
 import com.yingyang.workbenches.adapter.ServicePackageListAdapter
 import com.yingyang.workbenches.adapter.ServicePackageTypeAdapter
 import com.yingyang.workbenches.databinding.ActivityServicePackageBinding
+import com.yingyang.workbenches.dialog.PurchaseServicesDialog
+import com.yingyang.workbenches.entity.GetPayImageEvent
 import com.yingyang.workbenches.entity.PackageInfoBean
 import com.yingyang.workbenches.entity.TrainTypeBean
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
@@ -12,6 +14,10 @@ import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 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 gorden.rxbus2.Subscribe
+import gorden.rxbus2.ThreadMode
 
 /**
  * 服务套餐
@@ -39,7 +45,9 @@ class ServicePackageActivity :
             rvTrainingPackage.layoutManager = GridLayoutManager(this@ServicePackageActivity, 3)
             rvTrainingPackage.adapter = servicePackageListAdapter
             servicePackageListAdapter.onServicePackageListClickListener = {
-
+                val dialog = PurchaseServicesDialog()
+                dialog.setPackageBean(it.id, it.price, it.packageName)
+                dialog.show(supportFragmentManager, "purchaseServicesDialog")
             }
         }
     }
@@ -54,6 +62,18 @@ class ServicePackageActivity :
         getSelectByDictType()
     }
 
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun getPayImage(bean: GetPayImageEvent) {
+        viewModel.getPayImage(bean, fail = {
+            it.toast()
+        }, success = {
+            if (it != null) {
+
+            }
+        })
+    }
+
     /**
      * 获取服务套餐类型列表
      */

+ 19 - 0
workbenches/src/main/java/com/yingyang/workbenches/servicepackage/ServicePackageViewModel.kt

@@ -1,9 +1,13 @@
 package com.yingyang.workbenches.servicepackage
 
+import com.yingyang.workbenches.entity.GetPayImageEvent
 import com.yingyang.workbenches.entity.PackageInfoBean
+import com.yingyang.workbenches.entity.PayImageBean
 import com.yingyang.workbenches.entity.TrainTypeBean
 import com.yingyang.workbenches.net.WORKBENCHES_API
 import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.baselib.net.XUtils
+import com.yingyangfly.baselib.utils.GsonUtil
 
 /**
  * @author 王鹏鹏
@@ -37,4 +41,19 @@ class ServicePackageViewModel : BaseViewModel() {
         success,
         fail
     )
+
+    /**
+     * 获取服务套餐类型列表
+     */
+    fun getPayImage(
+        bean: GetPayImageEvent,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: PayImageBean) -> Unit)? = null,
+    ) = launchFlow(true) {
+        val body = XUtils.createJson(GsonUtil.GsonString(bean))
+        WORKBENCHES_API.getPayImage(body)
+    }.runUI(
+        success,
+        fail
+    )
 }

+ 7 - 0
workbenches/src/main/res/drawable/bg_purchase_services.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_42px" />
+    <solid android:color="@android:color/white" />
+</shape>

+ 9 - 0
workbenches/src/main/res/drawable/bg_purchase_services_button.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners
+        android:topLeftRadius="@dimen/divider_42px"
+        android:topRightRadius="@dimen/divider_42px" />
+    <solid android:color="@color/color_FF4A76FF" />
+</shape>

+ 126 - 0
workbenches/src/main/res/layout/dialog_purchase_services.xml

@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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"
+    tools:ignore="ResourceName">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="@dimen/divider_667px"
+            android:layout_height="@dimen/divider_597px"
+            android:background="@drawable/bg_purchase_services"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent">
+
+            <Button
+                android:id="@+id/purchaseServicesBtn"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/divider_120px"
+                android:background="@drawable/bg_purchase_services_button"
+                android:text="订单支付"
+                android:textColor="@android:color/white"
+                android:textSize="@dimen/divider_34px"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/tvPackageMoney"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/divider_40px"
+                android:textColor="@color/color_FF333333"
+                android:textSize="@dimen/divider_32px"
+                android:textStyle="bold"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/purchaseServicesBtn" />
+
+            <TextView
+                android:id="@+id/tvPay"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/divider_12px"
+                android:text="请选择支付渠道支付"
+                android:textColor="@color/color_FF333333"
+                android:textSize="@dimen/divider_32px"
+                android:textStyle="bold"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvPackageMoney" />
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/weChatLayout"
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_marginTop="@dimen/divider_76px"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintHorizontal_weight="1"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintRight_toLeftOf="@id/alipayLayout"
+                app:layout_constraintTop_toBottomOf="@+id/tvPay">
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/imageWeChat"
+                    android:layout_width="@dimen/divider_106px"
+                    android:layout_height="@dimen/divider_88px"
+                    android:background="@mipmap/icon_wechat"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/divider_25px"
+                    android:text="微信支付"
+                    android:textColor="@color/color_FF333333"
+                    android:textSize="@dimen/divider_28px"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/imageWeChat" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/alipayLayout"
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_marginTop="@dimen/divider_76px"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintHorizontal_weight="1"
+                app:layout_constraintLeft_toRightOf="@id/weChatLayout"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvPay">
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:id="@+id/imageAlipay"
+                    android:layout_width="@dimen/divider_90px"
+                    android:layout_height="@dimen/divider_90px"
+                    android:background="@mipmap/icon_alipay"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/divider_23px"
+                    android:text="支付宝支付"
+                    android:textColor="@color/color_FF333333"
+                    android:textSize="@dimen/divider_28px"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/imageAlipay" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>

BIN
workbenches/src/main/res/mipmap-xxhdpi/icon_alipay.png


BIN
workbenches/src/main/res/mipmap-xxhdpi/icon_close.png


BIN
workbenches/src/main/res/mipmap-xxhdpi/icon_wechat.png