LocalKeyDataMKManageKit.kt 3.04 KB
Newer Older
赵鹏翔's avatar
赵鹏翔 committed
1
package com.miya.fastcashier.util.manage
2

3
import com.fastcashier.lib_common.function.account.AccountService
4 5 6 7 8 9 10 11 12 13 14 15 16 17
import com.tencent.mmkv.MMKV

/**
 * 类描述:本地关键数据MMKV统一管理
 * 概述:涉及到的关键数据:balanceDate(结算时间)
 * 创建人:zpxiang
 * 创建时间:2022/4/24
 * 修改人:
 * 修改时间:
 */
class LocalKeyDataMKManageKit {

    companion object {

zhaopengxiang's avatar
zhaopengxiang committed
18
        /***************************************** 分账户的关键数据,分区存储ID为MMKV_ID *****************************************/
赵鹏翔's avatar
赵鹏翔 committed
19
        private val MMKV_KEY_ID = "fastcashier_key_data"
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
        private val BALANCEDATE_ID = "balanceDate"

        /**
         * 存储结算时间
         */
        fun putBalanceDate(time: Long) {
            getKeyDataMK().putLong(BALANCEDATE_ID, time)
        }

        /**
         * 获取结算时间
         */
        fun getBalanceDate(): Long {
            return getKeyDataMK().getLong(BALANCEDATE_ID, 0)
        }

        /**
         * 结算时间合规化处理,适用于登录时
         * 策略:
         * ①当获取的结算时间=0(证明本地未存储过,第一次登陆)存储为当前时间
40
         * ②当获取的结算时间小于三天前的当前时间,则将结算时间重置为3天前的时间
41 42 43 44 45 46 47 48 49 50
         */
        fun handleCompliantBalanceDate() {
            var balanceTime = getBalanceDate()
            if (balanceTime <= 0L) {
                //todo 如果返回有服务器时间建议改成服务器时间
                putBalanceDate(System.currentTimeMillis())
                return
            }

            var minimumTime: Long = System.currentTimeMillis() - 3 * 24 * 3600 * 1000
zhaopengxiang's avatar
zhaopengxiang committed
51
            if (balanceTime <= minimumTime) {
52
                putBalanceDate(minimumTime)
53 54 55 56
            }
        }

        /**
zhaopengxiang's avatar
zhaopengxiang committed
57
         * 清除关键数据的mmkv存储
58
         */
zhaopengxiang's avatar
zhaopengxiang committed
59
        fun clearKeyData() {
60 61 62 63
            getKeyDataMK().clearAll()
        }

        private fun getKeyDataMK(): MMKV {
赵鹏翔's avatar
赵鹏翔 committed
64
            val MMKV_ID_WITH_USER = MMKV_KEY_ID.plus("_${AccountService.getUserName()}")
65 66
            return MMKV.mmkvWithID(MMKV_ID_WITH_USER)
        }
zhaopengxiang's avatar
zhaopengxiang committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97


        /***************************************** 普通存储的关键数据,分区存储ID为默认 *****************************************/
        private val USERNAME_ID = "username"
        private val USERPASSWORD_ID = "password"

        /**
         * 存储登录信息:姓名、密码
         */
        fun putLoginIngfo(userName: String, password: String) {
            MMKV.defaultMMKV().encode(USERNAME_ID, userName)
            MMKV.defaultMMKV().encode(USERPASSWORD_ID, password)
        }

        /**
         * 获取登录姓名
         */
        fun getLoginUserName(): String? {
            return MMKV.defaultMMKV().decodeString(USERNAME_ID)
        }

        /**
         * 获取登录密码
         */
        fun getLoginUserPassword(): String? {
            return MMKV.defaultMMKV().decodeString(USERPASSWORD_ID)
        }

        fun clearCommonData() {
            MMKV.defaultMMKV().clearAll()
        }
98 99
    }
}