lmw
2024-07-09 b13afc751dbbce24753d008f1f87d2c5e133a4ad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package com.dollearn.student.ui.welfare
 
import android.app.Activity
import android.content.Intent
import android.graphics.Paint
import android.webkit.WebChromeClient
import android.webkit.WebViewClient
import androidx.core.os.bundleOf
import com.dollearn.student.R
import com.dollearn.student.dialog.TipDialog
import com.dollearn.student.network.HttpManager
import com.dollearn.student.network.entity.Banner
import com.dollearn.student.network.entity.GoodsDetail
import com.dollearn.student.network.request
import com.dollearn.student.ui.TransparentStatusBarActivity
import com.dollearn.student.ui.home.PayResultActivity
import com.dollearn.student.ui.shop.ExchangeActivity
import com.dollearn.student.ui.shop.adapter.ShopBannerAdapter
import com.dollearn.student.utils.pay.PayListener
import com.dollearn.student.utils.pay.PayUtil
import com.youth.banner.indicator.CircleIndicator
import kotlinx.android.synthetic.main.activity_goods_detail.*
import kotlinx.android.synthetic.main.activity_goods_detail.tv_score
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.startActivityForResult
 
class GoodsDetailActivity : TransparentStatusBarActivity(), PayListener {
    override fun setContentView() = R.layout.activity_goods_detail
 
    private val id by lazy { intent.getStringExtra("id")?:"" }
    private var goods: GoodsDetail? = null
 
    private var score = 0
 
    private val bannerImg = arrayListOf<Banner>()
    private val bannerAdapter by lazy {
        ShopBannerAdapter(bannerImg, this)
    }
 
    override fun initClick() {
        tv_action.setOnClickListener {
            if (score<goods?.good?.integral?:0){
                val tipDialog = TipDialog()
                tipDialog.arguments = bundleOf("isAlert" to true,"msg" to "兑换失败,当前剩余积分不足!","ok" to "关闭")
                tipDialog.show(supportFragmentManager,"tip")
                return@setOnClickListener
            }
            tv_action.isEnabled = false
            showDialog()
            HttpManager.redeemNow(id).request(this,false, {_,data->
                tv_action.isEnabled = true
                startActivity<ExchangeActivity>("order" to data)
            }){_,msg->
                val tipDialog = TipDialog()
                tipDialog.arguments = bundleOf("isAlert" to true,"msg" to msg,"ok" to "关闭")
                tipDialog.show(supportFragmentManager,"tip")
                tv_action.isEnabled = true
            }
        }
    }
 
    override fun initView() {
        banner.adapter = bannerAdapter
        banner.indicator = CircleIndicator(this)
        val settings = webView.settings
        settings.javaScriptEnabled = true
        settings.javaScriptCanOpenWindowsAutomatically = true
        settings.defaultTextEncodingName = "utf-8"
        settings.domStorageEnabled = true
        webView.webChromeClient = object : WebChromeClient() {}
        webView.webViewClient = object : WebViewClient() {}
        PayUtil.addPayListener(this)
        getData()
        getScore()
    }
 
    private fun getScore() {
        HttpManager.getIntegralStudy().request(this){_,data->
            score = data?:0
            tv_balance.text = "剩余积分:$score"
        }
    }
 
    private fun getData() {
        HttpManager.goodDetail(id).request(this) { _, data ->
            goods = data
            goods?.apply {
                tv_score.text = good.integral.toString()
                bannerImg.addAll((good.detailImg.split(",")).map { Banner(url = it) })
                bannerAdapter.notifyDataSetChanged()
                banner.currentItem = 1
                tv_price.text = good.integral.toString()
                tv_value.text = "¥%.2f".format(good.price)
                tv_value.paintFlags = tv_value.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
                tv_name.text = good.name
                tv_category.text = goodTypes?.joinToString ("|"){ it.name }
                tv_sold.text = "%s%s%d人已换".format(if (residueNumber == null) "" else "剩余数量:${residueNumber}|",if (good.userCount == null) "" else "可换数量:${good.userCount}|", exchangeNumber)
                val sHead =
                    "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
                webView!!.loadDataWithBaseURL(null, sHead + good.detail, "text/html", "utf-8", null)
            }
        }
    }
 
    override fun onPaySuccess() {
        startActivityForResult<PayResultActivity>(1, "type" to PayResultActivity.TYPE_EXCHANGE_SUC)
    }
 
    override fun onPayCancel() {
    }
 
    override fun onPayError(msg: String) {
        startActivityForResult<PayResultActivity>(
            1,
            "type" to PayResultActivity.TYPE_EXCHANGE_FAILED,
            "msg" to msg
        )
    }
 
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == Activity.RESULT_OK) {
            tv_action.postDelayed({
            }, 500)
        }
    }
 
    override fun onDestroy() {
        super.onDestroy()
        PayUtil.removePayListener(this)
        PayUtil.unregisterApp()
    }
}