package com.yeshi.fanli.aspect;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.annotation.Around;
|
import org.aspectj.lang.annotation.Aspect;
|
import org.springframework.core.annotation.Order;
|
import org.springframework.core.task.TaskExecutor;
|
import org.springframework.stereotype.Component;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.RedisManager;
|
|
/**
|
* 活跃用户处理
|
*
|
* @author Administrator
|
*
|
*/
|
@Component
|
@Aspect
|
@Order(6)
|
public class ActiveUserAspect {
|
|
@Resource(name = "taskExecutor")
|
private TaskExecutor executor;
|
|
@Resource
|
private RedisManager redisManager;
|
|
@Resource
|
private UserSystemCouponService userSystemCouponService;
|
|
|
public static final String EDP = "execution(* com.yeshi.fanli.controller.client.*.*(..))";
|
|
@Around(EDP)
|
public Object activeAround(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
Long uid = null;
|
|
ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
|
.getRequestAttributes();
|
HttpServletRequest request = servletContainer.getRequest();
|
|
String str_uid = request.getParameter("uid");
|
if (str_uid != null && str_uid.trim().length() > 0) {
|
uid = Long.parseLong(str_uid);
|
}
|
|
|
final Long uuid = uid;
|
|
executor.execute(new Runnable() {
|
@Override
|
public void run() {
|
|
if (uuid == null) {
|
return;
|
}
|
|
if (Constant.IS_OUTNET) {
|
String key = "activeUid_" + uuid;
|
// 缓存中是否存在uid
|
String cacheValue = redisManager.getCommonString(key);
|
if (cacheValue != null && cacheValue.trim().length() > 0) {
|
return;
|
}
|
// 加入缓存 20分钟
|
redisManager.cacheCommonString("activeUid_" + uuid, uuid.toString(), 60 * 20);
|
}
|
|
// 接收券
|
try {
|
userSystemCouponService.receivedCoupon(uuid);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
});
|
|
return joinPoint.proceed(joinPoint.getArgs());
|
}
|
|
}
|