添加推送

This commit is contained in:
wangyu 2026-01-26 15:18:49 +08:00
parent 30eabe1f42
commit a2ad52a560
17 changed files with 263 additions and 47 deletions

View File

@ -0,0 +1 @@
{"agcgw":{"url":"connect-drcn.dbankcloud.cn","backurl":"connect-drcn.hispace.hicloud.com","websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn","websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com"},"agcgw_all":{"SG":"connect-dra.dbankcloud.cn","SG_back":"connect-dra.hispace.hicloud.com","CN":"connect-drcn.dbankcloud.cn","CN_back":"connect-drcn.hispace.hicloud.com","RU":"connect-drru.hispace.dbankcloud.ru","RU_back":"connect-drru.hispace.dbankcloud.cn","DE":"connect-dre.dbankcloud.cn","DE_back":"connect-dre.hispace.hicloud.com"},"websocketgw_all":{"SG":"connect-ws-dra.hispace.dbankcloud.cn","SG_back":"connect-ws-dra.hispace.dbankcloud.com","CN":"connect-ws-drcn.hispace.dbankcloud.cn","CN_back":"connect-ws-drcn.hispace.dbankcloud.com","RU":"connect-ws-drru.hispace.dbankcloud.ru","RU_back":"connect-ws-drru.hispace.dbankcloud.cn","DE":"connect-ws-dre.hispace.dbankcloud.cn","DE_back":"connect-ws-dre.hispace.dbankcloud.com"},"client":{"cp_id":"10086000857368069","product_id":"461323198430317227","client_id":"1767315365546720896","client_secret":"E850E689CE235C825BECC77648A7183C12B83DED658DB9299DE327BDBA8371C2","project_id":"461323198430317227","app_id":"116691541","api_key":"DgEDAFb9kA1N7as7xG6yopyuQl8jtjXgqaU8CTZ8royzaRgSWCFIvzAyo7PrRwF3DGbHZ3+Mf5KH7m6Un16Rs+MB5xkbUwj+B4qn/Q==","package_name":"com.cheng.BoLe"},"oauth_client":{"client_id":"116691541","client_type":1},"app_info":{"app_id":"116691541","package_name":"com.cheng.BoLe"},"service":{"analytics":{"collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn","collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn","collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn","collector_url_ru":"datacollector-drru.dt.dbankcloud.ru,datacollector-drru.dt.hicloud.com","collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn","resource_id":"p1","channel_id":""},"ml":{"mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"},"cloudstorage":{"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn","storage_url_ru":"https://agc-storage-drru.cloud.huawei.ru","storage_url_sg":"https://ops-dra.agcstorage.link","storage_url_de":"https://ops-dre.agcstorage.link","storage_url_cn":"https://agc-storage-drcn.platform.dbankcloud.cn","storage_url_ru_back":"https://agc-storage-drru.cloud.huawei.ru","storage_url_sg_back":"https://agc-storage-dra.cloud.huawei.asia","storage_url_de_back":"https://agc-storage-dre.cloud.huawei.eu","storage_url_cn_back":"https://agc-storage-drcn.cloud.huawei.com.cn"},"search":{"url":"https://search-drcn.cloud.huawei.com"},"edukit":{"edu_url":"edukit.cloud.huawei.com.cn","dh_url":"edukit.cloud.huawei.com.cn"}},"region":"CN","configuration_version":"3.0","appInfos":[{"package_name":"com.cheng.BoLe","client":{"app_id":"116691541"},"app_info":{"package_name":"com.cheng.BoLe","app_id":"116691541"},"oauth_client":{"client_type":1,"client_id":"116691541"}},{"package_name":"cn.zuom8.jisuloca","client":{"app_id":"116209939"},"app_info":{"package_name":"cn.zuom8.jisuloca","app_id":"116209939"},"oauth_client":{"client_type":1,"client_id":"116209939"}},{"package_name":"cn.zuom8.smartdrive","client":{"app_id":"115184955"},"app_info":{"package_name":"cn.zuom8.smartdrive","app_id":"115184955"},"oauth_client":{"client_type":1,"client_id":"115184955"}}]}

View File

@ -3,6 +3,7 @@ plugins {
alias(libs.plugins.jetbrainsKotlinAndroid)
id 'kotlin-kapt'
id 'kotlin-parcelize'
id 'com.huawei.agconnect'
}
android {
@ -59,6 +60,23 @@ android {
manifestPlaceholders = [
GETUI_APPID : "ej3hUPd0LR8G1CzkNtyZS3",
GT_INSTALL_CHANNEL: "test",
//
HUAWEI_APP_ID : "116691541",
//
XIAOMI_APP_ID : "2882303761520492130",
XIAOMI_APP_KEY : "5942049244130",
// OPPO
OPPO_APP_KEY : "14c5c2d077404b5f987e34f3d4fd2e97",
OPPO_APP_SECRET : "cfe7bd2037cf4f16aa1579ff6113d6c1",
// VIVO
VIVO_APP_ID : "106026636",
VIVO_APP_KEY : "be86ca063884357ff7eeb87a2de537d6",
// 耀
HONOR_APP_ID : "104542383"
]
}
@ -163,8 +181,23 @@ dependencies {
implementation files('libs/humesdk-1.0.0.aar') //
implementation 'com.getui:gysdk:3.1.7.0' //sdk
implementation 'com.getui:gtsdk:3.3.8.0' // sdk
implementation 'com.getui:gtc:3.2.16.0' //sdk则保留一个最高版本即可
//
implementation 'com.getui.opt:hwp:3.1.2' //
implementation 'com.getui.opt:xmp:3.3.3' //
implementation 'com.assist-v3:oppo:3.5.0' // oppo
implementation 'com.assist-v3:vivo:3.2.0' // vivo
implementation 'com.getui.opt:honor:3.6.0' // 耀
//
implementation 'com.huawei.hms:push:6.11.0.300'
implementation 'com.huawei.agconnect:agconnect-core:1.9.1.300'
//耀
implementation 'com.hihonor.mcs:push:7.0.61.303'
//oppo厂商推送配置
implementation 'commons-codec:commons-codec:1.6'
//
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+'
//

View File

@ -191,6 +191,15 @@
</activity>
<!--推送-->
<service
android:name=".service.PushMessageService"
android:exported="false"
android:label="PushService"
android:process=":pushservice" />
<service android:name=".service.PushIntentService" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"

View File

@ -10,6 +10,7 @@ import com.g.gysdk.GYManager
import com.g.gysdk.GYResponse
import com.g.gysdk.GyCallBack
import com.g.gysdk.GyConfig
import com.igexin.sdk.PushManager
import com.scwang.smart.refresh.header.MaterialHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.tencent.mmkv.MMKV
@ -78,6 +79,9 @@ class BaseApplication : MvvmApplication() {
} catch (e: Exception) {
e.printStackTrace()
}
PushManager.getInstance().preInit(this)
PushManager.getInstance().initialize(this)
}
}

View File

@ -22,13 +22,7 @@ object NotificationHelper {
private val notificationManager by lazy { Utils.getApp().getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager }
private const val DEFAULT_CHANNEL_ID = "default"
private const val DOWNLOAD_CHANNEL_ID = "download"
private const val FOREGROUND_CHANNEL_ID = "foreground"
private const val DOWNLOAD_GROUP = "download_group"
private const val DOWNLOAD_CANCEL_CODE = 2000
private const val DOWNLOAD_RETRY_CODE = 3000
private const val MESSAGE_CHANNEL_ID = "message"
private var _notificationId = 1000
@ -40,17 +34,17 @@ object NotificationHelper {
}
/**
* 前台通知
* 消息通知
*/
fun startForeground(service: Service) {
val channelId = createNotificationChannel(FOREGROUND_CHANNEL_ID, "Foreground", NotificationManager.IMPORTANCE_LOW)
val builder = NotificationCompat.Builder(service, channelId)
val notification = builder
.setContentText("文件下载服务运行中")
fun createMessageNotification(context: Context): Notification {
val channelId = createNotificationChannel(MESSAGE_CHANNEL_ID, "Message", NotificationManager.IMPORTANCE_HIGH)
val builder = NotificationCompat.Builder(context, channelId)
return builder
.setContentTitle("")
.setContentText("")
.setSmallIcon(R.mipmap.ic_launcher_icon)
.setCategory(Notification.CATEGORY_SERVICE)
.setCategory(Notification.CATEGORY_MESSAGE)
.build()
service.startForeground(1, notification)
}
/**
@ -69,7 +63,6 @@ object NotificationHelper {
*/
private fun createNotificationChannel(channelId: String, channelName: String, importance: Int): String {
val channel = NotificationChannel(channelId, channelName, importance)
channel.setSound(null, null)
notificationManager.createNotificationChannel(channel)
return channelId
}
@ -88,30 +81,26 @@ object NotificationHelper {
/**
* 通知被禁用时显示提示
*/
fun showDisabledTip(activity: Activity, fm: FragmentManager, isHomePage: Boolean = false) {
if (isHomePage) {
toast("平台推送消息需要通知权限,检测到您已关闭相关权限,请前往设置手动打开")
} else {
val f = TipDialog.newInstance("请开启通知权限", "为方便查看下载进度,请在设置中打开【允许通知】")
f.setOnSelectListener {
if (it == DialogEnum.CLICK_OK) {
try {
//8.0及以上
val intent = Intent()
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
intent.putExtra(Settings.EXTRA_APP_PACKAGE, activity.packageName)
activity.startActivity(intent)
} catch (e: Exception) {
val intent = Intent()
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.setData(Uri.fromParts("package", activity.packageName, null))
activity.startActivity(intent)
}
fun showDisabledTip(activity: Activity, fm: FragmentManager) {
val f = TipDialog.newInstance("请开启通知权限", "未避免错过重要消息,请在设置中打开【允许通知】", "去设置", "取消", cancelable = false)
f.setOnSelectListener {
if (it == DialogEnum.CLICK_CANCEL) {
try {
//8.0及以上
val intent = Intent()
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
intent.putExtra(Settings.EXTRA_APP_PACKAGE, activity.packageName)
activity.startActivity(intent)
} catch (e: Exception) {
val intent = Intent()
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.setData(Uri.fromParts("package", activity.packageName, null))
activity.startActivity(intent)
}
}
f.show(fm, TipDialog::class.java.simpleName)
}
f.show(fm, TipDialog::class.java.simpleName)
}
}

View File

@ -0,0 +1,68 @@
package com.cheng.blzb.service
import android.content.Context
import android.content.Intent
import com.cheng.blzb.event.PushMessageEvent
import com.cheng.blzb.manager.UserConfigManager
import com.example.base.common.RxBus
import com.example.base.utils.L
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 java.net.URISyntaxException
class PushIntentService : GTIntentService() {
override fun onReceiveServicePid(context: Context?, pid: Int) {}
/**
* 此方法用于接收和处理透传消息透传消息个推只传递数据不做任何处理客户端接收到透传消息后需要自己去做后续动作处理如通知栏展示弹框等
* 如果开发者在客户端将透传消息创建了通知栏展示建议将展示和点击回执上报给个推
*/
override fun onReceiveMessageData(context: Context?, msg: GTTransmitMessage) {
val payload = msg.payload
val data = String(payload)
L.d("receiver payload = $data") //透传消息文本内容
}
// 接收 cid
override fun onReceiveClientId(context: Context?, clientid: String) {
L.d("PushIntentService---onReceiveClientId -> clientid = $clientid")
UserConfigManager.saveGTCid(clientid)
}
// cid 离线上线通知
override fun onReceiveOnlineState(context: Context?, online: Boolean) {}
// 各种事件处理回执
override fun onReceiveCommandResult(context: Context?, cmdMessage: GTCmdMessage?) {}
// 通知到达,只有个推通道下发的通知会回调此方法
override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) {
L.d("PushIntentService---onNotificationMessageArrived: ${Gson().toJson(msg)}")
if (msg!!.intentUri != null) {
try {
val intent = Intent.parseUri(msg.intentUri, Intent.URI_INTENT_SCHEME)
RxBus.defaultInstance.post(PushMessageEvent(intent.getStringExtra("payload") ?: "", 2))
} catch (e: URISyntaxException) {
L.d(e)
}
}
}
// 通知点击,只有个推通道下发的通知会回调此方法
override fun onNotificationMessageClicked(context: Context?, msg: GTNotificationMessage?) {
L.d("PushIntentService---onNotificationMessageClicked: ${Gson().toJson(msg)}")
if (msg!!.intentUri != null) {
try {
val intent = Intent.parseUri(msg.intentUri, Intent.URI_INTENT_SCHEME)
startActivity(intent)
} catch (e: URISyntaxException) {
L.d(e)
}
}
}
}

View File

@ -0,0 +1,6 @@
package com.cheng.blzb.service
import com.igexin.sdk.PushService
class PushMessageService: PushService() {
}

View File

@ -28,6 +28,7 @@ import com.g.gysdk.GyCallBack
import com.g.gysdk.GyConfig
import com.gyf.immersionbar.BarHide
import com.gyf.immersionbar.ImmersionBar
import com.igexin.sdk.PushManager
import com.umeng.analytics.MobclickAgent
import com.umeng.commonsdk.UMConfigure
import org.jetbrains.anko.startActivity
@ -170,6 +171,9 @@ class LauncherActivity : BaseActivity() {
L.d("TAG-->>GYManager ePreLogin onFailed =${gyResponse.code}")
}
})
PushManager.getInstance().preInit(this)
PushManager.getInstance().initialize(this)
}
@SuppressLint("UnsafeOptInUsageError")

View File

@ -81,7 +81,7 @@ class MyGoodsFragment: BaseFragment<FragmentMyGoodsBinding, MyGoodsViewModel>()
}
R.id.btn_view -> {
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("id", item.id))
}
}
}

View File

@ -10,6 +10,7 @@ import com.cheng.blzb.common.EventConstants
import com.cheng.blzb.databinding.FragmentHomeBinding
import com.cheng.blzb.event.HomeRefreshEvent
import com.cheng.blzb.manager.EventReportManager
import com.cheng.blzb.manager.NotificationHelper
import com.cheng.blzb.manager.SearchHistoryManager
import com.cheng.blzb.manager.UserConfigManager
import com.cheng.blzb.ui.activity.PublicActivity
@ -22,6 +23,7 @@ import com.cheng.blzb.ui.fragment.home.zzdb.ZZDBFragment
import com.cheng.blzb.ui.fragment.mine.vip.VipFragment
import com.cheng.blzb.ui.fragment.search.SearchFragment
import com.cheng.blzb.ui.fragment.search.list.SearchListFragment
import com.cheng.blzb.utils.PermissionUtils
import com.example.base.common.RxBus
import com.example.base.decoration.GridSpaceItemDecoration
import com.example.base.decoration.SpacesItemDecoration
@ -29,6 +31,7 @@ import com.example.base.extensions.getColor
import com.example.base.extensions.onClick
import com.example.base.ui.list.ListFragment
import com.example.base.utils.DensityUtils
import com.example.base.utils.MMKVUtils
import com.example.base.utils.SpanUtils
import java.text.DecimalFormat
import kotlin.math.abs
@ -60,6 +63,14 @@ class HomeFragment : ListFragment<FragmentHomeBinding, HomeViewModel, BidItemEnt
binding.rvHotKeyword.adapter = keywordAdapter
binding.rvHotKeyword.addItemDecoration(SpacesItemDecoration(DensityUtils.dp2px(8f), HORIZONTAL))
NotificationHelper.createDefaultChannel()
if (MMKVUtils.getBoolean("request_notification_permission", true)) {
PermissionUtils.checkNotificationPermission(requireActivity()) { isGranted ->
if (!isGranted) NotificationHelper.showDisabledTip(requireActivity(), childFragmentManager)
MMKVUtils.put("request_notification_permission", false)
}
}
}
override fun initData() {

View File

@ -4,6 +4,8 @@ import android.text.TextUtils
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
import com.cheng.blzb.R
import com.cheng.blzb.bean.PushPayloadEntity
import com.cheng.blzb.common.AppUpdate
import com.cheng.blzb.common.EventConstants
import com.cheng.blzb.databinding.FragmentMainBinding
import com.cheng.blzb.event.HomeRefreshEvent
@ -18,8 +20,10 @@ import com.cheng.blzb.ui.activity.PublicActivity
import com.cheng.blzb.ui.base.BasePageAdapter
import com.cheng.blzb.ui.dialog.PublishBidDialog
import com.cheng.blzb.ui.dialog.VipLoginTipDialog
import com.cheng.blzb.ui.fragment.bid.detail.BidDetailFragment
import com.cheng.blzb.ui.fragment.home.HomeFragment
import com.cheng.blzb.ui.fragment.merchant.MerchantFragment
import com.cheng.blzb.ui.fragment.merchant.detail.MerchantGoodsDetailFragment
import com.cheng.blzb.ui.fragment.mine.MineFragment
import com.cheng.blzb.ui.fragment.mine.coupon.CouponFragment
import com.cheng.blzb.ui.fragment.mine.vip.VipFragment
@ -153,7 +157,7 @@ class MainFragment : BaseFragment<FragmentMainBinding, MainViewModel>() {
val pushMessageEvent = RxBus.defaultInstance.toObservable(PushMessageEvent::class.java).subscribe {
if (!TextUtils.isEmpty(it.payload)) {
val payload = Gson().fromJson(it.payload, com.cheng.blzb.bean.PushPayloadEntity::class.java)
val payload = Gson().fromJson(it.payload, PushPayloadEntity::class.java)
if (it.type == 3) handlePushMessage(payload)
mViewModel.reportPushReceipt(payload.msgId, "${it.type}")
}
@ -161,7 +165,7 @@ class MainFragment : BaseFragment<FragmentMainBinding, MainViewModel>() {
addDisposable(pushMessageEvent)
}
private fun handlePushMessage(payloadEntity: com.cheng.blzb.bean.PushPayloadEntity) {
private fun handlePushMessage(payloadEntity: PushPayloadEntity) {
if (TextUtils.isEmpty(payloadEntity.page)) return
when (payloadEntity.page) {
"member_recharge" -> {
@ -169,7 +173,30 @@ class MainFragment : BaseFragment<FragmentMainBinding, MainViewModel>() {
requireContext(),
VipFragment::class.java,
Pair("origin", parseData("source", payloadEntity.params)),
// Pair("goodsType", parseData("type", payloadEntity.params))
Pair("goodsType", parseData("type", payloadEntity.params))
)
}
"bid_info" -> {
val bidId = parseData("bid_info_id", payloadEntity.params)
if (TextUtils.isEmpty(bidId)) {
toast("标讯id为空")
return
}
PublicActivity.start(requireActivity(),
BidDetailFragment::class.java,
Pair("source", parseData("source", payloadEntity.params)),
Pair("goodsType", parseData("type", payloadEntity.params)),
Pair("info_source", parseData("info_source", payloadEntity.params)),
Pair("id", bidId),
Pair("origin", "push")
)
}
"goods_details" -> {
PublicActivity.start(requireActivity(),
MerchantGoodsDetailFragment::class.java,
Pair("id", parseData("goods_id", payloadEntity.params))
)
}
}
@ -191,6 +218,6 @@ class MainFragment : BaseFragment<FragmentMainBinding, MainViewModel>() {
}
private fun checkVersion() {
com.cheng.blzb.common.AppUpdate.checkUpdate(this, false) {}
AppUpdate.checkUpdate(this, false) {}
}
}

View File

@ -28,6 +28,7 @@ import com.example.base.utils.SpanUtils
import java.text.DecimalFormat
class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBinding, MerchantGoodsDetailViewModel>() {
private val id by lazy { arguments?.getString("id") ?: "" }
private var goodsInfo: MerchantGoodsEntity? = null
private val contactsAdapter by lazy { MerchantContactsAdapter() }
@ -60,9 +61,13 @@ class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBind
} else {
arguments?.getSerializable("item") as? MerchantGoodsEntity
}
setData()
mViewModel.sendAuth()
EventReportManager.eventReport(EventConstants.JUMP_TO_GOODS_DETAIL, "", "{\"id\": ${goodsInfo?.id}}")
if (goodsInfo != null) {
setData()
EventReportManager.eventReport(EventConstants.JUMP_TO_GOODS_DETAIL, "", "{\"id\": ${goodsInfo!!.id}}")
} else {
mViewModel.getGoodsInfo(id)
EventReportManager.eventReport(EventConstants.JUMP_TO_GOODS_DETAIL, "", "{\"id\": ${id}}")
}
}
override fun initListener() {
@ -72,6 +77,7 @@ class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBind
}
binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
@SuppressLint("SetTextI18n")
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
binding.tvIndicator.text = "${position + 1}/${imageAdapter.data.size}"
@ -96,6 +102,10 @@ class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBind
override fun initObserve() {
super.initObserve()
mViewModel.infoLiveData.observe(this) {
goodsInfo = it
setData()
}
}
@SuppressLint("SetTextI18n")
@ -146,6 +156,8 @@ class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBind
binding.tvLocation.text = if (TextUtils.isEmpty(goodsInfo!!.city_name)) "全国" else goodsInfo!!.city_name
binding.tvViewCount.text = "已浏览 ${if (!TextUtils.isEmpty(goodsInfo!!.view_count)) goodsInfo!!.view_count else 0}"
mViewModel.sendAuth()
}
}
}

View File

@ -1,12 +1,31 @@
package com.cheng.blzb.ui.fragment.merchant.detail
import androidx.lifecycle.MutableLiveData
import com.cheng.blzb.bean.MerchantGoodsEntity
import com.cheng.blzb.net.ApiFactory
import com.example.base.extensions.toast
import com.example.base.utils.L
import com.example.base.viewmodel.BaseViewModel
import com.google.gson.JsonObject
import okhttp3.RequestBody.Companion.toRequestBody
class MerchantGoodsDetailViewModel: BaseViewModel() {
val infoLiveData = MutableLiveData<MerchantGoodsEntity>()
fun getGoodsInfo(id: String) {
showDialog()
launchOnUiTryCatch({
val response = ApiFactory.apiService.getGoodsInfo(id)
if (response.status) {
infoLiveData.postValue(response.data)
} else toast(response.message, true)
dismissDialog()
}, {
dismissDialog()
setError(it)
L.d(it)
})
}
fun sendAuth() {
launchOnUiTryCatch({

View File

@ -64,7 +64,7 @@ class MerchantGoodsListFragment : ListFragment<FragmentMerchantGoodsListBinding,
super.initObserve()
mViewModel.authLiveData.observe(this) {
if (it.auth) {
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("id", item!!.id))
} else {
PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_goods"))
}

View File

@ -79,6 +79,11 @@ class CompanyAuthFragment : BaseFragment<FragmentCompanyAuthBinding, CompanyAuth
mViewModel.getCompanyInfo()
}
override fun onResume() {
super.onResume()
mViewModel.userInfo()
}
@SuppressLint("NotifyDataSetChanged")
override fun initListener() {
super.initListener()
@ -162,6 +167,10 @@ class CompanyAuthFragment : BaseFragment<FragmentCompanyAuthBinding, CompanyAuth
override fun initObserve() {
super.initObserve()
mViewModel.userInfoLiveData.observe(this) {
UserConfigManager.userInfoLiveData.postValue(it)
}
mViewModel.addLiveData.observe(this) {
toast("提交成功")
requireActivity().finish()

View File

@ -4,6 +4,7 @@ import android.content.Context
import androidx.lifecycle.MutableLiveData
import com.cheng.blzb.bean.CompanyEntity
import com.cheng.blzb.bean.UploadFileEntity
import com.cheng.blzb.bean.UserEntity
import com.cheng.blzb.net.ApiFactory
import com.cheng.blzb.utils.BitmapUtils
import com.example.base.extensions.toast
@ -14,10 +15,26 @@ import okhttp3.MultipartBody
import okhttp3.RequestBody
class CompanyAuthViewModel: BaseViewModel() {
val userInfoLiveData = MutableLiveData<UserEntity>()
val companyLiveData = MutableLiveData<CompanyEntity>()
val addLiveData = MutableLiveData<Any>()
val imageLiveData = MutableLiveData<UploadFileEntity>()
fun userInfo() {
showDialog()
launchOnUiTryCatch({
val response = ApiFactory.apiService.userInfo()
if (response.status) {
userInfoLiveData.postValue(response.data)
} else toast(response.message, true)
dismissDialog()
}, {
dismissDialog()
setError(it)
L.d(it)
})
}
fun getCompanyInfo() {
showDialog()
launchOnUiTryCatch({

View File

@ -1,4 +1,11 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:8.0'
// AGC插件配置AGC插件依赖关系选择合适的AGC插件版本
classpath 'com.huawei.agconnect:agcp:1.9.1.300'
}
}
plugins {
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.jetbrainsKotlinAndroid) apply false