java redisは簡単なユーザーサイン機能を実現します。
業務の需要はユーザーが毎日一回まで署名することしかできなくて、しかも署名した後にユーザーはポイントを増加して、だからユーザーを毎回署名する時redisキャッシュの中に置いて、それから毎日明け方の時に更にキャッシュを一掃して、大体簡単な思想はこのようです。
コードを直接見てください。
コードを直接見てください。
@Transactional
@Override
public void signIn(Integer memberId) throws BizException {
if(memberId==null){
throw new BizException(ErrorCode.BIZ_EXCEPTION.getErrcode(), " id null");
}
String day = DateFormatUtils.format(new Date(), "yyyyMMdd");
String key = "signin:"+day;
Boolean sismember = redisClient.sismember(key, memberId.toString());
if(sismember){
throw new BizException(ErrorCode.BIZ_EXCEPTION.getErrcode(), " ");
}else{
redisClient.sadd(key, memberId.toString());
redisClient.expire(key, getRefreshTime());
addPointsRecord(memberId,IntegralType.SIGN_IN);//
}
}
取得は夜明けまであとどれぐらいですか?
/**
*
* @return
*/
public static int getRefreshTime(){
Calendar calendar = Calendar.getInstance();
int now = (int) (calendar.getTimeInMillis()/1000);
calendar.add(Calendar.DATE, 1);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR_OF_DAY , 0);
return (int) (calendar.getTimeInMillis()/1000-now);
}
コントローラ
/**
*
* @return
*/
@WeiXinLogin
@RequestMapping("/signIn")
public ResponseModel signIn(){
try {
Integer memberId = RequestContext.getContext().getUser().getMemberId();
memberApi.signIn(memberId);
return new ResponseModel();
} catch (BizException e) {
LOGGER.error("signIn error");
return new ResponseModel(e.getErrcode(), e.getErrm(), null);
}
}
以上はjava redisが簡単なユーザーサイン機能の詳細を実現しました。Javaがユーザーサイン機能を実現することについての資料は他の関連記事に注目してください。