罗明文
2024-06-16 9673bcd57c6100ad9fdfbee728ef078104511fc1
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
package com.dollearn.student.dialog
 
import android.view.Gravity
import androidx.recyclerview.widget.LinearLayoutManager
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.visible
import com.dollearn.student.R
import com.dollearn.student.WeparkApplication
import com.dollearn.student.network.HttpManager
import com.dollearn.student.network.entity.CommonData
import com.dollearn.student.network.request
import com.dollearn.student.ui.home.adapter.StringAdapter
import com.dollearn.student.utils.Const
import com.dollearn.student.utils.event.EmptyEvent
import com.dollearn.student.utils.extention.clickDelay
import com.dollearn.student.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.dialog_shop_choose.*
import org.greenrobot.eventbus.EventBus
 
class ChooseShopDialog : BaseDialogFragment() {
    var stringCallback: StringCallback? = null
    override fun setContentView() = R.layout.dialog_shop_choose
 
    private var provinceCode = ""
    private var cityCode = ""
    private var shopId = ""
    private var shopName = ""
    private val cities = arrayListOf<CommonData>()
    private val cityStrings = arrayListOf<String>()
    private val cityAdapter = StringAdapter(cityStrings)
 
    private val shops = arrayListOf<CommonData>()
    private val shopStrings = arrayListOf<String>()
    private val shopAdapter = StringAdapter(shopStrings)
 
    private fun getscoreshopUse(): Boolean {
        if (arguments == null) return false
        else
            return arguments?.getBoolean("scoreshopUse", false) as Boolean
 
 
    }
 
 
    override fun setGravity() = Gravity.CENTER
 
    override fun initView() {
        tv_province.text = WeparkApplication.province
        provinceCode = WeparkApplication.provinceCode
        tv_city.text = WeparkApplication.cityName
        cityCode = WeparkApplication.cityCode
 
        if (!getscoreshopUse()) {
            shopId = WeparkApplication.storeId
            tv_shop.text = WeparkApplication.store
        }
        tv_cancel.setOnClickListener { dismissAllowingStateLoss() }
        tv_action.clickDelay {
            if (shopId.isEmpty() && !getscoreshopUse())
                myToast("请选择门店")
            else {
                if (getscoreshopUse()) {
 
                    stringCallback?.onResult(
                        if (shopId.isEmpty() && shopName.isEmpty())
                            "" else "$shopId-*-*$shopName"
                    )
                } else {
                    WeparkApplication.province = tv_province.text.toString()
                    WeparkApplication.provinceCode = provinceCode
                    WeparkApplication.cityName = tv_city.text.toString()
                    WeparkApplication.cityCode = cityCode
                    WeparkApplication.store = tv_shop.text.toString()
                    WeparkApplication.storeId = shopId
                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_SHOP))
                }
 
                dismissAllowingStateLoss()
            }
        }
        getProvince()
        tv_province.clickDelay {
            bg.callOnClick()
            rv_province.visible()
        }
        tv_city.clickDelay {
            bg.callOnClick()
            getCity()
        }
        tv_shop.clickDelay {
            bg.callOnClick()
            getShop()
        }
        bg.clickDelay {
            rv_province.gone()
            rv_city.gone()
            rv_shop.gone()
        }
        rv_city.layoutManager = LinearLayoutManager(requireContext())
        rv_city.adapter = cityAdapter
        cityAdapter.setOnItemClickListener { view, position ->
            cityCode = cities[position].code
            tv_city.text = cities[position].name
            tv_shop.text = ""
            shopId = ""
            rv_city.gone()
        }
        rv_shop.layoutManager = LinearLayoutManager(requireContext())
        rv_shop.adapter = shopAdapter
        shopAdapter.setOnItemClickListener { view, position ->
            if (getscoreshopUse() && position == 0) {
                shopId = ""
                tv_shop.text = "全部门店"
                shopName = ""
            } else {
                shopId = shops[position].id.toString()
                tv_shop.text = shops[position].name
                shopName = shops[position].name
            }
 
            rv_shop.gone()
        }
    }
 
    private fun getProvince() {
        HttpManager.queryProvinceAndCity(null)
            .request(requireActivity() as BaseActivity) { _, data ->
                if (!isAdded)
                    return@request
                rv_province.layoutManager = LinearLayoutManager(requireContext())
                val list = arrayListOf<String>()
                list.addAll((data ?: arrayListOf()).map { it.name })
                val stringAdapter = StringAdapter(list)
                rv_province.adapter = stringAdapter
                stringAdapter.setOnItemClickListener { view, position ->
                    provinceCode = data!![position].code
                    tv_province.text = data[position].name
                    tv_city.text = ""
                    cityCode = ""
                    tv_shop.text = ""
                    shopId = ""
                    rv_province.gone()
                }
            }
    }
 
    private fun getCity() {
        if (provinceCode.isEmpty()) {
            myToast("请选择省")
            return
        }
        HttpManager.queryProvinceAndCity(provinceCode)
            .request(requireActivity() as BaseActivity) { _, data ->
                cities.clear()
                cityStrings.clear()
                cities.addAll(data ?: arrayListOf())
                cityStrings.addAll((cities.map { it.name }))
                cityAdapter.notifyDataSetChanged()
                rv_city.visible()
            }
    }
 
    private fun getShop() {
        if (cityCode.isEmpty()&&provinceCode.isEmpty()) {
            myToast("请选择所在城市")
            return
        }
        HttpManager.queryStoreByCityCode(cityCode,provinceCode)
            .request(requireActivity() as BaseActivity) { _, data ->
                shops.clear()
                shopStrings.clear()
                shops.addAll(data ?: arrayListOf())
                shopStrings.addAll((shops.map { it.name }))
                if (getscoreshopUse()) {
                    shops.add(0, CommonData())
                    shopStrings.add(0, "全部门店")
                }
                shopAdapter.notifyDataSetChanged()
                rv_shop.visible()
            }
    }
}