CounterUtil.java 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package com.datarecovery.master.utils;
  2. import android.text.format.DateUtils;
  3. import com.atmob.common.data.KVUtils;
  4. public class CounterUtil {
  5. private static final String COUNTER_PREFIX = "COUNTER_UTIL_";
  6. private static final String COUNTER_DATE_SUFFIX = "_DATE";
  7. private CounterUtil() {
  8. }
  9. /**
  10. * 检查并增加计数(当天)
  11. *
  12. * @param key 计数器key
  13. * @param limitTimes 限制次数
  14. * @return 是否超过限制
  15. */
  16. public static boolean checkAndIncrementByDay(String key, int limitTimes) {
  17. if (key == null || key.isEmpty() || limitTimes == 0) {
  18. return false;
  19. }
  20. long lastTime = KVUtils.getDefault().getLong(COUNTER_PREFIX + key + COUNTER_DATE_SUFFIX, 0L);
  21. if (DateUtils.isToday(lastTime)) {
  22. int count = KVUtils.getDefault().getInt(COUNTER_PREFIX + key, 0);
  23. if (count >= limitTimes) {
  24. return false;
  25. } else {
  26. KVUtils.getDefault().putInt(COUNTER_PREFIX + key, count + 1);
  27. return true;
  28. }
  29. } else {
  30. KVUtils.getDefault().putLong(COUNTER_PREFIX + key + COUNTER_DATE_SUFFIX, System.currentTimeMillis());
  31. KVUtils.getDefault().putInt(COUNTER_PREFIX + key, 1);
  32. return true;
  33. }
  34. }
  35. /**
  36. * 检查是否超过计数(当天)
  37. *
  38. * @param key 计数器key
  39. * @param limitTimes 限制次数
  40. * @return 是否超过限制
  41. */
  42. public static boolean checkLimitByDay(String key, int limitTimes) {
  43. if (key == null || key.isEmpty() || limitTimes == 0) {
  44. return false;
  45. }
  46. long lastTime = KVUtils.getDefault().getLong(COUNTER_PREFIX + key + COUNTER_DATE_SUFFIX, 0L);
  47. if (DateUtils.isToday(lastTime)) {
  48. int count = KVUtils.getDefault().getInt(COUNTER_PREFIX + key, 0);
  49. return count < limitTimes;
  50. }
  51. return true;
  52. }
  53. /**
  54. * 增加计数器(当天)
  55. *
  56. * @param key 计数器key
  57. */
  58. public static void incrementByDay(String key) {
  59. long lastTime = KVUtils.getDefault().getLong(COUNTER_PREFIX + key + COUNTER_DATE_SUFFIX, 0L);
  60. if (DateUtils.isToday(lastTime)) {
  61. int count = KVUtils.getDefault().getInt(COUNTER_PREFIX + key, 0);
  62. KVUtils.getDefault().putLong(COUNTER_PREFIX + key + COUNTER_DATE_SUFFIX, System.currentTimeMillis());
  63. KVUtils.getDefault().putInt(COUNTER_PREFIX + key, count + 1);
  64. } else {
  65. KVUtils.getDefault().putLong(COUNTER_PREFIX + key + COUNTER_DATE_SUFFIX, System.currentTimeMillis());
  66. KVUtils.getDefault().putInt(COUNTER_PREFIX + key, 1);
  67. }
  68. }
  69. }