Kaynağa Gözat

新订单通知

zhaofuxin 4 yıl önce
ebeveyn
işleme
bb6622733d

+ 9 - 0
app/src/main/java/com/jld/vod/model/event/NewOrderEvent.java

@@ -0,0 +1,9 @@
+package com.jld.vod.model.event;
+
+public class NewOrderEvent {
+    public String data;
+    public NewOrderEvent(String data)
+    {
+        this.data = data;
+    }
+}

+ 20 - 1
app/src/main/java/com/jld/vod/repository/HostAllOrdersPagingSource.kt

@@ -5,16 +5,35 @@ import androidx.paging.PagingSource
 import androidx.paging.PagingState
 import com.jld.vod.interfaces.remote.Apis
 import com.jld.vod.model.bean.*
+import com.jld.vod.model.event.NewOrderEvent
+import com.jld.vod.model.event.SiteEvent
 import com.jld.vod.utils.LogUtils
+import com.jld.vod.utils.SharedPrefUtils
+import org.greenrobot.eventbus.EventBus
 
 class HostAllOrdersPagingSource (private val articleApi: Apis, val lid:Long ,var status:String) : PagingSource<Int, AllOrdersBean>() {
 
     override suspend fun load(params: LoadParams<Int>): LoadResult<Int, AllOrdersBean> {
         val page = params.key ?: 0
+        var neworderlist = mutableListOf<AllOrdersBean>()
         return try {
             val response = articleApi.getAllOrders(lid,status)
-            LogUtils.logD("response"+response)
+
             if (response.code == 20000) {
+                neworderlist.clear()
+                for ((index,e) in response.data!!.withIndex()) {
+                    if (e.bigOrderStatus == "1")
+                    {
+                        neworderlist.add(e)
+                    }
+                }
+                //最新订单
+                if (neworderlist != null)
+                {
+                    for ((index,e) in neworderlist.withIndex()) {
+                       EventBus.getDefault().post(NewOrderEvent(neworderlist[0].oid) )
+                    }
+                }
                 LoadResult.Page(
                     data = response.data!!,
                     prevKey = null,

+ 76 - 0
app/src/main/java/com/jld/vod/view/HostOrderActivity.kt

@@ -1,16 +1,33 @@
 package com.jld.vod.view
 
+import android.app.Notification
+import android.app.NotificationManager
+import android.app.PendingIntent
+import android.content.Context
+import android.content.Intent
+import android.graphics.Bitmap
+import android.os.Handler
+import android.view.WindowManager
 import android.widget.ImageView
 import com.jld.vod.R
 import com.jld.vod.base.BaseActivity
+import com.jld.vod.model.bean.PositionAdvertBean
+import com.jld.vod.model.event.NewOrderEvent
+import com.jld.vod.service.LatLongService
+import com.jld.vod.utils.LogUtils
+import com.jld.vod.utils.SharedPrefUtils
+import com.jld.vod.view.widget.CustomAdDialog
 import com.xuexiang.xpage.enums.CoreAnim
 import com.xuexiang.xui.widget.tabbar.EasyIndicator
 import com.xuexiang.xui.widget.tabbar.EasyIndicator.onTabClickListener
 import com.xuexiang.xutil.tip.ToastUtils
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
 
 class HostOrderActivity : BaseActivity() {
     private lateinit var iv_order_back:ImageView
     private lateinit var mEasyIndicator1: EasyIndicator
+    private val mHandler = Handler()
 
     override fun getLayoutId(): Int {
         return R.layout.activity_host_order
@@ -18,6 +35,7 @@ class HostOrderActivity : BaseActivity() {
 
     override fun initView() {
         super.initView()
+        EventBus.getDefault().register(this)
         iv_order_back = findViewById(R.id.iv_order_back)
         mEasyIndicator1 = findViewById(R.id.easy_indicator1)
         openPage("HostAllOrdersFragment", null, CoreAnim.none,false)
@@ -52,4 +70,62 @@ class HostOrderActivity : BaseActivity() {
             }
         })
     }
+
+    /**
+     * 接收新订单通知
+     */
+    @Subscribe
+    fun onReceive( mNewOrderEvent :NewOrderEvent) {
+        if (mNewOrderEvent.data != null)
+        {
+
+            val neworder = SharedPrefUtils.getString(this,"neworder")
+            if (neworder != mNewOrderEvent.data)
+            {
+                LogUtils.logD("我收到了消息"+mNewOrderEvent.data)
+                addNotification()
+
+                mHandler.postDelayed(Runnable {
+                    cleanNotification()
+                },3000)
+
+            }
+            SharedPrefUtils.putString(this,"neworder",mNewOrderEvent.data)
+        }
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        EventBus.getDefault().unregister(this)
+    }
+
+    /**
+     * 新订单通知
+     * @param pat
+     */
+    private fun addNotification() {
+        val intent = getIntent()
+        val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT)
+        val noti =
+                Notification.Builder(this) // .setTicker("你懂的!")
+                        .setContentTitle(getString(R.string.neworders))
+                        .setSmallIcon(R.mipmap.maps_dialog) //设置图标
+                        .setDefaults(Notification.DEFAULT_SOUND) //设置声音
+                        .setContentIntent(pendingIntent) //点击之后的页面
+                        .setFullScreenIntent(pendingIntent, true)
+                        .build()
+        val manager =
+                this.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+        manager.notify(666, noti)
+    }
+
+    /**
+     * 取消新订单通知
+     */
+    private fun cleanNotification() {
+        val manager =
+                getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+        manager.cancel(R.mipmap.ic_launcher)
+        manager.cancel(666)
+    }
 }

+ 27 - 3
app/src/main/java/com/jld/vod/view/fragment/HostAllOrdersFragment.kt

@@ -1,5 +1,6 @@
 package com.jld.vod.view.fragment
 
+import android.os.Handler
 import androidx.lifecycle.ViewModelProviders
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.observe
@@ -21,7 +22,8 @@ import kotlinx.coroutines.flow.collectLatest
 class HostAllOrdersFragment : BaseFragment() {
     private lateinit var myOrderViewModel: MyOrderViewModel
     private lateinit var mRootRecyclerView : RecyclerView
-
+    private lateinit var listAdapter:HostAllOrdersAdapter
+    private val mHandler = Handler()
     override fun getLayoutId(): Int {
         return R.layout.fragment_host_order
     }
@@ -33,7 +35,7 @@ class HostAllOrdersFragment : BaseFragment() {
         myOrderViewModel = ViewModelProviders.of(this)
                 .get(MyOrderViewModel::class.java)
         //购物车列表
-        val listAdapter = HostAllOrdersAdapter()
+        listAdapter = HostAllOrdersAdapter()
         val layoutManager = LinearLayoutManager(activity,RecyclerView.HORIZONTAL, false)
         mRootRecyclerView.setLayoutManager(layoutManager)
         mRootRecyclerView!!.adapter = listAdapter
@@ -45,6 +47,7 @@ class HostAllOrdersFragment : BaseFragment() {
                         listAdapter.submitData(pagingData)
                     }
         }
+
         /**
          * 一键完成
          */
@@ -53,6 +56,9 @@ class HostAllOrdersFragment : BaseFragment() {
                 myOrderViewModel.oneClickCompletion(oid!!)
             }
         })
+        /**
+         * 完成刷新列表
+         */
         myOrderViewModel.OnClickCompleteliveData.observe(this){res->
             if (res)
             {
@@ -60,6 +66,9 @@ class HostAllOrdersFragment : BaseFragment() {
             }
         }
 
+        /**
+         * 商品确认
+         */
         listAdapter.setOnFinishClickListener(object :HostAllOrdersAdapter.IFinishItemClickListener{
             override fun onItemClickListener(oid: Long?) {
                 myOrderViewModel.changeStatus("confirm",oid.toString())
@@ -67,14 +76,29 @@ class HostAllOrdersFragment : BaseFragment() {
             }
         })
 
+        /**
+         * 取消商品
+         */
         listAdapter.setOnCanceledClickListener(object :HostAllOrdersAdapter.ICanceledItemClickListener{
             override fun onItemClickListener(oid: Long?) {
                 myOrderViewModel.changeStatus("cancel",oid.toString())
                 listAdapter.refresh()
             }
         })
-    }
 
+        refreshNewOrder()//心跳刷新订单
+    }
+    /**
+     * 心跳刷新订单
+     */
+    private fun refreshNewOrder() {
+        mHandler.postDelayed(Runnable {
+            LogUtils.logD("refreshNewOrder")
+            listAdapter.refresh()
+            //重新调用
+            refreshNewOrder()
+        }, 3000)
+    }
     override fun initTitle(): TitleBar? {
         return null
     }

+ 39 - 0
app/src/main/java/com/jld/vod/view/fragment/HostNewOrdersFragment.kt

@@ -2,6 +2,7 @@ package com.jld.vod.view.fragment
 
 import androidx.lifecycle.ViewModelProviders
 import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.observe
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.jld.vod.R
@@ -41,6 +42,44 @@ class HostNewOrdersFragment : BaseFragment() {
                         listAdapter.submitData(pagingData)
                     }
         }
+
+        /**
+         * 一键完成
+         */
+        listAdapter.setOnCompleteClickListener(object : HostAllOrdersAdapter.ICompleteItemClickListener{
+            override fun onItemClickListener(oid: String?) {
+                myOrderViewModel.oneClickCompletion(oid!!)
+            }
+        })
+        /**
+         * 完成刷新列表
+         */
+        myOrderViewModel.OnClickCompleteliveData.observe(this){res->
+            if (res)
+            {
+                listAdapter.refresh()
+            }
+        }
+
+        /**
+         * 商品确认
+         */
+        listAdapter.setOnFinishClickListener(object :HostAllOrdersAdapter.IFinishItemClickListener{
+            override fun onItemClickListener(oid: Long?) {
+                myOrderViewModel.changeStatus("confirm",oid.toString())
+                listAdapter.refresh()
+            }
+        })
+
+        /**
+         * 取消商品
+         */
+        listAdapter.setOnCanceledClickListener(object :HostAllOrdersAdapter.ICanceledItemClickListener{
+            override fun onItemClickListener(oid: Long?) {
+                myOrderViewModel.changeStatus("cancel",oid.toString())
+                listAdapter.refresh()
+            }
+        })
     }
 
     override fun initTitle(): TitleBar? {