Bläddra i källkod

[移动云相册] 解绑手表时加入删除家庭云成员的动作

songchengcheng 2 veckor sedan
förälder
incheckning
2ff42748ed

+ 3 - 3
app/build.gradle

@@ -26,7 +26,7 @@ android {
         minSdkVersion 26
         targetSdkVersion 34
         versionCode 1
-        versionName "1.1.32"
+        versionName "1.1.28.9"
         multiDexEnabled true
     }
     packagingOptions {
@@ -60,7 +60,7 @@ android {
             //show log
             buildConfigField "boolean", "LOG_DEBUG", "true"
             buildConfigField "String", "VIDEO_CALL_VENDOR", "\"agora\""
-            buildConfigField "boolean", "APP_EXIT_WEBSOCKET_PERSIST", "false"
+            buildConfigField "boolean", "APP_EXIT_WEBSOCKET_PERSIST", "true"
 
             versionNameSuffix ""
             minifyEnabled false
@@ -79,7 +79,7 @@ android {
             //do not show log
             buildConfigField "boolean", "LOG_DEBUG", "false"
             buildConfigField "String", "VIDEO_CALL_VENDOR", "\"agora\""
-            buildConfigField "boolean", "APP_EXIT_WEBSOCKET_PERSIST", "false"
+            buildConfigField "boolean", "APP_EXIT_WEBSOCKET_PERSIST", "true"
             //zipalign optimize
             zipAlignEnabled true
             //remove unused resource files

+ 4 - 0
app/src/main/java/com/sikey/interconnect/component/network/http/HttpService.kt

@@ -15,6 +15,7 @@ import com.sikey.interconnect.component.network.http.model.ConfirmInvitationRepo
 import com.sikey.interconnect.component.network.http.model.ConfirmInvitationReq
 import com.sikey.interconnect.component.network.http.model.CreateChildInfoRepo
 import com.sikey.interconnect.component.network.http.model.CreateChildReq
+import com.sikey.interconnect.component.network.http.model.DelFamilyMemberReq
 import com.sikey.interconnect.component.network.http.model.FenceListRepo
 import com.sikey.interconnect.component.network.http.model.FenceReq
 import com.sikey.interconnect.component.network.http.model.FetchMsgCenterRepo
@@ -346,6 +347,9 @@ interface CloudAlbumService : BaseHttpService {
         @Body body: ConfirmInvitationReq
     ): CustomFlowable<ConfirmInvitationRepo>
 
+    @POST(UrlConstants.delFamilyMember)
+    fun delFamilyMember(@Body body: DelFamilyMemberReq): CustomFlowable<BaseResponse<NormalResponse>>
+
     @POST(UrlConstants.proxy)
     fun queryContentInfo(
         @Body body: QueryContentReq

+ 16 - 0
app/src/main/java/com/sikey/interconnect/component/network/http/model/CloudAlbum.kt

@@ -120,6 +120,22 @@ data class ConfirmInvitationRepo(
     val data: ConfirmInvitationData
 ) : BaseResponse<ConfirmInvitationRepo>()
 
+data class MemberBean(
+    @SerializedName("phoneNumber")
+    val phoneNumber: String,
+    @SerializedName("userId")
+    val userId: String
+)
+
+data class DelFamilyMemberReq(
+    @SerializedName("memberList")
+    val memberList: ArrayList<MemberBean>?,
+    @SerializedName("ticket")
+    val ticket: String,
+    @SerializedName("isAdmin")
+    val isAdmin: Int
+): BaseRequest()
+
 data class QueryHeaders(
     @SerializedName("Content-Type") val contentType: String,
     @SerializedName("appid") val appId: String,

+ 1 - 0
app/src/main/java/com/sikey/interconnect/constant/UrlConstants.kt

@@ -118,6 +118,7 @@ object UrlConstants {
     const val watchAuth = "app-api/mcdisk/app/authorizePhoto/photoAuthorization"
     const val notifyWatchActivate = "app-api/mcdisk/app/authorizePhoto/notifyWatchActivateService"
     const val watchLogin = "app-api/mcdisk/app/message/reloginWatch"
+    const val delFamilyMember = "app-api/mcdisk/app/familyCloud/delFamilyCloudMember"
 
     const val getCloudId = "app-api/mcdisk/app/familyCloud/queryUserAuthorization"
     const val getInvitationCode = "app-api/mcdisk/app/familyCloud/authorization"

+ 31 - 0
app/src/main/java/com/sikey/interconnect/k2/ui/watchContacts/FamilyDetailActivity.kt

@@ -30,10 +30,14 @@ import com.sikey.interconnect.app.DataManager
 import com.sikey.interconnect.app.DataManager.Companion.instance
 import com.sikey.interconnect.component.helper.SetGuardianAvatarHelper
 import com.sikey.interconnect.component.log.Logger
+import com.sikey.interconnect.component.network.http.CloudAlbumService
 import com.sikey.interconnect.component.network.http.ContactService
 import com.sikey.interconnect.component.network.http.HttpServiceExecutor
+import com.sikey.interconnect.component.network.http.RetrofitCloudAlbumFactory
 import com.sikey.interconnect.component.network.http.RetrofitFactory
 import com.sikey.interconnect.component.network.http.model.AddContactItem
+import com.sikey.interconnect.component.network.http.model.DelFamilyMemberReq
+import com.sikey.interconnect.component.network.http.model.MemberBean
 import com.sikey.interconnect.component.network.http.model.UpdateContactItem
 import com.sikey.interconnect.constant.Constant
 import com.sikey.interconnect.constant.RoleTypeConstants
@@ -339,8 +343,35 @@ class FamilyDetailActivity : BaseNoActionBarActivity(), View.OnClickListener,
         }
     }
 
+    private fun delFamilyMember(memberList: ArrayList<MemberBean>, isAdmin: Int) {
+        lifecycleScope.launch {
+            HttpServiceExecutor.execute(
+                (RetrofitCloudAlbumFactory.retrofit(CloudAlbumService::class.java) as CloudAlbumService).delFamilyMember(
+                    DelFamilyMemberReq(
+                        memberList,
+                        instance.currentChildInfo!!.device.ticket,
+                        isAdmin
+                    )
+                ).flowable
+            ).apply {
+                if (this.code == "200") {
+                    //ToastUtils.showLongToast(this.message)
+                    Logger.d(TAG, "====== delFamilyMember success message:" + this.message)
+                } else {
+                    //ToastUtils.showLongToast(this.message)
+                    Logger.d(TAG, "====== delFamilyMember failed message:" + this.message)
+                }
+            }
+        }
+    }
+
     private fun deleteFamily() {
         showProgressDialog()
+        if ("N8#CMCC" == instance.currentChildInfo!!.device.model) {
+            val memberList = ArrayList<MemberBean>()
+            memberList.add(MemberBean(bean?.phoneNum?: "", bean?.refId?: ""))
+            delFamilyMember(memberList, 2)
+        }
         lifecycleScope.launch {
             val refId = bean?.refId ?: friendBean?.refId ?: ""
             HttpServiceExecutor.execute(

+ 80 - 8
app/src/main/java/com/sikey/interconnect/ui/avtivity/component/right/BabyListActivity.kt

@@ -11,22 +11,27 @@ import android.widget.ListView
 import android.widget.TextView
 import androidx.appcompat.widget.Toolbar
 import androidx.lifecycle.lifecycleScope
-import com.android.volley.Request
-import com.android.volley.VolleyError
-import com.android.volley.toolbox.JsonObjectRequest
 import com.sikey.interconnect.R
 import com.sikey.interconnect.app.DataManager
 import com.sikey.interconnect.app.DataManager.Companion.checkLoginResponse
 import com.sikey.interconnect.app.DataManager.Companion.instance
 import com.sikey.interconnect.component.log.Logger
-import com.sikey.interconnect.component.network.ARJSONListener
-import com.sikey.interconnect.component.network.BusinessError
-import com.sikey.interconnect.component.network.RequestManager
 import com.sikey.interconnect.component.network.http.ChildService
+import com.sikey.interconnect.component.network.http.CloudAlbumService
 import com.sikey.interconnect.component.network.http.HttpServiceExecutor
+import com.sikey.interconnect.component.network.http.RetrofitCloudAlbumFactory
 import com.sikey.interconnect.component.network.http.RetrofitFactory
+import com.sikey.interconnect.component.network.http.manager.ContactManager
+import com.sikey.interconnect.component.network.http.model.DelFamilyMemberReq
+import com.sikey.interconnect.component.network.http.model.GetContactListRepo
+import com.sikey.interconnect.component.network.http.model.MemberBean
 import com.sikey.interconnect.component.network.http.model.UnbindDeviceReq
 import com.sikey.interconnect.constant.UrlConstants
+import com.sikey.interconnect.constant.UrlConstants.IDENTITY_ADMIN
+import com.sikey.interconnect.constant.UrlConstants.IDENTITY_FAMILY
+import com.sikey.interconnect.constant.UrlConstants.IDENTITY_OTHER
+import com.sikey.interconnect.constant.UrlConstants.IDENTITY_SUPER_ADMIN
+import com.sikey.interconnect.constant.UrlConstants.IDENTITY_UNKNOWN
 import com.sikey.interconnect.k2.ui.settings.WatchSettingsActivity
 import com.sikey.interconnect.ui.adapter.BabyListAdapter
 import com.sikey.interconnect.ui.adapter.BabyListAdapter.OnRequestListener
@@ -38,8 +43,6 @@ import com.sikey.interconnect.ui.fragment.dialog.bean.AlertDialogBean
 import com.sikey.interconnect.ui.fragment.dialog.listener.OnAlertDialogListener
 import com.sikey.interconnect.utils.ToastUtils
 import kotlinx.coroutines.launch
-import org.json.JSONArray
-import org.json.JSONObject
 
 class BabyListActivity : BaseNoActionBarActivity(), OnRequestListener, OnAlertDialogListener {
     private var mListView: ListView? = null
@@ -137,6 +140,61 @@ class BabyListActivity : BaseNoActionBarActivity(), OnRequestListener, OnAlertDi
         }
     }
 
+    private fun preDelFamilyMember() {
+        val memberList = ArrayList<MemberBean>()
+        lifecycleScope.launch {
+            showProgressDialog()
+            ContactManager.fetchContactList(instance.childTrackInfos?.get(mSelectedPos)?.childId ?: "").apply {
+                if (this.code?.startsWith("40") != false) {
+                    gotoLogin()
+                    return@launch
+                }
+                hideProgressDialog()
+                if (this.code == "200") {
+                    val contactList = (this.mData as GetContactListRepo).contactList
+                    if (contactList.isNullOrEmpty()) {
+                        return@apply
+                    } else {
+                        Logger.d("BabyListActivity", "====== beanList.size()=" + contactList.size)
+                    }
+                    val avatarPrefix = "ids://local_"
+                    contactList.forEach { item ->
+                        when (item.identity) {
+                            IDENTITY_FAMILY, IDENTITY_ADMIN, IDENTITY_SUPER_ADMIN -> {
+                                memberList.add(MemberBean(item.phoneNumber, item.refId))
+                            }
+                        }
+                    }
+                    delFamilyMember(memberList, 1)
+                }
+            }
+        }
+    }
+
+    private fun delFamilyMember(memberList: ArrayList<MemberBean>, isAdmin: Int) {
+        val ticket = instance.childTrackInfos?.get(mSelectedPos)?.device?.ticket ?: ""
+        Logger.d("BabyListActivity", "====== ticket:$ticket")
+        lifecycleScope.launch {
+            HttpServiceExecutor.execute(
+                (RetrofitCloudAlbumFactory.retrofit(CloudAlbumService::class.java) as CloudAlbumService).delFamilyMember(
+                    DelFamilyMemberReq(
+                        memberList,
+                        ticket,
+                        isAdmin
+                    )
+                ).flowable
+            ).apply {
+                if (this.code == "200") {
+                    //ToastUtils.showLongToast(this.message)
+                    Logger.d("BabyListActivity", "====== delFamilyMember success message:" + this.message)
+                } else {
+                    //ToastUtils.showLongToast(this.message)
+                    Logger.d("BabyListActivity", "====== delFamilyMember failed message:" + this.message)
+                }
+            }
+        }
+    }
+
     private fun unbindDevice() {
         if (mSelectedPos < 0 || !DataManager.checkLoginResponse()) {
             return
@@ -184,11 +242,25 @@ class BabyListActivity : BaseNoActionBarActivity(), OnRequestListener, OnAlertDi
 //            mAlertDialogFrag=AlertDialogFragment.newInstance(mAlertDialogBean,this);
 //        }
 //        mAlertDialogFrag.show(this.getSupportFragmentManager(),TAG);
+        if ("N8#CMCC" == instance.currentChildInfo!!.device.model) {
+            val memberList = ArrayList<MemberBean>()
+            memberList.add(
+                MemberBean(
+                    instance.loginResponse?.phoneNumber ?: "",
+                    instance.loginResponse?.id ?: ""
+                )
+            )
+            delFamilyMember(memberList, 2)
+        }
         doDelete()
     }
 
     override fun onUnbind(selectedPos: Int) {
         mSelectedPos = selectedPos
+
+        if ("N8#CMCC" == instance.currentChildInfo!!.device.model) {
+            preDelFamilyMember()
+        }
         unbindDevice()
     }