OrderActivity.kt 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package com.jld.vod.view
  2. import android.widget.Button
  3. import android.widget.ImageView
  4. import android.widget.TextView
  5. import androidx.lifecycle.ViewModelProvider
  6. import androidx.lifecycle.lifecycleScope
  7. import androidx.lifecycle.observe
  8. import androidx.recyclerview.widget.GridLayoutManager
  9. import androidx.recyclerview.widget.LinearLayoutManager
  10. import androidx.recyclerview.widget.RecyclerView
  11. import com.jld.kotilntest.room.adapter.OrderFoodAllAdapter
  12. import com.jld.kotilntest.room.adapter.OrderFoodItemAdapter
  13. import com.jld.vod.R
  14. import com.jld.vod.base.BaseActivity
  15. import com.jld.vod.model.bean.OrderFoodAllBean
  16. import com.jld.vod.model.bean.OrderFoodItemBean
  17. import com.jld.vod.utils.AppUtil
  18. import com.jld.vod.utils.LogUtils
  19. import com.jld.vod.utils.SharedPrefUtils
  20. import com.jld.vod.viewmodel.OrderFoodAllViewModel
  21. import kotlinx.coroutines.flow.collectLatest
  22. class OrderActivity : BaseActivity() {
  23. private lateinit var orderFoodAllViewModel: OrderFoodAllViewModel
  24. private lateinit var mGridRecyclerView: RecyclerView
  25. private lateinit var mListRecyclerView: RecyclerView
  26. private lateinit var iv_order_back:ImageView
  27. private lateinit var totalprice:TextView
  28. private lateinit var bt_sure_shopping:Button
  29. private lateinit var bt_my_order:Button
  30. private var mOrderFoodAllBean:OrderFoodAllBean?= null
  31. override fun getLayoutId(): Int {
  32. return R.layout.activity_order
  33. }
  34. override fun initView() {
  35. super.initView()
  36. mGridRecyclerView = findViewById(R.id.rl_order_grid)
  37. mListRecyclerView = findViewById(R.id.rl_order_list)
  38. iv_order_back = findViewById(R.id.iv_order_back)
  39. bt_sure_shopping = findViewById(R.id.bt_sure_shopping)
  40. totalprice = findViewById(R.id.totalprice)
  41. bt_my_order = findViewById(R.id.bt_my_order)
  42. //初始化viewmodel
  43. orderFoodAllViewModel = ViewModelProvider.AndroidViewModelFactory(application).create(OrderFoodAllViewModel::class.java)
  44. //商品列表
  45. val gridlayoutManager = GridLayoutManager(this, 3)
  46. mGridRecyclerView!!.layoutManager = gridlayoutManager
  47. val gridAdapter = OrderFoodAllAdapter()
  48. mGridRecyclerView!!.adapter = gridAdapter
  49. //购物车列表
  50. val listAdapter = OrderFoodItemAdapter()
  51. mListRecyclerView.setLayoutManager(LinearLayoutManager(this));
  52. mListRecyclerView!!.adapter = listAdapter
  53. lifecycleScope.launchWhenCreated {
  54. orderFoodAllViewModel.orderfooditemList
  55. .collectLatest { pagingData ->
  56. listAdapter.submitData(pagingData)
  57. }
  58. }
  59. //获取所有商品列表
  60. val lid = SharedPrefUtils.getString(this,"language_lid")
  61. val mid = SharedPrefUtils.getString(this,"RES_ORDER")
  62. LogUtils.logD("lid"+lid+"mid"+mid)
  63. if (lid != "" && mid !="") {
  64. lifecycleScope.launchWhenCreated {
  65. orderFoodAllViewModel.findOrderFoodAll(mid.toLong(), lid.toLong())
  66. .collectLatest { pagingData ->
  67. gridAdapter.submitData(pagingData)
  68. }
  69. }
  70. }
  71. orderFoodAllViewModel.sumPrice()//总价
  72. /**
  73. * 选择商品
  74. */
  75. gridAdapter.setOnOrderClickListener(object :OrderFoodAllAdapter.IOrderItemClickListener{
  76. override fun onItemClickListener(food: OrderFoodAllBean?) {
  77. if (food != null)
  78. {
  79. orderFoodAllViewModel.isAddShopping(food.oid)
  80. mOrderFoodAllBean = food
  81. }
  82. }
  83. })
  84. /**
  85. * 添加商品至购物车
  86. */
  87. orderFoodAllViewModel.isAdd.observe(this@OrderActivity){res->
  88. if (res!= null)
  89. {
  90. if (res == true)
  91. {
  92. orderFoodAllViewModel.updateAddoNum(mOrderFoodAllBean!!.oid,mOrderFoodAllBean!!.price.toFloat()!!)
  93. }else if(res == false)
  94. {
  95. val item = OrderFoodItemBean(0,mOrderFoodAllBean!!.createTime, mOrderFoodAllBean!!.createUser, mOrderFoodAllBean!!.delState, mOrderFoodAllBean!!.imgUrl,
  96. mOrderFoodAllBean!!.mid, mOrderFoodAllBean!!.oName, mOrderFoodAllBean!!.oid, mOrderFoodAllBean!!.price, mOrderFoodAllBean!!.updateTime,
  97. mOrderFoodAllBean!!.updateUser, mOrderFoodAllBean!!.userId,1,mOrderFoodAllBean!!.price)
  98. orderFoodAllViewModel.insertAll(item)
  99. }
  100. }
  101. }
  102. /**
  103. * 增加
  104. */
  105. listAdapter.setOnAddClickListener(object :OrderFoodItemAdapter.IAddItemClickListener{
  106. override fun onItemClickListener(oid: Long, price: String) {
  107. orderFoodAllViewModel.updateAddoNum(oid,price.toFloat())
  108. }
  109. })
  110. /**
  111. * 减少
  112. */
  113. listAdapter.setOnMinusClickListener(object :OrderFoodItemAdapter.IMinusItemClickListener{
  114. override fun onItemClickListener(oid: Long, price: String) {
  115. orderFoodAllViewModel.updateoMinusNum(oid,price.toFloat())
  116. }
  117. })
  118. /**
  119. * 总价展示
  120. */
  121. orderFoodAllViewModel.sumTotalPrice.observe(this@OrderActivity){res->
  122. totalprice.setText(getString(R.string.totalprice)+": $"+res)
  123. }
  124. /**
  125. * 确认购买
  126. */
  127. bt_sure_shopping.setOnClickListener {
  128. orderFoodAllViewModel.getAllOrderFood()//获取全部订单
  129. }
  130. /**
  131. * 开始下单
  132. */
  133. orderFoodAllViewModel.allOrderFood.observe(this){res->
  134. if (res != null)
  135. {
  136. val sb = StringBuilder()
  137. for ((index,e) in res.withIndex())
  138. {
  139. if (index == 0)
  140. {
  141. sb.append("${e.oid}:"+"${e.price}:"+"${e.oNum}")
  142. }else{
  143. sb.append(",${e.oid}:"+"${e.price}:"+"${e.oNum}")
  144. }
  145. }
  146. orderFoodAllViewModel.orderFoodShop(sb.toString(), AppUtil.getDeviceSN())
  147. }
  148. }
  149. /**
  150. * 返回状态
  151. */
  152. orderFoodAllViewModel.ordersListliveData.observe(this){res->
  153. //下单成功
  154. if (res)
  155. {
  156. orderFoodAllViewModel.delShopping()//清空购物车
  157. totalprice.setText(getString(R.string.totalprice)+": $ 0")
  158. go<MyOrderActivity>()
  159. }
  160. }
  161. bt_my_order.setOnClickListener {
  162. go<MyOrderActivity>()
  163. }
  164. }
  165. override fun initEvent() {
  166. super.initEvent()
  167. iv_order_back.setOnClickListener {
  168. this.onBackPressed()
  169. }
  170. }
  171. }