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 a070f1e..83686ce 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 @@ -38,15 +38,9 @@ /** * 新增地址 */ - @GET("/appAddressInfo/add") + @POST("/appAddressInfo/add") suspend fun addAddress( @Header("token") token: String, - @Query("account") account: String, - @Query("province") province: String, - @Query("city") city: String, - @Query("area") area: String, - @Query("street") street: String, - @Query("detailAddress") detailAddress: String, - @Query("postalCode") postalCode: String + @Body requestBody: RequestBody ): String } \ 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 a070f1e..83686ce 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 @@ -38,15 +38,9 @@ /** * 新增地址 */ - @GET("/appAddressInfo/add") + @POST("/appAddressInfo/add") suspend fun addAddress( @Header("token") token: String, - @Query("account") account: String, - @Query("province") province: String, - @Query("city") city: String, - @Query("area") area: String, - @Query("street") street: String, - @Query("detailAddress") detailAddress: String, - @Query("postalCode") postalCode: 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 e258315..183fb6f 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 @@ -95,15 +95,17 @@ area: String, street: String, detailAddress: String, postalCode: String ): String { - return api.addAddress( - AuthenticationHelper.token!!, - account, - province, - city, - area, - street, - detailAddress, - postalCode + val paramObject = JSONObject() + 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.addAddress(AuthenticationHelper.token!!, requestBody) } } \ 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 a070f1e..83686ce 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 @@ -38,15 +38,9 @@ /** * 新增地址 */ - @GET("/appAddressInfo/add") + @POST("/appAddressInfo/add") suspend fun addAddress( @Header("token") token: String, - @Query("account") account: String, - @Query("province") province: String, - @Query("city") city: String, - @Query("area") area: String, - @Query("street") street: String, - @Query("detailAddress") detailAddress: String, - @Query("postalCode") postalCode: 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 e258315..183fb6f 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 @@ -95,15 +95,17 @@ area: String, street: String, detailAddress: String, postalCode: String ): String { - return api.addAddress( - AuthenticationHelper.token!!, - account, - province, - city, - area, - street, - detailAddress, - postalCode + val paramObject = JSONObject() + 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.addAddress(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 new file mode 100644 index 0000000..1e6c191 --- /dev/null +++ b/app/src/main/java/com/casic/br/view/AddAddressActivity.kt @@ -0,0 +1,127 @@ +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/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index a070f1e..83686ce 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 @@ -38,15 +38,9 @@ /** * 新增地址 */ - @GET("/appAddressInfo/add") + @POST("/appAddressInfo/add") suspend fun addAddress( @Header("token") token: String, - @Query("account") account: String, - @Query("province") province: String, - @Query("city") city: String, - @Query("area") area: String, - @Query("street") street: String, - @Query("detailAddress") detailAddress: String, - @Query("postalCode") postalCode: 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 e258315..183fb6f 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 @@ -95,15 +95,17 @@ area: String, street: String, detailAddress: String, postalCode: String ): String { - return api.addAddress( - AuthenticationHelper.token!!, - account, - province, - city, - area, - street, - detailAddress, - postalCode + val paramObject = JSONObject() + 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.addAddress(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 new file mode 100644 index 0000000..1e6c191 --- /dev/null +++ b/app/src/main/java/com/casic/br/view/AddAddressActivity.kt @@ -0,0 +1,127 @@ +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/vm/AddressViewModel.kt b/app/src/main/java/com/casic/br/vm/AddressViewModel.kt new file mode 100644 index 0000000..d86e677 --- /dev/null +++ b/app/src/main/java/com/casic/br/vm/AddressViewModel.kt @@ -0,0 +1,40 @@ +package com.casic.br.vm + +import com.casic.br.base.BaseApplication +import com.casic.br.extensions.separateResponseCode +import com.casic.br.extensions.toErrorMessage +import com.casic.br.utils.retrofit.RetrofitServiceManager +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +class AddressViewModel : BaseViewModel() { + + fun addAddress( + account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addAddress( + 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/java/com/casic/br/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/utils/retrofit/RetrofitService.kt index a070f1e..83686ce 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 @@ -38,15 +38,9 @@ /** * 新增地址 */ - @GET("/appAddressInfo/add") + @POST("/appAddressInfo/add") suspend fun addAddress( @Header("token") token: String, - @Query("account") account: String, - @Query("province") province: String, - @Query("city") city: String, - @Query("area") area: String, - @Query("street") street: String, - @Query("detailAddress") detailAddress: String, - @Query("postalCode") postalCode: 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 e258315..183fb6f 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 @@ -95,15 +95,17 @@ area: String, street: String, detailAddress: String, postalCode: String ): String { - return api.addAddress( - AuthenticationHelper.token!!, - account, - province, - city, - area, - street, - detailAddress, - postalCode + val paramObject = JSONObject() + 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.addAddress(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 new file mode 100644 index 0000000..1e6c191 --- /dev/null +++ b/app/src/main/java/com/casic/br/view/AddAddressActivity.kt @@ -0,0 +1,127 @@ +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/vm/AddressViewModel.kt b/app/src/main/java/com/casic/br/vm/AddressViewModel.kt new file mode 100644 index 0000000..d86e677 --- /dev/null +++ b/app/src/main/java/com/casic/br/vm/AddressViewModel.kt @@ -0,0 +1,40 @@ +package com.casic.br.vm + +import com.casic.br.base.BaseApplication +import com.casic.br.extensions.separateResponseCode +import com.casic.br.extensions.toErrorMessage +import com.casic.br.utils.retrofit.RetrofitServiceManager +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +class AddressViewModel : BaseViewModel() { + + fun addAddress( + account: String, province: String, city: String, + area: String, street: String, detailAddress: String, + postalCode: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addAddress( + 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 new file mode 100644 index 0000000..fae2694 --- /dev/null +++ b/app/src/main/res/layout/activity_add_address.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +