package com.xhly.websocket.utils

import com.xhly.corelib.Const
import com.xhly.corelib.eventbus.UIEvent
import com.xhly.corelib.utils.GsonUtils
import com.xhly.corelib.utils.LogShow
import com.xhly.websocket.bean.WebSocketData
import org.json.JSONObject

object SocketPushUtils {
    fun dealPushMessage(content: String) {
        try {
            //没用泛型是因为如果带有泛型的类型，可能会遇到解析异常的问题。需要使用TypeToken
            val socketData = GsonUtils.parseJsonWithGson(content, WebSocketData::class.java)
            LogShow("数据$content")
            socketData.code.let { code ->
                when (code) {
                    1001 -> {
                        //连接后回发 body{userid,username,usertype(1管理员，2学生)}
                    }

                    Const.CODE2001 -> {
                        //发送消息 body{userid,username,msg}
                        var msg=""
                        if (socketData.body!=null){
                           try {
                               val jsonObject = JSONObject(content)
                               val body = jsonObject.get("body").toString()
                               val jsonMsg = JSONObject(body)
                               val toString = jsonMsg.get("msg").toString()
                               if (!toString.isNullOrBlank()){
                                   msg=toString
                               }
                           }catch (e:Exception){

                           }
                        }
                        UIEvent(Const.CODE2001.toString()).setMessage(msg).post()
                    }

                    Const.CODE2002 -> {
                        //限制使用
                        UIEvent(Const.CODE2002.toString()).post()
                    }

                    Const.CODE2003 -> {
                        //解除限制
                        UIEvent(Const.CODE2003.toString()).post()
                    }

                    Const.CODE2004 -> {
                        //更新策略
                        UIEvent(Const.CODE2004.toString()).post()
                    }

                    Const.CODE2005 -> {
                        //重启设备
                        UIEvent(Const.CODE2005.toString()).post()
                    }

                    Const.CODE2006 -> {
                        //恢复出厂
                        UIEvent(Const.CODE2006.toString()).post()
                    }

                    Const.CODE2007 -> {
                        //解除管控
                        UIEvent(Const.CODE2007.toString()).post()
                    }
                    Const.CODE2008->{
                        //解除绑定，我调用退出登录
                        UIEvent(Const.CODE2008.toString()).post()
                    }

                    Const.CODE3002 -> {
                        //违规事件自动调用的限制使用
                        UIEvent(Const.CODE3002.toString()).post()
                    }

                    Const.CODE3006-> {
                        //违规事件自动调用的恢复出厂设置
                        UIEvent(Const.CODE3006.toString()).post()
                    }

                    666 -> {
                        //消息确认回发mid 消息id

                    }

                    999 -> {
                        //错误消息 body msg(错误消息)
                    }

                    else -> {
                        //Log.d("message解析", socketData .message!!)
                    }
                }
            }
        } catch (e: Exception) {
            LogShow("解析问题$e")
        }
    }
}