diff --git a/.gitignore b/.gitignore
index aa724b7..46818b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
*.iml
.gradle
+.idea
/local.properties
/.idea/caches
/.idea/libraries
@@ -13,3 +14,4 @@
.externalNativeBuild
.cxx
local.properties
+/.idea/
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index b268ef3..713138f 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,6 +4,14 @@
+
+
+
+
+
+
+
+
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 956a95c..d3da0a0 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,9 +4,9 @@
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b2c751a..2006b65 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,7 @@
+
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 25b99c4..b3bd9b0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -30,7 +30,7 @@ android {
targetSdkVersion 35
versionCode 2020
// versionName "2.0.20"
- versionName "2.0.20-Beta2"
+ versionName "2.0.20-Beta4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt
index e9ea3f1..f9ba63f 100644
--- a/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt
+++ b/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt
@@ -1,7 +1,6 @@
package com.abbidot.tracker.adapter
import android.content.Context
-import android.graphics.Paint
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
@@ -9,7 +8,6 @@ import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.PackageBean
import com.abbidot.tracker.constant.ConstantInt
-import com.abbidot.tracker.constant.ConstantString
/**
*Created by .yzq on 2024/8/6/006.
@@ -32,49 +30,31 @@ class ChoosePlanAdapter(
setText(R.id.tv_choose_plan_item_name, item.planName)
- val price = if (item.discountedPrice > 0) item.discountedPrice else item.planPrice
+// val price = if (item.discountedPrice > 0) item.discountedPrice else item.planPrice
getTextView(R.id.tv_choose_plan_item_money).apply {
- text = if (item.mealUnit == ConstantString.PackageUnitMonth) {
- String.format(
- mContext.getString(R.string.txt_money_unit), Utils.formatDecimal(price, 2)
- )
- } else {
- val monthPrice = Utils.formatDecimal(price / (item.period * 12), 2)
- String.format(mContext.getString(R.string.txt_money_unit), monthPrice)
- }
- }
-
- getTextView(R.id.tv_choose_plan_item_year_money).let {
- it.text = String.format(
+ text = String.format(
mContext.getString(R.string.txt_money_unit),
- Utils.formatDecimal(item.discountedPrice, 2)
+ Utils.formatDecimal(item.planPrice / item.planTimeMonthsCount, 1)
)
-
- it.visibility = if (item.discount > 0) View.VISIBLE
- else View.GONE
}
- getTextView(R.id.tv_choose_plan_item_discount_money).let {
- it.text = String.format(
- mContext.getString(R.string.txt_money_unit),
- Utils.formatDecimal(item.planPrice, 2)
- )
- it.paint.flags = Paint.STRIKE_THRU_TEXT_FLAG
- it.visibility = if (item.discount > 0) View.VISIBLE
- else View.GONE
- }
+ getTextView(R.id.tv_choose_plan_item_plan_money).text = String.format(
+ mContext.getString(R.string.txt_money_unit), "${item.planPrice}"
+ )
+
+ getTextView(R.id.tv_choose_plan_item_billed_money).text = item.billedMode
getView(R.id.ll_choose_plan_item_discount_percent).let {
- it.visibility = if (item.discount > 0) View.VISIBLE
- else View.GONE
- }
- getTextView(R.id.tv_choose_plan_item_discount_percent).let {
- it.text = "${item.discount}%"
+ it.visibility = if (item.popularType == ConstantInt.Type1) View.VISIBLE
+ else View.INVISIBLE
}
+// getTextView(R.id.tv_choose_plan_item_discount_percent).let {
+// it.text = "${item.discount}%"
+// }
getView(R.id.cv_choose_plan_item_popular).let {
- if (item.popularType == ConstantInt.Type1) it.visibility = View.VISIBLE
+ if (item.popularType == ConstantInt.Type1) it.visibility = View.GONE
else it.visibility = View.GONE
}
}
diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanAdapter.kt
index ae672e4..0240082 100644
--- a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanAdapter.kt
+++ b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanAdapter.kt
@@ -4,9 +4,9 @@ import android.content.Context
import android.widget.RelativeLayout
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
-import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.PackageTypeBean
+import com.abbidot.tracker.constant.ConstantInt
/**
*Created by .yzq on 2024/3/19/019.
@@ -32,10 +32,16 @@ class SubscriptionPlanAdapter(
relativeLayout.setBackgroundResource(0)
// popularCardView.visibility = View.GONE
}
- holder.setText(R.id.tv_subscribe_plan_item_name, item.name)
+
+ val packageName = when (item.nameCode) {
+ ConstantInt.Type1 -> mContext.getString(R.string.txt_basic)
+ ConstantInt.Type2 -> mContext.getString(R.string.txt_premium)
+ else -> item.name
+ }
+ holder.setText(R.id.tv_subscribe_plan_item_name, packageName)
holder.setText(
R.id.tv_subscribe_plan_item_money,
- String.format(mContext.getString(R.string.txt_money_unit), Utils.formatDecimal( item.price, 2))
+ String.format(mContext.getString(R.string.txt_money_unit), "${item.price}")
)
// subscription.text =
// String.format(mContext.getString(R.string.txt_per_year_money), item.subscriptionFee)
diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanDetailAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanDetailAdapter.kt
index 0369e71..5414ecf 100644
--- a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanDetailAdapter.kt
+++ b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanDetailAdapter.kt
@@ -25,7 +25,19 @@ class SubscriptionPlanDetailAdapter(
checkBox.setOnClickListener {
checkBox.isChecked = !checkBox.isChecked
}
- holder.setText(R.id.tv_subscribe_plan_detail_name, item.title)
+ val titleName = when (item.titleCode) {
+ ConstantInt.Type1 -> mContext.getString(R.string.txt_real_time_tracking)
+ ConstantInt.Type2 -> mContext.getString(R.string.txt_activity_logs)
+ ConstantInt.Type3 -> mContext.getString(R.string.txt_notifications_emergencies)
+ ConstantInt.Type4 -> mContext.getString(R.string.txt_customized_led)
+ 5 -> mContext.getString(R.string.txt_bluetooth_radar)
+ 6 -> mContext.getString(R.string.txt_geofencing)
+ 7 -> mContext.getString(R.string.txt_route_records)
+ 8 -> mContext.getString(R.string.txt_family_sharing)
+ 9 -> mContext.getString(R.string.txt_customer_support)
+ else -> item.title
+ }
+ holder.setText(R.id.tv_subscribe_plan_detail_name, titleName)
checkBox.isChecked = item.status == ConstantInt.Open
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/abbidot/tracker/bean/PackageBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PackageBean.kt
index 0856c69..46bafcb 100644
--- a/app/src/main/java/com/abbidot/tracker/bean/PackageBean.kt
+++ b/app/src/main/java/com/abbidot/tracker/bean/PackageBean.kt
@@ -21,5 +21,8 @@ data class PackageBean(
var planPrice: Double,
var discount: Int,
var active: Int,
+ var planTimeMonthsCount: Int,
+ var everyMonthSafeFee: Double,
+ var billedMode: String,
var selected: Boolean
) : Parcelable
diff --git a/app/src/main/java/com/abbidot/tracker/bean/PackageBenefitsBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PackageBenefitsBean.kt
index 4484813..52fd07f 100644
--- a/app/src/main/java/com/abbidot/tracker/bean/PackageBenefitsBean.kt
+++ b/app/src/main/java/com/abbidot/tracker/bean/PackageBenefitsBean.kt
@@ -5,4 +5,4 @@ package com.abbidot.tracker.bean
* @link
* @description:
*/
-data class PackageBenefitsBean(var title: String, var status: Int)
+data class PackageBenefitsBean(var title: String, var status: Int, var titleCode: Int)
diff --git a/app/src/main/java/com/abbidot/tracker/bean/PackageTypeBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PackageTypeBean.kt
index 4ee7f82..65bbcba 100644
--- a/app/src/main/java/com/abbidot/tracker/bean/PackageTypeBean.kt
+++ b/app/src/main/java/com/abbidot/tracker/bean/PackageTypeBean.kt
@@ -10,5 +10,6 @@ data class PackageTypeBean(
var name: String,
var packageId: String,
var list: MutableList?,
- var selected: Boolean
+ var selected: Boolean,
+ val nameCode: Int,
)
diff --git a/app/src/main/java/com/abbidot/tracker/bean/SubscriptionsOrderBean.kt b/app/src/main/java/com/abbidot/tracker/bean/SubscriptionsOrderBean.kt
index b3d735f..99cb1be 100644
--- a/app/src/main/java/com/abbidot/tracker/bean/SubscriptionsOrderBean.kt
+++ b/app/src/main/java/com/abbidot/tracker/bean/SubscriptionsOrderBean.kt
@@ -50,6 +50,7 @@ data class SubscriptionsOrderBean(
var username: String,
var iccid: String,
var endTime: Long,
+ var planTimeMonthsCount: Int,
var isUpdateOrder: Int = 0//是否是升级订单 1:是 0:否
) : Parcelable {
constructor() : this(
@@ -93,6 +94,7 @@ data class SubscriptionsOrderBean(
"",
"",
0L,
+ 0,
0
)
}
diff --git a/app/src/main/java/com/abbidot/tracker/retrofit2/INetworkService.kt b/app/src/main/java/com/abbidot/tracker/retrofit2/INetworkService.kt
index 49f11c6..8a5869a 100644
--- a/app/src/main/java/com/abbidot/tracker/retrofit2/INetworkService.kt
+++ b/app/src/main/java/com/abbidot/tracker/retrofit2/INetworkService.kt
@@ -1302,6 +1302,7 @@ interface INetworkService {
@Field("customerId") customerId: String,
@Field("orderNum") orderNum: String,
@Field("isUpdateOrder") isUpdateOrder: Int,
+ @Field("planTimeMonthsCount") planTimeMonthsCount: Int,
@Field("subscriptionId") subscriptionId: String
): BaseResponse
@@ -1338,6 +1339,7 @@ interface INetworkService {
@Field("customerId") customerId: String,
@Field("orderNum") orderNum: String,
@Field("isUpdateOrder") isUpdateOrder: Int,
+ @Field("planTimeMonthsCount") planTimeMonthsCount: Int,
@Field("subscriptionId") subscriptionId: String
): BaseResponse
diff --git a/app/src/main/java/com/abbidot/tracker/retrofit2/NetworkApi.kt b/app/src/main/java/com/abbidot/tracker/retrofit2/NetworkApi.kt
index 9038dfa..e9fbe46 100644
--- a/app/src/main/java/com/abbidot/tracker/retrofit2/NetworkApi.kt
+++ b/app/src/main/java/com/abbidot/tracker/retrofit2/NetworkApi.kt
@@ -1185,6 +1185,7 @@ object NetworkApi : BaseNetworkApi(INetworkService.BASE_URL) {
customerId,
orderNum,
isUpdateOrder,
+ planTimeMonthsCount,
subscriptionId
)
}
@@ -1226,6 +1227,7 @@ object NetworkApi : BaseNetworkApi(INetworkService.BASE_URL) {
"",
orderNum,
isUpdateOrder,
+ planTimeMonthsCount,
subscriptionId
)
}
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt
index ff5a751..afc1d2c 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt
@@ -9,21 +9,30 @@ import com.abbidot.baselibrary.constant.MMKVKey
import com.abbidot.baselibrary.eventbus.XEventBus
import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.baselibrary.util.MMKVUtil
+import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.base.BaseActivity
+import com.abbidot.tracker.bean.PetBean
import com.abbidot.tracker.bean.SubscriptionsOrderBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.ConstantString
import com.abbidot.tracker.constant.GetResultCallback
import com.abbidot.tracker.databinding.ActivityAddPairedSuccessBinding
import com.abbidot.tracker.deprecated.ui.activity.vm.AddTrackerDeviceViewModel
-import com.abbidot.tracker.ui.activity.pet.first.FirstSetPetTypeActivity
+import com.abbidot.tracker.ui.activity.device.wifi.AddWifiPowerZone1Activity
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionPlanActivity
+import com.abbidot.tracker.util.Util
+import com.abbidot.tracker.vm.PetInfoViewModel
+import com.abbidot.tracker.vm.PetRelationViewModel
+import com.abbidot.tracker.vm.UserProfileViewModel
class AddPairedSuccessActivity :
BaseActivity(ActivityAddPairedSuccessBinding::inflate) {
private val mAddTrackerViewModel: AddTrackerDeviceViewModel by viewModels()
+ private val mPetViewModel: PetInfoViewModel by viewModels()
+ private val mUserProfileViewModel: UserProfileViewModel by viewModels()
+ private val mPetRelationViewModel: PetRelationViewModel by viewModels()
private lateinit var mSubscriptionsOrderBean: SubscriptionsOrderBean
@@ -31,6 +40,7 @@ class AddPairedSuccessActivity :
private var mDeviceOutId = ""
private var mDeviceId = ""
private var mMac = ""
+ private var mPetBean: PetBean? = null
override fun getTopBar() = mViewBinding.ilAddPairedSuccessTopBar.titleTopBar
@@ -111,17 +121,18 @@ class AddPairedSuccessActivity :
//更新设备绑定状态
mUpdatePayDeviceStateLiveData.observe(this@AddPairedSuccessActivity) {
- setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
dealRequestResult(it, object : GetResultCallback {
override fun onResult(any: Any) {
MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.isBind)
XEventBus.post(EventName.RefreshDevice)
if (isFirstBind) {
- val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)
- intent.putExtra(ConstantString.isFirstBind, isFirstBind)
- startActivityFinish(intent)
- }
- finish()
+ mUserProfileViewModel.updateMeasureUnit(
+ this@AddPairedSuccessActivity, ConstantInt.Type1
+ )
+// val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)
+// intent.putExtra(ConstantString.isFirstBind, isFirstBind)
+// startActivityFinish(intent)
+ } else finish()
}
override fun onRequestError(exceptionCode: String?) {
@@ -136,6 +147,78 @@ class AddPairedSuccessActivity :
}
})
}
+
+ //默认单位设置
+ mUserProfileViewModel.mUpdateMeasureUnitLiveData.observe(this@AddPairedSuccessActivity) {
+ dealRequestResult(it, object : GetResultCallback {
+ override fun onResult(any: Any) {
+ it.getOrNull()?.apply {
+ MMKVUtil.putInt(MMKVKey.MeasureUnit, ConstantInt.Type1)
+ PetBean().let { pet ->
+ pet.petName = "My Pet"
+ pet.deviceId = mDeviceId
+ pet.petType = ConstantInt.DogPetType
+ pet.gender = ConstantInt.WoMan
+ pet.macID = mMac
+ pet.birthdayDate = "2024-01-01"
+ pet.height = Utils.formatDecimal(Util.inToCm(20.0), 1).toFloat()
+ pet.weight = Utils.formatDecimal(Util.lbsToKg(25.0), 1).toFloat()
+ mPetBean = pet
+ mPetViewModel.addPet(this@AddPairedSuccessActivity, pet)
+ }
+ }
+ }
+
+ override fun onRequestError(exceptionCode: String?) {
+ super.onRequestError(exceptionCode)
+ setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
+ }
+ })
+ }
+ //添加默认宠物
+ mPetViewModel.mAddPetLiveData.observe(this@AddPairedSuccessActivity) {
+ dealRequestResult(it, object : GetResultCallback {
+ override fun onResult(any: Any) {
+ it.getOrNull()?.let { pet ->
+ mPetBean?.let { petBean ->
+ petBean.petId = pet.petId
+ mPetRelationViewModel.bindPet(
+ this@AddPairedSuccessActivity, petBean.deviceId, petBean.petId
+ )
+ }
+ }
+ }
+
+ override fun onRequestError(exceptionCode: String?) {
+ super.onRequestError(exceptionCode)
+ setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
+ }
+ })
+ }
+ //绑定默认宠物
+ mPetRelationViewModel.mBindPetLiveData.observe(this@AddPairedSuccessActivity) {
+ setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
+ dealRequestResult(it, object : GetResultCallback {
+ override fun onResult(any: Any) {
+ XEventBus.post(EventName.RefreshPet)
+ showToast(R.string.txt_bind_success, isFinish = true)
+ mViewBinding.root.postDelayed({
+ MMKVUtil.putInt(MMKVKey.isBindPet, ConstantInt.isBind)
+ mPetBean?.apply {
+ val intent = Intent(mContext, AddWifiPowerZone1Activity::class.java)
+ intent.putExtra(ConstantString.Pet, this)
+ intent.putExtra(ConstantString.isFirstBind, isFirstBind)
+ startActivity(intent)
+ }
+ }, 1500)
+ }
+
+ override fun onRequestError(exceptionCode: String?) {
+ super.onRequestError(exceptionCode)
+ setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
+ }
+ })
+ }
}
}
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt
index d98a39e..db0a8d5 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt
@@ -52,7 +52,13 @@ class ChoosePlanActivity :
if (isUpgrade) {
mRechargeType = ConstantInt.Type2
setTopBarTitle(R.string.txt_upgrade_plan)
- } else setTopBarTitle(R.string.txt_choose_your_plan)
+ } else {
+ if (packageTypeName == "Basic") {
+ setTopBarTitle(R.string.txt_basic_plan)
+ } else {
+ setTopBarTitle(R.string.txt_premium_plan)
+ }
+ }
setLeftBackImage(R.drawable.icon_white_back_svg)
mViewBinding.apply {
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt
index 8637eea..c6a68d9 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt
@@ -18,18 +18,22 @@ import com.abbidot.tracker.R
import com.abbidot.tracker.base.BaseActivity
import com.abbidot.tracker.bean.BleTrackDeviceBean
import com.abbidot.tracker.bean.PayResultBean
+import com.abbidot.tracker.bean.PetBean
import com.abbidot.tracker.bean.ReceiveDeviceData
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.ConstantString
import com.abbidot.tracker.constant.GetResultCallback
import com.abbidot.tracker.databinding.ActivityPaymentSuccessBinding
import com.abbidot.tracker.deprecated.ui.activity.vm.AddTrackerDeviceViewModel
-import com.abbidot.tracker.ui.activity.pet.first.FirstSetPetTypeActivity
+import com.abbidot.tracker.ui.activity.device.wifi.AddWifiPowerZone1Activity
import com.abbidot.tracker.util.Util
import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil
import com.abbidot.tracker.util.bluetooth.SRBleUtil
import com.abbidot.tracker.vm.ConnectionDeviceViewModel
+import com.abbidot.tracker.vm.PetInfoViewModel
+import com.abbidot.tracker.vm.PetRelationViewModel
+import com.abbidot.tracker.vm.UserProfileViewModel
import com.clj.fastble.BleManager
class PaymentSuccessActivity :
@@ -37,9 +41,13 @@ class PaymentSuccessActivity :
private val mAddTrackerViewModel: AddTrackerDeviceViewModel by viewModels()
private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels()
+ private val mUserProfileViewModel: UserProfileViewModel by viewModels()
+ private val mPetRelationViewModel: PetRelationViewModel by viewModels()
+ private val mPetViewModel: PetInfoViewModel by viewModels()
private var mPayResult: PayResultBean? = null
private var mMac = ""
+ private var mPetBean: PetBean? = null
override fun getTopBar() = null
@@ -158,6 +166,61 @@ class PaymentSuccessActivity :
}
})
}
+ //默认单位设置
+ mUserProfileViewModel.mUpdateMeasureUnitLiveData.observe(this@PaymentSuccessActivity) {
+ dealRequestResult(it, object : GetResultCallback {
+ override fun onResult(any: Any) {
+ it.getOrNull()?.apply {
+ MMKVUtil.putInt(MMKVKey.MeasureUnit, ConstantInt.Type1)
+ PetBean().let { pet ->
+ pet.petName = "My Pet"
+ pet.deviceId = mPayResult!!.deviceId
+ pet.petType = ConstantInt.DogPetType
+ pet.gender = ConstantInt.WoMan
+ pet.macID=mMac
+ pet.birthdayDate = "2024-01-01"
+ pet.height = Utils.formatDecimal(Util.inToCm(20.0), 1).toFloat()
+ pet.weight = Utils.formatDecimal(Util.lbsToKg(25.0), 1).toFloat()
+ mPetBean = pet
+ mPetViewModel.addPet(this@PaymentSuccessActivity, pet)
+ }
+ }
+ }
+ })
+ }
+ //添加默认宠物
+ mPetViewModel.mAddPetLiveData.observe(this@PaymentSuccessActivity) {
+ dealRequestResult(it, object : GetResultCallback {
+ override fun onResult(any: Any) {
+ it.getOrNull()?.let { pet ->
+ mPetBean?.let { petBean ->
+ petBean.petId = pet.petId
+ mPetRelationViewModel.bindPet(
+ this@PaymentSuccessActivity, petBean.deviceId, petBean.petId
+ )
+ }
+ }
+ }
+ })
+ }
+ //绑定默认宠物
+ mPetRelationViewModel.mBindPetLiveData.observe(this@PaymentSuccessActivity) {
+ dealRequestResult(it, object : GetResultCallback {
+ override fun onResult(any: Any) {
+ XEventBus.post(EventName.RefreshPet)
+ showToast(R.string.txt_bind_success, isFinish = true)
+ mViewBinding.root.postDelayed({
+ MMKVUtil.putInt(MMKVKey.isBindPet, ConstantInt.isBind)
+ mPetBean?.apply {
+ val intent = Intent(mContext, AddWifiPowerZone1Activity::class.java)
+ intent.putExtra(ConstantString.Pet, this)
+ intent.putExtra(ConstantString.isFirstBind, true)
+ startActivity(intent)
+ }
+ }, 1500)
+ }
+ })
+ }
}
/**
@@ -172,12 +235,15 @@ class PaymentSuccessActivity :
XEventBus.post(EventName.PayBack)
mPayResult?.let {
if (it.rechargeType == ConstantInt.Type0) {
- val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)
- intent.putExtra(ConstantString.isFirstBind, true)
- startActivity(intent)
- }
+ mUserProfileViewModel.updateMeasureUnit(
+ this@PaymentSuccessActivity, ConstantInt.Type1
+ )
+
+// val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)
+// intent.putExtra(ConstantString.isFirstBind, true)
+// startActivity(intent)
+ } else finish()
}
- finish()
}
}
}
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt
index 52c1804..4a41b3a 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt
@@ -61,7 +61,7 @@ class SubscriptionPlanActivity :
mPlanAdapter,
2,
AppUtils.dpToPx(140),
- offset = AppUtils.dpToPx(44)
+ offset = AppUtils.dpToPx(66)
)
ViewUtil.instance.setRecyclerViewVerticalLinearLayout(
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt
index c815546..e0084f7 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt
@@ -37,7 +37,7 @@ class SureSubscriptionPlanActivity :
private var mOrderBean: SubscriptionsOrderBean? = null
//每年的保险服务费用
- private val mInsuranceMoney = 12.90
+// private val mInsuranceMoney = 12.90
//保险总费用
private var mSumInsuranceMoney = 0.0
@@ -88,7 +88,7 @@ class SureSubscriptionPlanActivity :
val totalDay = if (it.mealUnit == ConstantString.PackageUnitYear) {
it.mealPeriod * 365
} else {
- 30
+ 30 * it.planTimeMonthsCount
}
mResidualMoney =
((it.totalAmountWithTax - it.tax - it.reactivatePrice) / totalDay) * it.surplusDays
@@ -110,68 +110,94 @@ class SureSubscriptionPlanActivity :
val nowTimestamp = System.currentTimeMillis()
mPackageBean?.let { p ->
+ ilSubscribePlanDetail.tvSureSubscribePlanPer.text = String.format(
+ getString(R.string.txt_month_unit), "${p.planTimeMonthsCount}"
+ )
val renewalString = if (p.mealUnit == ConstantString.PackageUnitYear) {
- ilSubscribePlanDetail.tvSureSubscribePlanPer.text =
- String.format(getString(R.string.txt_year_unit), p.period)
+// ilSubscribePlanDetail.tvSureSubscribePlanPer.text =
+// String.format(getString(R.string.txt_year_unit), p.period)
val renewalTimestamp =
Utils.getAfterHowTimestamp(nowTimestamp, p.period * 365L)
val renewalDate =
Utils.formatTime(renewalTimestamp, Utils.DATE_FORMAT_PATTERN_EN7)
- String.format(
- getString(R.string.txt_renewal_year),
- Utils.formatDecimal(p.autoRenewPrice, 2),
- renewalDate
- )
+ if (p.period > 1) {
+ String.format(
+ getString(R.string.txt_renewal_years),
+ "${p.autoRenewPrice}",
+ "${p.period}",
+ renewalDate
+ )
+ } else {
+ String.format(
+ getString(R.string.txt_renewal_year),
+ "${p.autoRenewPrice}",
+ renewalDate
+ )
+ }
} else {
- ilSubscribePlanDetail.tvSureSubscribePlanPer.text =
- String.format(getString(R.string.txt_month_unit), p.period)
- val renewalTimestamp = Utils.getAfterHowTimestamp(nowTimestamp, 30L)
+ val renewalTimestamp =
+ Utils.getAfterHowTimestamp(nowTimestamp, 30L * p.planTimeMonthsCount)
val renewalDate =
Utils.formatTime(renewalTimestamp, Utils.DATE_FORMAT_PATTERN_EN7)
- String.format(
- getString(R.string.txt_renewal_month),
- Utils.formatDecimal(p.autoRenewPrice, 2),
- renewalDate
- )
+ if (p.planTimeMonthsCount > 1) {
+ String.format(
+ getString(R.string.txt_renewal_months),
+ "${p.autoRenewPrice}",
+ "${p.planTimeMonthsCount}",
+ renewalDate
+ )
+ } else {
+ String.format(
+ getString(R.string.txt_renewal_month),
+ "${p.autoRenewPrice}",
+ renewalDate
+ )
+ }
}
ilSubscribePlanDetail.tvSureSubscribePlanUnderused.text = renewalString
- val insuranceMoneyString =
- "${p.period} x $${Utils.formatDecimal(mInsuranceMoney, 2)}"
- ilSubscribePlanInsurance.tvSureSubscribePlanInsurancePer.text =
- insuranceMoneyString
-
val packageName = "${p.planName}(${p.planCategory})"
ilSubscribePlanDetail.tvSureSubscribePlanName.text = packageName
- val price = if (p.discountedPrice > 0.0) p.discountedPrice else p.planPrice
+ val price = p.planPrice
+// val price = if (p.discountedPrice > 0.0) p.discountedPrice else p.planPrice
val priceString = String.format(
- getString(R.string.txt_money_unit), Utils.formatDecimal(price, 2)
+ getString(R.string.txt_money_unit),
+ Utils.formatDecimal(price / p.planTimeMonthsCount, 1)
)
ilSubscribePlanDetail.tvSureSubscribePlanMoney.text = priceString
ViewUtil.instance.addMenuBean(
mSummaryAdapter.getData(),
p.planName,
- Utils.formatDecimal(price, 2),
+ "$price",
colorRedId = R.color.data_black_color
)
mTotalMoney += price
mSumInsuranceMoney =
- Utils.formatDecimal(mInsuranceMoney * p.period, 2).toDouble()
+ Utils.formatDecimal(p.everyMonthSafeFee * p.period * 12, 1).toDouble()
ViewUtil.instance.addMenuBean(
mSummaryAdapter.getData(),
getString(R.string.txt_annual_care_text),
- Utils.formatDecimal(mSumInsuranceMoney, 2),
+ "$mSumInsuranceMoney",
colorRedId = R.color.data_black_color
)
mTotalMoney += mSumInsuranceMoney
+ val insuranceMoneyString =
+ String.format(getString(R.string.txt_month_unit), "${p.period * 12}")
+ ilSubscribePlanInsurance.tvSureSubscribePlanInsurancePer.text =
+ insuranceMoneyString
+ ilSubscribePlanInsurance.tvSureSubscribePlanInsurancePerMoney.text =
+ String.format(getString(R.string.txt_money_unit), "${p.everyMonthSafeFee}")
+ ilSubscribePlanInsurance.tvSureSubscribePlanInsuranceMoney.text =
+ String.format(getString(R.string.txt_money_unit), "$mSumInsuranceMoney")
+
if (isUpgrade) {
mTotalMoney -= mResidualMoney
ViewUtil.instance.addMenuBean(
mSummaryAdapter.getData(),
getString(R.string.txt_residual_value),
- Utils.formatDecimal(mResidualMoney, 2),
+ Utils.formatDecimal(mResidualMoney, 1),
colorRedId = R.color.red_color5,
isSwitch = true
)
@@ -209,8 +235,7 @@ class SureSubscriptionPlanActivity :
val list = mSummaryAdapter.getData()
if (isChecked) {
MenuTxtBean(
- getString(R.string.txt_annual_care_text),
- Utils.formatDecimal(mSumInsuranceMoney, 2)
+ getString(R.string.txt_annual_care_text), "$mSumInsuranceMoney"
).let {
it.colorRedId = R.color.data_black_color
list.add(1, it)
@@ -245,15 +270,16 @@ class SureSubscriptionPlanActivity :
mSubscriptionViewModel.mReactivationFeeLiveData.observe(this) {
dealRequestResult(it, object : GetResultCallback {
override fun onResult(any: Any) {
- it.getOrNull()?.apply {
- mOrderBean?.reactivatePrice = this
- mSummaryAdapter.getData().add(2, MenuTxtBean(
- getString(R.string.txt_reactivation), Utils.formatDecimal(this, 2)
- ).apply {
- colorRedId = R.color.data_black_color
- })
- mTotalMoney += this
- }
+// it.getOrNull()?.apply {
+// mOrderBean?.reactivatePrice = this
+// mSummaryAdapter.getData().add(
+// 2, MenuTxtBean(
+// getString(R.string.txt_reactivation), Utils.formatDecimal(this, 1)
+// ).apply {
+// colorRedId = R.color.data_black_color
+// })
+// mTotalMoney += this
+// }
updateMoney()
}
})
@@ -263,14 +289,14 @@ class SureSubscriptionPlanActivity :
private fun updateMoney() {
mViewBinding.apply {
val list = mSummaryAdapter.getData()
- val taxMoney = Utils.formatDecimal(mTaxRate * mTotalMoney, 2).toDouble()
+ val taxMoney = Utils.formatDecimal(mTaxRate * mTotalMoney, 1).toDouble()
mOrderBean?.tax = taxMoney
list[list.size - 1].menuValue = taxMoney.toString()
mTotalWithTaxMoney = taxMoney + mTotalMoney
mTotalWithTaxMoney = abs(mTotalWithTaxMoney)
ilSubscribePlanSummary.ilSureSubscribePlanTotalLayout.tvSubscribeSummaryItemMoney.text =
String.format(
- getString(R.string.txt_money_unit), Utils.formatDecimal(mTotalWithTaxMoney, 2)
+ getString(R.string.txt_money_unit), Utils.formatDecimal(mTotalWithTaxMoney, 1)
)
mSummaryAdapter.notifyItemRangeChanged(0, list.size)
@@ -303,14 +329,15 @@ class SureSubscriptionPlanActivity :
mealName = cPlan.planName
mealId = cPlan.mealId
mealPeriod = cPlan.period
+ planTimeMonthsCount = cPlan.planTimeMonthsCount
mealUnit = cPlan.mealUnit
planCategory = cPlan.planCategory
-// autoRenewPrice = Utils.formatDecimal(cPlan.autoRenewPrice * mTaxRate, 2).toDouble()
+// autoRenewPrice = Utils.formatDecimal(cPlan.autoRenewPrice * mTaxRate, 1).toDouble()
autoRenewPrice = cPlan.autoRenewPrice
mealDesc =
mViewBinding.ilSubscribePlanDetail.tvSureSubscribePlanMoney.text.toString() + mViewBinding.ilSubscribePlanDetail.tvSureSubscribePlanPer.text.toString()
}
- totalAmountWithTax = Utils.formatDecimal(mTotalWithTaxMoney, 2).toDouble()
+ totalAmountWithTax = Utils.formatDecimal(mTotalWithTaxMoney, 1).toDouble()
Intent(mContext, PaymentMethodActivity::class.java).let {
it.putExtra(ConstantString.LkSetMeal, this)
it.putExtra(ConstantString.RechargeType, mRechargeType)
diff --git a/app/src/main/java/com/abbidot/tracker/util/Util.kt b/app/src/main/java/com/abbidot/tracker/util/Util.kt
index 39d506e..980d89b 100644
--- a/app/src/main/java/com/abbidot/tracker/util/Util.kt
+++ b/app/src/main/java/com/abbidot/tracker/util/Util.kt
@@ -157,7 +157,7 @@ class Util {
return value * 0.3937
}
- private fun inToCm(value: Double): Double {
+ fun inToCm(value: Double): Double {
return value * 2.54
}
@@ -165,7 +165,7 @@ class Util {
return value * 2.2065
}
- private fun lbsToKg(value: Double): Double {
+ fun lbsToKg(value: Double): Double {
return value * 0.4532
}
diff --git a/app/src/main/res/layout/item_choose_plan_layout.xml b/app/src/main/res/layout/item_choose_plan_layout.xml
index 3dd9185..5fbc4bc 100644
--- a/app/src/main/res/layout/item_choose_plan_layout.xml
+++ b/app/src/main/res/layout/item_choose_plan_layout.xml
@@ -36,13 +36,13 @@
android:layout_height="wrap_content"
android:layout_alignTop="@id/tv_choose_plan_item_name"
android:layout_alignParentEnd="true"
- android:layout_marginEnd="@dimen/dp_16"
+ android:layout_marginEnd="@dimen/dp_18"
android:gravity="center_vertical"
android:orientation="horizontal"
- android:paddingHorizontal="@dimen/dp_8"
- android:paddingVertical="@dimen/dp_2"
- app:qmui_backgroundColor="@color/orange_color4"
- app:qmui_radius="@dimen/dp_38">
+ android:paddingHorizontal="@dimen/dp_10"
+ android:paddingVertical="@dimen/dp_4"
+ app:qmui_backgroundColor="@color/select_color2"
+ app:qmui_radius="@dimen/dp_18">
@@ -72,8 +74,8 @@
+ android:text="@string/txt_billed_annually"
+ android:textColor="@color/select_color"
+ android:textSize="@dimen/textSize10" />
+ android:textColor="@color/select_color"
+ android:textSize="@dimen/textSize16"
+ android:textStyle="bold" />
@@ -111,6 +111,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
+ android:visibility="gone"
app:cardBackgroundColor="@color/select_color2"
app:cardCornerRadius="@dimen/dp_50"
app:cardElevation="@dimen/dp_4">
diff --git a/app/src/main/res/layout/item_subscription_plan_layout.xml b/app/src/main/res/layout/item_subscription_plan_layout.xml
index 29d8de5..38fedea 100644
--- a/app/src/main/res/layout/item_subscription_plan_layout.xml
+++ b/app/src/main/res/layout/item_subscription_plan_layout.xml
@@ -5,11 +5,12 @@
android:layout_height="wrap_content">
@@ -19,12 +20,12 @@
android:id="@+id/rl_subscribe_plan_shade_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/transparent">
+ android:background="@color/transparent"
+ android:paddingHorizontal="@dimen/dp_18">
@@ -19,63 +22,57 @@
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10">
-
-
-
-
+
+
+ android:layout_marginTop="@dimen/dp_10"
+ android:background="@color/block_color" />
+ android:textSize="@dimen/textSize16" />
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_sure_subscribe_plan_detail_layout.xml b/app/src/main/res/layout/layout_sure_subscribe_plan_detail_layout.xml
index 1924a7e..6e21e31 100644
--- a/app/src/main/res/layout/layout_sure_subscribe_plan_detail_layout.xml
+++ b/app/src/main/res/layout/layout_sure_subscribe_plan_detail_layout.xml
@@ -42,6 +42,7 @@
style="@style/my_TextView_style_v2"
android:layout_below="@id/tv_sure_subscribe_plan_name"
android:layout_marginTop="@dimen/dp_10"
+ android:layout_marginEnd="@dimen/dp_2"
android:text="@string/txt_money_unit"
android:textColor="@color/select_color"
android:textStyle="bold" />
@@ -49,8 +50,8 @@
Benefits
Monthly Subscription
$%s
- /per month
- /per year
- $%s/per month
- $%s/per year
- Popular
+ /month
+ /year
+ $%s/month
+ $%s/year
+ Best value
Confirm Your Plan
Device Number
Terms and Conditions
@@ -941,12 +941,12 @@
Renewal: $%s/month on %s
Renewal:
/month on
- Annual Care Protection
+ Replacement Coverage
$12.90/year for peace of mind and easy 1-unit replacement annually.
Replacement Guarantee
Enter discount code
Check
- Annual Care
+ Replacement Coverage
Annual Care:
Bluetooth connection failed
LED Light Settings
@@ -966,7 +966,7 @@
Expired
Upgrade Your Plan
Residual Value
- /%s month
+ /month x%s
(Renew at $%s per year thereafter)
(Renew at
per year thereafter)
@@ -1030,5 +1030,21 @@
As low as
Payment Manager
+ Billed annually
+ Basic Plan
+ Premium Plan
+ Real-time Tracking
+ Activity/Resting Logs
+ Notifications for Emergencies
+ Customized LED
+ Bluetooth Radar
+ Geofencing
+ Route History Records
+ Family Members Sharing
+ Premium Customer Support
+
+ Renewal: $%s/%s years on %s
+ Renewal: $%s/%s months on %s
+ 1 replacement/year, any reason
\ No newline at end of file