diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt index 2ad11bd..9c3cccc 100644 --- a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt +++ b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt @@ -16,4 +16,8 @@ } return gson.fromJson(userJson, object : TypeToken() {}.type) } + + fun isLogin(): Boolean { + return SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt index 2ad11bd..9c3cccc 100644 --- a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt +++ b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt @@ -16,4 +16,8 @@ } return gson.fromJson(userJson, object : TypeToken() {}.type) } + + fun isLogin(): Boolean { + return SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index 9f1c93b..f9b6036 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt @@ -61,4 +61,13 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 修改地址 + */ + @POST("/appAddressInfo/update") + suspend fun updateAddressById( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt index 2ad11bd..9c3cccc 100644 --- a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt +++ b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt @@ -16,4 +16,8 @@ } return gson.fromJson(userJson, object : TypeToken() {}.type) } + + fun isLogin(): Boolean { + return SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index 9f1c93b..f9b6036 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt @@ -61,4 +61,13 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 修改地址 + */ + @POST("/appAddressInfo/update") + suspend fun updateAddressById( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt index ffb6064..aa23977 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt @@ -139,4 +139,27 @@ ) return api.deleteAddressById(AuthenticationHelper.token!!, requestBody) } + + /** + * 修改地址 + */ + suspend fun updateAddressById( + id: String, account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("account", account) + paramObject.put("province", province) + paramObject.put("city", city) + paramObject.put("area", area) + paramObject.put("street", street) + paramObject.put("detailAddress", detailAddress) + paramObject.put("postalCode", postalCode) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.updateAddressById(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt index 2ad11bd..9c3cccc 100644 --- a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt +++ b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt @@ -16,4 +16,8 @@ } return gson.fromJson(userJson, object : TypeToken() {}.type) } + + fun isLogin(): Boolean { + return SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index 9f1c93b..f9b6036 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt @@ -61,4 +61,13 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 修改地址 + */ + @POST("/appAddressInfo/update") + suspend fun updateAddressById( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt index ffb6064..aa23977 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt @@ -139,4 +139,27 @@ ) return api.deleteAddressById(AuthenticationHelper.token!!, requestBody) } + + /** + * 修改地址 + */ + suspend fun updateAddressById( + id: String, account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("account", account) + paramObject.put("province", province) + paramObject.put("city", city) + paramObject.put("area", area) + paramObject.put("street", street) + paramObject.put("detailAddress", detailAddress) + paramObject.put("postalCode", postalCode) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.updateAddressById(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt b/app/src/main/java/com/casic/br/view/AddAddressActivity.kt deleted file mode 100644 index 1e6c191..0000000 --- a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.casic.br.view - -import androidx.lifecycle.ViewModelProvider -import com.casic.br.R -import com.casic.br.utils.DeserializeModel -import com.casic.br.utils.LoadingDialogHub -import com.casic.br.vm.AddressViewModel -import com.github.gzuliyujiang.wheelpicker.AddressPicker -import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode -import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener -import com.github.gzuliyujiang.wheelpicker.entity.CityEntity -import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity -import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity -import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.sp2px -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_add_address.* -import kotlinx.android.synthetic.main.include_base_title.* - -class AddAddressActivity : KotlinBaseActivity(), OnAddressPickedListener { - - private val kTag = "AddAddressActivity" - private lateinit var addressViewModel: AddressViewModel - - override fun initLayoutView(): Int = R.layout.activity_add_address - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - - leftBackView.setOnClickListener { finish() } - titleView.text = "新建地址" - } - - override fun initData() { - addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] - } - - override fun initEvent() { - addressView.setOnClickListener { - val addressPicker = AddressPicker(this) - addressPicker.setAddressMode( - "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, - AddressJsonParser.Builder() - .provinceCodeField("code") - .provinceNameField("name") - .provinceChildField("city") - .cityCodeField("code") - .cityNameField("name") - .cityChildField("area") - .countyCodeField("code") - .countyNameField("name") - .build() - ) - addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") - addressPicker.setOnAddressPickedListener(this) - val layout = addressPicker.wheelLayout - layout.setTextSize(14f.sp2px(this).toFloat()) - layout.setSelectedTextSize(16f.sp2px(this).toFloat()) - layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) - layout.setSelectedTextBold(true) - layout.setOnLinkageSelectedListener { first, second, third -> - addressPicker.titleView.text = String.format( - "%s%s%s", - addressPicker.firstWheelView.formatItem(first), - addressPicker.secondWheelView.formatItem(second), - addressPicker.thirdWheelView.formatItem(third) - ) - addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) - } - addressPicker.show() - } - - saveAddressButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { - "请先选择地区".show(this) - return@setOnClickListener - } - if (streetView.text.isNullOrBlank()) { - "请输入街道或者楼牌号地址".show(this) - return@setOnClickListener - } - if (postalCodeView.text.isNullOrBlank()) { - "请输入邮政编码".show(this) - return@setOnClickListener - } - - val split = addressView.text.split("-") - val userModel = DeserializeModel.getUserModel()!! - addressViewModel.addAddress( - userModel.mobile, - split[0], - split[1], - split[2], - streetView.text.toString(), - "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", - postalCodeView.text.toString() - ) - } - } - - override fun onAddressPicked( - province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? - ) { - addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) - } - - override fun observeRequestState() { - addressViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - LoadingDialogHub.show(this, "地址保存中...") - } - LoadState.Success -> { - LoadingDialogHub.dismiss() - finish() - } - else -> LoadingDialogHub.dismiss() - } - }) - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt index 2ad11bd..9c3cccc 100644 --- a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt +++ b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt @@ -16,4 +16,8 @@ } return gson.fromJson(userJson, object : TypeToken() {}.type) } + + fun isLogin(): Boolean { + return SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index 9f1c93b..f9b6036 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt @@ -61,4 +61,13 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 修改地址 + */ + @POST("/appAddressInfo/update") + suspend fun updateAddressById( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt index ffb6064..aa23977 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt @@ -139,4 +139,27 @@ ) return api.deleteAddressById(AuthenticationHelper.token!!, requestBody) } + + /** + * 修改地址 + */ + suspend fun updateAddressById( + id: String, account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("account", account) + paramObject.put("province", province) + paramObject.put("city", city) + paramObject.put("area", area) + paramObject.put("street", street) + paramObject.put("detailAddress", detailAddress) + paramObject.put("postalCode", postalCode) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.updateAddressById(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt b/app/src/main/java/com/casic/br/view/AddAddressActivity.kt deleted file mode 100644 index 1e6c191..0000000 --- a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.casic.br.view - -import androidx.lifecycle.ViewModelProvider -import com.casic.br.R -import com.casic.br.utils.DeserializeModel -import com.casic.br.utils.LoadingDialogHub -import com.casic.br.vm.AddressViewModel -import com.github.gzuliyujiang.wheelpicker.AddressPicker -import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode -import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener -import com.github.gzuliyujiang.wheelpicker.entity.CityEntity -import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity -import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity -import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.sp2px -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_add_address.* -import kotlinx.android.synthetic.main.include_base_title.* - -class AddAddressActivity : KotlinBaseActivity(), OnAddressPickedListener { - - private val kTag = "AddAddressActivity" - private lateinit var addressViewModel: AddressViewModel - - override fun initLayoutView(): Int = R.layout.activity_add_address - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - - leftBackView.setOnClickListener { finish() } - titleView.text = "新建地址" - } - - override fun initData() { - addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] - } - - override fun initEvent() { - addressView.setOnClickListener { - val addressPicker = AddressPicker(this) - addressPicker.setAddressMode( - "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, - AddressJsonParser.Builder() - .provinceCodeField("code") - .provinceNameField("name") - .provinceChildField("city") - .cityCodeField("code") - .cityNameField("name") - .cityChildField("area") - .countyCodeField("code") - .countyNameField("name") - .build() - ) - addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") - addressPicker.setOnAddressPickedListener(this) - val layout = addressPicker.wheelLayout - layout.setTextSize(14f.sp2px(this).toFloat()) - layout.setSelectedTextSize(16f.sp2px(this).toFloat()) - layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) - layout.setSelectedTextBold(true) - layout.setOnLinkageSelectedListener { first, second, third -> - addressPicker.titleView.text = String.format( - "%s%s%s", - addressPicker.firstWheelView.formatItem(first), - addressPicker.secondWheelView.formatItem(second), - addressPicker.thirdWheelView.formatItem(third) - ) - addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) - } - addressPicker.show() - } - - saveAddressButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { - "请先选择地区".show(this) - return@setOnClickListener - } - if (streetView.text.isNullOrBlank()) { - "请输入街道或者楼牌号地址".show(this) - return@setOnClickListener - } - if (postalCodeView.text.isNullOrBlank()) { - "请输入邮政编码".show(this) - return@setOnClickListener - } - - val split = addressView.text.split("-") - val userModel = DeserializeModel.getUserModel()!! - addressViewModel.addAddress( - userModel.mobile, - split[0], - split[1], - split[2], - streetView.text.toString(), - "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", - postalCodeView.text.toString() - ) - } - } - - override fun onAddressPicked( - province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? - ) { - addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) - } - - override fun observeRequestState() { - addressViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - LoadingDialogHub.show(this, "地址保存中...") - } - LoadState.Success -> { - LoadingDialogHub.dismiss() - finish() - } - else -> LoadingDialogHub.dismiss() - } - }) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddressActivity.kt b/app/src/main/java/com/casic/br/view/AddressActivity.kt new file mode 100644 index 0000000..26303ad --- /dev/null +++ b/app/src/main/java/com/casic/br/view/AddressActivity.kt @@ -0,0 +1,149 @@ +package com.casic.br.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.br.R +import com.casic.br.utils.DeserializeModel +import com.casic.br.utils.LoadingDialogHub +import com.casic.br.vm.AddressViewModel +import com.github.gzuliyujiang.wheelpicker.AddressPicker +import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode +import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener +import com.github.gzuliyujiang.wheelpicker.entity.CityEntity +import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity +import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity +import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.sp2px +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_address.* +import kotlinx.android.synthetic.main.include_base_title.* + +class AddressActivity : KotlinBaseActivity(), OnAddressPickedListener { + + private val kTag = "AddAddressActivity" + private var id: String? = null + private lateinit var addressViewModel: AddressViewModel + + override fun initLayoutView(): Int = R.layout.activity_address + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + id = intent.getStringExtra(Constant.INTENT_PARAM) + if (id == null) { + titleView.text = "新建地址" + } else { + titleView.text = "更新地址" + } + addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] + } + + override fun initEvent() { + addressView.setOnClickListener { + val addressPicker = AddressPicker(this) + addressPicker.setAddressMode( + "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, + AddressJsonParser.Builder() + .provinceCodeField("code") + .provinceNameField("name") + .provinceChildField("city") + .cityCodeField("code") + .cityNameField("name") + .cityChildField("area") + .countyCodeField("code") + .countyNameField("name") + .build() + ) + addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") + addressPicker.setOnAddressPickedListener(this) + val layout = addressPicker.wheelLayout + layout.setTextSize(14f.sp2px(this).toFloat()) + layout.setSelectedTextSize(16f.sp2px(this).toFloat()) + layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) + layout.setSelectedTextBold(true) + layout.setOnLinkageSelectedListener { first, second, third -> + addressPicker.titleView.text = String.format( + "%s%s%s", + addressPicker.firstWheelView.formatItem(first), + addressPicker.secondWheelView.formatItem(second), + addressPicker.thirdWheelView.formatItem(third) + ) + addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) + } + addressPicker.show() + } + + saveAddressButton.setOnClickListener { + if (addressView.text.isNullOrBlank()) { + "请先选择地区".show(this) + return@setOnClickListener + } + if (streetView.text.isNullOrBlank()) { + "请输入街道或者楼牌号地址".show(this) + return@setOnClickListener + } + if (postalCodeView.text.isNullOrBlank()) { + "请输入邮政编码".show(this) + return@setOnClickListener + } + + val split = addressView.text.split("-") + val userModel = DeserializeModel.getUserModel()!! + if (id == null) { + //新增地址 + addressViewModel.addAddress( + userModel.mobile, + split[0], + split[1], + split[2], + streetView.text.toString(), + "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", + postalCodeView.text.toString() + ) + } else { + //修改地址 + addressViewModel.updateAddressById( + id!!, + userModel.mobile, + split[0], + split[1], + split[2], + streetView.text.toString(), + "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", + postalCodeView.text.toString() + ) + } + } + } + + override fun onAddressPicked( + province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? + ) { + addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) + } + + override fun observeRequestState() { + addressViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + LoadingDialogHub.show(this, "地址保存中...") + } + LoadState.Success -> { + LoadingDialogHub.dismiss() + finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt index 2ad11bd..9c3cccc 100644 --- a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt +++ b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt @@ -16,4 +16,8 @@ } return gson.fromJson(userJson, object : TypeToken() {}.type) } + + fun isLogin(): Boolean { + return SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index 9f1c93b..f9b6036 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt @@ -61,4 +61,13 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 修改地址 + */ + @POST("/appAddressInfo/update") + suspend fun updateAddressById( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt index ffb6064..aa23977 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt @@ -139,4 +139,27 @@ ) return api.deleteAddressById(AuthenticationHelper.token!!, requestBody) } + + /** + * 修改地址 + */ + suspend fun updateAddressById( + id: String, account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("account", account) + paramObject.put("province", province) + paramObject.put("city", city) + paramObject.put("area", area) + paramObject.put("street", street) + paramObject.put("detailAddress", detailAddress) + paramObject.put("postalCode", postalCode) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.updateAddressById(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt b/app/src/main/java/com/casic/br/view/AddAddressActivity.kt deleted file mode 100644 index 1e6c191..0000000 --- a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.casic.br.view - -import androidx.lifecycle.ViewModelProvider -import com.casic.br.R -import com.casic.br.utils.DeserializeModel -import com.casic.br.utils.LoadingDialogHub -import com.casic.br.vm.AddressViewModel -import com.github.gzuliyujiang.wheelpicker.AddressPicker -import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode -import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener -import com.github.gzuliyujiang.wheelpicker.entity.CityEntity -import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity -import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity -import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.sp2px -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_add_address.* -import kotlinx.android.synthetic.main.include_base_title.* - -class AddAddressActivity : KotlinBaseActivity(), OnAddressPickedListener { - - private val kTag = "AddAddressActivity" - private lateinit var addressViewModel: AddressViewModel - - override fun initLayoutView(): Int = R.layout.activity_add_address - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - - leftBackView.setOnClickListener { finish() } - titleView.text = "新建地址" - } - - override fun initData() { - addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] - } - - override fun initEvent() { - addressView.setOnClickListener { - val addressPicker = AddressPicker(this) - addressPicker.setAddressMode( - "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, - AddressJsonParser.Builder() - .provinceCodeField("code") - .provinceNameField("name") - .provinceChildField("city") - .cityCodeField("code") - .cityNameField("name") - .cityChildField("area") - .countyCodeField("code") - .countyNameField("name") - .build() - ) - addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") - addressPicker.setOnAddressPickedListener(this) - val layout = addressPicker.wheelLayout - layout.setTextSize(14f.sp2px(this).toFloat()) - layout.setSelectedTextSize(16f.sp2px(this).toFloat()) - layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) - layout.setSelectedTextBold(true) - layout.setOnLinkageSelectedListener { first, second, third -> - addressPicker.titleView.text = String.format( - "%s%s%s", - addressPicker.firstWheelView.formatItem(first), - addressPicker.secondWheelView.formatItem(second), - addressPicker.thirdWheelView.formatItem(third) - ) - addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) - } - addressPicker.show() - } - - saveAddressButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { - "请先选择地区".show(this) - return@setOnClickListener - } - if (streetView.text.isNullOrBlank()) { - "请输入街道或者楼牌号地址".show(this) - return@setOnClickListener - } - if (postalCodeView.text.isNullOrBlank()) { - "请输入邮政编码".show(this) - return@setOnClickListener - } - - val split = addressView.text.split("-") - val userModel = DeserializeModel.getUserModel()!! - addressViewModel.addAddress( - userModel.mobile, - split[0], - split[1], - split[2], - streetView.text.toString(), - "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", - postalCodeView.text.toString() - ) - } - } - - override fun onAddressPicked( - province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? - ) { - addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) - } - - override fun observeRequestState() { - addressViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - LoadingDialogHub.show(this, "地址保存中...") - } - LoadState.Success -> { - LoadingDialogHub.dismiss() - finish() - } - else -> LoadingDialogHub.dismiss() - } - }) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddressActivity.kt b/app/src/main/java/com/casic/br/view/AddressActivity.kt new file mode 100644 index 0000000..26303ad --- /dev/null +++ b/app/src/main/java/com/casic/br/view/AddressActivity.kt @@ -0,0 +1,149 @@ +package com.casic.br.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.br.R +import com.casic.br.utils.DeserializeModel +import com.casic.br.utils.LoadingDialogHub +import com.casic.br.vm.AddressViewModel +import com.github.gzuliyujiang.wheelpicker.AddressPicker +import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode +import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener +import com.github.gzuliyujiang.wheelpicker.entity.CityEntity +import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity +import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity +import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.sp2px +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_address.* +import kotlinx.android.synthetic.main.include_base_title.* + +class AddressActivity : KotlinBaseActivity(), OnAddressPickedListener { + + private val kTag = "AddAddressActivity" + private var id: String? = null + private lateinit var addressViewModel: AddressViewModel + + override fun initLayoutView(): Int = R.layout.activity_address + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + id = intent.getStringExtra(Constant.INTENT_PARAM) + if (id == null) { + titleView.text = "新建地址" + } else { + titleView.text = "更新地址" + } + addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] + } + + override fun initEvent() { + addressView.setOnClickListener { + val addressPicker = AddressPicker(this) + addressPicker.setAddressMode( + "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, + AddressJsonParser.Builder() + .provinceCodeField("code") + .provinceNameField("name") + .provinceChildField("city") + .cityCodeField("code") + .cityNameField("name") + .cityChildField("area") + .countyCodeField("code") + .countyNameField("name") + .build() + ) + addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") + addressPicker.setOnAddressPickedListener(this) + val layout = addressPicker.wheelLayout + layout.setTextSize(14f.sp2px(this).toFloat()) + layout.setSelectedTextSize(16f.sp2px(this).toFloat()) + layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) + layout.setSelectedTextBold(true) + layout.setOnLinkageSelectedListener { first, second, third -> + addressPicker.titleView.text = String.format( + "%s%s%s", + addressPicker.firstWheelView.formatItem(first), + addressPicker.secondWheelView.formatItem(second), + addressPicker.thirdWheelView.formatItem(third) + ) + addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) + } + addressPicker.show() + } + + saveAddressButton.setOnClickListener { + if (addressView.text.isNullOrBlank()) { + "请先选择地区".show(this) + return@setOnClickListener + } + if (streetView.text.isNullOrBlank()) { + "请输入街道或者楼牌号地址".show(this) + return@setOnClickListener + } + if (postalCodeView.text.isNullOrBlank()) { + "请输入邮政编码".show(this) + return@setOnClickListener + } + + val split = addressView.text.split("-") + val userModel = DeserializeModel.getUserModel()!! + if (id == null) { + //新增地址 + addressViewModel.addAddress( + userModel.mobile, + split[0], + split[1], + split[2], + streetView.text.toString(), + "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", + postalCodeView.text.toString() + ) + } else { + //修改地址 + addressViewModel.updateAddressById( + id!!, + userModel.mobile, + split[0], + split[1], + split[2], + streetView.text.toString(), + "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", + postalCodeView.text.toString() + ) + } + } + } + + override fun onAddressPicked( + province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? + ) { + addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) + } + + override fun observeRequestState() { + addressViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + LoadingDialogHub.show(this, "地址保存中...") + } + LoadState.Success -> { + LoadingDialogHub.dismiss() + finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt index ac192c7..9424e54 100644 --- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt +++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt @@ -9,8 +9,8 @@ import com.casic.br.R import com.casic.br.adapter.AddressListAdapter import com.casic.br.model.AddressListModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.LoadingDialogHub -import com.casic.br.utils.LocaleConstant import com.casic.br.vm.AddressViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -18,7 +18,6 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -81,9 +80,8 @@ }) addAddressButton.setOnClickListener { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { - navigatePageTo() + if (DeserializeModel.isLogin()) { + navigatePageTo() } else { navigatePageTo() } @@ -145,13 +143,7 @@ addressAdapter.setOnItemClickListener(object : AddressListAdapter.OnItemClickListener { override fun onEditButtonClicked(position: Int) { -// if (dataBeans[position].devcode.isNullOrBlank()) { -// "设备编号为空,无法查看历史数据".show(context) -// return -// } -// navigatePageTo( -// arrayListOf(groupId, dataBeans[position].devcode) -// ) + navigatePageTo(dataBeans[clickedPosition].id) } }) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt index 2ad11bd..9c3cccc 100644 --- a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt +++ b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt @@ -16,4 +16,8 @@ } return gson.fromJson(userJson, object : TypeToken() {}.type) } + + fun isLogin(): Boolean { + return SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index 9f1c93b..f9b6036 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt @@ -61,4 +61,13 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 修改地址 + */ + @POST("/appAddressInfo/update") + suspend fun updateAddressById( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt index ffb6064..aa23977 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt @@ -139,4 +139,27 @@ ) return api.deleteAddressById(AuthenticationHelper.token!!, requestBody) } + + /** + * 修改地址 + */ + suspend fun updateAddressById( + id: String, account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("account", account) + paramObject.put("province", province) + paramObject.put("city", city) + paramObject.put("area", area) + paramObject.put("street", street) + paramObject.put("detailAddress", detailAddress) + paramObject.put("postalCode", postalCode) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.updateAddressById(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt b/app/src/main/java/com/casic/br/view/AddAddressActivity.kt deleted file mode 100644 index 1e6c191..0000000 --- a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.casic.br.view - -import androidx.lifecycle.ViewModelProvider -import com.casic.br.R -import com.casic.br.utils.DeserializeModel -import com.casic.br.utils.LoadingDialogHub -import com.casic.br.vm.AddressViewModel -import com.github.gzuliyujiang.wheelpicker.AddressPicker -import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode -import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener -import com.github.gzuliyujiang.wheelpicker.entity.CityEntity -import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity -import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity -import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.sp2px -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_add_address.* -import kotlinx.android.synthetic.main.include_base_title.* - -class AddAddressActivity : KotlinBaseActivity(), OnAddressPickedListener { - - private val kTag = "AddAddressActivity" - private lateinit var addressViewModel: AddressViewModel - - override fun initLayoutView(): Int = R.layout.activity_add_address - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - - leftBackView.setOnClickListener { finish() } - titleView.text = "新建地址" - } - - override fun initData() { - addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] - } - - override fun initEvent() { - addressView.setOnClickListener { - val addressPicker = AddressPicker(this) - addressPicker.setAddressMode( - "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, - AddressJsonParser.Builder() - .provinceCodeField("code") - .provinceNameField("name") - .provinceChildField("city") - .cityCodeField("code") - .cityNameField("name") - .cityChildField("area") - .countyCodeField("code") - .countyNameField("name") - .build() - ) - addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") - addressPicker.setOnAddressPickedListener(this) - val layout = addressPicker.wheelLayout - layout.setTextSize(14f.sp2px(this).toFloat()) - layout.setSelectedTextSize(16f.sp2px(this).toFloat()) - layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) - layout.setSelectedTextBold(true) - layout.setOnLinkageSelectedListener { first, second, third -> - addressPicker.titleView.text = String.format( - "%s%s%s", - addressPicker.firstWheelView.formatItem(first), - addressPicker.secondWheelView.formatItem(second), - addressPicker.thirdWheelView.formatItem(third) - ) - addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) - } - addressPicker.show() - } - - saveAddressButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { - "请先选择地区".show(this) - return@setOnClickListener - } - if (streetView.text.isNullOrBlank()) { - "请输入街道或者楼牌号地址".show(this) - return@setOnClickListener - } - if (postalCodeView.text.isNullOrBlank()) { - "请输入邮政编码".show(this) - return@setOnClickListener - } - - val split = addressView.text.split("-") - val userModel = DeserializeModel.getUserModel()!! - addressViewModel.addAddress( - userModel.mobile, - split[0], - split[1], - split[2], - streetView.text.toString(), - "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", - postalCodeView.text.toString() - ) - } - } - - override fun onAddressPicked( - province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? - ) { - addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) - } - - override fun observeRequestState() { - addressViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - LoadingDialogHub.show(this, "地址保存中...") - } - LoadState.Success -> { - LoadingDialogHub.dismiss() - finish() - } - else -> LoadingDialogHub.dismiss() - } - }) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddressActivity.kt b/app/src/main/java/com/casic/br/view/AddressActivity.kt new file mode 100644 index 0000000..26303ad --- /dev/null +++ b/app/src/main/java/com/casic/br/view/AddressActivity.kt @@ -0,0 +1,149 @@ +package com.casic.br.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.br.R +import com.casic.br.utils.DeserializeModel +import com.casic.br.utils.LoadingDialogHub +import com.casic.br.vm.AddressViewModel +import com.github.gzuliyujiang.wheelpicker.AddressPicker +import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode +import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener +import com.github.gzuliyujiang.wheelpicker.entity.CityEntity +import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity +import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity +import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.sp2px +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_address.* +import kotlinx.android.synthetic.main.include_base_title.* + +class AddressActivity : KotlinBaseActivity(), OnAddressPickedListener { + + private val kTag = "AddAddressActivity" + private var id: String? = null + private lateinit var addressViewModel: AddressViewModel + + override fun initLayoutView(): Int = R.layout.activity_address + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + id = intent.getStringExtra(Constant.INTENT_PARAM) + if (id == null) { + titleView.text = "新建地址" + } else { + titleView.text = "更新地址" + } + addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] + } + + override fun initEvent() { + addressView.setOnClickListener { + val addressPicker = AddressPicker(this) + addressPicker.setAddressMode( + "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, + AddressJsonParser.Builder() + .provinceCodeField("code") + .provinceNameField("name") + .provinceChildField("city") + .cityCodeField("code") + .cityNameField("name") + .cityChildField("area") + .countyCodeField("code") + .countyNameField("name") + .build() + ) + addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") + addressPicker.setOnAddressPickedListener(this) + val layout = addressPicker.wheelLayout + layout.setTextSize(14f.sp2px(this).toFloat()) + layout.setSelectedTextSize(16f.sp2px(this).toFloat()) + layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) + layout.setSelectedTextBold(true) + layout.setOnLinkageSelectedListener { first, second, third -> + addressPicker.titleView.text = String.format( + "%s%s%s", + addressPicker.firstWheelView.formatItem(first), + addressPicker.secondWheelView.formatItem(second), + addressPicker.thirdWheelView.formatItem(third) + ) + addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) + } + addressPicker.show() + } + + saveAddressButton.setOnClickListener { + if (addressView.text.isNullOrBlank()) { + "请先选择地区".show(this) + return@setOnClickListener + } + if (streetView.text.isNullOrBlank()) { + "请输入街道或者楼牌号地址".show(this) + return@setOnClickListener + } + if (postalCodeView.text.isNullOrBlank()) { + "请输入邮政编码".show(this) + return@setOnClickListener + } + + val split = addressView.text.split("-") + val userModel = DeserializeModel.getUserModel()!! + if (id == null) { + //新增地址 + addressViewModel.addAddress( + userModel.mobile, + split[0], + split[1], + split[2], + streetView.text.toString(), + "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", + postalCodeView.text.toString() + ) + } else { + //修改地址 + addressViewModel.updateAddressById( + id!!, + userModel.mobile, + split[0], + split[1], + split[2], + streetView.text.toString(), + "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", + postalCodeView.text.toString() + ) + } + } + } + + override fun onAddressPicked( + province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? + ) { + addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) + } + + override fun observeRequestState() { + addressViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + LoadingDialogHub.show(this, "地址保存中...") + } + LoadState.Success -> { + LoadingDialogHub.dismiss() + finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt index ac192c7..9424e54 100644 --- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt +++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt @@ -9,8 +9,8 @@ import com.casic.br.R import com.casic.br.adapter.AddressListAdapter import com.casic.br.model.AddressListModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.LoadingDialogHub -import com.casic.br.utils.LocaleConstant import com.casic.br.vm.AddressViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -18,7 +18,6 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -81,9 +80,8 @@ }) addAddressButton.setOnClickListener { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { - navigatePageTo() + if (DeserializeModel.isLogin()) { + navigatePageTo() } else { navigatePageTo() } @@ -145,13 +143,7 @@ addressAdapter.setOnItemClickListener(object : AddressListAdapter.OnItemClickListener { override fun onEditButtonClicked(position: Int) { -// if (dataBeans[position].devcode.isNullOrBlank()) { -// "设备编号为空,无法查看历史数据".show(context) -// return -// } -// navigatePageTo( -// arrayListOf(groupId, dataBeans[position].devcode) -// ) + navigatePageTo(dataBeans[clickedPosition].id) } }) } diff --git a/app/src/main/java/com/casic/br/vm/AddressViewModel.kt b/app/src/main/java/com/casic/br/vm/AddressViewModel.kt index a7aa9ae..34bdd57 100644 --- a/app/src/main/java/com/casic/br/vm/AddressViewModel.kt +++ b/app/src/main/java/com/casic/br/vm/AddressViewModel.kt @@ -86,4 +86,32 @@ loadState.value = LoadState.Fail it.printStackTrace() }) + + fun updateAddressById( + id: String, account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.updateAddressById( + id, + account, + province, + city, + area, + street, + detailAddress, + postalCode + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 796c42c..88090c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,7 @@ - + diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index 84e947c..2cb3f45 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,6 +6,7 @@ import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity @@ -121,8 +122,7 @@ } override fun onResume() { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt index d5941dd..159070c 100644 --- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt @@ -14,7 +14,6 @@ import com.casic.br.view.SettingsActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.fragment_mine.* import kotlinx.android.synthetic.main.include_main_title.* @@ -101,8 +100,7 @@ override fun onResume() { super.onResume() - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { + if (DeserializeModel.isLogin()) { val userModel = DeserializeModel.getUserModel()!! if (userModel.headPic == "") { Glide.with(this) diff --git a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt index 2ad11bd..9c3cccc 100644 --- a/app/src/main/java/com/casic/br/utils/DeserializeModel.kt +++ b/app/src/main/java/com/casic/br/utils/DeserializeModel.kt @@ -16,4 +16,8 @@ } return gson.fromJson(userJson, object : TypeToken() {}.type) } + + fun isLogin(): Boolean { + return SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index 9f1c93b..f9b6036 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt @@ -61,4 +61,13 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 修改地址 + */ + @POST("/appAddressInfo/update") + suspend fun updateAddressById( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt index ffb6064..aa23977 100644 --- a/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitServiceManager.kt @@ -139,4 +139,27 @@ ) return api.deleteAddressById(AuthenticationHelper.token!!, requestBody) } + + /** + * 修改地址 + */ + suspend fun updateAddressById( + id: String, account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ): String { + val paramObject = JSONObject() + paramObject.put("id", id) + paramObject.put("account", account) + paramObject.put("province", province) + paramObject.put("city", city) + paramObject.put("area", area) + paramObject.put("street", street) + paramObject.put("detailAddress", detailAddress) + paramObject.put("postalCode", postalCode) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.updateAddressById(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt b/app/src/main/java/com/casic/br/view/AddAddressActivity.kt deleted file mode 100644 index 1e6c191..0000000 --- a/app/src/main/java/com/casic/br/view/AddAddressActivity.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.casic.br.view - -import androidx.lifecycle.ViewModelProvider -import com.casic.br.R -import com.casic.br.utils.DeserializeModel -import com.casic.br.utils.LoadingDialogHub -import com.casic.br.vm.AddressViewModel -import com.github.gzuliyujiang.wheelpicker.AddressPicker -import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode -import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener -import com.github.gzuliyujiang.wheelpicker.entity.CityEntity -import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity -import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity -import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.sp2px -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_add_address.* -import kotlinx.android.synthetic.main.include_base_title.* - -class AddAddressActivity : KotlinBaseActivity(), OnAddressPickedListener { - - private val kTag = "AddAddressActivity" - private lateinit var addressViewModel: AddressViewModel - - override fun initLayoutView(): Int = R.layout.activity_add_address - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - - leftBackView.setOnClickListener { finish() } - titleView.text = "新建地址" - } - - override fun initData() { - addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] - } - - override fun initEvent() { - addressView.setOnClickListener { - val addressPicker = AddressPicker(this) - addressPicker.setAddressMode( - "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, - AddressJsonParser.Builder() - .provinceCodeField("code") - .provinceNameField("name") - .provinceChildField("city") - .cityCodeField("code") - .cityNameField("name") - .cityChildField("area") - .countyCodeField("code") - .countyNameField("name") - .build() - ) - addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") - addressPicker.setOnAddressPickedListener(this) - val layout = addressPicker.wheelLayout - layout.setTextSize(14f.sp2px(this).toFloat()) - layout.setSelectedTextSize(16f.sp2px(this).toFloat()) - layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) - layout.setSelectedTextBold(true) - layout.setOnLinkageSelectedListener { first, second, third -> - addressPicker.titleView.text = String.format( - "%s%s%s", - addressPicker.firstWheelView.formatItem(first), - addressPicker.secondWheelView.formatItem(second), - addressPicker.thirdWheelView.formatItem(third) - ) - addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) - } - addressPicker.show() - } - - saveAddressButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { - "请先选择地区".show(this) - return@setOnClickListener - } - if (streetView.text.isNullOrBlank()) { - "请输入街道或者楼牌号地址".show(this) - return@setOnClickListener - } - if (postalCodeView.text.isNullOrBlank()) { - "请输入邮政编码".show(this) - return@setOnClickListener - } - - val split = addressView.text.split("-") - val userModel = DeserializeModel.getUserModel()!! - addressViewModel.addAddress( - userModel.mobile, - split[0], - split[1], - split[2], - streetView.text.toString(), - "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", - postalCodeView.text.toString() - ) - } - } - - override fun onAddressPicked( - province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? - ) { - addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) - } - - override fun observeRequestState() { - addressViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - LoadingDialogHub.show(this, "地址保存中...") - } - LoadState.Success -> { - LoadingDialogHub.dismiss() - finish() - } - else -> LoadingDialogHub.dismiss() - } - }) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddressActivity.kt b/app/src/main/java/com/casic/br/view/AddressActivity.kt new file mode 100644 index 0000000..26303ad --- /dev/null +++ b/app/src/main/java/com/casic/br/view/AddressActivity.kt @@ -0,0 +1,149 @@ +package com.casic.br.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.br.R +import com.casic.br.utils.DeserializeModel +import com.casic.br.utils.LoadingDialogHub +import com.casic.br.vm.AddressViewModel +import com.github.gzuliyujiang.wheelpicker.AddressPicker +import com.github.gzuliyujiang.wheelpicker.annotation.AddressMode +import com.github.gzuliyujiang.wheelpicker.contract.OnAddressPickedListener +import com.github.gzuliyujiang.wheelpicker.entity.CityEntity +import com.github.gzuliyujiang.wheelpicker.entity.CountyEntity +import com.github.gzuliyujiang.wheelpicker.entity.ProvinceEntity +import com.github.gzuliyujiang.wheelpicker.utility.AddressJsonParser +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.sp2px +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_address.* +import kotlinx.android.synthetic.main.include_base_title.* + +class AddressActivity : KotlinBaseActivity(), OnAddressPickedListener { + + private val kTag = "AddAddressActivity" + private var id: String? = null + private lateinit var addressViewModel: AddressViewModel + + override fun initLayoutView(): Int = R.layout.activity_address + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + id = intent.getStringExtra(Constant.INTENT_PARAM) + if (id == null) { + titleView.text = "新建地址" + } else { + titleView.text = "更新地址" + } + addressViewModel = ViewModelProvider(this)[AddressViewModel::class.java] + } + + override fun initEvent() { + addressView.setOnClickListener { + val addressPicker = AddressPicker(this) + addressPicker.setAddressMode( + "china_city_data.json", AddressMode.PROVINCE_CITY_COUNTY, + AddressJsonParser.Builder() + .provinceCodeField("code") + .provinceNameField("name") + .provinceChildField("city") + .cityCodeField("code") + .cityNameField("name") + .cityChildField("area") + .countyCodeField("code") + .countyNameField("name") + .build() + ) + addressPicker.setDefaultValue("北京市", "市辖区", "海淀区") + addressPicker.setOnAddressPickedListener(this) + val layout = addressPicker.wheelLayout + layout.setTextSize(14f.sp2px(this).toFloat()) + layout.setSelectedTextSize(16f.sp2px(this).toFloat()) + layout.setSelectedTextColor(R.color.mainThemeColor.convertColor(this)) + layout.setSelectedTextBold(true) + layout.setOnLinkageSelectedListener { first, second, third -> + addressPicker.titleView.text = String.format( + "%s%s%s", + addressPicker.firstWheelView.formatItem(first), + addressPicker.secondWheelView.formatItem(second), + addressPicker.thirdWheelView.formatItem(third) + ) + addressPicker.titleView.setTextColor(R.color.mainThemeColor.convertColor(this)) + } + addressPicker.show() + } + + saveAddressButton.setOnClickListener { + if (addressView.text.isNullOrBlank()) { + "请先选择地区".show(this) + return@setOnClickListener + } + if (streetView.text.isNullOrBlank()) { + "请输入街道或者楼牌号地址".show(this) + return@setOnClickListener + } + if (postalCodeView.text.isNullOrBlank()) { + "请输入邮政编码".show(this) + return@setOnClickListener + } + + val split = addressView.text.split("-") + val userModel = DeserializeModel.getUserModel()!! + if (id == null) { + //新增地址 + addressViewModel.addAddress( + userModel.mobile, + split[0], + split[1], + split[2], + streetView.text.toString(), + "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", + postalCodeView.text.toString() + ) + } else { + //修改地址 + addressViewModel.updateAddressById( + id!!, + userModel.mobile, + split[0], + split[1], + split[2], + streetView.text.toString(), + "${split[0]}${split[1]}${split[2]}${streetView.text.toString()}", + postalCodeView.text.toString() + ) + } + } + } + + override fun onAddressPicked( + province: ProvinceEntity?, city: CityEntity?, county: CountyEntity? + ) { + addressView.text = String.format("%s-%s-%s", province?.name, city?.name, county?.name) + } + + override fun observeRequestState() { + addressViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + LoadingDialogHub.show(this, "地址保存中...") + } + LoadState.Success -> { + LoadingDialogHub.dismiss() + finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt index ac192c7..9424e54 100644 --- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt +++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt @@ -9,8 +9,8 @@ import com.casic.br.R import com.casic.br.adapter.AddressListAdapter import com.casic.br.model.AddressListModel +import com.casic.br.utils.DeserializeModel import com.casic.br.utils.LoadingDialogHub -import com.casic.br.utils.LocaleConstant import com.casic.br.vm.AddressViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -18,7 +18,6 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -81,9 +80,8 @@ }) addAddressButton.setOnClickListener { - val isLogin = SaveKeyValues.getValue(LocaleConstant.USER_IS_LOGIN, false) as Boolean - if (isLogin) { - navigatePageTo() + if (DeserializeModel.isLogin()) { + navigatePageTo() } else { navigatePageTo() } @@ -145,13 +143,7 @@ addressAdapter.setOnItemClickListener(object : AddressListAdapter.OnItemClickListener { override fun onEditButtonClicked(position: Int) { -// if (dataBeans[position].devcode.isNullOrBlank()) { -// "设备编号为空,无法查看历史数据".show(context) -// return -// } -// navigatePageTo( -// arrayListOf(groupId, dataBeans[position].devcode) -// ) + navigatePageTo(dataBeans[clickedPosition].id) } }) } diff --git a/app/src/main/java/com/casic/br/vm/AddressViewModel.kt b/app/src/main/java/com/casic/br/vm/AddressViewModel.kt index a7aa9ae..34bdd57 100644 --- a/app/src/main/java/com/casic/br/vm/AddressViewModel.kt +++ b/app/src/main/java/com/casic/br/vm/AddressViewModel.kt @@ -86,4 +86,32 @@ loadState.value = LoadState.Fail it.printStackTrace() }) + + fun updateAddressById( + id: String, account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.updateAddressById( + id, + account, + province, + city, + area, + street, + detailAddress, + postalCode + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_address.xml b/app/src/main/res/layout/activity_add_address.xml deleted file mode 100644 index e47f3f9..0000000 --- a/app/src/main/res/layout/activity_add_address.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -