yujian
2019-03-07 b81fc01051ba161f8772eaddd120d1ecf24a5fd2
活跃期间 领取推送券
1个文件已修改
93 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/aspect/ActiveUserAspect.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,6 +7,7 @@
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;
@@ -16,9 +15,7 @@
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;
/**
 * 活跃用户处理
@@ -31,47 +28,31 @@
//@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 {
        Object[] args = joinPoint.getArgs();
        if (!Constant.IS_OUTNET) {
            return joinPoint.proceed(args); // 外网环境
        }
        try {
            System.out.println("----------活跃验证---------------");
            ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
                    .getRequestAttributes();
            HttpServletRequest request = servletContainer.getRequest();
        final Object[] args = joinPoint.getArgs();
            String strUid = request.getParameter("uid");
            if (strUid == null || strUid.trim().length() == 0) {
                return joinPoint.proceed(args);
            }
        final HttpServletRequest request = servletContainer.getRequest();
            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);
        executor.execute(new Runnable() {
            @Override
            public void run() {
            AcceptData acceptData = null;
            for (Object argsobj : args) {
@@ -80,23 +61,57 @@
                }
            }
                // 自动领取券-系统发放
                receivedPushCoupon(acceptData, request);
            }
        });
        return joinPoint.proceed(args);
    }
    /**
     * 使用中  自动领取系统推送券
     * @param acceptData
     * @param request
     */
    public void receivedPushCoupon(AcceptData acceptData, HttpServletRequest request) {
            if (acceptData == null) {
                return joinPoint.proceed(args);
            return;
            }
            int platformType = 0;
            String platform = acceptData.getPlatform();
            if ("android".equals(platform)) {
                platformType = 1;
            } else if ("ios".equals(platform)) {
                platformType = 2;
        String strUid = request.getParameter("uid");
        if (strUid == null || strUid.trim().length() == 0) {
            return;
            }
            userSystemCouponService.copyLotteryPrize(uid, platformType, acceptData.getDevice());
        try {
            Long uid = Long.parseLong(strUid);
            // 缓存中是否存在uid
            String key = "activeUid_" + uid;
            String cacheValue = redisManager.getCommonString(key);
            if (cacheValue != null && cacheValue.trim().length() > 0) {
                return;
            }
            // 加入缓存 20分钟
            redisManager.cacheCommonString("activeUid_" + uid, strUid, 60 * 20);
            // 接收券
            userSystemCouponService.receivedCoupon(uid);
        } catch (Exception e) {
            e.printStackTrace();
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        } 
        
        return joinPoint.proceed(args);
    }
}