package com.jld.vod.view import android.widget.Button import android.widget.ImageView import android.widget.TextView import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.lifecycle.observe import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.jld.kotilntest.room.adapter.OrderFoodAllAdapter import com.jld.kotilntest.room.adapter.OrderFoodItemAdapter import com.jld.vod.R import com.jld.vod.base.BaseActivity import com.jld.vod.model.bean.OrderFoodAllBean import com.jld.vod.model.bean.OrderFoodItemBean import com.jld.vod.utils.AppUtil import com.jld.vod.utils.LogUtils import com.jld.vod.utils.SharedPrefUtils import com.jld.vod.viewmodel.OrderFoodAllViewModel import kotlinx.coroutines.flow.collectLatest class OrderActivity : BaseActivity() { private lateinit var orderFoodAllViewModel: OrderFoodAllViewModel private lateinit var mGridRecyclerView: RecyclerView private lateinit var mListRecyclerView: RecyclerView private lateinit var iv_order_back:ImageView private lateinit var totalprice:TextView private lateinit var bt_sure_shopping:Button private lateinit var bt_my_order:Button private var mOrderFoodAllBean:OrderFoodAllBean?= null override fun getLayoutId(): Int { return R.layout.activity_order } override fun initView() { super.initView() mGridRecyclerView = findViewById(R.id.rl_order_grid) mListRecyclerView = findViewById(R.id.rl_order_list) iv_order_back = findViewById(R.id.iv_order_back) bt_sure_shopping = findViewById(R.id.bt_sure_shopping) totalprice = findViewById(R.id.totalprice) bt_my_order = findViewById(R.id.bt_my_order) //初始化viewmodel orderFoodAllViewModel = ViewModelProvider.AndroidViewModelFactory(application).create(OrderFoodAllViewModel::class.java) //商品列表 val gridlayoutManager = GridLayoutManager(this, 3) mGridRecyclerView!!.layoutManager = gridlayoutManager val gridAdapter = OrderFoodAllAdapter() mGridRecyclerView!!.adapter = gridAdapter //购物车列表 val listAdapter = OrderFoodItemAdapter() mListRecyclerView.setLayoutManager(LinearLayoutManager(this)); mListRecyclerView!!.adapter = listAdapter lifecycleScope.launchWhenCreated { orderFoodAllViewModel.orderfooditemList .collectLatest { pagingData -> listAdapter.submitData(pagingData) } } //获取所有商品列表 val lid = SharedPrefUtils.getString(this,"language_lid") val mid = SharedPrefUtils.getString(this,"RES_ORDER") LogUtils.logD("lid"+lid+"mid"+mid) if (lid != "" && mid !="") { lifecycleScope.launchWhenCreated { orderFoodAllViewModel.findOrderFoodAll(mid.toLong(), lid.toLong()) .collectLatest { pagingData -> gridAdapter.submitData(pagingData) } } } orderFoodAllViewModel.sumPrice()//总价 /** * 选择商品 */ gridAdapter.setOnOrderClickListener(object :OrderFoodAllAdapter.IOrderItemClickListener{ override fun onItemClickListener(food: OrderFoodAllBean?) { if (food != null) { orderFoodAllViewModel.isAddShopping(food.oid) mOrderFoodAllBean = food } } }) /** * 添加商品至购物车 */ orderFoodAllViewModel.isAdd.observe(this@OrderActivity){res-> if (res!= null) { if (res == true) { orderFoodAllViewModel.updateAddoNum(mOrderFoodAllBean!!.oid,mOrderFoodAllBean!!.price.toFloat()!!) }else if(res == false) { val item = OrderFoodItemBean(0,mOrderFoodAllBean!!.createTime, mOrderFoodAllBean!!.createUser, mOrderFoodAllBean!!.delState, mOrderFoodAllBean!!.imgUrl, mOrderFoodAllBean!!.mid, mOrderFoodAllBean!!.oName, mOrderFoodAllBean!!.oid, mOrderFoodAllBean!!.price, mOrderFoodAllBean!!.updateTime, mOrderFoodAllBean!!.updateUser, mOrderFoodAllBean!!.userId,1,mOrderFoodAllBean!!.price) orderFoodAllViewModel.insertAll(item) } } } /** * 增加 */ listAdapter.setOnAddClickListener(object :OrderFoodItemAdapter.IAddItemClickListener{ override fun onItemClickListener(oid: Long, price: String) { orderFoodAllViewModel.updateAddoNum(oid,price.toFloat()) } }) /** * 减少 */ listAdapter.setOnMinusClickListener(object :OrderFoodItemAdapter.IMinusItemClickListener{ override fun onItemClickListener(oid: Long, price: String) { orderFoodAllViewModel.updateoMinusNum(oid,price.toFloat()) } }) /** * 总价展示 */ orderFoodAllViewModel.sumTotalPrice.observe(this@OrderActivity){res-> totalprice.setText(getString(R.string.totalprice)+": $"+res) } /** * 确认购买 */ bt_sure_shopping.setOnClickListener { orderFoodAllViewModel.getAllOrderFood()//获取全部订单 } /** * 开始下单 */ orderFoodAllViewModel.allOrderFood.observe(this){res-> if (res != null) { val sb = StringBuilder() for ((index,e) in res.withIndex()) { if (index == 0) { sb.append("${e.oid}:"+"${e.price}:"+"${e.oNum}") }else{ sb.append(",${e.oid}:"+"${e.price}:"+"${e.oNum}") } } orderFoodAllViewModel.orderFoodShop(sb.toString(), AppUtil.getDeviceSN()) } } /** * 返回状态 */ orderFoodAllViewModel.ordersListliveData.observe(this){res-> //下单成功 if (res) { orderFoodAllViewModel.delShopping()//清空购物车 totalprice.setText(getString(R.string.totalprice)+": $ 0") go() } } bt_my_order.setOnClickListener { go() } } override fun initEvent() { super.initEvent() iv_order_back.setOnClickListener { this.onBackPressed() } } }