diff --git a/.gradle/8.13/executionHistory/executionHistory.bin b/.gradle/8.13/executionHistory/executionHistory.bin
index d906c06..fddc89e 100644
Binary files a/.gradle/8.13/executionHistory/executionHistory.bin and b/.gradle/8.13/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.13/executionHistory/executionHistory.lock b/.gradle/8.13/executionHistory/executionHistory.lock
index 075663f..f172ccf 100644
Binary files a/.gradle/8.13/executionHistory/executionHistory.lock and b/.gradle/8.13/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.13/fileHashes/fileHashes.bin b/.gradle/8.13/fileHashes/fileHashes.bin
index ed70413..dd35c72 100644
Binary files a/.gradle/8.13/fileHashes/fileHashes.bin and b/.gradle/8.13/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.13/fileHashes/fileHashes.lock b/.gradle/8.13/fileHashes/fileHashes.lock
index 33114e1..cba1220 100644
Binary files a/.gradle/8.13/fileHashes/fileHashes.lock and b/.gradle/8.13/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.13/fileHashes/resourceHashesCache.bin b/.gradle/8.13/fileHashes/resourceHashesCache.bin
index 791c0c0..e548c24 100644
Binary files a/.gradle/8.13/fileHashes/resourceHashesCache.bin and b/.gradle/8.13/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 4bb5f6d..9d70a37 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index 5ce365f..66076b4 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
new file mode 100644
index 0000000..4d3d6d9
--- /dev/null
+++ b/.idea/caches/deviceStreaming.xml
@@ -0,0 +1,2289 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 70f6ed5..ebc9c4f 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,10 +4,10 @@
-
+
-
+
diff --git a/app/src/main/java/com/ck/ckcollar/app/model/OrderPaymentModel.kt b/app/src/main/java/com/ck/ckcollar/app/model/OrderPaymentModel.kt
new file mode 100644
index 0000000..86d96f5
--- /dev/null
+++ b/app/src/main/java/com/ck/ckcollar/app/model/OrderPaymentModel.kt
@@ -0,0 +1,12 @@
+package com.ck.ckcollar.app.model
+
+import com.google.gson.JsonElement
+
+class OrderPaymentModel {
+ var orderStr: JsonElement? = null
+ var wxMap: JsonElement? = null
+ var pointsAmount: Double = 0.0
+ var balanceAmount: Double = 0.0
+ var alipayAmount: Double = 0.0
+ var info: String? = ""
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/WithDrawActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/WithDrawActivity.kt
index 348988d..e05e146 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/WithDrawActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/WithDrawActivity.kt
@@ -70,18 +70,24 @@ class WithDrawActivity : CKLHBaseActionBarActivity() {
toast(getString(R.string.no_balance_data))
return
}
- if (TextUtils.isEmpty(binding.editAmount.text.toString())){
+ val amountText = binding.editAmount.text.toString()
+ if (TextUtils.isEmpty(amountText)){
toast(getString(R.string.withdraw_amount_not_empty))
return
}
- if (binding.editAmount.text.toString().toDouble() > model!!.balance){
+ val amount = amountText.toBigDecimalOrNull()
+ if (amount == null || amount < BigDecimal("0.1")) {
+ toast(getString(R.string.withdraw_amount_minimum))
+ return
+ }
+ if (amount > BigDecimal.valueOf(model!!.balance)){
toast(getString(R.string.withdraw_amount_alert))
return
}
showProgeassDialog(getString(R.string.withdraw))
TTHttpClient.postJson(this, "提现", TTRequestParam().apply {
- add(TTRequestData("amount", binding.editAmount.text.toString()))
+ add(TTRequestData("amount", amountText))
add(TTRequestData("payType", payType))
}, object : ICallback {
override fun onSuccess(data: String) {
@@ -119,4 +125,4 @@ class WithDrawActivity : CKLHBaseActionBarActivity() {
}
})
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/order/MyOrderActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/order/MyOrderActivity.kt
index c24a56c..f5c48a8 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/order/MyOrderActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/order/MyOrderActivity.kt
@@ -160,6 +160,7 @@ class MyOrderActivity : CKBaseActivity() , View.OnClickListener{
fun getData() {
+ showProgeassDialog()
TTHttpClient.get(this, "我的订单", TTRequestParam().apply {
add(
TTRequestData("pageNum", page)
@@ -172,10 +173,10 @@ class MyOrderActivity : CKBaseActivity() , View.OnClickListener{
override fun onSuccess(data: String) {
var model = Gson().fromJson(data, OrderModel::class.java)
+ if (page == 1) {
+ this@MyOrderActivity.data.clear()
+ }
model.rows?.let{
- if (page ==1){
- this@MyOrderActivity.data.clear()
- }
if (this@MyOrderActivity.data.size != model.total){
this@MyOrderActivity.data.addAll(model.rows!!)
}
@@ -184,11 +185,17 @@ class MyOrderActivity : CKBaseActivity() , View.OnClickListener{
orderAdapter.data = this@MyOrderActivity.data
orderAdapter.notifyDataSetChanged()
+ val isEmpty = this@MyOrderActivity.data.isEmpty()
+ binding.relNoresult.visibility = if (isEmpty) View.VISIBLE else View.GONE
+ binding.recyclerView.visibility = if (isEmpty) View.GONE else View.VISIBLE
+
binding.refreshLayout.finishRefresh()
binding.refreshLayout.finishLoadMore(true)
}
override fun onFailed(code: String, msg: String) {
+ binding.refreshLayout.finishRefresh()
+ binding.refreshLayout.finishLoadMore(false)
toast(msg)
}
})
@@ -445,4 +452,4 @@ class MyOrderActivity : CKBaseActivity() , View.OnClickListener{
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/order/PayOrderActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/order/PayOrderActivity.kt
index 25bd14e..1f8c627 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/order/PayOrderActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/order/PayOrderActivity.kt
@@ -22,22 +22,28 @@ import com.ck.ckcollar.app.model.AddressModel
import com.ck.ckcollar.app.model.ConfirmOrderModel
import com.ck.ckcollar.app.model.MemberModel
import com.ck.ckcollar.app.model.OrderModel
+import com.ck.ckcollar.app.model.OrderPaymentModel
import com.ck.ckcollar.app.model.PayOrderModel
import com.ck.ckcollar.app.model.PayPasswordStatus
import com.ck.ckcollar.app.model.PayResult
import com.ck.ckcollar.app.model.UserInfoModel
import com.ck.ckcollar.app.ui.act.setting.PayPsswordActivity
+import com.ck.ckcollar.app.ui.act.balance.RechargeActivity
import com.ck.ckcollar.app.ui.act.shop.OrderSuccessActivity
import com.ck.ckcollar.app.ui.act.shop.PayPasswordBottomFragment
import com.ck.ckcollar.app.ui.base.CKBaseActivity
import com.ck.ckcollar.app.utils.CKUtils
+import com.ck.ckcollar.app.utils.Const
import com.ck.ckcollar.app.utils.networkone.ICallback
import com.ck.ckcollar.app.utils.networkone.TTHttpClient
import com.ck.ckcollar.app.utils.networkone.model.TTRequestData
import com.ck.ckcollar.app.utils.networkone.model.TTRequestParam
import com.google.gson.Gson
+import com.tencent.mm.opensdk.modelpay.PayReq
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.tt.kit.model.Data
import com.tt.kit.model.DataCollection
+import com.tt.kit.utils.LiveDataBus
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@@ -71,6 +77,14 @@ class PayOrderActivity : CKBaseActivity() {
}
override fun initView() {
+ LiveDataBus.get().with(RechargeActivity.WX_PAY_RESULT, Int::class.java).observe(this) { result ->
+ if (result == 0) {
+ handleWeChatPaymentSuccess()
+ } else {
+ handleWeChatPaymentFailed(result == -2)
+ }
+ }
+
productAdapter =
ProductAdapter(this@PayOrderActivity, productDatas, object : OnItemClickListenner {
override fun onClick(pos: Int, model: Any) {
@@ -286,16 +300,25 @@ class PayOrderActivity : CKBaseActivity() {
)
}, object : ICallback {
override fun onSuccess(data: String) {
- var model = Gson().fromJson(data, PayOrderModel::class.java)
+ val paymentModel = Gson().fromJson(data, OrderPaymentModel::class.java)
if ("0".equals(this@PayOrderActivity.payType)) {
- //微信
+ val weChatPayParams = paymentModel.wxMap
+ if (weChatPayParams == null || !weChatPayParams.isJsonObject) {
+ hiddenProgeassDialog()
+ toast("微信支付参数格式错误")
+ return
+ }
+ wxPay(Gson().fromJson(weChatPayParams, PayOrderModel::class.java))
}else if ("1".equals(this@PayOrderActivity.payType)) {
- if (TextUtils.isEmpty(model.orderStr)){
+ val aliPayOrderStr = paymentModel.orderStr
+ ?.takeIf { it.isJsonPrimitive && it.asJsonPrimitive.isString }
+ ?.asString
+ if (TextUtils.isEmpty(aliPayOrderStr)){
toActivity(OrderSuccessActivity::class.java, DataCollection())
finish(DataCollection(),1002)
}else{
- aliPay(model.orderStr!!)
+ aliPay(aliPayOrderStr!!)
}
}else{
toast(getString(R.string.order_success))
@@ -314,6 +337,60 @@ class PayOrderActivity : CKBaseActivity() {
})
}
+ private fun wxPay(model: PayOrderModel) {
+ val requiredValues = listOf(
+ model.appId,
+ model.partnerId,
+ model.prepayId,
+ model.packageVal,
+ model.nonceStr,
+ model.timeStamp,
+ model.paySign
+ )
+ if (requiredValues.any { it.isNullOrBlank() }) {
+ hiddenProgeassDialog()
+ toast("微信支付参数不完整,请检查商户号等支付参数")
+ return
+ }
+ if (model.appId != Const.WX_APP_ID) {
+ hiddenProgeassDialog()
+ toast("微信支付 AppID 不匹配")
+ return
+ }
+
+ val api = WXAPIFactory.createWXAPI(this, Const.WX_APP_ID, true)
+ api.registerApp(Const.WX_APP_ID)
+ if (!api.isWXAppInstalled) {
+ hiddenProgeassDialog()
+ toast("请先安装微信")
+ return
+ }
+
+ val request = PayReq().apply {
+ appId = model.appId
+ partnerId = model.partnerId
+ prepayId = model.prepayId
+ packageValue = model.packageVal
+ nonceStr = model.nonceStr
+ timeStamp = model.timeStamp
+ sign = model.paySign
+ extData = model.orderNo
+ }
+ hiddenProgeassDialog()
+ if (!api.sendReq(request)) {
+ toast("微信支付拉起失败")
+ }
+ }
+
+ private fun handleWeChatPaymentSuccess() {
+ toast(getString(R.string.payment_success))
+ finish(DataCollection(), 1002)
+ }
+
+ private fun handleWeChatPaymentFailed(cancelled: Boolean) {
+ toast(if (cancelled) "已取消微信支付" else getString(R.string.payment_faild))
+ }
+
private fun canPointsCoverPayAmount(): Boolean {
if (!selectPoints) return false
val pointsDeduction = calculatePointsDeduction() ?: return false
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/PetManagerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/PetManagerActivity.kt
index 09a69d8..3028303 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/PetManagerActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/PetManagerActivity.kt
@@ -2,6 +2,7 @@ package com.ck.ckcollar.app.ui.act.petmanager
import android.net.wifi.ScanResult
import android.os.Bundle
+import android.view.View
import android.view.ViewGroup
import android.widget.PopupWindow
import androidx.recyclerview.widget.LinearLayoutManager
@@ -64,7 +65,7 @@ class PetManagerActivity : CKBaseActivity() {
}
fun getData() {
- //showProgeassDialog(getString(R.string.search))
+ showProgeassDialog(getString(R.string.search))
TTHttpClient.get(this, "宠物列表", TTRequestParam().apply {
add(
TTRequestData("pageNum", 1)
@@ -81,6 +82,10 @@ class PetManagerActivity : CKBaseActivity() {
petAdapter.data = this@PetManagerActivity.data
petAdapter.notifyDataSetChanged()
+
+ val isEmpty = this@PetManagerActivity.data.isEmpty()
+ binding.relNoresult.visibility = if (isEmpty) View.VISIBLE else View.GONE
+ binding.recyclerView.visibility = if (isEmpty) View.GONE else View.VISIBLE
}
override fun onFailed(code: String, msg: String) {
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/OrderActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/OrderActivity.kt
index 48ddf6f..0729fe8 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/OrderActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/OrderActivity.kt
@@ -23,6 +23,7 @@ import com.ck.ckcollar.app.model.AddressModel
import com.ck.ckcollar.app.model.ConfirmOrderModel
import com.ck.ckcollar.app.model.CreateOrderModel
import com.ck.ckcollar.app.model.MemberModel
+import com.ck.ckcollar.app.model.OrderPaymentModel
import com.ck.ckcollar.app.model.PayOrderModel
import com.ck.ckcollar.app.model.PayPasswordStatus
import com.ck.ckcollar.app.model.PayResult
@@ -312,15 +313,24 @@ class OrderActivity : CKBaseActivity() {
TTHttpClient.postJson(this, "下单", param.toString(), object : ICallback {
override fun onSuccess(data: String) {
- var model = Gson().fromJson(data, PayOrderModel::class.java)
+ val paymentModel = Gson().fromJson(data, OrderPaymentModel::class.java)
if ("0".equals(this@OrderActivity.payType)) {
- wxPay(model)
+ val weChatPayParams = paymentModel.wxMap
+ if (weChatPayParams == null || !weChatPayParams.isJsonObject) {
+ hiddenProgeassDialog()
+ toast("微信支付参数格式错误")
+ return
+ }
+ wxPay(Gson().fromJson(weChatPayParams, PayOrderModel::class.java))
}else if ("1".equals(this@OrderActivity.payType)) {
- if (TextUtils.isEmpty(model.orderStr)){
+ val aliPayOrderStr = paymentModel.orderStr
+ ?.takeIf { it.isJsonPrimitive && it.asJsonPrimitive.isString }
+ ?.asString
+ if (TextUtils.isEmpty(aliPayOrderStr)){
toActivity(OrderSuccessActivity::class.java, DataCollection())
finish()
}else{
- aliPay(model.orderStr!!)
+ aliPay(aliPayOrderStr!!)
}
}else{
toast(getString(R.string.order_success))
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/ShopCarActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/ShopCarActivity.kt
index c1b1511..17a3b07 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/ShopCarActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/ShopCarActivity.kt
@@ -4,6 +4,7 @@ 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 android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
@@ -223,6 +224,7 @@ class ShopCarActivity : CKLHBaseActionBarActivity() {
})
}
fun getData(){
+ showProgeassDialog()
TTHttpClient.get(this,"购物车列表", TTRequestParam(),object : ICallback{
override fun onSuccess(data: String) {
this@ShopCarActivity.productDatas = Gson().fromJson>(data, object : TypeToken>(){}.type)
@@ -230,6 +232,10 @@ class ShopCarActivity : CKLHBaseActionBarActivity() {
shopCarAdapter.data = this@ShopCarActivity.productDatas
shopCarAdapter.notifyDataSetChanged()
+ val isEmpty = this@ShopCarActivity.productDatas.isEmpty()
+ binding.relNoresult.visibility = if (isEmpty) View.VISIBLE else View.GONE
+ binding.recyclerView.visibility = if (isEmpty) View.GONE else View.VISIBLE
+
var flag = true
for (model in productDatas){
if ("0".equals(model.selected)){
@@ -251,7 +257,7 @@ class ShopCarActivity : CKLHBaseActionBarActivity() {
}
override fun onFailed(code: String, msg: String) {
-
+ toast(msg)
}
})
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/TypeActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/TypeActivity.kt
index 4c93b4f..a0a55d4 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/TypeActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/TypeActivity.kt
@@ -3,6 +3,7 @@ package com.ck.ckcollar.app.ui.act.shop
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
+import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
@@ -88,6 +89,7 @@ class TypeActivity : CKLHBaseActionBarActivity() {
fun getData() {
+ showProgeassDialog()
TTHttpClient.get(this, "商品列表", TTRequestParam().apply {
add(
TTRequestData("pageNum", page)
@@ -109,12 +111,18 @@ class TypeActivity : CKLHBaseActionBarActivity() {
productAdapter.data = productDatas
productAdapter.notifyDataSetChanged()
+ val isEmpty = productDatas.isEmpty()
+ binding.relNoresult.visibility = if (isEmpty) View.VISIBLE else View.GONE
+ binding.recyclerView.visibility = if (isEmpty) View.GONE else View.VISIBLE
+
binding.refreshLayout.finishLoadMore(true)
binding.refreshLayout.finishRefresh()
}
override fun onFailed(code: String, msg: String) {
- binding.refreshLayout.finishLoadMore(true)
+ binding.refreshLayout.finishLoadMore(false)
+ binding.refreshLayout.finishRefresh()
+ toast(msg)
}
})
diff --git a/app/src/main/java/com/ck/ckcollar/app/wxapi/WXPayEntryActivity.kt b/app/src/main/java/com/ck/ckcollar/app/wxapi/WXPayEntryActivity.kt
new file mode 100644
index 0000000..83fc80b
--- /dev/null
+++ b/app/src/main/java/com/ck/ckcollar/app/wxapi/WXPayEntryActivity.kt
@@ -0,0 +1,44 @@
+package com.ck.ckcollar.app.wxapi
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import android.widget.Toast
+import com.ck.ckcollar.app.ui.act.balance.RechargeActivity
+import com.ck.ckcollar.app.utils.Const
+import com.tencent.mm.opensdk.modelbase.BaseReq
+import com.tencent.mm.opensdk.modelbase.BaseResp
+import com.tencent.mm.opensdk.openapi.IWXAPI
+import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
+import com.tt.kit.utils.LiveDataBus
+
+class WXPayEntryActivity : Activity(), IWXAPIEventHandler {
+ private lateinit var api: IWXAPI
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ api = WXAPIFactory.createWXAPI(this, Const.WX_APP_ID, false)
+ api.handleIntent(intent, this)
+ }
+
+ override fun onNewIntent(intent: Intent?) {
+ super.onNewIntent(intent)
+ setIntent(intent)
+ api.handleIntent(intent, this)
+ }
+
+ override fun onReq(req: BaseReq?) = Unit
+
+ override fun onResp(resp: BaseResp?) {
+ val resultCode = resp?.errCode ?: -1
+ val message = when (resultCode) {
+ BaseResp.ErrCode.ERR_OK -> "微信支付成功"
+ BaseResp.ErrCode.ERR_USER_CANCEL -> "已取消微信支付"
+ else -> "微信支付失败"
+ }
+ Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
+ LiveDataBus.get().with(RechargeActivity.WX_PAY_RESULT).value = resultCode
+ finish()
+ }
+}
diff --git a/app/src/main/res/layout/activity_my_order.xml b/app/src/main/res/layout/activity_my_order.xml
index 3052ead..f13e6a3 100644
--- a/app/src/main/res/layout/activity_my_order.xml
+++ b/app/src/main/res/layout/activity_my_order.xml
@@ -80,18 +80,34 @@
android:layout_height="match_parent">
+ android:layout_height="wrap_content"/>
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
+
+
+ android:layout_height="wrap_content"/>
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/activity_pet_manager_list.xml b/app/src/main/res/layout/activity_pet_manager_list.xml
index 7b86d0f..49da56d 100644
--- a/app/src/main/res/layout/activity_pet_manager_list.xml
+++ b/app/src/main/res/layout/activity_pet_manager_list.xml
@@ -14,12 +14,27 @@
android:padding="20dp"
>
-
+ android:layout_weight="1">
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/activity_setting_web_view.xml b/app/src/main/res/layout/activity_setting_web_view.xml
new file mode 100644
index 0000000..040302b
--- /dev/null
+++ b/app/src/main/res/layout/activity_setting_web_view.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_shop_car.xml b/app/src/main/res/layout/activity_shop_car.xml
index d6086d3..c8a942d 100644
--- a/app/src/main/res/layout/activity_shop_car.xml
+++ b/app/src/main/res/layout/activity_shop_car.xml
@@ -11,13 +11,29 @@
android:orientation="vertical">
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/activity_shop_type.xml b/app/src/main/res/layout/activity_shop_type.xml
index a758828..16d3e3b 100644
--- a/app/src/main/res/layout/activity_shop_type.xml
+++ b/app/src/main/res/layout/activity_shop_type.xml
@@ -20,17 +20,33 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
+
+ android:layout_height="wrap_content"/>
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/include_no_result_layout.xml b/app/src/main/res/layout/include_no_result_layout.xml
new file mode 100644
index 0000000..3e54bc1
--- /dev/null
+++ b/app/src/main/res/layout/include_no_result_layout.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/permission_top_dialog.xml b/app/src/main/res/layout/permission_top_dialog.xml
new file mode 100644
index 0000000..85abee3
--- /dev/null
+++ b/app/src/main/res/layout/permission_top_dialog.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/mipmap-hdpi/icon_no_result.png b/app/src/main/res/mipmap-hdpi/icon_no_result.png
new file mode 100644
index 0000000..d48c042
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_no_result.png differ
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 234f0a3..c9ae90e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -274,6 +274,7 @@
确认充值
充值金额不能为空
提现金额不能为空
+ 提现金额不能小于0.1元
提现金额不能大于可提现余额