diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index cd54b39..6061377 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -24,9 +24,6 @@ * @email 290677893@qq.com */ object ChartViewHelper { - private const val kTag = "ChartViewHelper" - private val decimalFormat = DecimalFormat("##0.0") - /** * 折线图 * */ @@ -95,7 +92,7 @@ dataSet.color = R.color.color_1.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -121,7 +118,7 @@ dataSet.color = R.color.color_6.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -156,7 +153,7 @@ val data = PieData(dataSet) data.setValueFormatter(object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + "t" + return DecimalFormat("##0.0").format(value.toDouble()) + "t" } }) data.setValueTextSize(12f) diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index cd54b39..6061377 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -24,9 +24,6 @@ * @email 290677893@qq.com */ object ChartViewHelper { - private const val kTag = "ChartViewHelper" - private val decimalFormat = DecimalFormat("##0.0") - /** * 折线图 * */ @@ -95,7 +92,7 @@ dataSet.color = R.color.color_1.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -121,7 +118,7 @@ dataSet.color = R.color.color_6.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -156,7 +153,7 @@ val data = PieData(dataSet) data.setValueFormatter(object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + "t" + return DecimalFormat("##0.0").format(value.toDouble()) + "t" } }) data.setValueTextSize(12f) diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 08182f9..019d741 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -31,6 +31,12 @@ ): String /** + * 退出登录 + */ + @GET("/user/logout") + suspend fun loginOut(@Header("token") token: String): String + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index cd54b39..6061377 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -24,9 +24,6 @@ * @email 290677893@qq.com */ object ChartViewHelper { - private const val kTag = "ChartViewHelper" - private val decimalFormat = DecimalFormat("##0.0") - /** * 折线图 * */ @@ -95,7 +92,7 @@ dataSet.color = R.color.color_1.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -121,7 +118,7 @@ dataSet.color = R.color.color_6.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -156,7 +153,7 @@ val data = PieData(dataSet) data.setValueFormatter(object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + "t" + return DecimalFormat("##0.0").format(value.toDouble()) + "t" } }) data.setValueTextSize(12f) diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 08182f9..019d741 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -31,6 +31,12 @@ ): String /** + * 退出登录 + */ + @GET("/user/logout") + suspend fun loginOut(@Header("token") token: String): String + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index ed4d5b1..3985af9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -24,6 +24,13 @@ } /** + * 退出登录 + */ + suspend fun loginOut(): String { + return api.loginOut(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index cd54b39..6061377 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -24,9 +24,6 @@ * @email 290677893@qq.com */ object ChartViewHelper { - private const val kTag = "ChartViewHelper" - private val decimalFormat = DecimalFormat("##0.0") - /** * 折线图 * */ @@ -95,7 +92,7 @@ dataSet.color = R.color.color_1.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -121,7 +118,7 @@ dataSet.color = R.color.color_6.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -156,7 +153,7 @@ val data = PieData(dataSet) data.setValueFormatter(object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + "t" + return DecimalFormat("##0.0").format(value.toDouble()) + "t" } }) data.setValueTextSize(12f) diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 08182f9..019d741 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -31,6 +31,12 @@ ): String /** + * 退出登录 + */ + @GET("/user/logout") + suspend fun loginOut(@Header("token") token: String): String + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index ed4d5b1..3985af9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -24,6 +24,13 @@ } /** + * 退出登录 + */ + suspend fun loginOut(): String { + return api.loginOut(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index ae9df20..3f497c9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -17,10 +17,14 @@ import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.utils.PageNavigationManager +import com.casic.qd.smartwell.vm.LoginOutViewModel import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.github.mikephil.charting.data.Entry +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder @@ -34,6 +38,7 @@ private val context: Context = this@MainActivity private var clickTime: Long = 0 + private lateinit var loginOutViewModel: LoginOutViewModel private lateinit var waterViewModel: WaterStatisticsViewModel private val xAxisDate: MutableList = ArrayList() private val entryModels: MutableList = ArrayList() @@ -106,11 +111,39 @@ }) //初始化vm + loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(this) } override fun initEvent() { + leftOptionView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("退出登录") + .setMessage("确定要退出吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + loginOutViewModel.loginOut() + } + + override fun onCancelClick() {} + }).build().show() + } + loginOutViewModel.resultModel.observe(this, { + if (it.code == 200) { + AuthenticationHelper.removeToken() + this.navigatePageTo(LoginActivity::class.java) + PageNavigationManager.finishAllActivity() + } + }) + rightOptionView.setOnClickListener { + navigatePageTo(AlarmManagementActivity::class.java) + } + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") @@ -118,10 +151,6 @@ todayWaterView.text = String.format("${it["today"]}t") }) - rightOptionView.setOnClickListener { - navigatePageTo(AlarmManagementActivity::class.java) - } - //初始化折线图,X轴从0开始 val time = System.currentTimeMillis() val startDate = time.timestampToLastWeekDate() diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index cd54b39..6061377 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -24,9 +24,6 @@ * @email 290677893@qq.com */ object ChartViewHelper { - private const val kTag = "ChartViewHelper" - private val decimalFormat = DecimalFormat("##0.0") - /** * 折线图 * */ @@ -95,7 +92,7 @@ dataSet.color = R.color.color_1.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -121,7 +118,7 @@ dataSet.color = R.color.color_6.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -156,7 +153,7 @@ val data = PieData(dataSet) data.setValueFormatter(object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + "t" + return DecimalFormat("##0.0").format(value.toDouble()) + "t" } }) data.setValueTextSize(12f) diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 08182f9..019d741 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -31,6 +31,12 @@ ): String /** + * 退出登录 + */ + @GET("/user/logout") + suspend fun loginOut(@Header("token") token: String): String + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index ed4d5b1..3985af9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -24,6 +24,13 @@ } /** + * 退出登录 + */ + suspend fun loginOut(): String { + return api.loginOut(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index ae9df20..3f497c9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -17,10 +17,14 @@ import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.utils.PageNavigationManager +import com.casic.qd.smartwell.vm.LoginOutViewModel import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.github.mikephil.charting.data.Entry +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder @@ -34,6 +38,7 @@ private val context: Context = this@MainActivity private var clickTime: Long = 0 + private lateinit var loginOutViewModel: LoginOutViewModel private lateinit var waterViewModel: WaterStatisticsViewModel private val xAxisDate: MutableList = ArrayList() private val entryModels: MutableList = ArrayList() @@ -106,11 +111,39 @@ }) //初始化vm + loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(this) } override fun initEvent() { + leftOptionView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("退出登录") + .setMessage("确定要退出吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + loginOutViewModel.loginOut() + } + + override fun onCancelClick() {} + }).build().show() + } + loginOutViewModel.resultModel.observe(this, { + if (it.code == 200) { + AuthenticationHelper.removeToken() + this.navigatePageTo(LoginActivity::class.java) + PageNavigationManager.finishAllActivity() + } + }) + rightOptionView.setOnClickListener { + navigatePageTo(AlarmManagementActivity::class.java) + } + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") @@ -118,10 +151,6 @@ todayWaterView.text = String.format("${it["today"]}t") }) - rightOptionView.setOnClickListener { - navigatePageTo(AlarmManagementActivity::class.java) - } - //初始化折线图,X轴从0开始 val time = System.currentTimeMillis() val startDate = time.timestampToLastWeekDate() diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt new file mode 100644 index 0000000..06d797a --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.qd.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.qd.smartwell.base.BaseViewModel +import com.casic.qd.smartwell.extensions.launch +import com.casic.qd.smartwell.extensions.separateResponseCode +import com.casic.qd.smartwell.extensions.show +import com.casic.qd.smartwell.extensions.toErrorMessage +import com.casic.qd.smartwell.model.CommonResultModel +import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken + +class LoginOutViewModel : BaseViewModel() { + + private val gson = Gson() + val resultModel = MutableLiveData() + + fun loginOut() = launch({ + val response = RetrofitServiceManager.loginOut() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + resultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show() + } + }, { + "服务器异常".show() + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index cd54b39..6061377 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -24,9 +24,6 @@ * @email 290677893@qq.com */ object ChartViewHelper { - private const val kTag = "ChartViewHelper" - private val decimalFormat = DecimalFormat("##0.0") - /** * 折线图 * */ @@ -95,7 +92,7 @@ dataSet.color = R.color.color_1.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -121,7 +118,7 @@ dataSet.color = R.color.color_6.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -156,7 +153,7 @@ val data = PieData(dataSet) data.setValueFormatter(object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + "t" + return DecimalFormat("##0.0").format(value.toDouble()) + "t" } }) data.setValueTextSize(12f) diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 08182f9..019d741 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -31,6 +31,12 @@ ): String /** + * 退出登录 + */ + @GET("/user/logout") + suspend fun loginOut(@Header("token") token: String): String + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index ed4d5b1..3985af9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -24,6 +24,13 @@ } /** + * 退出登录 + */ + suspend fun loginOut(): String { + return api.loginOut(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index ae9df20..3f497c9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -17,10 +17,14 @@ import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.utils.PageNavigationManager +import com.casic.qd.smartwell.vm.LoginOutViewModel import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.github.mikephil.charting.data.Entry +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder @@ -34,6 +38,7 @@ private val context: Context = this@MainActivity private var clickTime: Long = 0 + private lateinit var loginOutViewModel: LoginOutViewModel private lateinit var waterViewModel: WaterStatisticsViewModel private val xAxisDate: MutableList = ArrayList() private val entryModels: MutableList = ArrayList() @@ -106,11 +111,39 @@ }) //初始化vm + loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(this) } override fun initEvent() { + leftOptionView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("退出登录") + .setMessage("确定要退出吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + loginOutViewModel.loginOut() + } + + override fun onCancelClick() {} + }).build().show() + } + loginOutViewModel.resultModel.observe(this, { + if (it.code == 200) { + AuthenticationHelper.removeToken() + this.navigatePageTo(LoginActivity::class.java) + PageNavigationManager.finishAllActivity() + } + }) + rightOptionView.setOnClickListener { + navigatePageTo(AlarmManagementActivity::class.java) + } + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") @@ -118,10 +151,6 @@ todayWaterView.text = String.format("${it["today"]}t") }) - rightOptionView.setOnClickListener { - navigatePageTo(AlarmManagementActivity::class.java) - } - //初始化折线图,X轴从0开始 val time = System.currentTimeMillis() val startDate = time.timestampToLastWeekDate() diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt new file mode 100644 index 0000000..06d797a --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.qd.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.qd.smartwell.base.BaseViewModel +import com.casic.qd.smartwell.extensions.launch +import com.casic.qd.smartwell.extensions.separateResponseCode +import com.casic.qd.smartwell.extensions.show +import com.casic.qd.smartwell.extensions.toErrorMessage +import com.casic.qd.smartwell.model.CommonResultModel +import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken + +class LoginOutViewModel : BaseViewModel() { + + private val gson = Gson() + val resultModel = MutableLiveData() + + fun loginOut() = launch({ + val response = RetrofitServiceManager.loginOut() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + resultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show() + } + }, { + "服务器异常".show() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_login_out.xml b/app/src/main/res/drawable/ic_login_out.xml new file mode 100644 index 0000000..208a666 --- /dev/null +++ b/app/src/main/res/drawable/ic_login_out.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index cd54b39..6061377 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -24,9 +24,6 @@ * @email 290677893@qq.com */ object ChartViewHelper { - private const val kTag = "ChartViewHelper" - private val decimalFormat = DecimalFormat("##0.0") - /** * 折线图 * */ @@ -95,7 +92,7 @@ dataSet.color = R.color.color_1.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -121,7 +118,7 @@ dataSet.color = R.color.color_6.convertColor() dataSet.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + return DecimalFormat("##0").format(value.toDouble()) } } barDataSets.add(dataSet) @@ -156,7 +153,7 @@ val data = PieData(dataSet) data.setValueFormatter(object : ValueFormatter() { override fun getFormattedValue(value: Float): String { - return decimalFormat.format(value.toDouble()) + "t" + return DecimalFormat("##0.0").format(value.toDouble()) + "t" } }) data.setValueTextSize(12f) diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 08182f9..019d741 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -31,6 +31,12 @@ ): String /** + * 退出登录 + */ + @GET("/user/logout") + suspend fun loginOut(@Header("token") token: String): String + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index ed4d5b1..3985af9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -24,6 +24,13 @@ } /** + * 退出登录 + */ + suspend fun loginOut(): String { + return api.loginOut(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index ae9df20..3f497c9 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -17,10 +17,14 @@ import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.utils.PageNavigationManager +import com.casic.qd.smartwell.vm.LoginOutViewModel import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.github.mikephil.charting.data.Entry +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder @@ -34,6 +38,7 @@ private val context: Context = this@MainActivity private var clickTime: Long = 0 + private lateinit var loginOutViewModel: LoginOutViewModel private lateinit var waterViewModel: WaterStatisticsViewModel private val xAxisDate: MutableList = ArrayList() private val entryModels: MutableList = ArrayList() @@ -106,11 +111,39 @@ }) //初始化vm + loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(this) } override fun initEvent() { + leftOptionView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("退出登录") + .setMessage("确定要退出吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + loginOutViewModel.loginOut() + } + + override fun onCancelClick() {} + }).build().show() + } + loginOutViewModel.resultModel.observe(this, { + if (it.code == 200) { + AuthenticationHelper.removeToken() + this.navigatePageTo(LoginActivity::class.java) + PageNavigationManager.finishAllActivity() + } + }) + rightOptionView.setOnClickListener { + navigatePageTo(AlarmManagementActivity::class.java) + } + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") @@ -118,10 +151,6 @@ todayWaterView.text = String.format("${it["today"]}t") }) - rightOptionView.setOnClickListener { - navigatePageTo(AlarmManagementActivity::class.java) - } - //初始化折线图,X轴从0开始 val time = System.currentTimeMillis() val startDate = time.timestampToLastWeekDate() diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt new file mode 100644 index 0000000..06d797a --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginOutViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.qd.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.qd.smartwell.base.BaseViewModel +import com.casic.qd.smartwell.extensions.launch +import com.casic.qd.smartwell.extensions.separateResponseCode +import com.casic.qd.smartwell.extensions.show +import com.casic.qd.smartwell.extensions.toErrorMessage +import com.casic.qd.smartwell.model.CommonResultModel +import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken + +class LoginOutViewModel : BaseViewModel() { + + private val gson = Gson() + val resultModel = MutableLiveData() + + fun loginOut() = launch({ + val response = RetrofitServiceManager.loginOut() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + resultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show() + } + }, { + "服务器异常".show() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_login_out.xml b/app/src/main/res/drawable/ic_login_out.xml new file mode 100644 index 0000000..208a666 --- /dev/null +++ b/app/src/main/res/drawable/ic_login_out.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index f29886d..a2f2065 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -10,6 +10,13 @@ android:layout_height="@dimen/titleViewHeight" android:background="@color/mainThemeColor"> + +