左晓为主开发手持机充值管理机
zuojincheng
2025-04-03 d0a0e8e242e293ad35dfbee1217f1103302818cd
generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt
File was renamed from generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt
@@ -6,12 +6,14 @@
import com.dayu.baselibrary.utils.ToastUtil
import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
import com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_IMAGE
import com.dayu.general.BaseApplication
import com.dayu.general.adapter.CardListAdapter
import com.dayu.general.bean.net.SearchCardResult
import com.dayu.general.databinding.ActivityCardListBinding
import com.dayu.general.view.CardSearchDialog
import com.dayu.general.net.ApiManager
import com.dayu.general.net.BaseResponse
import com.dayu.general.view.CardRefundDialog
import com.dayu.general.view.SearchDialog
import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
@@ -20,21 +22,21 @@
 * @date: 2023/3/31
 * @description: 卡片列表界面
 */
class CardListActivity : BaseActivity() {
class SearchCardListActivity : BaseActivity() {
    var binding: ActivityCardListBinding? = null
    private var cardAdapter: CardListAdapter? = null
    var searchDialog: CardSearchDialog? = null
    var searchDialog: SearchDialog? = null
    // 分页相关变量
    private var currentPage = 1
    private val pageSize = 20
    private var hasMoreData = true
    // 保存当前搜索条件
    private var currentFarmerId = ""
    private var currentFarmerName = ""
    private var currentCardNumber = ""
    private var currentClientNumber = ""
    private var currentClientName = ""
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
@@ -46,23 +48,23 @@
    }
    fun initView() {
        searchDialog = CardSearchDialog(this)
        searchDialog = SearchDialog(this)
        searchDialog?.show()
        binding?.titleBar?.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() }
        // 设置搜索监听器
        searchDialog?.setOnSearchListener(object : CardSearchDialog.OnSearchListener {
            override fun onSearch(cardNumber: String, clientNumber: String, clientName: String) {
        searchDialog?.setOnSearchListener(object : SearchDialog.OnSearchListener {
            override fun onSearch(farmerId: String, farmerName: String, cardNumber: String) {
                // 保存当前搜索条件
                currentCardNumber = cardNumber
                currentClientNumber = clientNumber
                currentClientName = clientName
                currentFarmerId = farmerId
                currentFarmerName = farmerName
                // 重置分页状态
                currentPage = 1
                hasMoreData = true
                // 执行搜索
                searchCards(cardNumber, clientNumber, clientName, true)
                searchCards(currentFarmerId, currentFarmerName, currentCardNumber, true)
            }
        })
        binding?.titleBar?.setOnItemclickListner(ClickType_RIGHT_IMAGE) {
@@ -72,23 +74,31 @@
    }
    private fun setupRecyclerView() {
        cardAdapter = CardListAdapter()
        cardAdapter = CardListAdapter(this)
        binding?.recyclerView?.apply {
            layoutManager = LinearLayoutManager(this@CardListActivity)
            layoutManager = LinearLayoutManager(this@SearchCardListActivity)
            adapter = cardAdapter
        }
        // 设置列表项点击事件
        cardAdapter?.setOnItemClickListener { card ->
            // 处理卡片点击事件
            ToastUtil.show("已选择卡片:${card.cardNum}")
            // 这里可以添加跳转到卡片详情页面的逻辑
            // val intent = Intent(this, CardDetailActivity::class.java)
            // intent.putExtra("cardNum", card.cardNum)
            // startActivity(intent)
            // 显示退款对话框
            val refundDialog = CardRefundDialog(this)
            refundDialog.show() // 先显示对话框
            refundDialog.setUserInfo(
                card.clientName.toString(),
                card.cardNum.toString(),
                card.money.toString()
            )
            refundDialog.setOnConfirmListener {  refundAmount, remark ->
                // TODO: 处理退款逻辑
                lossPost(card.idCard.toString())
            }
        }
    }
    private fun setupRefreshLayout() {
        binding?.refreshLayout?.apply {
            // 设置刷新和加载更多监听器
@@ -97,14 +107,14 @@
                    // 重置页码并刷新数据
                    currentPage = 1
                    hasMoreData = true
                    searchCards(currentCardNumber, currentClientNumber, currentClientName, true)
                    searchCards(currentFarmerId, currentFarmerName, currentCardNumber, true)
                }
                override fun onLoadMore(refreshLayout: RefreshLayout) {
                    // 如果还有更多数据,加载下一页
                    if (hasMoreData) {
                        currentPage++
                        searchCards(currentCardNumber, currentClientNumber, currentClientName, false)
                        searchCards(currentFarmerId, currentFarmerName, currentCardNumber, false)
                    } else {
                        // 完成加载并提示没有更多数据
                        refreshLayout.finishLoadMore(500, true, false)
@@ -126,21 +136,26 @@
     * @param clientName 客户姓名
     * @param isRefresh 是否为刷新操作
     */
    private fun searchCards(cardNumber: String, clientNumber: String, clientName: String, isRefresh: Boolean = true) {
    private fun searchCards(
        farmerId: String,
        farmerName: String,
        cardNumber: String,
        isRefresh: Boolean = true
    ) {
        val map = mutableMapOf<String, Any>()
        if (cardNumber.isNotEmpty()) {
            map["cardNum"] = cardNumber
        }
        if (clientNumber.isNotEmpty()) {
            map["clientNum"] = clientNumber
        if (farmerId.isNotEmpty()) {
            map["clientNum"] = farmerId
        }
        if (clientName.isNotEmpty()) {
            map["clientName"] = clientName
        if (farmerName.isNotEmpty()) {
            map["clientName"] = farmerName
        }
        // 添加分页参数
        map["pageCurr"] = currentPage
        map["pageSize"] = pageSize
@@ -155,7 +170,7 @@
                override fun onNext(t: BaseResponse<SearchCardResult>) {
                    // 完成刷新或加载动作
                    finishRefreshOrLoad(isRefresh)
                    if (t.success) {
                        // 处理搜索成功的情况
                        val result = t.content
@@ -168,7 +183,7 @@
                                } else {
                                    cardAdapter?.addData(result.obj)
                                }
                                // 判断是否还有更多数据:根据当前页码和总页数判断
                                hasMoreData = currentPage < result.pageTotal
                            } else {
@@ -201,7 +216,40 @@
            }
        )
    }
    private fun lossPost(cardNumber: String) {
        val map = mutableMapOf<String, Any>()
        map["cardNum"] = cardNumber
        map["operator"] = BaseApplication.userId
        ApiManager.getInstance().requestGetLoading(
            this,
            "/sell/card/loss",
            SearchCardResult::class.java,
            map,
            object : SubscriberListener<BaseResponse<SearchCardResult>>() {
                override fun onNext(t: BaseResponse<SearchCardResult>) {
                    if (t.success) {
                    } else {
                        // 处理搜索失败的情况
                        ToastUtil.show(t.msg)
                    }
                }
                override fun onError(e: Throwable?) {
                    super.onError(e)
                    // 完成刷新或加载动作
                    ToastUtil.show("搜索失败: ${e?.message ?: "未知错误"}")
                }
            }
        )
    }
    /**
     * 完成刷新或加载操作
     * @param isRefresh 是否为刷新操作
@@ -213,4 +261,9 @@
            binding?.refreshLayout?.finishLoadMore(true)
        }
    }
    override fun onDestroy() {
        super.onDestroy()
        searchDialog?.dismiss()
    }
}