honghengqiang 3 years ago
parent
commit
b83e8f8801

+ 3 - 0
baseswago/src/main/java/com/swago/baseswago/dialog/PayDialog.kt

@@ -31,6 +31,8 @@ class PayDialog : BaseXDFragment<DialogPayBinding>(), IPayCallback {
         RechargeAdapter()
     }
 
+    var noticeGameDialog:((userCoin:String)->Unit)?=null
+
     private var selectedPosition = 0
 
     init {
@@ -84,6 +86,7 @@ class PayDialog : BaseXDFragment<DialogPayBinding>(), IPayCallback {
     override fun initLiveData() {
         payVm.coinLiveData.observe(this){
             binding.tvBalanceValue.text = it.user_coins
+            noticeGameDialog?.invoke(it.user_coins)
         }
     }
 

+ 11 - 0
baseswago/src/main/java/com/swago/baseswago/im/GroupMsgParser.kt

@@ -3,9 +3,11 @@ package com.swago.baseswago.im
 import com.alibaba.fastjson.util.ParameterizedTypeImpl
 import com.google.gson.Gson
 import com.swago.baseswago.im.ImConstant.anchor_close_room
+import com.swago.baseswago.im.ImConstant.beauty_game
 import com.swago.baseswago.im.ImConstant.cancel_forbid_speak
 import com.swago.baseswago.im.ImConstant.follow_anchor_success
 import com.swago.baseswago.im.ImConstant.forbid_speak
+import com.swago.baseswago.im.ImConstant.fruit_game
 import com.swago.baseswago.im.ImConstant.lucky_gift
 import com.swago.baseswago.im.ImConstant.red_envelope
 import com.swago.baseswago.im.ImConstant.red_envelope_broadcast
@@ -113,6 +115,15 @@ class GroupMsgParser : IGroupNewMsgParser {
                     )
                     parserModel = gson.fromJson(resultString,parameterizedTypeImpl)
                 }
+
+                fruit_game, beauty_game -> {
+                    parameterizedTypeImpl = ParameterizedTypeImpl(
+                        arrayOf<Type>(GameData::class.java),
+                        CusNewMsgBean::class.java,
+                        CusNewMsgBean::class.java
+                    )
+                    parserModel = gson.fromJson(resultString,parameterizedTypeImpl)
+                }
             }
             parserModel?.v2TIMMessage = v2TIMMessage
         }catch (e:Exception){

+ 9 - 0
baseswago/src/main/java/com/swago/baseswago/im/ImConstant.kt

@@ -62,4 +62,13 @@ object ImConstant {
     const val red_envelope_broadcast = 3
 
 
+
+
+
+    /**********游戏相关IM********/
+    const val fruit_game = 1001
+    const val beauty_game = 1002
+
+
+
 }

+ 8 - 0
baseswago/src/main/java/com/swago/baseswago/model/im/GameData.kt

@@ -0,0 +1,8 @@
+package com.swago.baseswago.model.im
+
+data class GameData(
+    val userId:String = "",
+    val betsCamp:String = "0",
+    val betsAmount:String="0",
+    val campTotalAmount:String="0",
+)

+ 56 - 4
room/src/main/java/com/swago/room/game/GamePlayDialog.kt

@@ -14,18 +14,24 @@ import com.swago.baseswago.baseroom.IRoomInfo
 import com.swago.baseswago.baseroom.SwagoRoomManager
 import com.swago.baseswago.dialog.BaseXDFragment
 import com.swago.baseswago.dialog.PayDialog
+import com.swago.baseswago.im.IMGroupNewMsgListener
+import com.swago.baseswago.im.ImConstant
+import com.swago.baseswago.model.im.CusNewMsgBean
+import com.swago.baseswago.model.im.FollowSuccessMsgBean
+import com.swago.baseswago.model.im.GameData
 import com.swago.baseswago.model.live.game.GameInfoModel
 import com.swago.baseswago.util.DpPxUtil
 import com.swago.baseswago.util.SwagoInfo
 import com.swago.baseswago.util.UserInfo
 import com.swago.room.bean.UserRoomModel
 import com.swago.room.databinding.DialogGamePlayBinding
+import org.json.JSONObject
 
 /**
  *@date 2022/1/19 20:41
  *description:
  */
-class GamePlayDialog : BaseXDFragment<DialogGamePlayBinding>(),IRoomActiveListener {
+class GamePlayDialog : BaseXDFragment<DialogGamePlayBinding>(), IRoomActiveListener {
 
     private var url = ""
 
@@ -37,6 +43,8 @@ class GamePlayDialog : BaseXDFragment<DialogGamePlayBinding>(),IRoomActiveListen
         Gson()
     }
 
+    private val imGroupNewMsgListener = IMGroupNewMsgListener()
+
     companion object {
         private const val URL = "url"
         fun newInstance(url: String): GamePlayDialog {
@@ -56,6 +64,7 @@ class GamePlayDialog : BaseXDFragment<DialogGamePlayBinding>(),IRoomActiveListen
 
 
     override fun initOther() {
+        imGroupNewMsgListener.attach()
         SwagoRoomManager.addListener(this)
         arguments?.let {
             url = it.getString(URL, "")
@@ -97,6 +106,25 @@ class GamePlayDialog : BaseXDFragment<DialogGamePlayBinding>(),IRoomActiveListen
                 webView?.loadUrl(url)
             }
         }
+
+
+        imGroupNewMsgListener.handleMsgType<CusNewMsgBean<GameData>>(
+            ImConstant.fruit_game
+        ) {
+            it.data?.let { gameData ->
+                convertToJson(gameData,ImConstant.fruit_game)
+            }
+        }
+
+        imGroupNewMsgListener.handleMsgType<CusNewMsgBean<GameData>>(
+            ImConstant.beauty_game
+        ) {
+            it.data?.let { gameData ->
+                convertToJson(gameData,ImConstant.beauty_game)
+            }
+        }
+
+
     }
 
     override fun initLiveData() {}
@@ -110,7 +138,7 @@ class GamePlayDialog : BaseXDFragment<DialogGamePlayBinding>(),IRoomActiveListen
                 UserInfo.getUserInfo()?.let { userInfoModel ->
                     UserInfo.getLoginModel()?.let { loginModel ->
                         val gameInfoModel = GameInfoModel(
-                            (it as UserRoomModel).roomModel?.broadcast_id?:"",
+                            (it as UserRoomModel).roomModel?.broadcast_id ?: "",
                             userInfoModel.id,
                             it.getAnchorId(),
                             it.getAnchorType(),
@@ -132,18 +160,42 @@ class GamePlayDialog : BaseXDFragment<DialogGamePlayBinding>(),IRoomActiveListen
 
         @JavascriptInterface
         fun recharge() {
-            PayDialog.newInstance().show(childFragmentManager,"PayDialog")
+            PayDialog.newInstance().apply {
+                this.noticeGameDialog = {
+                    val jsonObject = JSONObject()
+                    jsonObject.put("type", 1000)
+                    val dataJsonObject = JSONObject()
+                    dataJsonObject.put("userAmount", it)
+                    jsonObject.put("data", dataJsonObject)
+                    webView?.loadUrl("javascript:onMessage(${jsonObject.toString()})")
+                }
+            }.show(childFragmentManager, "PayDialog")
         }
 
         @JavascriptInterface
-        fun closeGame(){
+        fun closeGame() {
             dismissAllowingStateLoss()
         }
 
     }
 
+
+    private fun convertToJson(gameData: GameData,type:Int){
+        val jsonObject = JSONObject()
+        jsonObject.put("type", type)
+        val dataJsonObject = JSONObject()
+        dataJsonObject.put("userId", gameData.userId)
+        dataJsonObject.put("betsCamp", gameData.betsCamp)
+        dataJsonObject.put("betsAmount", gameData.betsAmount)
+        dataJsonObject.put("campTotalAmount", gameData.campTotalAmount)
+        jsonObject.put("data", dataJsonObject)
+        webView?.loadUrl("javascript:onMessage(${jsonObject.toString()})")
+    }
+
+
     override fun onDestroyView() {
         try {
+            imGroupNewMsgListener.detach()
             webView?.apply {
                 webChromeClient = null
                 parent?.let {