修复禅道上的bug

This commit is contained in:
wangyu 2026-01-13 15:55:27 +08:00
parent cf736fc71b
commit bcc2ce551d
28 changed files with 269 additions and 53 deletions

View File

@ -2,5 +2,11 @@ package com.cheng.blzb.event
import com.cheng.blzb.bean.ContactsEntity import com.cheng.blzb.bean.ContactsEntity
class ContactsEvent(val contacts: ContactsEntity) { class ContactsEvent(val contacts: ContactsEntity, val type: Int) {
companion object {
const val TYPE_ADD = 1
const val TYPE_UPDATE = 2
const val TYPE_DELETE = 3
}
} }

View File

@ -10,7 +10,7 @@ object ContactsManager {
fun add(contacts: ContactsEntity) { fun add(contacts: ContactsEntity) {
val list = all() val list = all()
list.add(contacts) list.add(0, contacts)
MMKVUtils.put("contacts_list", Gson().toJson(list)) MMKVUtils.put("contacts_list", Gson().toJson(list))
} }

View File

@ -7,6 +7,8 @@ import android.text.TextUtils
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import com.cheng.blzb.R import com.cheng.blzb.R
import com.cheng.blzb.bean.WxShareEntity
import com.cheng.blzb.common.Constants
import com.example.base.extensions.toast import com.example.base.extensions.toast
import com.umeng.socialize.ShareAction import com.umeng.socialize.ShareAction
import com.umeng.socialize.UMShareListener import com.umeng.socialize.UMShareListener
@ -20,14 +22,14 @@ import java.io.File
object ShareManager { object ShareManager {
/** /**
* 分享媒体文件 * 分享文件
*/ */
fun shareFile(context: Context, file: File) { fun shareFile(context: Context, file: File) {
val uri = FileProvider.getUriForFile(context,"${context.packageName}.fileprovider", file) val uri = FileProvider.getUriForFile(context, Constants.AppFilter, file)
val intent = Intent(Intent.ACTION_SEND) val intent = Intent(Intent.ACTION_SEND)
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.putExtra(Intent.EXTRA_STREAM, uri) intent.putExtra(Intent.EXTRA_STREAM, uri)
intent.setType(if (file.extension == "mp4") "video/mp4" else if (file.extension == "mp3") "audio/x-mpeg" else "image/jpeg") //分享文件类型 intent.setType("application/*") //分享文件类型
context.startActivity(Intent.createChooser(intent, "分享")) context.startActivity(Intent.createChooser(intent, "分享"))
} }
@ -37,7 +39,7 @@ object ShareManager {
fun shareUrl( fun shareUrl(
activity: FragmentActivity, activity: FragmentActivity,
shareMedia: SHARE_MEDIA, shareMedia: SHARE_MEDIA,
shareBean: com.cheng.blzb.bean.WxShareEntity, shareBean: WxShareEntity,
clickFun: () -> Unit, clickFun: () -> Unit,
) { ) {
if (!TextUtils.isEmpty(shareBean.link)) { if (!TextUtils.isEmpty(shareBean.link)) {

View File

@ -114,7 +114,7 @@ class BuySeatDialog : DialogFragment() {
if (goodsEntity != null) { if (goodsEntity != null) {
binding.tvName.text = goodsEntity!!.goods_name binding.tvName.text = goodsEntity!!.goods_name
SpanUtils.with(binding.tvOriginPrice) SpanUtils.with(binding.tvOriginPrice)
.append("原价:${DecimalFormat("0.##").format(goodsEntity!!.origin_price.toFloat())}元/") .append("${DecimalFormat("0.##").format(goodsEntity!!.origin_price.toFloat())}元/")
.setStrikethrough() .setStrikethrough()
.create() .create()
totalPrice = goodsEntity!!.price.toFloat() totalPrice = goodsEntity!!.price.toFloat()

View File

@ -15,6 +15,7 @@ import androidx.fragment.app.DialogFragment
import com.cheng.blzb.R import com.cheng.blzb.R
import com.cheng.blzb.common.Constants import com.cheng.blzb.common.Constants
import com.cheng.blzb.databinding.DialogSeatAuthBinding import com.cheng.blzb.databinding.DialogSeatAuthBinding
import com.cheng.blzb.impl.TextWatcherImpl
import com.cheng.blzb.utils.KeyboardUtils import com.cheng.blzb.utils.KeyboardUtils
import com.example.base.extensions.getColor import com.example.base.extensions.getColor
import com.example.base.extensions.onClick import com.example.base.extensions.onClick
@ -27,6 +28,13 @@ class SeatAuthDialog : DialogFragment(), KeyboardUtils.OnSoftInputChangedListene
private lateinit var binding: DialogSeatAuthBinding private lateinit var binding: DialogSeatAuthBinding
private val textWatcher = object : TextWatcherImpl() {
@SuppressLint("SetTextI18n")
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
binding.ivClearText.visibility = if (TextUtils.isEmpty(s)) View.INVISIBLE else View.VISIBLE
}
}
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
val window = dialog?.window val window = dialog?.window
@ -59,6 +67,12 @@ class SeatAuthDialog : DialogFragment(), KeyboardUtils.OnSoftInputChangedListene
.append("才能正常授权") .append("才能正常授权")
.create() .create()
binding.etPhone.addTextChangedListener(textWatcher)
binding.ivClearText.onClick {
binding.etPhone.setText("")
}
binding.ivClose.onClick { dismiss() } binding.ivClose.onClick { dismiss() }
binding.btnNext.onClick { binding.btnNext.onClick {
@ -83,6 +97,7 @@ class SeatAuthDialog : DialogFragment(), KeyboardUtils.OnSoftInputChangedListene
} }
override fun onDestroyView() { override fun onDestroyView() {
binding.etPhone.removeTextChangedListener(textWatcher)
KeyboardUtils.unregisterSoftInputChangedListener(requireActivity().window) KeyboardUtils.unregisterSoftInputChangedListener(requireActivity().window)
super.onDestroyView() super.onDestroyView()
} }

View File

@ -97,7 +97,11 @@ class SelectContactsDialog : DialogFragment() {
binding.ivClose.onClick { dismiss() } binding.ivClose.onClick { dismiss() }
contactsEvent = RxBus.defaultInstance.toObservable(ContactsEvent::class.java).subscribe { contactsEvent = RxBus.defaultInstance.toObservable(ContactsEvent::class.java).subscribe {
setData(false) if (it.type == ContactsEvent.TYPE_ADD) {
setData(false, it.contacts.id)
} else {
setData(false)
}
} }
setData(true) setData(true)
@ -107,7 +111,7 @@ class SelectContactsDialog : DialogFragment() {
return dialog return dialog
} }
private fun setData(init: Boolean) { private fun setData(init: Boolean, checkedId: String = "") {
val selectList = if (init) { val selectList = if (init) {
val listStr = arguments?.getString("list") ?: "" val listStr = arguments?.getString("list") ?: ""
if (!TextUtils.isEmpty(listStr)) { if (!TextUtils.isEmpty(listStr)) {
@ -119,7 +123,7 @@ class SelectContactsDialog : DialogFragment() {
val contactsList = ContactsManager.all() val contactsList = ContactsManager.all()
contactsList.forEach { contacts -> contactsList.forEach { contacts ->
if (selectList.find { it.id == contacts.id } != null) { if (selectList.find { it.id == contacts.id } != null || contacts.id == checkedId) {
contacts.isChecked = true contacts.isChecked = true
} }
} }

View File

@ -28,8 +28,6 @@ class MyBidAdapter : LoadMoreAdapter<BidDetailEntity>(R.layout.listitem_my_bid)
holder.setText(R.id.tv_time, item.tips_time) holder.setText(R.id.tv_time, item.tips_time)
holder.setGone(R.id.tv_refuse_reason, true) holder.setGone(R.id.tv_refuse_reason, true)
holder.setGone(R.id.btn_delete, true)
holder.setGone(R.id.btn_edit, true)
when (item.status) { when (item.status) {
"1" -> { "1" -> {
holder.setText(R.id.tv_status, "待审核") holder.setText(R.id.tv_status, "待审核")
@ -43,8 +41,6 @@ class MyBidAdapter : LoadMoreAdapter<BidDetailEntity>(R.layout.listitem_my_bid)
holder.setTextColor(R.id.tv_status, getColor(R.color.color_e3fae7)) holder.setTextColor(R.id.tv_status, getColor(R.color.color_e3fae7))
holder.setBackgroundResource(R.id.tv_status, R.drawable.shape_publish_status_bg2) holder.setBackgroundResource(R.id.tv_status, R.drawable.shape_publish_status_bg2)
holder.getView<TextView>(R.id.tv_status).setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_publish_status2, 0, 0, 0) holder.getView<TextView>(R.id.tv_status).setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_publish_status2, 0, 0, 0)
holder.setGone(R.id.btn_delete, true)
} }
"3" -> { "3" -> {
@ -55,9 +51,6 @@ class MyBidAdapter : LoadMoreAdapter<BidDetailEntity>(R.layout.listitem_my_bid)
holder.setText(R.id.tv_refuse_reason, "理由:${item.review_remark}") holder.setText(R.id.tv_refuse_reason, "理由:${item.review_remark}")
holder.setVisible(R.id.tv_refuse_reason, true) holder.setVisible(R.id.tv_refuse_reason, true)
holder.setGone(R.id.btn_delete, true)
holder.setGone(R.id.btn_edit, true)
} }
} }

View File

@ -67,6 +67,10 @@ class MyBidFragment: ListFragment<FragmentMyBidBinding, MyBidViewModel, BidDetai
override fun initObserve() { override fun initObserve() {
super.initObserve() super.initObserve()
mViewModel.deleteLiveData.observe(this) {
firstLoad()
}
val bidEvent = RxBus.defaultInstance.toObservable(BidEvent::class.java).subscribe { val bidEvent = RxBus.defaultInstance.toObservable(BidEvent::class.java).subscribe {
firstLoad() firstLoad()
} }

View File

@ -385,6 +385,10 @@ class PublishBidMessageFragment : BaseFragment<FragmentPublishBidMessageBinding,
} }
contactsAdapter.setList(detail.contact) contactsAdapter.setList(detail.contact)
if (contactsAdapter.data.isNotEmpty()) {
binding.rvContacts.visible()
binding.tvContacts.gone()
}
if (contactsAdapter.data.size == 5) { if (contactsAdapter.data.size == 5) {
binding.ivAddContacts.gone() binding.ivAddContacts.gone()
} }

View File

@ -61,7 +61,7 @@ class AddContactsFragment: BaseFragment<FragmentAddContactsBinding, AddContactsV
f.setOnSelectListener { f.setOnSelectListener {
if (it == DialogEnum.CLICK_OK) { if (it == DialogEnum.CLICK_OK) {
ContactsManager.delete(contactsInfo!!.id) ContactsManager.delete(contactsInfo!!.id)
RxBus.defaultInstance.post(ContactsEvent(contactsInfo!!)) RxBus.defaultInstance.post(ContactsEvent(contactsInfo!!, ContactsEvent.TYPE_DELETE))
requireActivity().finish() requireActivity().finish()
} }
} }
@ -88,13 +88,14 @@ class AddContactsFragment: BaseFragment<FragmentAddContactsBinding, AddContactsV
if (contactsInfo == null) { if (contactsInfo == null) {
contactsInfo = ContactsEntity(UUID.randomUUID().toString(), name, phone, mAdapter.data.find { it.isChecked }?.name ?: job) contactsInfo = ContactsEntity(UUID.randomUUID().toString(), name, phone, mAdapter.data.find { it.isChecked }?.name ?: job)
ContactsManager.add(contactsInfo!!) ContactsManager.add(contactsInfo!!)
RxBus.defaultInstance.post(ContactsEvent(contactsInfo!!, ContactsEvent.TYPE_ADD))
} else { } else {
contactsInfo!!.name = name contactsInfo!!.name = name
contactsInfo!!.phone = phone contactsInfo!!.phone = phone
contactsInfo!!.job = job contactsInfo!!.job = job
ContactsManager.update(contactsInfo!!) ContactsManager.update(contactsInfo!!)
RxBus.defaultInstance.post(ContactsEvent(contactsInfo!!, ContactsEvent.TYPE_UPDATE))
} }
RxBus.defaultInstance.post(ContactsEvent(contactsInfo!!))
requireActivity().finish() requireActivity().finish()
} }
} }

View File

@ -25,12 +25,10 @@ class MyGoodsAdapter: BaseQuickAdapter<MerchantGoodsEntity, BaseViewHolder>(R.la
} }
holder.setText(R.id.tv_title, item.goods_name) holder.setText(R.id.tv_title, item.goods_name)
holder.setText(R.id.tv_content, item.goods_description) holder.setText(R.id.tv_content, item.goods_description)
holder.setText(R.id.tv_amount, "${item.goods_price_show}") holder.setText(R.id.tv_amount, if (item.goods_price_type == "1") "${item.goods_price_show}" else item.goods_price_show)
holder.setText(R.id.tv_area, item.city_name) holder.setText(R.id.tv_area, item.city_name)
holder.setGone(R.id.tv_refuse_reason, true) holder.setGone(R.id.tv_refuse_reason, true)
holder.setGone(R.id.btn_delete, true)
holder.setGone(R.id.btn_edit, true)
when (item.status) { when (item.status) {
"1" -> { "1" -> {
holder.setText(R.id.tv_status, "待审核") holder.setText(R.id.tv_status, "待审核")
@ -44,8 +42,6 @@ class MyGoodsAdapter: BaseQuickAdapter<MerchantGoodsEntity, BaseViewHolder>(R.la
holder.setTextColor(R.id.tv_status, getColor(R.color.color_e3fae7)) holder.setTextColor(R.id.tv_status, getColor(R.color.color_e3fae7))
holder.setBackgroundResource(R.id.tv_status, R.drawable.shape_publish_status_bg2) holder.setBackgroundResource(R.id.tv_status, R.drawable.shape_publish_status_bg2)
holder.getView<TextView>(R.id.tv_status).setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_publish_status2, 0, 0, 0) holder.getView<TextView>(R.id.tv_status).setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_publish_status2, 0, 0, 0)
holder.setGone(R.id.btn_delete, true)
} }
"3" -> { "3" -> {
@ -56,9 +52,6 @@ class MyGoodsAdapter: BaseQuickAdapter<MerchantGoodsEntity, BaseViewHolder>(R.la
holder.setText(R.id.tv_refuse_reason, "理由:${item.remark}") holder.setText(R.id.tv_refuse_reason, "理由:${item.remark}")
holder.setVisible(R.id.tv_refuse_reason, true) holder.setVisible(R.id.tv_refuse_reason, true)
holder.setGone(R.id.btn_delete, true)
holder.setGone(R.id.btn_edit, true)
} }
} }
} }

View File

@ -106,6 +106,10 @@ class MyGoodsFragment: BaseFragment<FragmentMyGoodsBinding, MyGoodsViewModel>()
setData() setData()
} }
mViewModel.deleteLiveData.observe(this) {
binding.mRefreshLayout.autoRefresh()
}
val supplyEvent = RxBus.defaultInstance.toObservable(SupplyEvent::class.java).subscribe { val supplyEvent = RxBus.defaultInstance.toObservable(SupplyEvent::class.java).subscribe {
binding.mRefreshLayout.autoRefresh() binding.mRefreshLayout.autoRefresh()
} }

View File

@ -27,6 +27,7 @@ import com.cheng.blzb.utils.PermissionUtils
import com.example.base.common.RxBus import com.example.base.common.RxBus
import com.example.base.extensions.getColor import com.example.base.extensions.getColor
import com.example.base.extensions.gone import com.example.base.extensions.gone
import com.example.base.extensions.invisible
import com.example.base.extensions.onClick import com.example.base.extensions.onClick
import com.example.base.extensions.toast import com.example.base.extensions.toast
import com.example.base.extensions.visible import com.example.base.extensions.visible
@ -315,6 +316,10 @@ class PublishGoodsMessageFragment: BaseFragment<FragmentPublishGoodsMessageBindi
.create() .create()
contactsAdapter.setList(detail.contact) contactsAdapter.setList(detail.contact)
if (contactsAdapter.data.isNotEmpty()) {
binding.rvContacts.visible()
binding.tvContacts.gone()
}
if (contactsAdapter.data.size == 5) { if (contactsAdapter.data.size == 5) {
binding.ivAddContacts.gone() binding.ivAddContacts.gone()
} }

View File

@ -2,6 +2,7 @@ package com.cheng.blzb.ui.fragment.login
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.text.TextUtils import android.text.TextUtils
import android.view.View
import com.bytedance.ads.convert.event.ConvertReportHelper import com.bytedance.ads.convert.event.ConvertReportHelper
import com.example.base.common.RxBus import com.example.base.common.RxBus
import com.example.base.extensions.getColor import com.example.base.extensions.getColor
@ -22,6 +23,7 @@ import com.cheng.blzb.common.EventConstants
import com.cheng.blzb.databinding.FragmentLoginBinding import com.cheng.blzb.databinding.FragmentLoginBinding
import com.cheng.blzb.event.LoginSuccessEvent import com.cheng.blzb.event.LoginSuccessEvent
import com.cheng.blzb.event.WxLoginEvent import com.cheng.blzb.event.WxLoginEvent
import com.cheng.blzb.impl.TextWatcherImpl
import com.cheng.blzb.manager.EventReportManager import com.cheng.blzb.manager.EventReportManager
import com.cheng.blzb.manager.LoginManager import com.cheng.blzb.manager.LoginManager
import com.cheng.blzb.manager.UserConfigManager import com.cheng.blzb.manager.UserConfigManager
@ -33,6 +35,7 @@ import com.cheng.blzb.ui.dialog.LoginTipDialog
import com.cheng.blzb.ui.fragment.login.onekey.OneKeyLoginFragment import com.cheng.blzb.ui.fragment.login.onekey.OneKeyLoginFragment
import com.cheng.blzb.utils.UrlHelper import com.cheng.blzb.utils.UrlHelper
import org.jetbrains.anko.sdk27.listeners.onCheckedChange import org.jetbrains.anko.sdk27.listeners.onCheckedChange
import org.jetbrains.anko.sdk27.listeners.onClick
import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivity
/** /**
@ -49,6 +52,13 @@ class LoginFragment : BaseFragment<FragmentLoginBinding, LoginViewModel>() {
private var isWxRequesting = false private var isWxRequesting = false
private val textWatcher = object : TextWatcherImpl() {
@SuppressLint("SetTextI18n")
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
binding.ivClearText.visibility = if (TextUtils.isEmpty(s)) View.INVISIBLE else View.VISIBLE
}
}
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun initView() { override fun initView() {
super.initView() super.initView()
@ -80,6 +90,12 @@ class LoginFragment : BaseFragment<FragmentLoginBinding, LoginViewModel>() {
override fun initListener() { override fun initListener() {
super.initListener() super.initListener()
binding.edPhone.addTextChangedListener(textWatcher)
binding.ivClearText.onClick {
binding.edPhone.setText("")
}
binding.ivWxLogin.onClick { binding.ivWxLogin.onClick {
if (!api.isWXAppInstalled) { if (!api.isWXAppInstalled) {
toast("您没有安装微信客户端,请先下载安装") toast("您没有安装微信客户端,请先下载安装")
@ -264,4 +280,9 @@ class LoginFragment : BaseFragment<FragmentLoginBinding, LoginViewModel>() {
req.state = Utils.getApp().packageName + Math.random() * 1000 + "_phone" req.state = Utils.getApp().packageName + Math.random() * 1000 + "_phone"
api.sendReq(req) api.sendReq(req)
} }
override fun onDestroyView() {
binding.edPhone.removeTextChangedListener(textWatcher)
super.onDestroyView()
}
} }

View File

@ -102,7 +102,13 @@ class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBind
private fun setData() { private fun setData() {
if (goodsInfo != null) { if (goodsInfo != null) {
if (!TextUtils.isEmpty(goodsInfo!!.company.company_name)) { if (!TextUtils.isEmpty(goodsInfo!!.company.company_name)) {
binding.tvCompanyAvatar.text = goodsInfo!!.company.company_name!!.substring(0, 2) + "\n" + goodsInfo!!.company.company_name!!.substring(2, 4) if (goodsInfo!!.company.company_name!!.length >= 4) {
binding.tvCompanyAvatar.text = goodsInfo!!.company.company_name!!.substring(0, 2) + "\n" + goodsInfo!!.company.company_name!!.substring(2, 4)
} else if (goodsInfo!!.company.company_name!!.length == 3) {
binding.tvCompanyAvatar.text = goodsInfo!!.company.company_name!!.substring(0, 2) + "\n" + goodsInfo!!.company.company_name!![2]
} else {
binding.tvCompanyAvatar.text = goodsInfo!!.company.company_name
}
binding.tvCompanyName.text = goodsInfo!!.company.company_name binding.tvCompanyName.text = goodsInfo!!.company.company_name
binding.tvCompanyCity.text = goodsInfo!!.company.city_name binding.tvCompanyCity.text = goodsInfo!!.company.city_name
binding.tvExtra.text = if (!TextUtils.isEmpty(goodsInfo!!.company.extra?.toString())) goodsInfo!!.company.extra.toString() else "" binding.tvExtra.text = if (!TextUtils.isEmpty(goodsInfo!!.company.extra?.toString())) goodsInfo!!.company.extra.toString() else ""

View File

@ -31,7 +31,13 @@ class MerchantGoodsAdapter: LoadMoreAdapter<MerchantGoodsEntity>(R.layout.listit
holder.setGone(R.id.tv_company_name, true) holder.setGone(R.id.tv_company_name, true)
holder.setGone(R.id.tv_location, true) holder.setGone(R.id.tv_location, true)
if (!TextUtils.isEmpty(item.company.company_name)) { if (!TextUtils.isEmpty(item.company.company_name)) {
holder.setText(R.id.tv_company_avatar, item.company.company_name!!.take(2) + "\n" + item.company.company_name.substring(2, 4)) if (item.company.company_name!!.length >= 4) {
holder.setText(R.id.tv_company_avatar, item.company.company_name.take(2) + "\n" + item.company.company_name.substring(2, 4))
} else if (item.company.company_name.length == 3) {
holder.setText(R.id.tv_company_avatar, item.company.company_name.take(2) + "\n" + item.company.company_name[2])
} else {
holder.setText(R.id.tv_company_avatar, item.company.company_name)
}
holder.setText(R.id.tv_company_name, item.company.company_name) holder.setText(R.id.tv_company_name, item.company.company_name)
holder.setVisible(R.id.tv_company_avatar, true) holder.setVisible(R.id.tv_company_avatar, true)
holder.setVisible(R.id.tv_company_name, true) holder.setVisible(R.id.tv_company_name, true)

View File

@ -59,12 +59,16 @@ class MineFragment : BaseFragment<FragmentMineBinding, MineViewModel>() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
mViewModel.userInfo(isInit) mViewModel.userInfo(isInit)
mViewModel.getSubscriptionList()
mViewModel.getFavoriteList()
mViewModel.getHistoryList()
mViewModel.getOrderList("")
if (isInit) isInit = false if (isInit) isInit = false
} }
override fun initData() { override fun initData() {
mViewModel.getCompanyInfo()
super.initData() super.initData()
mViewModel.getCompanyInfo()
} }
override fun initListener() { override fun initListener() {
@ -118,7 +122,7 @@ class MineFragment : BaseFragment<FragmentMineBinding, MineViewModel>() {
} }
binding.tvMyPublish.onClick { binding.tvMyPublish.onClick {
PublicActivity.start(requireContext(), MyPublishFragment::class.java) PublicActivity.start(requireContext(), MyPublishFragment::class.java, Pair("type", 1))
EventReportManager.eventReport(EventConstants.JUMP_TO_MY_PUBLISH, "", "") EventReportManager.eventReport(EventConstants.JUMP_TO_MY_PUBLISH, "", "")
} }
@ -177,6 +181,22 @@ class MineFragment : BaseFragment<FragmentMineBinding, MineViewModel>() {
} }
} }
mViewModel.subscribeLiveData.observe(this) {
binding.tvPushCount.text = "${it.size}"
}
mViewModel.favoriteLiveData.observe(this) {
binding.tvFavoriteCount.text = "${it.size}"
}
mViewModel.historyLiveData.observe(this) {
binding.tvHistoryCount.text = "${it.size}"
}
mViewModel.orderLiveData.observe(this) {
binding.tvOrderCount.text = "${it.size}"
}
val authEvent = RxBus.defaultInstance.toObservable(CompanyAuthEvent::class.java).subscribe { val authEvent = RxBus.defaultInstance.toObservable(CompanyAuthEvent::class.java).subscribe {
mViewModel.getCompanyInfo() mViewModel.getCompanyInfo()
} }
@ -226,7 +246,7 @@ class MineFragment : BaseFragment<FragmentMineBinding, MineViewModel>() {
binding.tvVipName.setTextColor(getColor(R.color.color_fbcd8c)) binding.tvVipName.setTextColor(getColor(R.color.color_fbcd8c))
binding.tvExpireTime.setTextColor(getColor(R.color.color_bcac8e)) binding.tvExpireTime.setTextColor(getColor(R.color.color_bcac8e))
binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow1, 0) binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow1, 0)
binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg2) binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg1)
} else if (userInfo?.vip == "12") { } else if (userInfo?.vip == "12") {
isEnterprise = true isEnterprise = true
@ -236,7 +256,7 @@ class MineFragment : BaseFragment<FragmentMineBinding, MineViewModel>() {
binding.tvVipName.setTextColor(getColor(R.color.color_c5ffe1)) binding.tvVipName.setTextColor(getColor(R.color.color_c5ffe1))
binding.tvExpireTime.setTextColor(getColor(R.color.color_a6c8ba)) binding.tvExpireTime.setTextColor(getColor(R.color.color_a6c8ba))
binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow2, 0) binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow2, 0)
binding.ivVipBg.setBackgroundResource(R.mipmap.ic_mine_vip_bg2) binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg2)
} else if (userInfo?.vip == "11") { } else if (userInfo?.vip == "11") {
isEnterprise = true isEnterprise = true

View File

@ -1,7 +1,12 @@
package com.cheng.blzb.ui.fragment.mine package com.cheng.blzb.ui.fragment.mine
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.cheng.blzb.bean.BidDetailEntity
import com.cheng.blzb.bean.BidItemEntity
import com.cheng.blzb.bean.CompanyEntity import com.cheng.blzb.bean.CompanyEntity
import com.cheng.blzb.bean.OrderEntity
import com.cheng.blzb.bean.SubscriptionEntity
import com.cheng.blzb.bean.SubscriptionMessageEntity
import com.cheng.blzb.bean.UserEntity import com.cheng.blzb.bean.UserEntity
import com.cheng.blzb.bean.WxServiceEntity import com.cheng.blzb.bean.WxServiceEntity
import com.cheng.blzb.common.Constants import com.cheng.blzb.common.Constants
@ -17,6 +22,10 @@ import com.tencent.mm.opensdk.openapi.WXAPIFactory
class MineViewModel : BaseViewModel() { class MineViewModel : BaseViewModel() {
val userInfoLiveData = MutableLiveData<UserEntity>() val userInfoLiveData = MutableLiveData<UserEntity>()
val companyLiveData = MutableLiveData<CompanyEntity>() val companyLiveData = MutableLiveData<CompanyEntity>()
val subscribeLiveData = MutableLiveData<List<SubscriptionEntity>>()
val favoriteLiveData = MutableLiveData<List<BidItemEntity>>()
val historyLiveData = MutableLiveData<List<BidDetailEntity>>()
val orderLiveData = MutableLiveData<List<OrderEntity>>()
fun userInfo(showLoading: Boolean = false) { fun userInfo(showLoading: Boolean = false) {
if (showLoading) showDialog() if (showLoading) showDialog()
@ -45,6 +54,50 @@ class MineViewModel : BaseViewModel() {
}) })
} }
fun getSubscriptionList() {
launchOnUiTryCatch({
val response = ApiFactory.apiService.getSubscriptionList()
if (response.status) {
subscribeLiveData.postValue(response.data.items)
}
}, {
L.d(it)
})
}
fun getFavoriteList() {
launchOnUiTryCatch({
val response = ApiFactory.apiService.getFavoriteList()
if (response.status) {
favoriteLiveData.postValue(response.data.items)
}
}, {
L.d(it)
})
}
fun getHistoryList() {
launchOnUiTryCatch({
val response = ApiFactory.apiService.getViewHistoryList()
if (response.status) {
historyLiveData.postValue(response.data.items)
}
}, {
L.d(it)
})
}
fun getOrderList(status: String) {
launchOnUiTryCatch({
val response = ApiFactory.apiService.getOrderList(status)
if (response.status) {
orderLiveData.postValue(response.data)
}
}, {
L.d(it)
})
}
fun wxService() { fun wxService() {
showDialog() showDialog()
launchOnUiTryCatch({ launchOnUiTryCatch({

View File

@ -35,6 +35,7 @@ import com.example.base.decoration.GridSpaceItemDecoration
import com.example.base.decoration.SpacesItemDecoration import com.example.base.decoration.SpacesItemDecoration
import com.example.base.extensions.getColor import com.example.base.extensions.getColor
import com.example.base.extensions.gone import com.example.base.extensions.gone
import com.example.base.extensions.setStatusBarLight
import com.example.base.extensions.toast import com.example.base.extensions.toast
import com.example.base.extensions.visible import com.example.base.extensions.visible
import com.example.base.ui.BaseFragment import com.example.base.ui.BaseFragment
@ -86,6 +87,7 @@ class VipFragment : BaseFragment<FragmentVipBinding, VipViewModel>() {
override fun initView() { override fun initView() {
super.initView() super.initView()
setBackColor(R.color.white) setBackColor(R.color.white)
setStatusBarLight(false)
updatePageStyle() updatePageStyle()
checkPayType() checkPayType()

View File

@ -1,8 +1,10 @@
package com.cheng.blzb.ui.fragment.push.subscribe.add package com.cheng.blzb.ui.fragment.push.subscribe.add
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Build import android.os.Build
import android.provider.Settings
import android.text.TextUtils import android.text.TextUtils
import android.view.View import android.view.View
import android.view.animation.RotateAnimation import android.view.animation.RotateAnimation
@ -40,6 +42,7 @@ import com.google.gson.Gson
import com.google.gson.JsonObject import com.google.gson.JsonObject
import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.RequestBody.Companion.toRequestBody
class AddSubscribeFragment : BaseFragment<FragmentAddSubscribeBinding, AddSubscribeViewModel>() { class AddSubscribeFragment : BaseFragment<FragmentAddSubscribeBinding, AddSubscribeViewModel>() {
private val type by lazy { arguments?.getInt("type") ?: 1 } // 1 地区 2 数据源 private val type by lazy { arguments?.getInt("type") ?: 1 } // 1 地区 2 数据源
private var subscription: SubscriptionEntity? = null private var subscription: SubscriptionEntity? = null
@ -99,8 +102,20 @@ class AddSubscribeFragment : BaseFragment<FragmentAddSubscribeBinding, AddSubscr
} }
binding.tvNotificationState.onClick { binding.tvNotificationState.onClick {
PermissionUtils.checkNotificationPermission(requireActivity()) { PermissionUtils.checkNotificationPermission(requireActivity()) { isGranted ->
updatePushType() if (isGranted) {
updatePushType()
} else {
try {
val intent = Intent()
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
intent.putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
requireActivity().startActivity(intent)
} catch (e: Exception) {
toast("跳转失败:${e.message}")
}
}
} }
} }
@ -166,7 +181,7 @@ class AddSubscribeFragment : BaseFragment<FragmentAddSubscribeBinding, AddSubscr
binding.rvSelectedKeywords.visible() binding.rvSelectedKeywords.visible()
} }
binding.rgPushType.setOnCheckedChangeListener { group, checkedId -> binding.rgPushType.setOnCheckedChangeListener { _, checkedId ->
when (checkedId) { when (checkedId) {
R.id.rb1 -> pushType = 1 R.id.rb1 -> pushType = 1
@ -358,17 +373,19 @@ class AddSubscribeFragment : BaseFragment<FragmentAddSubscribeBinding, AddSubscr
binding.etEmail.gone() binding.etEmail.gone()
binding.layoutNotificationState.gone() binding.layoutNotificationState.gone()
} }
2 -> { 2 -> {
binding.etEmail.setText(receiver) binding.etEmail.setText(receiver)
binding.etPhone.gone() binding.etPhone.gone()
binding.etEmail.visible() binding.etEmail.visible()
binding.layoutNotificationState.gone() binding.layoutNotificationState.gone()
} }
3 -> { 3 -> {
if (NotificationHelper.isNotificationEnabled(requireContext())) { if (NotificationHelper.isNotificationEnabled(requireContext())) {
binding.tvNotificationState.text = "已授权" binding.tvNotificationState.text = "已授权"
} else { } else {
binding.tvNotificationState.text = "" binding.tvNotificationState.text = "点击授权"
} }
binding.etPhone.gone() binding.etPhone.gone()
@ -386,4 +403,13 @@ class AddSubscribeFragment : BaseFragment<FragmentAddSubscribeBinding, AddSubscr
anim.duration = 1000 anim.duration = 1000
binding.ivRefreshKeywords.startAnimation(anim) binding.ivRefreshKeywords.startAnimation(anim)
} }
override fun onResume() {
super.onResume()
if (NotificationHelper.isNotificationEnabled(requireContext())) {
binding.tvNotificationState.text = "已授权"
} else {
binding.tvNotificationState.text = "点击授权"
}
}
} }

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"> android:shape="oval">
<solid android:color="@color/color_3bbf0f" /> <solid android:color="@color/color_ff592b" />
<size <size
android:width="@dimen/dp_6" android:width="@dimen/dp_6"
android:height="@dimen/dp_6" /> android:height="@dimen/dp_6" />

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"> android:shape="oval">
<solid android:color="@color/color_ff592b" /> <solid android:color="@color/color_3bbf0f" />
<size <size
android:width="@dimen/dp_6" android:width="@dimen/dp_6"
android:height="@dimen/dp_6" /> android:height="@dimen/dp_6" />

View File

@ -18,9 +18,23 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18" android:layout_marginTop="@dimen/dp_18"
android:background="@mipmap/ic_seat_auth_bg"
app:layout_constraintTop_toBottomOf="@id/iv_close"> app:layout_constraintTop_toBottomOf="@id/iv_close">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_bg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@mipmap/ic_seat_auth_bg"
app:layout_constraintDimensionRatio="h,1125:870"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_bg" />
<TextView <TextView
android:id="@+id/tv_title" android:id="@+id/tv_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -58,11 +72,11 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:paddingTop="@dimen/dp_16" android:layout_height="wrap_content"
android:paddingBottom="@dimen/dp_16"
android:paddingStart="@dimen/dp_12" android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_16"
android:paddingEnd="@dimen/dp_12" android:paddingEnd="@dimen/dp_12"
android:layout_height="wrap_content"> android:paddingBottom="@dimen/dp_16">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_icon" android:id="@+id/iv_icon"
@ -77,10 +91,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12" android:layout_marginStart="@dimen/dp_12"
android:fontFamily="sans-serif-medium"
android:text="增加席位" android:text="增加席位"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_16"
android:fontFamily="sans-serif-medium"
app:layout_constraintBottom_toTopOf="@id/tv_origin_price" app:layout_constraintBottom_toTopOf="@id/tv_origin_price"
app:layout_constraintStart_toEndOf="@id/iv_icon" app:layout_constraintStart_toEndOf="@id/iv_icon"
app:layout_constraintTop_toTopOf="@id/iv_icon" /> app:layout_constraintTop_toTopOf="@id/iv_icon" />

View File

@ -11,15 +11,29 @@
android:layout_marginEnd="@dimen/dp_16" android:layout_marginEnd="@dimen/dp_16"
android:src="@mipmap/ic_close_dialog2" android:src="@mipmap/ic_close_dialog2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> android:layout_marginBottom="@dimen/dp_18"
app:layout_constraintBottom_toTopOf="@id/layout_content" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_content" android:id="@+id/layout_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18" app:layout_constraintBottom_toBottomOf="parent">
android:background="@mipmap/ic_seat_auth_bg"
app:layout_constraintTop_toBottomOf="@id/iv_close"> <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_bg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@mipmap/ic_seat_auth_bg"
app:layout_constraintDimensionRatio="h,1125:870"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_bg" />
<TextView <TextView
android:id="@+id/tv_title" android:id="@+id/tv_title"
@ -58,12 +72,24 @@
android:maxLength="11" android:maxLength="11"
android:maxLines="1" android:maxLines="1"
android:paddingStart="@dimen/dp_12" android:paddingStart="@dimen/dp_12"
android:paddingEnd="@dimen/dp_12" android:paddingEnd="@dimen/dp_50"
android:singleLine="true" android:singleLine="true"
android:textColorHint="@color/color_bcbcbc" android:textColorHint="@color/color_bcbcbc"
android:textSize="@dimen/sp_15" android:textSize="@dimen/sp_15"
app:layout_constraintTop_toBottomOf="@id/tv_desc" /> app:layout_constraintTop_toBottomOf="@id/tv_desc" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_clear_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_14"
android:padding="@dimen/dp_3"
android:src="@mipmap/ic_clear_text"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/et_phone"
app:layout_constraintEnd_toEndOf="@id/et_phone"
app:layout_constraintTop_toTopOf="@id/et_phone" />
<TextView <TextView
android:id="@+id/tv_tip" android:id="@+id/tv_tip"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -53,13 +53,25 @@
android:inputType="number" android:inputType="number"
android:maxLength="11" android:maxLength="11"
android:paddingStart="@dimen/dp_14" android:paddingStart="@dimen/dp_14"
android:paddingEnd="@dimen/dp_14" android:paddingEnd="@dimen/dp_50"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textColorHint="@color/color_bcbcbc" android:textColorHint="@color/color_bcbcbc"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_16"
app:layout_constraintDimensionRatio="h,300:54" app:layout_constraintDimensionRatio="h,300:54"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_clear_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_14"
android:padding="@dimen/dp_3"
android:visibility="gone"
android:src="@mipmap/ic_clear_text"
app:layout_constraintBottom_toBottomOf="@id/ed_phone"
app:layout_constraintEnd_toEndOf="@id/ed_phone"
app:layout_constraintTop_toTopOf="@id/ed_phone" />
<androidx.appcompat.widget.AppCompatEditText <androidx.appcompat.widget.AppCompatEditText
android:id="@+id/ed_code" android:id="@+id/ed_code"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -44,6 +44,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="276dp" android:layout_marginTop="276dp"
android:fillViewport="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="@id/viewPager"> app:layout_constraintTop_toTopOf="@id/viewPager">

View File

@ -377,8 +377,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_40" android:layout_marginStart="@dimen/dp_40"
android:overScrollMode="never" android:overScrollMode="never"
android:paddingTop="@dimen/dp_16"
android:paddingBottom="@dimen/dp_16"
android:visibility="gone" android:visibility="gone"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintEnd_toStartOf="@id/iv_add_contacts" app:layout_constraintEnd_toStartOf="@id/iv_add_contacts"

View File

@ -20,7 +20,7 @@
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:tab_deselect_color="@color/color_1a1a1a" app:tab_deselect_color="@color/color_1a1a1a"
app:tab_enable_gradient_text_size="false" app:tab_enable_gradient_text_size="false"
app:tab_enable_text_bold="true" app:tab_enable_text_bold="false"
app:tab_item_auto_equ_width="false" app:tab_item_auto_equ_width="false"
app:tab_select_color="@color/color_1a1a1a" app:tab_select_color="@color/color_1a1a1a"
app:tab_text_max_size="@dimen/sp_18" app:tab_text_max_size="@dimen/sp_18"