admin
2019-07-11 3824cbcaec6e6c67418d5280a53e9c2fedeef6f9
fanli/src/main/java/com/yeshi/fanli/aspect/ActiveUserAspect.java
@@ -1,7 +1,5 @@
package com.yeshi.fanli.aspect;
import java.io.IOException;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -9,16 +7,14 @@
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.entity.accept.AcceptData;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.ThreadUtil;
/**
 * 活跃用户处理
@@ -30,6 +26,9 @@
//@Aspect
//@Order(6)
public class ActiveUserAspect {
   @Resource(name = "taskExecutor")
   private TaskExecutor executor;
   @Resource
   private RedisManager redisManager;
@@ -37,66 +36,48 @@
   @Resource
   private UserSystemCouponService userSystemCouponService;
   public static final String EDP = "execution(* com.yeshi.fanli.controller.client.*.*(..))";
   @Around(EDP)
   public Object activeAround(ProceedingJoinPoint joinPoint) throws Throwable {
      Object[] args = joinPoint.getArgs();
      if (!Constant.IS_OUTNET) {
         return joinPoint.proceed(args); // 外网环境
      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);
      }
      try {
         System.out.println("----------活跃验证---------------");
         ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
               .getRequestAttributes();
         HttpServletRequest request = servletContainer.getRequest();
         String strUid = request.getParameter("uid");
         if (strUid == null || strUid.trim().length() == 0) {
            return joinPoint.proceed(args);
         }
         Long uid = Long.parseLong(strUid);
         String key = "activeUid_" + uid;
         String cacheValue = redisManager.getCommonString(key);
         if (cacheValue != null && cacheValue.trim().length() > 0) {
            return joinPoint.proceed(args);
         }
         // 加入缓存
         redisManager.cacheCommonString("activeUid_" + uid, strUid, 60);
         AcceptData acceptData = null;
         for (Object argsobj : args) {
            if (argsobj instanceof AcceptData) {
               acceptData = (AcceptData) argsobj;
      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(key, uuid.toString(), 60 * 20);
            }
         }
         if (acceptData == null) {
            return joinPoint.proceed(args);
         }
         int platformType = 0;
         String platform = acceptData.getPlatform();
         if ("android".equals(platform)) {
            platformType = 1;
         } else if ("ios".equals(platform)) {
            platformType = 2;
         }
         userSystemCouponService.copyLotteryPrize(uid, platformType, acceptData.getDevice());
      } catch (Exception e) {
         e.printStackTrace();
      }
      });
      
      return joinPoint.proceed(args);
      return joinPoint.proceed(joinPoint.getArgs());
   }
}