记得上下班打卡 | git大法好,push需谨慎

Commit 2bb1eb8f authored by 胡佳晨's avatar 胡佳晨

划卡优化

parent db54c6ce
...@@ -32,5 +32,14 @@ public final class RedisUtil extends AbstractRedisUtil{ ...@@ -32,5 +32,14 @@ public final class RedisUtil extends AbstractRedisUtil{
return this.redisConfig; return this.redisConfig;
} }
public static void main(String[] args) {
String[] keys = {
"chime:per:openNum:Allow510093798172016641784538"
};
for (String key : keys) {
long value = key.hashCode();
int idx = ((int) (value ^ (value >>> 32)) % 250);
System.out.printf("\n[%s] - idx:%s", key, idx);
}
}
} }
...@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import java.time.LocalDateTime;
import java.util.Calendar; import java.util.Calendar;
@Slf4j @Slf4j
...@@ -24,32 +25,28 @@ public class DoTaskUtils { ...@@ -24,32 +25,28 @@ public class DoTaskUtils {
/** /**
* 划卡调任务 * 划卡调任务
*
* @param currentUserId * @param currentUserId
*/ */
public void userAddNum(String currentUserId) { public void userAddNum(String currentUserId) {
Calendar cal = Calendar.getInstance(); long timeout = ((24 * 60 * 60) - LocalDateTime.now().getSecond());
cal.add(Calendar.DAY_OF_YEAR,1); Object obj = redisUtil.get(ChimeConstant.REDIS_USER_OPEN_NUM + currentUserId);
cal.set(Calendar.HOUR_OF_DAY,0); int slidCount ;
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.MILLISECOND,0);
Long timeout=(cal.getTimeInMillis()-System.currentTimeMillis())/1000;
Integer i;
//判断当天是否有划卡 //判断当天是否有划卡
if (!redisUtil.hasKey(ChimeConstant.REDIS_USER_OPEN_NUM+currentUserId)){ if (obj==null) {
i=1; slidCount = 1;
redisUtil.set(ChimeConstant.REDIS_USER_OPEN_NUM+currentUserId, i, timeout); } else {
}else { slidCount = (int)obj;
i = (Integer) redisUtil.get(ChimeConstant.REDIS_USER_OPEN_NUM+currentUserId)+1; slidCount = slidCount + 1;
} }
redisUtil.set(ChimeConstant.REDIS_USER_OPEN_NUM + currentUserId, slidCount, timeout);
redisUtil.set(ChimeConstant.REDIS_USER_OPEN_NUM+currentUserId, i, timeout);
//获取用户是否调用过任务接口 //获取用户是否调用过任务接口
boolean hasKey = redisUtil.hasKey(ChimeConstant.REDIS_USER_TO_DOTASK + currentUserId); boolean hasKey = redisUtil.hasKey(ChimeConstant.REDIS_USER_TO_DOTASK + currentUserId);
if(!hasKey){ if (!hasKey) {
//满足10次调用接口,每天最多调用一次 //满足10次调用接口,每天最多调用一次
if(i >= 10){ if (slidCount >= 10) {
MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString(); MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString();
params.add("uid", currentUserId); params.add("uid", currentUserId);
params.add("taskId", 3 + ""); params.add("taskId", 3 + "");
...@@ -60,9 +57,9 @@ public class DoTaskUtils { ...@@ -60,9 +57,9 @@ public class DoTaskUtils {
//接口调用失败,重试 //接口调用失败,重试
if (!success) { if (!success) {
this.userAddNum(currentUserId); this.userAddNum(currentUserId);
}else { } else {
//调用接口成功,记录 //调用接口成功,记录
redisUtil.set(ChimeConstant.REDIS_USER_TO_DOTASK +currentUserId,1,timeout); redisUtil.set(ChimeConstant.REDIS_USER_TO_DOTASK + currentUserId, 1, timeout);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment