添加订单发票状态

This commit is contained in:
wangyu 2026-01-16 10:51:56 +08:00
parent 5ac719d5bb
commit 19c8c578c4
7 changed files with 124 additions and 17 deletions

View File

@ -36,4 +36,7 @@ class ConfigEntity {
@SerializedName("client.pay.type") //全局支付方式 @SerializedName("client.pay.type") //全局支付方式
var payType: List<String> = emptyList() var payType: List<String> = emptyList()
@SerializedName("client.invoice.urgent.interval.minutes") //加急开票间隔分钟数
var invoiceIntervalMinutes: String? = null
} }

View File

@ -3,11 +3,12 @@ package com.cheng.blzb.bean
import java.io.Serializable import java.io.Serializable
data class OrderEntity( data class OrderEntity(
val id: String,
val create_time: String, val create_time: String,
val goods_name: String, val goods_name: String,
val id: String,
val invoice_major: Boolean, val invoice_major: Boolean,
val invoice_status: String, val invoice_status: String,
val invoice_url: String,
val out_trade_no: String, val out_trade_no: String,
val pay_params: String, val pay_params: String,
val pay_time: String, val pay_time: String,

View File

@ -85,6 +85,7 @@ object UserConfigManager {
saveAdSwitch(data.config!!.adSwitch) saveAdSwitch(data.config!!.adSwitch)
saveServicePhoneList(data.config!!.servicePhoneList) saveServicePhoneList(data.config!!.servicePhoneList)
savePayType(data.config!!.payType) savePayType(data.config!!.payType)
saveInvoiceIntervalTime(data.config!!.invoiceIntervalMinutes)
} }
} catch (e : Exception) { } catch (e : Exception) {
e.printStackTrace() e.printStackTrace()
@ -229,6 +230,17 @@ object UserConfigManager {
return emptyList() return emptyList()
} }
/**
* 加急开票间隔时间
*/
private fun saveInvoiceIntervalTime(minutes: String?) {
MMKVUtils.put("invoice_interval_time", minutes)
}
fun getInvoiceIntervalTime(): String? {
return MMKVUtils.getString("invoice_interval_time")
}
/** /**
* 搜索排序 * 搜索排序
*/ */

View File

@ -3,10 +3,12 @@ package com.cheng.blzb.ui.fragment.mine.order.invoice
import android.graphics.Color import android.graphics.Color
import android.os.Build import android.os.Build
import android.text.TextUtils import android.text.TextUtils
import android.view.View
import com.cheng.blzb.R import com.cheng.blzb.R
import com.cheng.blzb.bean.OrderEntity import com.cheng.blzb.bean.OrderEntity
import com.cheng.blzb.databinding.FragmentInvoiceBinding import com.cheng.blzb.databinding.FragmentInvoiceBinding
import com.cheng.blzb.event.OrderEvent import com.cheng.blzb.event.OrderEvent
import com.efs.sdk.memleaksdk.monitor.internal.bi
import com.example.base.common.RxBus import com.example.base.common.RxBus
import com.example.base.extensions.gone import com.example.base.extensions.gone
import com.example.base.extensions.onClick import com.example.base.extensions.onClick
@ -37,6 +39,9 @@ class InvoiceFragment : BaseFragment<FragmentInvoiceBinding, InvoiceViewModel>()
arguments?.getSerializable("item") as? OrderEntity arguments?.getSerializable("item") as? OrderEntity
} }
binding.rb2.visibility = if (orderInfo!!.invoice_major) View.VISIBLE else View.GONE
binding.tv2.visibility = if (orderInfo!!.invoice_major) View.VISIBLE else View.GONE
binding.tvAmount.text = DecimalFormat("0.00").format(orderInfo!!.total_fee.toFloat()) binding.tvAmount.text = DecimalFormat("0.00").format(orderInfo!!.total_fee.toFloat())
} }

View File

@ -1,11 +1,13 @@
package com.cheng.blzb.ui.fragment.mine.order.list package com.cheng.blzb.ui.fragment.mine.order.list
import android.graphics.Color
import android.text.TextUtils import android.text.TextUtils
import androidx.core.graphics.toColorInt
import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.cheng.blzb.R import com.cheng.blzb.R
import com.cheng.blzb.bean.OrderEntity import com.cheng.blzb.bean.OrderEntity
import com.cheng.blzb.manager.UserConfigManager
import com.cheng.blzb.utils.DateUtils
import com.cheng.blzb.widget.CommonShapeView import com.cheng.blzb.widget.CommonShapeView
import java.text.DecimalFormat import java.text.DecimalFormat
@ -41,38 +43,72 @@ class OrderAdapter : BaseQuickAdapter<OrderEntity, BaseViewHolder>(R.layout.list
when (item.status) { when (item.status) {
"1" -> { "1" -> {
status.text = "待支付" status.text = "待支付"
status.setTextColor(Color.parseColor("#FF4C4C")) status.setTextColor("#FF4C4C".toColorInt())
status.setBgColor(Color.parseColor("#FFEDED")) status.setBgColor("#FFEDED".toColorInt())
if (item.pay_type == "bank") { if (item.pay_type == "bank") {
holder.setVisible(R.id.btn_certificate, true) holder.setVisible(R.id.btn_certificate, true)
} }
} }
"2" -> { "2" -> {
when (item.invoice_status) {
"1" -> { //1未开票 2开票中 3催开票4开票完成
status.text = "已支付" status.text = "已支付"
status.setTextColor(Color.parseColor("#2090FE")) status.setTextColor("#2090FE".toColorInt())
status.setBgColor(Color.parseColor("#E8F3FE")) status.setBgColor("#E8F3FE".toColorInt())
if (item.invoice_status == "1") {
holder.setText(R.id.btn_invoice, "开具发票")
holder.setVisible(R.id.btn_invoice, true) holder.setVisible(R.id.btn_invoice, true)
} }
"2" -> {
status.text = "开票中"
status.setTextColor("#FF9B2F".toColorInt())
status.setBgColor("#1AFF9B2F".toColorInt())
val intervalMinutes = UserConfigManager.getInvoiceIntervalTime()
val intervalTime = if (!TextUtils.isEmpty(intervalMinutes)) {
intervalMinutes!!.toInt() * 60 * 1000L
} else {
3 * 24 * 60 * 60 * 1000L
}
val payTime = DateUtils.strDateToLong(item.pay_time, "yyyy-MM-dd HH:mm:ss")
if (intervalTime + payTime <= System.currentTimeMillis()) {
holder.setText(R.id.btn_invoice, "加急开票")
holder.setVisible(R.id.btn_invoice, true)
}
}
"3" -> {
status.text = "开票中"
status.setTextColor("#FF9B2F".toColorInt())
status.setBgColor("#1AFF9B2F".toColorInt())
}
"4" -> {
status.text = "已开票"
status.setTextColor("#125FFE".toColorInt())
status.setBgColor("#E7EFFE".toColorInt())
holder.setText(R.id.btn_invoice, "查看发票")
holder.setVisible(R.id.btn_invoice, true)
}
}
} }
"3" -> { "3" -> {
status.text = "已退款" status.text = "已退款"
status.setTextColor(Color.parseColor("#CCCCCC")) status.setTextColor("#CCCCCC".toColorInt())
status.setBgColor(Color.parseColor("#EEEEEE")) status.setBgColor("#EEEEEE".toColorInt())
} }
"4" -> { "4" -> {
status.text = "已取消" status.text = "已取消"
status.setTextColor(Color.parseColor("#CCCCCC")) status.setTextColor("#CCCCCC".toColorInt())
status.setBgColor(Color.parseColor("#EEEEEE")) status.setBgColor("#EEEEEE".toColorInt())
} }
"5" -> { "5" -> {
status.text = "待审核" status.text = "待审核"
status.setTextColor(Color.parseColor("#FF9B2F")) status.setTextColor("#FF9B2F".toColorInt())
status.setBgColor(Color.parseColor("#1AFF9B2F")) status.setBgColor("#1AFF9B2F".toColorInt())
} }
} }
} }

View File

@ -4,10 +4,14 @@ import android.os.Bundle
import com.cheng.blzb.R import com.cheng.blzb.R
import com.cheng.blzb.databinding.FragmentOrderListBinding import com.cheng.blzb.databinding.FragmentOrderListBinding
import com.cheng.blzb.event.OrderEvent import com.cheng.blzb.event.OrderEvent
import com.cheng.blzb.manager.DialogEnum
import com.cheng.blzb.ui.activity.PublicActivity import com.cheng.blzb.ui.activity.PublicActivity
import com.cheng.blzb.ui.dialog.TipDialog
import com.cheng.blzb.ui.fragment.mine.order.cert.CertificateFragment import com.cheng.blzb.ui.fragment.mine.order.cert.CertificateFragment
import com.cheng.blzb.ui.fragment.mine.order.invoice.InvoiceFragment import com.cheng.blzb.ui.fragment.mine.order.invoice.InvoiceFragment
import com.example.base.browser.BrowserActivity
import com.example.base.common.RxBus import com.example.base.common.RxBus
import com.example.base.extensions.toast
import com.example.base.ui.BaseFragment import com.example.base.ui.BaseFragment
import com.example.base.widget.EmptyView import com.example.base.widget.EmptyView
import com.example.base.widget.PageStatus import com.example.base.widget.PageStatus
@ -51,9 +55,28 @@ class OrderListFragment : BaseFragment<FragmentOrderListBinding, OrderListViewMo
mAdapter.setOnItemChildClickListener { _, view, i -> mAdapter.setOnItemChildClickListener { _, view, i ->
val item = mAdapter.getItem(i) val item = mAdapter.getItem(i)
when (view.id) { when (view.id) {
R.id.btn_invoice -> { R.id.btn_invoice -> { //1未开票 2开票中 3催开票4开票完成
when (item.invoice_status) {
"1" -> {
PublicActivity.start(requireContext(), InvoiceFragment::class.java, Pair("item", item)) PublicActivity.start(requireContext(), InvoiceFragment::class.java, Pair("item", item))
} }
"2" -> {
val f = TipDialog.newInstance("温馨提示", "发票正在开具中,确定要加急开票吗?")
f.setOnSelectListener {
if (it == DialogEnum.CLICK_OK) {
mViewModel.updateOrder(item.id)
}
}
f.show(childFragmentManager, TipDialog::class.java.simpleName)
}
"3" -> {
}
"4" -> {
BrowserActivity.start(requireContext(), "查看发票", item.invoice_url)
}
}
}
R.id.btn_certificate -> { R.id.btn_certificate -> {
PublicActivity.start(requireContext(), CertificateFragment::class.java, Pair("orderId", item.id)) PublicActivity.start(requireContext(), CertificateFragment::class.java, Pair("orderId", item.id))
@ -74,6 +97,11 @@ class OrderListFragment : BaseFragment<FragmentOrderListBinding, OrderListViewMo
binding.mRefreshLayout.finishRefresh() binding.mRefreshLayout.finishRefresh()
} }
mViewModel.updateLiveData.observe(this) {
toast("已催促")
RxBus.defaultInstance.post(OrderEvent())
}
val orderEvent = RxBus.defaultInstance.toObservable(OrderEvent::class.java).subscribe { val orderEvent = RxBus.defaultInstance.toObservable(OrderEvent::class.java).subscribe {
binding.mRefreshLayout.autoRefresh() binding.mRefreshLayout.autoRefresh()
} }

View File

@ -6,9 +6,13 @@ import com.cheng.blzb.net.ApiFactory
import com.example.base.extensions.toast import com.example.base.extensions.toast
import com.example.base.utils.L import com.example.base.utils.L
import com.example.base.viewmodel.BaseViewModel import com.example.base.viewmodel.BaseViewModel
import com.google.gson.JsonObject
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
class OrderListViewModel : BaseViewModel() { class OrderListViewModel : BaseViewModel() {
val orderLiveData = MutableLiveData<List<OrderEntity>>() val orderLiveData = MutableLiveData<List<OrderEntity>>()
val updateLiveData = MutableLiveData<Any>()
fun getOrderList(status: String) { fun getOrderList(status: String) {
showDialog() showDialog()
@ -24,4 +28,22 @@ class OrderListViewModel : BaseViewModel() {
L.d(it) L.d(it)
}) })
} }
fun updateOrder(orderId: String) {
showDialog()
launchOnUiTryCatch({
val jsonObject = JsonObject()
jsonObject.addProperty("order_id", orderId)
jsonObject.addProperty("invoice_status", "3")
val response = ApiFactory.apiService.updateOrder(jsonObject.toString().toRequestBody())
if (response.status) {
updateLiveData.postValue(Any())
} else toast(response.message, true)
dismissDialog()
}, {
dismissDialog()
setError(it)
L.d(it)
})
}
} }