From 8d72ec1b07a4fe0863b41b1140a8c0e679867b93 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期四, 03 四月 2025 17:44:29 +0800 Subject: [PATCH] save --- app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 152 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt index c60b042..95358d0 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt @@ -1,26 +1,39 @@ package com.sinata.xqmuse.ui.course +import android.view.View import androidx.core.os.bundleOf +import cn.sinata.xldutils.gone import cn.sinata.xldutils.utils.SpanBuilder import cn.sinata.xldutils.utils.isValidPhone import cn.sinata.xldutils.utils.showAllowingStateLoss import cn.sinata.xldutils.visible +import com.share.utils.ShareUtils import com.sinata.xqmuse.R import com.sinata.xqmuse.dialog.BuyRuleDialog +import com.sinata.xqmuse.dialog.ShareDialog +import com.sinata.xqmuse.dialog.TipDialog +import com.sinata.xqmuse.network.Apis import com.sinata.xqmuse.network.HttpManager import com.sinata.xqmuse.network.entity.ConfirmOrder import com.sinata.xqmuse.network.request import com.sinata.xqmuse.ui.TransparentStatusBarActivity import com.sinata.xqmuse.utils.extention.clickDelay import com.sinata.xqmuse.utils.interfaces.StringCallback +import com.sinata.xqmuse.utils.pay.PayListener +import com.umeng.socialize.bean.SHARE_MEDIA import kotlinx.android.synthetic.main.activity_buy_course.* +import org.jetbrains.anko.browse +import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast -class BuyCourseActivity:TransparentStatusBarActivity() { +class BuyCourseActivity:TransparentStatusBarActivity(),PayListener { override fun setContentView() = R.layout.activity_buy_course private val isSend by lazy { intent.getBooleanExtra("isSend",false) } + private val fromDetail by lazy { intent.getBooleanExtra("fromDetail",true) } private val data by lazy { intent.getParcelableExtra<ConfirmOrder>("data") } + private var receiveId:String? = null + private var orderId = "" override fun initClick() { tv_search.setOnClickListener { @@ -28,12 +41,41 @@ if (!phone.isValidPhone()){ toast("手机号输入有误") }else{ - HttpManager.getUserByPhone(phone).request(this){_,data-> + HttpManager.getUserByPhone(phone).request(this,false,{_,data-> + cl_empty.gone() + receiveId = data?.id iv_avatar.setImageURI(data?.avatar) tv_name.text = data?.nickname tv_phone.text = data?.cellPhone + }){_,msg-> + if (msg == "未查询到账户信息"){ + receiveId = null + iv_avatar.setImageURI("") + tv_name.text = "" + tv_phone.text = "" + cl_empty.visible() + }else + toast(msg) } } + } + + tv_invite.setOnClickListener { + val shareDialog = ShareDialog() + shareDialog.callback = object :StringCallback{ + override fun onResult(rst: String) { + if (rst == "wx"){ + ShareUtils.share(this@BuyCourseActivity, + SHARE_MEDIA.WEIXIN,tv_title.text.toString(),"赠送你一个课程,快来注册领取吧", + Apis.SHARE_REGISTER,null,"") + }else{ + ShareUtils.share(this@BuyCourseActivity, + SHARE_MEDIA.WEIXIN_CIRCLE,tv_title.text.toString(),"赠送你一个课程,快来注册领取吧", + Apis.SHARE_REGISTER,null,"") + } + } + } + shareDialog.showAllowingStateLoss(supportFragmentManager,"share") } tv_buy_rule.clickDelay { @@ -48,6 +90,50 @@ buyRuleDialog.showAllowingStateLoss(supportFragmentManager,"rule") } } + + tv_action.setOnClickListener { + if (cb_rule.isChecked){ + if (isSend&&receiveId.isNullOrEmpty()){ + toast("赠送好友不能为空") + return@setOnClickListener + } + if (rb_balance.isChecked&&((data?.balance?:"0.0").toDouble()>=(data?.generalPrice?:"0.0").toDouble())){//余额勾选,并且可用余额大于课程价格,直接扣余额 + payBalance() + }else if (rb_ali.isChecked){ + pay(2) + }else if (rb_wx.isChecked){ + pay(1) + }else{ + toast("请选择支付方式") + } + }else + toast("请阅读并同意《购买协议》") + } + } + + private fun pay(way:Int) { + tv_action.isEnabled = false + showDialog() + HttpManager.placeOrder(2,way,if (rb_balance.isChecked) 1 else 2,null,receiveId,data?.id?:"",null,data?.orderId).request(this,success = {_,data-> + tv_action.isEnabled = true + orderId = data?.orderId?:"" + if (way == 1) + data?.jumpToWx(this) + else + browse(data?.qrcodeUrl?:"") + }){_,_-> + tv_action.isEnabled = true + } + } + + private fun payBalance() { + tv_action.isEnabled = false + showDialog() + HttpManager.gvieCourse(data?.id?:"",2,receiveId).request(this,success = {_,_-> + onPaySuccess() + }){_,_-> + tv_action.isEnabled = true + } } override fun initView() { @@ -55,17 +141,78 @@ cl_send.visible() } data?.apply { + if (!orderId.isNullOrEmpty()){ + titleBar.addRightButton("取消订单",onClickListener = View.OnClickListener { + TipDialog.show(supportFragmentManager,"是否确认取消该订单?",object :TipDialog.OnClickCallback{ + override fun onOk() { + HttpManager.cancel(orderId).request(this@BuyCourseActivity){_,_-> + toast("取消成功") + setResult(RESULT_OK) + finish() + } + } + + override fun onCancel() { + } + }) + }) + } + if (generalPrice.isNullOrEmpty()){ + generalPrice = if (amount.isNullOrEmpty()) "0.0" else amount + } iv_cover.setImageURI(coverUrl) - tv_title.text = courseTitle + tv_title.text = courseTitle?:title tv_teacher.text = "导师 $tutor" - tv_price.text = SpanBuilder("¥$generalPrice").size(0,1,11).build() - tv_money.text = SpanBuilder("¥$generalPrice").size(0,1,11).build() + tv_price.text = SpanBuilder("¥${generalPrice}").size(0,1,11).build() + tv_money.text = SpanBuilder("¥${generalPrice}").size(0,1,11).build() tv_total.text = generalPrice val s = "余额抵扣 当前可用 ¥$balance" rb_balance.text = SpanBuilder(s).size(4,s.length,11).color(this@BuyCourseActivity,4,s.length,R.color.textColor99).build() + rb_balance.isChecked = !(balance.isNullOrEmpty()||balance.toDouble() == 0.0) + + if ((data?.generalPrice?:"0.0").toDouble() == 0.0){ + rb_ali.isEnabled = false + rb_wx.isEnabled = false + rb_ali.alpha = 0.6f + rb_wx.alpha = 0.6f + } } } + private fun checkPayStatus(){ + if (!orderId.isNullOrEmpty()){ + HttpManager.queryPayment(orderId).request(this){_,data-> + when(data){ + "pending"->{ + toast("未查询到支付结果,如已付款请忽略") + } + "succeeded"->{ + toast("支付成功") + onPaySuccess() + } + "failed"->{ + toast("支付失败") + } + } + } + orderId = "" + } + } + override fun onResume() { + super.onResume() + checkPayStatus() + } + override fun onPaySuccess() { + setResult(RESULT_OK) + startActivity<PaySuccessActivity>("data" to data,"fromDetail" to fromDetail) + finish() + } + + override fun onPayCancel() { + } + + override fun onPayError(msg: String) { + } } -- Gitblit v1.7.1