diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index c2d1cd8..87950d6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,6 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color +import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -23,6 +24,7 @@ import com.casic.xz.meterage.view.notice.NoticeListActivity import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel +import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -40,10 +42,13 @@ class MinePageFragment : KotlinBaseFragment() { + private val kTag = "MinePageFragment" private lateinit var userViewModel: UserViewModel private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var pushConfigViewModel: PushConfigViewModel + private val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String override fun initData() { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -120,14 +125,25 @@ } } - pushSettingSwitch.isChecked = - SaveKeyValues.getValue(LocaleConstant.PUSH_SETTING, true) as Boolean + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + pushConfigViewModel.stateResult.observe(this) { + if (it.code == 200) { + pushSettingSwitch.isChecked = it.data.enable == "1" + } + } + + pushConfigViewModel.changeStateResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "initData => 推送开关修改成功") + } + } } override fun onResume() { super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) noticeViewModel.getNoticeList("", "", "", "", "", 1) + pushConfigViewModel.getPushSwitchState() } override fun initEvent() { @@ -184,13 +200,13 @@ requireContext().navigatePageTo() } - //TODO 通过接口修改数据库字段实现 pushSettingSwitch.setOnCheckedChangeListener { _, isChecked -> - SaveKeyValues.putValue(LocaleConstant.PUSH_SETTING, isChecked) if (isChecked) { //打开通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "1") } else { //关闭通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "0") } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index c2d1cd8..87950d6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,6 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color +import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -23,6 +24,7 @@ import com.casic.xz.meterage.view.notice.NoticeListActivity import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel +import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -40,10 +42,13 @@ class MinePageFragment : KotlinBaseFragment() { + private val kTag = "MinePageFragment" private lateinit var userViewModel: UserViewModel private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var pushConfigViewModel: PushConfigViewModel + private val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String override fun initData() { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -120,14 +125,25 @@ } } - pushSettingSwitch.isChecked = - SaveKeyValues.getValue(LocaleConstant.PUSH_SETTING, true) as Boolean + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + pushConfigViewModel.stateResult.observe(this) { + if (it.code == 200) { + pushSettingSwitch.isChecked = it.data.enable == "1" + } + } + + pushConfigViewModel.changeStateResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "initData => 推送开关修改成功") + } + } } override fun onResume() { super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) noticeViewModel.getNoticeList("", "", "", "", "", 1) + pushConfigViewModel.getPushSwitchState() } override fun initEvent() { @@ -184,13 +200,13 @@ requireContext().navigatePageTo() } - //TODO 通过接口修改数据库字段实现 pushSettingSwitch.setOnCheckedChangeListener { _, isChecked -> - SaveKeyValues.putValue(LocaleConstant.PUSH_SETTING, isChecked) if (isChecked) { //打开通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "1") } else { //关闭通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "0") } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java new file mode 100644 index 0000000..e963a3b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java @@ -0,0 +1,107 @@ +package com.casic.xz.meterage.model; + +public class PushStateModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String clientId; + private String createTime; + private String enable; + private String id; + private String tag; + private String type; + private String updateTime; + private String userId; + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEnable() { + return enable; + } + + public void setEnable(String enable) { + this.enable = enable; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index c2d1cd8..87950d6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,6 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color +import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -23,6 +24,7 @@ import com.casic.xz.meterage.view.notice.NoticeListActivity import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel +import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -40,10 +42,13 @@ class MinePageFragment : KotlinBaseFragment() { + private val kTag = "MinePageFragment" private lateinit var userViewModel: UserViewModel private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var pushConfigViewModel: PushConfigViewModel + private val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String override fun initData() { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -120,14 +125,25 @@ } } - pushSettingSwitch.isChecked = - SaveKeyValues.getValue(LocaleConstant.PUSH_SETTING, true) as Boolean + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + pushConfigViewModel.stateResult.observe(this) { + if (it.code == 200) { + pushSettingSwitch.isChecked = it.data.enable == "1" + } + } + + pushConfigViewModel.changeStateResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "initData => 推送开关修改成功") + } + } } override fun onResume() { super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) noticeViewModel.getNoticeList("", "", "", "", "", 1) + pushConfigViewModel.getPushSwitchState() } override fun initEvent() { @@ -184,13 +200,13 @@ requireContext().navigatePageTo() } - //TODO 通过接口修改数据库字段实现 pushSettingSwitch.setOnCheckedChangeListener { _, isChecked -> - SaveKeyValues.putValue(LocaleConstant.PUSH_SETTING, isChecked) if (isChecked) { //打开通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "1") } else { //关闭通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "0") } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java new file mode 100644 index 0000000..e963a3b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java @@ -0,0 +1,107 @@ +package com.casic.xz.meterage.model; + +public class PushStateModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String clientId; + private String createTime; + private String enable; + private String id; + private String tag; + private String type; + private String updateTime; + private String userId; + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEnable() { + return enable; + } + + public void setEnable(String enable) { + this.enable = enable; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt index aeaa36a..3d233f6 100644 --- a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt +++ b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt @@ -1,21 +1,18 @@ package com.casic.xz.meterage.service import android.content.Context -import android.os.Message import android.util.Log import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.view.MainActivity -import com.google.gson.Gson import com.igexin.sdk.GTIntentService import com.igexin.sdk.message.GTCmdMessage import com.igexin.sdk.message.GTNotificationMessage import com.igexin.sdk.message.GTTransmitMessage import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues class MeterageIntentService : GTIntentService() { private val kTag = "MeterageIntentService" - private val gson by lazy { Gson() } override fun onReceiveServicePid(context: Context?, pid: Int) { @@ -29,13 +26,7 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { Log.d(kTag, "onReceiveClientId -> $clientid") - if (!clientid.isNullOrBlank()) { - //注册个推服务 - val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.PUSH_REGISTER - msg.obj = clientid - MainActivity.weakReferenceHandler.sendMessage(msg) - } + SaveKeyValues.putValue(LocaleConstant.PUSH_ID, clientid.toString()) } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index c2d1cd8..87950d6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,6 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color +import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -23,6 +24,7 @@ import com.casic.xz.meterage.view.notice.NoticeListActivity import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel +import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -40,10 +42,13 @@ class MinePageFragment : KotlinBaseFragment() { + private val kTag = "MinePageFragment" private lateinit var userViewModel: UserViewModel private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var pushConfigViewModel: PushConfigViewModel + private val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String override fun initData() { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -120,14 +125,25 @@ } } - pushSettingSwitch.isChecked = - SaveKeyValues.getValue(LocaleConstant.PUSH_SETTING, true) as Boolean + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + pushConfigViewModel.stateResult.observe(this) { + if (it.code == 200) { + pushSettingSwitch.isChecked = it.data.enable == "1" + } + } + + pushConfigViewModel.changeStateResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "initData => 推送开关修改成功") + } + } } override fun onResume() { super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) noticeViewModel.getNoticeList("", "", "", "", "", 1) + pushConfigViewModel.getPushSwitchState() } override fun initEvent() { @@ -184,13 +200,13 @@ requireContext().navigatePageTo() } - //TODO 通过接口修改数据库字段实现 pushSettingSwitch.setOnCheckedChangeListener { _, isChecked -> - SaveKeyValues.putValue(LocaleConstant.PUSH_SETTING, isChecked) if (isChecked) { //打开通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "1") } else { //关闭通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "0") } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java new file mode 100644 index 0000000..e963a3b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java @@ -0,0 +1,107 @@ +package com.casic.xz.meterage.model; + +public class PushStateModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String clientId; + private String createTime; + private String enable; + private String id; + private String tag; + private String type; + private String updateTime; + private String userId; + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEnable() { + return enable; + } + + public void setEnable(String enable) { + this.enable = enable; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt index aeaa36a..3d233f6 100644 --- a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt +++ b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt @@ -1,21 +1,18 @@ package com.casic.xz.meterage.service import android.content.Context -import android.os.Message import android.util.Log import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.view.MainActivity -import com.google.gson.Gson import com.igexin.sdk.GTIntentService import com.igexin.sdk.message.GTCmdMessage import com.igexin.sdk.message.GTNotificationMessage import com.igexin.sdk.message.GTTransmitMessage import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues class MeterageIntentService : GTIntentService() { private val kTag = "MeterageIntentService" - private val gson by lazy { Gson() } override fun onReceiveServicePid(context: Context?, pid: Int) { @@ -29,13 +26,7 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { Log.d(kTag, "onReceiveClientId -> $clientid") - if (!clientid.isNullOrBlank()) { - //注册个推服务 - val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.PUSH_REGISTER - msg.obj = clientid - MainActivity.weakReferenceHandler.sendMessage(msg) - } + SaveKeyValues.putValue(LocaleConstant.PUSH_ID, clientid.toString()) } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 053258d..c3432e1 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -51,7 +51,6 @@ const val PAGE_LIMIT = 20 const val DETECTION_COUNT = 2023000001 const val TASK_COUNT = 2023000002 - const val PUSH_REGISTER = 2023050501 /** * ============================================================================================= @@ -73,7 +72,7 @@ const val PASSWORD = "password" const val USER_ID = "userId" const val PRIVACY_CHECK_BOX = "privacyCheckBox" - const val PUSH_SETTING = "pushSetting" + const val PUSH_ID = "gtClientId" const val APP_AUTHORITY = "com.casic.xz.meterage.fileprovider" const val METERAGE_TRAIN_FORM_ID = "jlglpxjhsp" const val STANDARD_FILE_FORM_ID = "jlglwjsp" diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index c2d1cd8..87950d6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,6 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color +import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -23,6 +24,7 @@ import com.casic.xz.meterage.view.notice.NoticeListActivity import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel +import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -40,10 +42,13 @@ class MinePageFragment : KotlinBaseFragment() { + private val kTag = "MinePageFragment" private lateinit var userViewModel: UserViewModel private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var pushConfigViewModel: PushConfigViewModel + private val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String override fun initData() { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -120,14 +125,25 @@ } } - pushSettingSwitch.isChecked = - SaveKeyValues.getValue(LocaleConstant.PUSH_SETTING, true) as Boolean + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + pushConfigViewModel.stateResult.observe(this) { + if (it.code == 200) { + pushSettingSwitch.isChecked = it.data.enable == "1" + } + } + + pushConfigViewModel.changeStateResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "initData => 推送开关修改成功") + } + } } override fun onResume() { super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) noticeViewModel.getNoticeList("", "", "", "", "", 1) + pushConfigViewModel.getPushSwitchState() } override fun initEvent() { @@ -184,13 +200,13 @@ requireContext().navigatePageTo() } - //TODO 通过接口修改数据库字段实现 pushSettingSwitch.setOnCheckedChangeListener { _, isChecked -> - SaveKeyValues.putValue(LocaleConstant.PUSH_SETTING, isChecked) if (isChecked) { //打开通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "1") } else { //关闭通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "0") } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java new file mode 100644 index 0000000..e963a3b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java @@ -0,0 +1,107 @@ +package com.casic.xz.meterage.model; + +public class PushStateModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String clientId; + private String createTime; + private String enable; + private String id; + private String tag; + private String type; + private String updateTime; + private String userId; + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEnable() { + return enable; + } + + public void setEnable(String enable) { + this.enable = enable; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt index aeaa36a..3d233f6 100644 --- a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt +++ b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt @@ -1,21 +1,18 @@ package com.casic.xz.meterage.service import android.content.Context -import android.os.Message import android.util.Log import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.view.MainActivity -import com.google.gson.Gson import com.igexin.sdk.GTIntentService import com.igexin.sdk.message.GTCmdMessage import com.igexin.sdk.message.GTNotificationMessage import com.igexin.sdk.message.GTTransmitMessage import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues class MeterageIntentService : GTIntentService() { private val kTag = "MeterageIntentService" - private val gson by lazy { Gson() } override fun onReceiveServicePid(context: Context?, pid: Int) { @@ -29,13 +26,7 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { Log.d(kTag, "onReceiveClientId -> $clientid") - if (!clientid.isNullOrBlank()) { - //注册个推服务 - val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.PUSH_REGISTER - msg.obj = clientid - MainActivity.weakReferenceHandler.sendMessage(msg) - } + SaveKeyValues.putValue(LocaleConstant.PUSH_ID, clientid.toString()) } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 053258d..c3432e1 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -51,7 +51,6 @@ const val PAGE_LIMIT = 20 const val DETECTION_COUNT = 2023000001 const val TASK_COUNT = 2023000002 - const val PUSH_REGISTER = 2023050501 /** * ============================================================================================= @@ -73,7 +72,7 @@ const val PASSWORD = "password" const val USER_ID = "userId" const val PRIVACY_CHECK_BOX = "privacyCheckBox" - const val PUSH_SETTING = "pushSetting" + const val PUSH_ID = "gtClientId" const val APP_AUTHORITY = "com.casic.xz.meterage.fileprovider" const val METERAGE_TRAIN_FORM_ID = "jlglpxjhsp" const val STANDARD_FILE_FORM_ID = "jlglwjsp" diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index f0d238d..9f0fc21 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -51,6 +51,30 @@ ): String /** + * 推送注册 + */ + @POST("/push/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 查询推送开关状态 + */ + @POST("/push/app/detail") + suspend fun getPushSwitchState(@Header("token") token: String): String + + /** + * 修改推送开关状态 + */ + @POST("/push/app/enable") + suspend fun changePushSwitchState( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 退出登录 */ @GET("/sys/user/logout") diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index c2d1cd8..87950d6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,6 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color +import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -23,6 +24,7 @@ import com.casic.xz.meterage.view.notice.NoticeListActivity import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel +import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -40,10 +42,13 @@ class MinePageFragment : KotlinBaseFragment() { + private val kTag = "MinePageFragment" private lateinit var userViewModel: UserViewModel private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var pushConfigViewModel: PushConfigViewModel + private val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String override fun initData() { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -120,14 +125,25 @@ } } - pushSettingSwitch.isChecked = - SaveKeyValues.getValue(LocaleConstant.PUSH_SETTING, true) as Boolean + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + pushConfigViewModel.stateResult.observe(this) { + if (it.code == 200) { + pushSettingSwitch.isChecked = it.data.enable == "1" + } + } + + pushConfigViewModel.changeStateResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "initData => 推送开关修改成功") + } + } } override fun onResume() { super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) noticeViewModel.getNoticeList("", "", "", "", "", 1) + pushConfigViewModel.getPushSwitchState() } override fun initEvent() { @@ -184,13 +200,13 @@ requireContext().navigatePageTo() } - //TODO 通过接口修改数据库字段实现 pushSettingSwitch.setOnCheckedChangeListener { _, isChecked -> - SaveKeyValues.putValue(LocaleConstant.PUSH_SETTING, isChecked) if (isChecked) { //打开通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "1") } else { //关闭通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "0") } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java new file mode 100644 index 0000000..e963a3b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java @@ -0,0 +1,107 @@ +package com.casic.xz.meterage.model; + +public class PushStateModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String clientId; + private String createTime; + private String enable; + private String id; + private String tag; + private String type; + private String updateTime; + private String userId; + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEnable() { + return enable; + } + + public void setEnable(String enable) { + this.enable = enable; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt index aeaa36a..3d233f6 100644 --- a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt +++ b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt @@ -1,21 +1,18 @@ package com.casic.xz.meterage.service import android.content.Context -import android.os.Message import android.util.Log import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.view.MainActivity -import com.google.gson.Gson import com.igexin.sdk.GTIntentService import com.igexin.sdk.message.GTCmdMessage import com.igexin.sdk.message.GTNotificationMessage import com.igexin.sdk.message.GTTransmitMessage import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues class MeterageIntentService : GTIntentService() { private val kTag = "MeterageIntentService" - private val gson by lazy { Gson() } override fun onReceiveServicePid(context: Context?, pid: Int) { @@ -29,13 +26,7 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { Log.d(kTag, "onReceiveClientId -> $clientid") - if (!clientid.isNullOrBlank()) { - //注册个推服务 - val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.PUSH_REGISTER - msg.obj = clientid - MainActivity.weakReferenceHandler.sendMessage(msg) - } + SaveKeyValues.putValue(LocaleConstant.PUSH_ID, clientid.toString()) } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 053258d..c3432e1 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -51,7 +51,6 @@ const val PAGE_LIMIT = 20 const val DETECTION_COUNT = 2023000001 const val TASK_COUNT = 2023000002 - const val PUSH_REGISTER = 2023050501 /** * ============================================================================================= @@ -73,7 +72,7 @@ const val PASSWORD = "password" const val USER_ID = "userId" const val PRIVACY_CHECK_BOX = "privacyCheckBox" - const val PUSH_SETTING = "pushSetting" + const val PUSH_ID = "gtClientId" const val APP_AUTHORITY = "com.casic.xz.meterage.fileprovider" const val METERAGE_TRAIN_FORM_ID = "jlglpxjhsp" const val STANDARD_FILE_FORM_ID = "jlglwjsp" diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index f0d238d..9f0fc21 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -51,6 +51,30 @@ ): String /** + * 推送注册 + */ + @POST("/push/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 查询推送开关状态 + */ + @POST("/push/app/detail") + suspend fun getPushSwitchState(@Header("token") token: String): String + + /** + * 修改推送开关状态 + */ + @POST("/push/app/enable") + suspend fun changePushSwitchState( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 退出登录 */ @GET("/sys/user/logout") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index f8dd376..cfb360a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -110,11 +110,36 @@ } /** - * TODO 个推推送cid注册 + * 推送注册 */ suspend fun registerPush(clientId: String): String { -// return api.registerPush(AuthenticationHelper.token!!, clientId) - return "" + val param = JsonObject() + param.addProperty("clientId", clientId) + param.addProperty("enable", 1) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.registerPush(AuthenticationHelper.token!!, requestBody) + } + + /** + * 查询推送开关 + */ + suspend fun getPushSwitchState(): String { + return api.getPushSwitchState(AuthenticationHelper.token!!) + } + + /** + * 修改推送开关状态 + */ + suspend fun changePushSwitchState(clientId: String, enable: String): String { + val param = JsonObject() + param.addProperty("clientId", clientId) + param.addProperty("enable", enable) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.changePushSwitchState(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index c2d1cd8..87950d6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,6 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color +import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -23,6 +24,7 @@ import com.casic.xz.meterage.view.notice.NoticeListActivity import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel +import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -40,10 +42,13 @@ class MinePageFragment : KotlinBaseFragment() { + private val kTag = "MinePageFragment" private lateinit var userViewModel: UserViewModel private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var pushConfigViewModel: PushConfigViewModel + private val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String override fun initData() { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -120,14 +125,25 @@ } } - pushSettingSwitch.isChecked = - SaveKeyValues.getValue(LocaleConstant.PUSH_SETTING, true) as Boolean + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + pushConfigViewModel.stateResult.observe(this) { + if (it.code == 200) { + pushSettingSwitch.isChecked = it.data.enable == "1" + } + } + + pushConfigViewModel.changeStateResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "initData => 推送开关修改成功") + } + } } override fun onResume() { super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) noticeViewModel.getNoticeList("", "", "", "", "", 1) + pushConfigViewModel.getPushSwitchState() } override fun initEvent() { @@ -184,13 +200,13 @@ requireContext().navigatePageTo() } - //TODO 通过接口修改数据库字段实现 pushSettingSwitch.setOnCheckedChangeListener { _, isChecked -> - SaveKeyValues.putValue(LocaleConstant.PUSH_SETTING, isChecked) if (isChecked) { //打开通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "1") } else { //关闭通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "0") } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java new file mode 100644 index 0000000..e963a3b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java @@ -0,0 +1,107 @@ +package com.casic.xz.meterage.model; + +public class PushStateModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String clientId; + private String createTime; + private String enable; + private String id; + private String tag; + private String type; + private String updateTime; + private String userId; + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEnable() { + return enable; + } + + public void setEnable(String enable) { + this.enable = enable; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt index aeaa36a..3d233f6 100644 --- a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt +++ b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt @@ -1,21 +1,18 @@ package com.casic.xz.meterage.service import android.content.Context -import android.os.Message import android.util.Log import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.view.MainActivity -import com.google.gson.Gson import com.igexin.sdk.GTIntentService import com.igexin.sdk.message.GTCmdMessage import com.igexin.sdk.message.GTNotificationMessage import com.igexin.sdk.message.GTTransmitMessage import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues class MeterageIntentService : GTIntentService() { private val kTag = "MeterageIntentService" - private val gson by lazy { Gson() } override fun onReceiveServicePid(context: Context?, pid: Int) { @@ -29,13 +26,7 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { Log.d(kTag, "onReceiveClientId -> $clientid") - if (!clientid.isNullOrBlank()) { - //注册个推服务 - val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.PUSH_REGISTER - msg.obj = clientid - MainActivity.weakReferenceHandler.sendMessage(msg) - } + SaveKeyValues.putValue(LocaleConstant.PUSH_ID, clientid.toString()) } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 053258d..c3432e1 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -51,7 +51,6 @@ const val PAGE_LIMIT = 20 const val DETECTION_COUNT = 2023000001 const val TASK_COUNT = 2023000002 - const val PUSH_REGISTER = 2023050501 /** * ============================================================================================= @@ -73,7 +72,7 @@ const val PASSWORD = "password" const val USER_ID = "userId" const val PRIVACY_CHECK_BOX = "privacyCheckBox" - const val PUSH_SETTING = "pushSetting" + const val PUSH_ID = "gtClientId" const val APP_AUTHORITY = "com.casic.xz.meterage.fileprovider" const val METERAGE_TRAIN_FORM_ID = "jlglpxjhsp" const val STANDARD_FILE_FORM_ID = "jlglwjsp" diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index f0d238d..9f0fc21 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -51,6 +51,30 @@ ): String /** + * 推送注册 + */ + @POST("/push/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 查询推送开关状态 + */ + @POST("/push/app/detail") + suspend fun getPushSwitchState(@Header("token") token: String): String + + /** + * 修改推送开关状态 + */ + @POST("/push/app/enable") + suspend fun changePushSwitchState( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 退出登录 */ @GET("/sys/user/logout") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index f8dd376..cfb360a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -110,11 +110,36 @@ } /** - * TODO 个推推送cid注册 + * 推送注册 */ suspend fun registerPush(clientId: String): String { -// return api.registerPush(AuthenticationHelper.token!!, clientId) - return "" + val param = JsonObject() + param.addProperty("clientId", clientId) + param.addProperty("enable", 1) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.registerPush(AuthenticationHelper.token!!, requestBody) + } + + /** + * 查询推送开关 + */ + suspend fun getPushSwitchState(): String { + return api.getPushSwitchState(AuthenticationHelper.token!!) + } + + /** + * 修改推送开关状态 + */ + suspend fun changePushSwitchState(clientId: String, enable: String): String { + val param = JsonObject() + param.addProperty("clientId", clientId) + param.addProperty("enable", enable) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.changePushSwitchState(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index 7cbf774..5dff123 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -1,6 +1,5 @@ package com.casic.xz.meterage.view -import android.os.Handler import android.util.Log import android.view.KeyEvent import android.view.MenuItem @@ -23,15 +22,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : ApplicationBaseActivity() { - companion object { - lateinit var weakReferenceHandler: WeakReferenceHandler - } - private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -39,7 +33,14 @@ private lateinit var pushConfigViewModel: PushConfigViewModel override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String + pushConfigViewModel.registerPush(clientId) + pushConfigViewModel.registerResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + } val configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] configViewModel.getPrefixCode() @@ -112,20 +113,6 @@ } } } - - pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] - pushConfigViewModel.registerResult.observe(this) { - if (it.code == 200) { - Log.d(kTag, "推送注册结果: ${it.toJson()}") - } - } - } - - private val callback = Handler.Callback { - when (it.what) { - LocaleConstant.PUSH_REGISTER -> pushConfigViewModel.registerPush(it.obj as String) - } - true } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index c2d1cd8..87950d6 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,6 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color +import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -23,6 +24,7 @@ import com.casic.xz.meterage.view.notice.NoticeListActivity import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel +import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType @@ -40,10 +42,13 @@ class MinePageFragment : KotlinBaseFragment() { + private val kTag = "MinePageFragment" private lateinit var userViewModel: UserViewModel private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var pushConfigViewModel: PushConfigViewModel + private val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String override fun initData() { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -120,14 +125,25 @@ } } - pushSettingSwitch.isChecked = - SaveKeyValues.getValue(LocaleConstant.PUSH_SETTING, true) as Boolean + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + pushConfigViewModel.stateResult.observe(this) { + if (it.code == 200) { + pushSettingSwitch.isChecked = it.data.enable == "1" + } + } + + pushConfigViewModel.changeStateResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "initData => 推送开关修改成功") + } + } } override fun onResume() { super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) noticeViewModel.getNoticeList("", "", "", "", "", 1) + pushConfigViewModel.getPushSwitchState() } override fun initEvent() { @@ -184,13 +200,13 @@ requireContext().navigatePageTo() } - //TODO 通过接口修改数据库字段实现 pushSettingSwitch.setOnCheckedChangeListener { _, isChecked -> - SaveKeyValues.putValue(LocaleConstant.PUSH_SETTING, isChecked) if (isChecked) { //打开通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "1") } else { //关闭通知开关 + pushConfigViewModel.changePushSwitchState(clientId, "0") } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java new file mode 100644 index 0000000..e963a3b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/PushStateModel.java @@ -0,0 +1,107 @@ +package com.casic.xz.meterage.model; + +public class PushStateModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String clientId; + private String createTime; + private String enable; + private String id; + private String tag; + private String type; + private String updateTime; + private String userId; + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEnable() { + return enable; + } + + public void setEnable(String enable) { + this.enable = enable; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt index aeaa36a..3d233f6 100644 --- a/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt +++ b/app/src/main/java/com/casic/xz/meterage/service/MeterageIntentService.kt @@ -1,21 +1,18 @@ package com.casic.xz.meterage.service import android.content.Context -import android.os.Message import android.util.Log import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.view.MainActivity -import com.google.gson.Gson import com.igexin.sdk.GTIntentService import com.igexin.sdk.message.GTCmdMessage import com.igexin.sdk.message.GTNotificationMessage import com.igexin.sdk.message.GTTransmitMessage import com.pengxh.kt.lite.extensions.toJson +import com.pengxh.kt.lite.utils.SaveKeyValues class MeterageIntentService : GTIntentService() { private val kTag = "MeterageIntentService" - private val gson by lazy { Gson() } override fun onReceiveServicePid(context: Context?, pid: Int) { @@ -29,13 +26,7 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { Log.d(kTag, "onReceiveClientId -> $clientid") - if (!clientid.isNullOrBlank()) { - //注册个推服务 - val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.PUSH_REGISTER - msg.obj = clientid - MainActivity.weakReferenceHandler.sendMessage(msg) - } + SaveKeyValues.putValue(LocaleConstant.PUSH_ID, clientid.toString()) } // cid 离线上线通知 diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 053258d..c3432e1 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -51,7 +51,6 @@ const val PAGE_LIMIT = 20 const val DETECTION_COUNT = 2023000001 const val TASK_COUNT = 2023000002 - const val PUSH_REGISTER = 2023050501 /** * ============================================================================================= @@ -73,7 +72,7 @@ const val PASSWORD = "password" const val USER_ID = "userId" const val PRIVACY_CHECK_BOX = "privacyCheckBox" - const val PUSH_SETTING = "pushSetting" + const val PUSH_ID = "gtClientId" const val APP_AUTHORITY = "com.casic.xz.meterage.fileprovider" const val METERAGE_TRAIN_FORM_ID = "jlglpxjhsp" const val STANDARD_FILE_FORM_ID = "jlglwjsp" diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index f0d238d..9f0fc21 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -51,6 +51,30 @@ ): String /** + * 推送注册 + */ + @POST("/push/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 查询推送开关状态 + */ + @POST("/push/app/detail") + suspend fun getPushSwitchState(@Header("token") token: String): String + + /** + * 修改推送开关状态 + */ + @POST("/push/app/enable") + suspend fun changePushSwitchState( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** * 退出登录 */ @GET("/sys/user/logout") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index f8dd376..cfb360a 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -110,11 +110,36 @@ } /** - * TODO 个推推送cid注册 + * 推送注册 */ suspend fun registerPush(clientId: String): String { -// return api.registerPush(AuthenticationHelper.token!!, clientId) - return "" + val param = JsonObject() + param.addProperty("clientId", clientId) + param.addProperty("enable", 1) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.registerPush(AuthenticationHelper.token!!, requestBody) + } + + /** + * 查询推送开关 + */ + suspend fun getPushSwitchState(): String { + return api.getPushSwitchState(AuthenticationHelper.token!!) + } + + /** + * 修改推送开关状态 + */ + suspend fun changePushSwitchState(clientId: String, enable: String): String { + val param = JsonObject() + param.addProperty("clientId", clientId) + param.addProperty("enable", enable) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.changePushSwitchState(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index 7cbf774..5dff123 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -1,6 +1,5 @@ package com.casic.xz.meterage.view -import android.os.Handler import android.util.Log import android.view.KeyEvent import android.view.MenuItem @@ -23,15 +22,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : ApplicationBaseActivity() { - companion object { - lateinit var weakReferenceHandler: WeakReferenceHandler - } - private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -39,7 +33,14 @@ private lateinit var pushConfigViewModel: PushConfigViewModel override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] + val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String + pushConfigViewModel.registerPush(clientId) + pushConfigViewModel.registerResult.observe(this) { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + } val configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] configViewModel.getPrefixCode() @@ -112,20 +113,6 @@ } } } - - pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] - pushConfigViewModel.registerResult.observe(this) { - if (it.code == 200) { - Log.d(kTag, "推送注册结果: ${it.toJson()}") - } - } - } - - private val callback = Handler.Callback { - when (it.what) { - LocaleConstant.PUSH_REGISTER -> pushConfigViewModel.registerPush(it.obj as String) - } - true } override fun initEvent() { diff --git a/app/src/main/java/com/casic/xz/meterage/vm/PushConfigViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/PushConfigViewModel.kt index 69a70b7..181c83c 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/PushConfigViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/PushConfigViewModel.kt @@ -5,6 +5,7 @@ import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage import com.casic.xz.meterage.model.ActionResultModel +import com.casic.xz.meterage.model.PushStateModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -21,6 +22,8 @@ private val gson by lazy { Gson() } val registerResult = MutableLiveData() + val stateResult = MutableLiveData() + val changeStateResult = MutableLiveData() fun registerPush(clientId: String) = launch({ loadState.value = LoadState.Loading @@ -40,4 +43,42 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getPushSwitchState() = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getPushSwitchState() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + stateResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun changePushSwitchState(clientId: String, enable: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.changePushSwitchState(clientId, enable) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + changeStateResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file