UserServiceImp.kt 11.4 KB
Newer Older
1 2
package com.yidianling.user.modular_service

ydl committed
3
import android.annotation.SuppressLint
4 5 6
import android.app.Activity
import android.content.Context
import android.content.Intent
YKai committed
7
import androidx.fragment.app.Fragment
8 9 10
import android.text.TextUtils
import com.alibaba.android.arouter.facade.annotation.Route
import com.ydl.ydlcommon.base.BaseApp
ydl committed
11 12 13 14 15
import com.ydl.ydlcommon.bean.VersionData
import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.ApkUpdateDialog
16
import com.yidianling.common.tools.RxAppTool
17 18 19 20
import com.yidianling.user.LoginHelper
import com.yidianling.user.LoginUtils
import com.yidianling.user.UserConstants
import com.yidianling.user.UserHelper
21 22
import com.yidianling.user.api.bean.UserResponseBean
import com.yidianling.user.api.bean.UserSettingBean
23
import com.yidianling.user.api.listener.LoginCallBackListener
ydl committed
24 25 26
import com.yidianling.user.api.listener.SecretDataListener
import com.yidianling.user.api.listener.UserInfoFromApiListener
import com.yidianling.user.api.listener.VersionUpdateStatusListener
27
import com.yidianling.user.api.service.IUserService
ydl committed
28
import com.yidianling.user.http.UserHttpImpl
29
import com.yidianling.user.mine.MineFragment
ydl committed
30 31
import com.yidianling.user.mine.data.AppDataManager
import com.yidianling.user.mine.utils.UpdateUtil
32
import com.yidianling.user.route.UserIn
ydl committed
33
import com.yidianling.user.safePrivate.FingerPrintCheckActivity
34
import com.yidianling.user.safePrivate.FingerPrintUtil
ydl committed
35
import com.yidianling.user.safePrivate.HandUnlockCheckActivity
36 37
import com.yidianling.user.safePrivate.PrivacyActivity
import com.yidianling.user.ui.InputPhoneActivity
ydl committed
38
import com.yidianling.user.ui.LoginActivity
39
import com.yidianling.user.ui.login.OneKeyLoginHelp
40
import com.yidianling.user.ui.login.RegisterAndLoginActivity
ydl committed
41 42 43 44 45
import com.yidianling.user.ui.login.SecretActivity
import com.yidianling.user.widget.utils.PrivacyDialogUtils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.functions.Consumer
import io.reactivex.schedulers.Schedulers
46 47 48 49 50 51 52

/**
 * author : Zhangwenchao
 * e-mail : zhangwch@yidianling.com
 * time   : 2018/04/13
 */
@Route(path = "/user/UserService")
53
public class UserServiceImp : IUserService {
54 55 56 57 58 59 60 61

    constructor()

    override fun init(context: Context?) {

    }

    override fun getUserSetting(): UserSettingBean? {
62
        return UserHelper.getUsetSetting()
63 64 65
    }

    override fun updateUserInfoSp(userInfo: UserResponseBean.UserInfo?) {
66
        UserHelper.updateUserinfo(userInfo)
67 68 69
    }

    override fun updateUserSetingSp(userSetting: UserSettingBean?) {
70
        UserHelper.updateUserSetting(userSetting)
71 72 73
    }

    override fun setChatTeamHisShowed(showed: Boolean) {
74
        UserHelper.getUsetSetting()?.chatTeamHisShowed = showed
75 76 77
    }

    override fun setUserResponse(userInfo: UserResponseBean?) {
78
        UserHelper.setUserinfo(userInfo)
79 80 81
    }

    override fun getUserResponse(): UserResponseBean? {
82
        return UserHelper.getUserInfo()
83 84 85
    }

    override fun isLogin(): Boolean {
86
        return UserHelper.isLogin()
87 88 89
    }

    override fun isFirstLogin(): Boolean {
90
        return UserHelper.getUserInfo()?.firstLogin==1
91 92 93 94
    }

    override fun setFirstLogin(first: Boolean) {
        var value : Int = if (first) 1 else 2 //1是2否
95
        UserHelper.getUserInfo()?.firstLogin = value
96 97 98
    }

    override fun isSafePrivacyClicked(): Boolean {
99
        return UserHelper.getUsetSetting()?.meSafePrivateIsClick?:true
100 101 102
    }

    override fun putSafePrivacyClicked(clicked: Boolean) {
103
        UserHelper.getUsetSetting()?.meSafePrivateIsClick = clicked
104 105 106
    }

    override fun getUserInfo(): UserResponseBean.UserInfo? {
107
        return UserHelper.getUserInfo()?.userInfo
108 109
    }

ydl committed
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
    @SuppressLint("CheckResult")
    override fun getUserInfoFromApi(listener: UserInfoFromApiListener) {
        AppDataManager.getHttp().getUserInfo()
            .compose(RxUtils.resultJavaData())
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(Consumer {
                try {
                    listener.apiResponse(it)
                }catch (e: Exception) {
                    listener.onFailure(e.toString())
                }
            }, object : ThrowableConsumer() {
                override fun accept(msg: String) {
                    listener.onFailure(msg)
                }
            })
    }

    override fun setUserInfo(userInfo: UserResponseBean.UserInfo?) {
        UserHelper.getUserInfo()?.userInfo = userInfo
    }

133
    override fun isBindPhone(): Boolean {
134
        return !TextUtils.isEmpty(UserHelper.getUserInfo()?.userInfo?.phone)
135 136 137
    }

    override fun putUnlockCheckSuccessTime(time: Long) {
138
        UserHelper.getUsetSetting()?.unLockCheckSuccessTime = time
139 140 141
    }

    override fun getChatTeamHisShow(): Boolean {
142
        return UserHelper.getUsetSetting()?.chatTeamHisShowed?:true
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
    }

    override fun privacyIntent(activity: Activity): Intent {
        return Intent(activity, PrivacyActivity::class.java)
    }

    override fun loginWayIntent(context: Context): Intent {
        return RegisterAndLoginActivity.getIntent(context)
    }

    override fun inputPhoneIntent(activity: Activity, smsAction: String): Intent {
        return InputPhoneActivity.newIntent(activity, smsAction)
    }

    override fun safeTipViewGone(): Boolean {
        //如果是非登录状态 或者 app指纹开启 或者 手势密码不为空 或者 已提示过安全解锁 -> 隐藏 设置密码提示
159
        return !UserHelper.isLogin() || FingerPrintUtil.instance().fingerPrintIsOpen()
160 161 162 163 164 165 166 167 168 169 170 171 172
                || !TextUtils.isEmpty(FingerPrintUtil.instance().getHandPass())
                || FingerPrintUtil.instance().getTrendsSafeTip()
    }

    override fun setTrendsSafeTip(status: Boolean) {
        FingerPrintUtil.instance().setTrendsSafeTip(status)
    }

    override fun errorAgainTime(): Long {
        return FingerPrintUtil.errorAgainTime
    }

    override fun isFirstStart(): Boolean {
173
        val lastVersionCode : Int = UserHelper.getUsetSetting()?.lastVersionCode?:0
174 175
        val currentVersionCode : Int = RxAppTool.getAppVersionCode(BaseApp.getApp())
        if (lastVersionCode < currentVersionCode) {
176
            UserHelper.getUsetSetting()?.lastVersionCode = currentVersionCode
177 178 179 180 181 182
            return true
        }
        return false
    }

    override fun clearUserInfo() {
183
        UserHelper.setUserinfo(null)
184 185
        UserIn.clearImData()
    }
ydl committed
186

YKai committed
187
    override fun getMineFragment(): Fragment {
ydl committed
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
        return MineFragment()
    }

    override fun updateUI(fragment: Fragment) {
        if (fragment is MineFragment) {
            fragment.updateUI()
        }
    }

    override fun checkUpVersion(activity: Activity, listener: VersionUpdateStatusListener) {
        UpdateUtil.getInstance().setUpdateListener(activity,
            object : UpdateUtil.VersionUpdateListener {
                override fun setUpdateData(version1: VersionData) {
                    //根据获取的version判断是否需要更新
                    var isUpdate = UpdateUtil.getInstance().needUpdate(activity, version1.ver)
                    if (activity != null && isUpdate) {
                        listener.shouldUpdate()
                        AppDataManager.getLocal().putUpdate(true)
                        ApkUpdateDialog(activity).setData(version1).setCancle(false).show()

                    } else {
                        listener.notUpdate()
                        AppDataManager.getLocal().putUpdate(false)
                    }
                }

                override fun onFailed() {

                }
            })
    }

    override fun getRedPocketTime(): Long {
        return AppDataManager.getLocal().getRedPocketTime()
    }

    override fun putRedPocketTime(time: Long) {
        AppDataManager.getLocal().putRedPocketTime(time)
    }

    override fun hasUpdate(): Boolean {
        return AppDataManager.getLocal().hasUpdate()
    }

    override fun hasPrivacyDialog(): Boolean {
        return PrivacyDialogUtils.INSTANCE.privacyDialog != null
    }

    override fun initPrivacyDialog(activity: Activity, content: String, time: String) {
        PrivacyDialogUtils.INSTANCE.initPrivacy(activity, content, time)
    }

    override fun privacyDialogIsShow(): Boolean {
        return PrivacyDialogUtils.INSTANCE.privacyDialog?.isShowing?:true
    }

    override fun showPrivacyDialog() {
        PrivacyDialogUtils.INSTANCE.privacyDialog?.show()
    }

    override fun loginUtilsLogout() {
        LoginUtils.logout()
    }

    override fun setChannelId() {
        LoginHelper.setChannelId()
    }

    override fun logoutlearLocal() {
        LoginUtils.logoutClearLocal()
    }

    override fun shouldShowFingerPage(activity: Activity) {
        if(!(activity is HandUnlockCheckActivity
                || activity is FingerPrintCheckActivity
                || activity is LoginActivity)
                && FingerPrintUtil.instance().isShowActivity()) {
            //跳转解锁页面
            val intent = Intent(
                ActivityManager.getInstance().getTopTaskActivity(),
                HandUnlockCheckActivity::class.java
            )
            intent.putExtra("isFromBackground", true)
            ActivityManager.getInstance().getTopTaskActivity().startActivity(intent)
        }
    }

    override fun shouldShowFingerPageFromKill(activity: Activity, isSplashActivity: Boolean) {
        if (FingerPrintUtil.instance().appIsSetUnLockPass() && isSplashActivity) {
            //跳转解锁页面
            val intent = Intent(activity, HandUnlockCheckActivity::class.java)
            intent.putExtra("isFromBackground", true)
            activity.startActivity(intent)
        }
    }

    override fun wxBindToInputhonePage(activity: Activity) {
        InputPhoneActivity.start(activity, UserConstants.BIND_PHONE_ACTION, null, false)
    }

    override fun getSecretPageRequestOkCode(): Int {
        return SecretActivity.SECRET_PAGE_REQUEST_OK_CODE
    }

    @SuppressLint("CheckResult")
    override fun getSecretDataApi(activity: Activity, listener: SecretDataListener) {
霍志良 committed
294
        UserHttpImpl.Companion.getInstance().getSecretJavaData()
ydl committed
295 296 297
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(Consumer {
霍志良 committed
298 299
                if (it.code == 200) {
                    SecretActivity.startProtocol(activity, it.data)
ydl committed
300 301 302 303 304 305 306 307 308 309 310 311 312
                } else {
                    listener.onOtherAction()
                }
            }, object : ThrowableConsumer() {
                override fun accept(msg: String) {
                    listener.onOtherAction()
                }
            })
    }

    override fun startFromGuide(context: Context, isBindPhone: Boolean, isFromGudile: Boolean) {
        RegisterAndLoginActivity.startFromGuide(context, isBindPhone, isFromGudile)
    }
313 314 315 316 317 318 319 320
    /**
     * 调用优先使用一键登录,并返回调用时的登录状态,
     * @param isOpenDialog true:一键登录使用弹窗展示 false:一键登录使用全屏模式
     * @return true:已登录,不触发登录跳转,false:未登录,优先一键登录
     * */
    override fun loginByOneKeyLogin(context: Context, isOpenDialog: Boolean):Boolean {
        return OneKeyLoginHelp.startLoginByStatus(context,isOpenDialog)
    }
321 322 323 324 325 326 327 328

    override fun loginByOneKeyLoginCallBack(
        context: Context,
        isOpenDialog: Boolean,
        listener: LoginCallBackListener
    ) {
        OneKeyLoginHelp.startLoginByStatusLoginCallBack(context,isOpenDialog,listener)
    }
329
}