From dbd6eccb2eedcc4d198436a4d7b9068478919c2d Mon Sep 17 00:00:00 2001 From: wlh <646507849@qq.com> Date: Thu, 14 Dec 2023 16:52:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AD=E5=BB=BA365-=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 6 ++ app/src/main/AndroidManifest.xml | 8 +++ .../com/zj365/dc/activity/MainActivity.kt | 9 +-- .../zj365/dc/activity/MessageDetailNewAct.kt | 22 +++++++ .../zj365/dc/adapter/HomeMessageAdapter.kt | 46 ++++++++++++-- .../com/zj365/dc/fragment/MessageFragment.kt | 36 ++++++++++- .../java/com/zj365/dc/fragment/MineFrag.kt | 10 +-- .../main/java/com/zj365/dc/vm/MessageVm.kt | 16 +++++ app/src/main/res/layout/frag_message.xml | 5 +- app/src/main/res/layout/item_home_message.xml | 57 ++++++++++++++---- .../res/mipmap-xxhdpi/icon_msg_assistant.png | Bin 0 -> 8994 bytes .../res/mipmap-xxhdpi/icon_msg_welfare.png | Bin 0 -> 8477 bytes .../java/com/xty/common/arouter/ARouterUrl.kt | 1 + .../com/xty/common/event/MessageReadEvent.kt | 4 ++ .../java/com/zj365/mime/act/MessageAct.kt | 8 +-- .../com/zj365/mime/act/MessageDetailAct.kt | 2 +- .../com/zj365/mime/act/MessageTypeListAct.kt | 49 ++++++++------- .../com/zj365/mime/adapter/MessageAdapter.kt | 3 +- .../main/java/com/zj365/mime/vm/MessageVm.kt | 15 ++--- .../main/res/mipmap-xhdpi/ic_round_choice.png | Bin 884 -> 714 bytes .../main/java/com/xty/network/ApiInterface.kt | 20 +++++- .../xty/network/model/MessageTypeDataBean.kt | 34 +++++++++++ .../com/xty/network/model/SystemMsgBean.kt | 4 +- 23 files changed, 286 insertions(+), 69 deletions(-) create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_msg_assistant.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_msg_welfare.png create mode 100644 common/src/main/java/com/xty/common/event/MessageReadEvent.kt create mode 100644 network/src/main/java/com/xty/network/model/MessageTypeDataBean.kt diff --git a/app/build.gradle b/app/build.gradle index 95e54ef..661e259 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,9 +32,15 @@ android { //暂时填写默认值即可. JPUSH_CHANNEL : "developer-default", + OPPO_APPKEY : "OP-", // OPPO平台注册的appkey + OPPO_APPID : "OP-", // OPPO平台注册的appid + OPPO_APPSECRET: "OP-",//OPPO平台注册的appsecret + XIAOMI_APPKEY : "MI-5992028541716",// 小米平台注册的appkey XIAOMI_APPID : "MI-2882303761520285716", // 小米平台注册的appid + VIVO_APPKEY:"", + VIVO_APPID:"", HONOR_APPID:"109849297" ] // 配置 APK 输出路径 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f42e35..2e1925b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -165,6 +165,14 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> + + + + (), Consumer { } private fun initUnreadCountReceiver() { - /* unreadCountReceiver = object : BroadcastReceiver() { + unreadCountReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val unreadCount = intent.getLongExtra(TUIConstants.UNREAD_COUNT_EXTRA, 0) // if (unreadCount > 0) { @@ -91,7 +92,7 @@ class MainActivity : BaseVmAct(), Consumer { val unreadCountFilter = IntentFilter() unreadCountFilter.addAction(TUIConstants.CONVERSATION_UNREAD_COUNT_ACTION) LocalBroadcastManager.getInstance(this) - .registerReceiver(unreadCountReceiver as BroadcastReceiver, unreadCountFilter)*/ + .registerReceiver(unreadCountReceiver as BroadcastReceiver, unreadCountFilter) } private val listFragment by lazy { @@ -128,7 +129,7 @@ class MainActivity : BaseVmAct(), Consumer { Log.e("yansu", "请求 ${MMkvHelper.getString(Const.USER_ID)}") mViewModel.getImUserSig("user_" + MMkvHelper.getLong(Const.USER_ID)) }*/ -// initUnreadCountReceiver() + initUnreadCountReceiver() JPushInterface.setBadgeNumber(this, 0) // //前台空服务 // val service = RouteManager.getAny(ARouterUrl.NONE_SERVICE) as Service @@ -374,7 +375,7 @@ class MainActivity : BaseVmAct(), Consumer { private fun addNv() { val menuView = binding.mBottom.getChildAt(0) as BottomNavigationMenuView //这里就是获取所添加的每一个Tab(或者叫menu), - val tab = menuView.getChildAt(3) as BottomNavigationItemView + val tab = menuView.getChildAt(2) as BottomNavigationItemView //加载我们的角标View,新创建的一个布局 badegView = LayoutInflater.from(this).inflate(R.layout.item_msg_count, tab, true) diff --git a/app/src/main/java/com/zj365/dc/activity/MessageDetailNewAct.kt b/app/src/main/java/com/zj365/dc/activity/MessageDetailNewAct.kt index 503ddb5..6b82632 100644 --- a/app/src/main/java/com/zj365/dc/activity/MessageDetailNewAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/MessageDetailNewAct.kt @@ -4,13 +4,18 @@ import android.view.View import com.alibaba.android.arouter.facade.annotation.Route import com.xty.base.act.BaseVmAct import com.xty.base.vm.BaseVm +import com.xty.common.Dateutils import com.xty.common.arouter.ARouterUrl +import com.xty.network.model.MessageBean +import com.xty.network.model.MessageTypeDataBean import com.zj365.dc.databinding.ActMessageDetailNewBinding @Route(path = ARouterUrl.MESSAGE_DETAIL_NEW) class MessageDetailNewAct: BaseVmAct() { val binding by lazy { ActMessageDetailNewBinding.inflate(layoutInflater) } + var msgBean : MessageTypeDataBean.MessageTypeBean? = null + override fun liveObserver() { } @@ -25,4 +30,21 @@ class MessageDetailNewAct: BaseVmAct() { finish() } } + + override fun initData() { + super.initData() + intent.extras?.let { + if(it.containsKey("bean")){ + msgBean=it.getSerializable("bean") as MessageTypeDataBean.MessageTypeBean + msgBean?.let { + binding.tvMsgTitle.text = it.notifyTitle + binding.tvMsgTime.text = Dateutils.formatTime(it.notifyCreateTime,Dateutils.YYYY_MM_DD_HH_MM) + binding.tvMsgContent.text = it.notifyContent + } + + + } + } + + } } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/adapter/HomeMessageAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/HomeMessageAdapter.kt index b762f01..7bea6f7 100644 --- a/app/src/main/java/com/zj365/dc/adapter/HomeMessageAdapter.kt +++ b/app/src/main/java/com/zj365/dc/adapter/HomeMessageAdapter.kt @@ -1,17 +1,55 @@ package com.zj365.dc.adapter +import android.text.TextUtils +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.cardview.widget.CardView import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.xty.base.adapter.BaseAdapter import com.xty.common.Dateutils -import com.xty.network.model.ScienceBean import com.xty.network.model.SystemMsgBean import com.zj365.dc.R class HomeMessageAdapter : BaseAdapter(R.layout.item_home_message) { override fun convert(holder: BaseViewHolder, item: SystemMsgBean) { - holder.setText(R.id.tv_msg_title,item.title) - holder.setText(R.id.tv_msg_content,item.content) - holder.setText(R.id.tv_msg_time,Dateutils.formatTime(item.time,Dateutils.YYYY_MM_DD_HH_MM)) + if (item.type == 1){ + holder.getView(R.id.img_msg).setImageDrawable(context.resources.getDrawable(R.mipmap.icon_msg_system)) + }else if (item.type == 2){ + holder.getView(R.id.img_msg).setImageDrawable(context.resources.getDrawable(R.mipmap.icon_msg_assistant)) + }else{ + holder.getView(R.id.img_msg).setImageDrawable(context.resources.getDrawable(R.mipmap.icon_msg_welfare)) + } + holder.setText(R.id.tv_msg_title,item.name) + holder.setText(R.id.tv_msg_content,item.msg) + if(!TextUtils.isEmpty(item.time)){ + holder.setText(R.id.tv_msg_time,Dateutils.formatTime(item.time.toLong(),Dateutils.YYYY_MM_DD_HH_MM)) + } + + var num = holder.getView(R.id.mBadge) + var card = holder.getView(R.id.mCard) + if(item.unReadCount > 0){ + card.visibility = View.VISIBLE + num.text = if (item.unReadCount > 99) "99+" else "${item.unReadCount}" + + num.post{ + var layoutParams = num.layoutParams as ViewGroup.LayoutParams + var numTxt = num.text.toString() + card.radius = num.height / 2f + var textWidth = num.paint.measureText(numTxt) + if (num.height >= textWidth) { //等宽高的圆形 + layoutParams.width = num.height + + } else { //宽高不等 将宽度两边加10 + layoutParams.width = textWidth.toInt() + 20 + } + num.layoutParams = layoutParams + } + + }else{ + card.visibility = View.GONE + } } } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt b/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt index 6e5c7f3..17fc404 100644 --- a/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt +++ b/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt @@ -1,14 +1,18 @@ package com.zj365.dc.fragment +import android.content.Intent import android.graphics.Color import android.view.View +import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.recyclerview.widget.LinearLayoutManager -import com.alibaba.android.arouter.facade.annotation.Route +import com.tencent.qcloud.tuicore.TUIConstants import com.xty.base.fragment.BaseFragList import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager import com.xty.common.event.LoginOrRegisterEvent import com.xty.common.event.LoginOutEvent +import com.xty.common.event.MessageReadEvent +import com.xty.network.model.SystemMsgBean import com.zj365.dc.adapter.HomeMessageAdapter import com.zj365.dc.databinding.FragMessageBinding import com.zj365.dc.vm.MessageVm @@ -20,14 +24,24 @@ class MessageFragment : BaseFragList() { val binding by lazy { FragMessageBinding.inflate(layoutInflater) } val adapter by lazy { HomeMessageAdapter() } + + var msgList = ArrayList() override fun initAdapter() { binding.mRecycle.layoutManager= LinearLayoutManager(requireContext()) binding.mRecycle.adapter=adapter adapter.setOnItemClickListener { adapter, view, position -> - RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL_NEW) + var bean = adapter.getItem(position) as SystemMsgBean + bundle.clear() + bundle.putInt("msgType",bean.type) + RouteManager.goAct(ARouterUrl.MESSAGE_TYPE,bundle) } } + override fun initData() { + super.initData() + + } + override fun initView() { super.initView() statusBar(binding.title.mView) @@ -37,7 +51,7 @@ class MessageFragment : BaseFragList() { binding.title.mTvRight.visibility = View.VISIBLE binding.title.mIvBack.visibility = View.INVISIBLE binding.title.mTvRight.setOnClickListener { - + mViewModel.setAllRead() } initAdapter() setRecycleRefresh(binding.mRecycle,binding.mRefresh) @@ -50,6 +64,17 @@ class MessageFragment : BaseFragList() { override fun setViewModel()= MessageVm() override fun observer() { + mViewModel.msgData.observe(this){ + adapter.setNewInstance(it.data.list) + val intent = Intent() + intent.action = TUIConstants.CONVERSATION_UNREAD_COUNT_ACTION + intent.putExtra(TUIConstants.UNREAD_COUNT_EXTRA, it.data.unReadCount) + LocalBroadcastManager.getInstance(requireContext()) + .sendBroadcast(intent) + } + mViewModel.msgAllRead.observe(this){ + refresh() + } } @@ -65,4 +90,9 @@ class MessageFragment : BaseFragList() { } + @Subscribe(threadMode = ThreadMode.MAIN) + fun readMsg(event:MessageReadEvent){ + refresh() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt index 9a65b7f..9adc28e 100644 --- a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt +++ b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt @@ -188,14 +188,14 @@ class MineFrag : BaseVmFrag(),EasyPermissions.PermissionCallbacks { override fun onResume() { super.onResume() - if (!checkNetworkAvailable(requireContext())) { + /* if (!checkNetworkAvailable(requireContext())) { binding.mNoNetwork.root.visibility = View.VISIBLE } else { - if (binding.mNoNetwork.root.visibility == View.VISIBLE) { + if (binding.mNoNetwork.root.visibility == View.VISIBLE) {*/ mViewModel.getMySetting() - } +// } mViewModel.getScore(1) - } +// } } override fun observer() { @@ -265,7 +265,7 @@ class MineFrag : BaseVmFrag(),EasyPermissions.PermissionCallbacks { if (null == it.data) return@observe it.data.let { settingBean -> Const.mainLiveData.value = settingBean - binding.mNoNetwork.root.visibility = View.GONE +// binding.mNoNetwork.root.visibility = View.GONE } } diff --git a/app/src/main/java/com/zj365/dc/vm/MessageVm.kt b/app/src/main/java/com/zj365/dc/vm/MessageVm.kt index 04b8cf1..168469f 100644 --- a/app/src/main/java/com/zj365/dc/vm/MessageVm.kt +++ b/app/src/main/java/com/zj365/dc/vm/MessageVm.kt @@ -1,10 +1,26 @@ package com.zj365.dc.vm +import androidx.lifecycle.MutableLiveData import com.xty.base.vm.BaseVm +import com.xty.network.model.RespBody +import com.xty.network.model.SystemMsgDataResp class MessageVm(): BaseVm() { + val msgData by lazy { MutableLiveData> ()} + + val msgAllRead by lazy { MutableLiveData>() } fun getSystemMsg(){ + startHttp { + var response = apiInterface().getSystemMsg() + response.getCodeStatus(msgData, nowData) + } + } + fun setAllRead(){ + startHttp(true) { + var response = apiInterface().setMessageReadAll() + response.getCodeStatus(msgAllRead, nowData) + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/frag_message.xml b/app/src/main/res/layout/frag_message.xml index be11b72..0274418 100644 --- a/app/src/main/res/layout/frag_message.xml +++ b/app/src/main/res/layout/frag_message.xml @@ -4,7 +4,7 @@ android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/white" + android:background="@color/col_6F7" tools:ignore="MissingDefaultResource"> + android:background="@color/white" + /> - + app:layout_constraintLeft_toLeftOf="parent"> + + + + + + + + + + + tools:text="17已经预约成功17已经预约成功17已经预约成功17已经预约成功17已经预约成功17已经预约成功"/> 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 IM6N<$f|e&$`~Uy| literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/icon_msg_welfare.png b/app/src/main/res/mipmap-xxhdpi/icon_msg_welfare.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6596dcc05d94095addf487643d7c63e3507291 GIT binary patch literal 8477 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 { } else { bundle.clear() bundle.putSerializable("bean", data) - RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL, bundle) + RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL_NEW, bundle) } } } @@ -110,10 +110,10 @@ class MessageAct : BaseListAct() { adapter.notifyItemChanged(clickPosition) bundle.clear() bundle.putSerializable("bean", clickBean) - RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL, bundle) + RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL_NEW, bundle) } mViewModel.messageLive.observe(this) { - when (nowPosition) { + /* when (nowPosition) { 3 -> { val list = mutableListOf() list.add(it.data.message) @@ -130,7 +130,7 @@ class MessageAct : BaseListAct() { else -> { setDate(adapter, it.data.systemMessage as MutableList) } - } + }*/ } mViewModel.deleteLive.observe(this) { mViewModel.getMessageList(page, 0) diff --git a/mine/src/main/java/com/zj365/mime/act/MessageDetailAct.kt b/mine/src/main/java/com/zj365/mime/act/MessageDetailAct.kt index b81e8bf..b980dc6 100644 --- a/mine/src/main/java/com/zj365/mime/act/MessageDetailAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/MessageDetailAct.kt @@ -31,7 +31,7 @@ class MessageDetailAct: IBaseAct() { } binding.mMsg.text=content - onEventObject(baseContext, UmengEventId.WarningMsg, "查看预警消息详情$content") + // onEventObject(baseContext, UmengEventId.WarningMsg, "查看预警消息详情$content") } override fun initView() { diff --git a/mine/src/main/java/com/zj365/mime/act/MessageTypeListAct.kt b/mine/src/main/java/com/zj365/mime/act/MessageTypeListAct.kt index d58252e..bf4e0e1 100644 --- a/mine/src/main/java/com/zj365/mime/act/MessageTypeListAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/MessageTypeListAct.kt @@ -8,6 +8,7 @@ import com.alibaba.android.arouter.facade.annotation.Route import com.xty.base.act.BaseListAct import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager +import com.xty.common.event.MessageReadEvent import com.xty.common.getImageUrl import com.xty.common.util.CommonToastUtils import com.zj365.mime.R @@ -16,20 +17,24 @@ import com.zj365.mime.databinding.ActMessageBinding import com.zj365.mime.vm.MessageVm import com.zj365.mime.weight.MessagePop import com.xty.network.model.MessageBean +import com.xty.network.model.MessageTypeDataBean +import org.greenrobot.eventbus.EventBus import java.lang.StringBuilder /** * 我的消息 */ -@Route(path = ARouterUrl.MESSAGE) +@Route(path = ARouterUrl.MESSAGE_TYPE) class MessageTypeListAct : BaseListAct() { var choiceMode:Boolean = false val binding by lazy { ActMessageBinding.inflate(layoutInflater) } val adapter by lazy { MessageAdapter() } - var clickBean: MessageBean.SysMsg? = null + var clickBean: MessageTypeDataBean.MessageTypeBean? = null var clickPosition = 0 val array by lazy { resources.getStringArray(R.array.msg_array) } var nowPosition = 1 + + var msgType:Int = 1 //根据type消息获取消息列表 消息类型1,消息消息,2,福利官,3,小助手 val popWindow by lazy { MessagePop(this) { if (it != nowPosition) { @@ -46,6 +51,8 @@ class MessageTypeListAct : BaseListAct() { override fun initData() { super.initData() isDarkBar = true + + msgType = intent.getIntExtra("msgType",0) } override fun initView() { @@ -56,7 +63,7 @@ class MessageTypeListAct : BaseListAct() { mTvTitle.text = getString(R.string.sys_message) mTvRight.visibility = View.VISIBLE mTvRight.text = getString(R.string.message_manager) - mTvRight.setTextColor(ContextCompat.getColor(this@MessageTypeListAct,R.color.col_25C)) + mTvRight.setTextColor(ContextCompat.getColor(this@MessageTypeListAct,R.color.col_02c)) titleBg.setBackgroundColor(ContextCompat.getColor(this@MessageTypeListAct,R.color.white)) mTvRight.setOnClickListener { @@ -76,7 +83,7 @@ class MessageTypeListAct : BaseListAct() { binding.llDelete.setOnClickListener{ val ids = StringBuilder() adapter.data.forEachIndexed{ pos, any -> - var msg = any as MessageBean.SysMsg + var msg = any as MessageTypeDataBean.MessageTypeBean if(msg.isChoice){ ids.append("${msg.id},") } @@ -88,11 +95,6 @@ class MessageTypeListAct : BaseListAct() { binding.title.mIvBack.setOnClickListener { finish() } -// binding.mSpinner.setOnClickListener { -// popWindow.showAction(it) -// } - -// binding.mSpinner.text = array[nowPosition] } private fun choiceMode(mode:Boolean){ @@ -132,7 +134,7 @@ class MessageTypeListAct : BaseListAct() { bundle.putString("chatImage", getImageUrl(bean.avatar)) RouteManager.goAct(ARouterUrl.CHAT_MSG, bundle) } else { - val data = bean as MessageBean.SysMsg + val data = bean as MessageTypeDataBean.MessageTypeBean if (data.notifyStatus == 0) { clickBean = data mViewModel.readMsg(data.id, data.notifyId) @@ -140,17 +142,17 @@ class MessageTypeListAct : BaseListAct() { } else { bundle.clear() bundle.putSerializable("bean", data) - RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL, bundle) + RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL_NEW, bundle) } } } R.id.mDelete -> { - val sysBean = bean as MessageBean.SysMsg + val sysBean = bean as MessageTypeDataBean.MessageTypeBean mViewModel.deleteMsg(sysBean.notifyId) } R.id.cbChoice->{ - val sysBean = bean as MessageBean.SysMsg + val sysBean = bean as MessageTypeDataBean.MessageTypeBean val choiceView = view as CheckBox sysBean.isChoice = choiceView.isChecked if(choiceView.isChecked){ @@ -165,58 +167,61 @@ class MessageTypeListAct : BaseListAct() { override fun liveObserver() { mViewModel.readLive.observe(this) { - (adapter.data[clickPosition] as MessageBean.SysMsg).notifyStatus = 1 + (adapter.data[clickPosition] as MessageTypeDataBean.MessageTypeBean).notifyStatus = 1 adapter.notifyItemChanged(clickPosition) bundle.clear() bundle.putSerializable("bean", clickBean) - RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL, bundle) + RouteManager.goAct(ARouterUrl.MESSAGE_DETAIL_NEW, bundle) + EventBus.getDefault().post(MessageReadEvent()) } mViewModel.messageLive.observe(this) { when (nowPosition) { 3 -> { val list = mutableListOf() - list.add(it.data.message) + list.add(it.data.records) setDate(adapter, list) } 0 -> { val list = mutableListOf() - list.add(it.data.message) + list.add(it.data.records) it?.data?.let { - it.systemMessage.let { it1 -> list.addAll(it1) } + it.records.let { it1 -> list.addAll(it1) } } setDate(adapter, list) } else -> { it?.data?.let { - setDate(adapter, it?.systemMessage as MutableList) + setDate(adapter, it?.records as MutableList) } } } } mViewModel.deleteLive.observe(this) { - mViewModel.getMessageList(page, 0) + mViewModel.getMessageList(page, msgType) } mViewModel.deletesLive.observe(this){ adapter.getDeletePos().forEachIndexed{_, any -> if (adapter.data.size > any){ adapter.data.removeAt(any) + EventBus.getDefault().post(MessageReadEvent()) }else{ CommonToastUtils.showLoserToast("删除失败") } } adapter.data.forEachIndexed{_, any -> - val msg = any as MessageBean.SysMsg + val msg = any as MessageTypeDataBean.MessageTypeBean msg.isChoice = false } adapter.getDeletePos().clear() choiceMode(false) CommonToastUtils.showSucceedToast("删除成功") + EventBus.getDefault().post(MessageReadEvent()) } } override fun loadData() { adapter.getDeletePos().clear() - mViewModel.getMessageList(page, 0) + mViewModel.getMessageList(page, msgType) } } \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/adapter/MessageAdapter.kt b/mine/src/main/java/com/zj365/mime/adapter/MessageAdapter.kt index 274c8df..9ed2075 100644 --- a/mine/src/main/java/com/zj365/mime/adapter/MessageAdapter.kt +++ b/mine/src/main/java/com/zj365/mime/adapter/MessageAdapter.kt @@ -15,6 +15,7 @@ import com.xty.base.adapter.BaseAdapter import com.xty.common.setImageUser import com.zj365.mime.R import com.xty.network.model.MessageBean +import com.xty.network.model.MessageTypeDataBean import de.hdodenhof.circleimageview.CircleImageView import okhttp3.internal.filterList @@ -36,7 +37,7 @@ class MessageAdapter():BaseAdapter(R.layout.item_message) { // holder.setGone(R.id.mDelete,true) // setBadge(item.count,holder.getView(R.id.msgCard),holder.getView(R.id.mBadge)) // }else - if(item is MessageBean.SysMsg){ + if(item is MessageTypeDataBean.MessageTypeBean){ holder.setGone(R.id.mRelMsg,false).setGone(R.id.mChat,true) holder.setText(R.id.mContent,item.notifyContent) .setText(R.id.mTvTime,RxTimeTool.milliseconds2String(item.notifyCreateTime)) diff --git a/mine/src/main/java/com/zj365/mime/vm/MessageVm.kt b/mine/src/main/java/com/zj365/mime/vm/MessageVm.kt index 4127f91..aa5541a 100644 --- a/mine/src/main/java/com/zj365/mime/vm/MessageVm.kt +++ b/mine/src/main/java/com/zj365/mime/vm/MessageVm.kt @@ -4,23 +4,23 @@ import androidx.lifecycle.MutableLiveData import com.xty.base.vm.BaseVm import com.xty.common.util.CommonUtils import com.xty.network.model.MessageBean +import com.xty.network.model.MessageTypeDataBean import com.xty.network.model.RespBody import org.json.JSONObject class MessageVm : BaseVm(){ - val messageLive by lazy{MutableLiveData>()} + val messageLive by lazy{MutableLiveData>()} val readLive by lazy{MutableLiveData>()} val deleteLive by lazy{MutableLiveData>()} val deletesLive by lazy { MutableLiveData>() } fun getMessageList(page:Int,type:Int){ startHttp { var json=JSONObject() - // json.put("pageNum",page) - //json.put("pageSize",Const.PAGE_SIZE) json.put("type",type) - json.put("userId", CommonUtils.getMyUserId()) + json.put("pageNum", page) + json.put("pageSize",20) - var respnse=apiInterface().getMessageList(retrofits.getRequestBody(json.toString())) + var respnse=apiInterface().getMessageListForType(retrofits.getRequestBody(json.toString())) respnse.getCodeStatus(messageLive,nowData) } } @@ -29,11 +29,8 @@ class MessageVm : BaseVm(){ startHttp { var json=JSONObject() json.put("id", id) - json.put("notifyId", notifyId) - json.put("notifyStatus",1) - json.put("notifyHandStatus",2) - var respnse=apiInterface().readMsg(retrofits.getRequestBody(json.toString())) + var respnse=apiInterface().setMessageRead(retrofits.getRequestBody(json.toString())) respnse.getCodeStatus(readLive,nowData) } } diff --git a/mine/src/main/res/mipmap-xhdpi/ic_round_choice.png b/mine/src/main/res/mipmap-xhdpi/ic_round_choice.png index eb0fc97e7a797e5a94a092b5ce3df4d5d4727920..b81185e109d8457071638f226b91edeb1fcd7f3b 100644 GIT binary patch delta 678 zcmV;X0$Kg^2FeAHFnGBQ8| zn`B4XjjS7xG$#u|bcddnTC)}u9dTQpW*fjzwSW@y#?Aaf5dP6r@z^RT8gKf=6xIuq#v2T*1;y>t7V)fZkQE^#oPjs^JliFr zBW`+{KM`oJH-AXLXU#8kX3vXAL;@B#UT;WV&p<=y2~Ci3J4xbDtsp^f1wAG#n?TEY z9SQH`4R+H?*ckw>T0jD)wQI*IbOq8(L}m&0me6rbddZUosWu2^)UwczeWNKWId%)u zjdD7MI8q6e0rW&*FM-Zt5dm+s#D4S*|F+`xZ4lQhZGYB4=gNX4P0JhVL+n8-nTeCw zn|q8xOh0)t2lfD6jtCtDs^V#dRHc z5I|!ImuW%oYp?6pE5`2ZhUMB1p~FR2qa!B`Vjm91`3T>&@709)54(#f6%6nyApigX M07*qoM6N<$f=)s?vH$=8 delta 849 zcmV-X1Frna1@s1xFn)VwT|Dppa%qETz!FR#^*rkNzY ztM|D7{l9z9z2}}QDAzhWN4S2DSgP2~MnZAs%EdI(rbtK1{(rk2jg5V!tfW|{8i|Y* z#jyjXYz0_XdOp$(g_mglIA`ek*FxHYAT`{zT106DFs;K5Rf|@ zKLEk8{{#$@lRRShy)A>nocp6j6D>j>t_G4b_E1vSvJ=j($Q_EWgn~Q61R1a~u__tR z?pmMypxQ*DW`9hYh5%EC6GY&BuT#_>kLO!I$Q_9v1aNdXA^9N`T)k>jXU=&mKy6hZ z!7mb<0nQi5zJFc>dW<)(ri<>+b53Ea;K%1d!8|y-$2@Yj+P=E#H_H^JdlsVp}V0+4^ zU6>t>&ryIw#_Ly`Y8x6HW7D)YesMX-Ky+ncE|W@B3M}o#L`ft#qfEK^nc%V4ec++n6`8ZB9luR2)==+sT2b8 zqmpsDUM`v2n=KQrXl#u_xlyr61wvD}Hs$l)w4{S7tUDY#4w3y8c$Ae8IBMuxwulZX zkxouUVxh+X_BT+>yk3fENqi2&LEZ0g&dT?zx^XEBf5B64I%R-UYA; zkV=WA{rL%y*0lNkbax=|xsbLf=%2VQ6mpJ2%`ycHK#_R>{}xE;A^04E(2vabV0R#p bE;X4yZ-zx}kGVi900000NkvXXu0mjf@|uwA diff --git a/network/src/main/java/com/xty/network/ApiInterface.kt b/network/src/main/java/com/xty/network/ApiInterface.kt index 5c084d3..f97916a 100644 --- a/network/src/main/java/com/xty/network/ApiInterface.kt +++ b/network/src/main/java/com/xty/network/ApiInterface.kt @@ -1017,6 +1017,9 @@ interface ApiInterface { @POST("customer/message") suspend fun getMessageList(@Body rb: RequestBody): RespBody + @POST("customer/message/messageList") + suspend fun getMessageListForType(@Body rb: RequestBody):RespBody + /** * 我的预警消息 */ @@ -1032,7 +1035,7 @@ interface ApiInterface { /** * 批量删除消息 */ - @POST("butler/message/deleteMsg") + @POST("customer/message/deleteMsg") suspend fun deleteMsgs(@Body ids: RequestBody): RespBody /** @@ -1326,6 +1329,21 @@ interface ApiInterface { @GET("customer/device/findUserBaseInfo") suspend fun getUserInfo(@Query("userId") userId: String): RespBody + /** + * 获取首页系统消息 + */ + @POST("customer/message/index") + suspend fun getSystemMsg():RespBody + + /** + * 设置消息已读 + */ + @POST("customer/message/setMessageRead") + suspend fun setMessageRead(@Body rb: RequestBody): RespBody + + @POST("customer/message/setAllMessageRead") + suspend fun setMessageReadAll(): RespBody + /** * 解绑设备SN号 */ diff --git a/network/src/main/java/com/xty/network/model/MessageTypeDataBean.kt b/network/src/main/java/com/xty/network/model/MessageTypeDataBean.kt new file mode 100644 index 0000000..52f2feb --- /dev/null +++ b/network/src/main/java/com/xty/network/model/MessageTypeDataBean.kt @@ -0,0 +1,34 @@ +package com.xty.network.model + +import com.google.gson.annotations.SerializedName +import java.io.Serializable + +data class MessageTypeDataBean ( + var records:ArrayList, + var total:Int, + var size:Int, + var current:Int +):Serializable{ + + data class MessageTypeBean( + + val notifyContent: String, + val notifyCreateTime: Long, + val notifyHandStatus: Int, + val notifyId: String, + var notifyStatus: Int, + val notifyTitle: String, + val notifyType: Int, + val notifyUserType: Int, + val remark: Any, + val type: Int, + val userId: String, + val id: String, + val reportPresetId:String, + val titleStatus:String, + val time:String, + var isChoice:Boolean = false + ):Serializable{ + + } +} \ No newline at end of file diff --git a/network/src/main/java/com/xty/network/model/SystemMsgBean.kt b/network/src/main/java/com/xty/network/model/SystemMsgBean.kt index 58fb3dc..c743aa3 100644 --- a/network/src/main/java/com/xty/network/model/SystemMsgBean.kt +++ b/network/src/main/java/com/xty/network/model/SystemMsgBean.kt @@ -2,4 +2,6 @@ package com.xty.network.model import android.content.ContentResolver -data class SystemMsgBean(var id:Long,var title:String,var time:Long,var content:String) +data class SystemMsgBean(var unReadCount:Long,var name:String,var time:String,var msg:String,var type:Int) + +data class SystemMsgDataResp(var unReadCount:Long,var list:ArrayList)