admin
2018-12-12 af324ef9e3b4bebf723c7b4553956e102dc1bc10
增加提现H5审核
4个文件已修改
155 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/aspect/LoginAspect.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/config/SystemCommonConfig.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/system_config.properties 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/aspect/LoginAspect.java
@@ -2,7 +2,9 @@
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URLDecoder;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -17,66 +19,99 @@
import org.yeshi.utils.JsonUtil;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.service.AdminUserService;
import com.yeshi.fanli.util.AESUtil;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.annotation.RequestNoLogin;
import net.sf.json.JSONObject;
@Component
@Aspect
public class LoginAspect {
    @Resource
    private AdminUserService adminUserService;
    @Around("execution(public * com.yeshi.fanli.controller.admin.*.*(..))")
    public Object verifyLoginState(ProceedingJoinPoint joinPoint) throws IOException {
        Signature signature = joinPoint.getSignature();
        MethodSignature methodSignature = (MethodSignature) signature;
        Method targetMethod = methodSignature.getMethod();
        ServletRequestAttributes servletContainer = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = servletContainer.getRequest();
        AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
        if(admin==null){
            Method realMethod=null;
            try {
                realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(),
                        targetMethod.getParameterTypes());
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            }
            //判断是否有忽略验证的注解
            if (realMethod==null||!realMethod.isAnnotationPresent(RequestNoLogin.class))
            {
                HttpServletResponse response = servletContainer.getResponse();
        ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes();
        HttpServletRequest request = servletContainer.getRequest();
        AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
        if (admin == null) {
            String from = request.getParameter("from");
            // 邮件H5来源的不判断是否登录
            if ("emailh5".equalsIgnoreCase(from)) {
                String callback = request.getParameter("callback");
                if (StringUtil.isNullOrEmpty(callback)) {
                    response.getWriter().print(JsonUtil.loadFalseResult(1, "请先登录"));
                String signAES = URLDecoder.decode(request.getParameter("sign"),"UTF-8");
                String sign = AESUtil.decrypt(signAES, Constant.ADMINH5_AESKEY);
                if (!StringUtil.isNullOrEmpty(sign)) {
                    JSONObject json = JSONObject.fromObject(sign);
                    long time = json.optLong("timeStamp");
                    long adminId = json.optLong("adminId");
                    AdminUser adminUser = adminUserService.selectByPrimaryKey(adminId);
                    // 1个小时链接失效
                    if (System.currentTimeMillis() - time > 1000 * 60 * 60 || adminUser == null) {
                        servletContainer.getResponse().getWriter()
                                .print(callback + "(" + JsonUtil.loadFalseResult(2, "链接失效") + ")");
                        return null;
                    } else {
                        request.getSession().setAttribute(Constant.SESSION_ADMIN, adminUser);
                        request.getSession().setAttribute(Constant.SESSION_EXTRACT_VERIFY_RESULT, "1");
                    }
                } else {
                    response.getWriter().print(callback + "(" + JsonUtil.loadFalseResult(1, "请先登录") + ")");
                    servletContainer.getResponse().getWriter()
                            .print(callback + "(" + JsonUtil.loadFalseResult(3, "链接失效") + ")");
                    return null;
                }
                return null;
            } else {
                Method realMethod = null;
                try {
                    realMethod = joinPoint.getTarget().getClass().getDeclaredMethod(joinPoint.getSignature().getName(),
                            targetMethod.getParameterTypes());
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                } catch (SecurityException e) {
                    e.printStackTrace();
                }
                // 判断是否有忽略验证的注解
                if (realMethod == null || !realMethod.isAnnotationPresent(RequestNoLogin.class)) {
                    HttpServletResponse response = servletContainer.getResponse();
                    String callback = request.getParameter("callback");
                    if (StringUtil.isNullOrEmpty(callback)) {
                        response.getWriter().print(JsonUtil.loadFalseResult(1, "请先登录"));
                    } else {
                        response.getWriter().print(callback + "(" + JsonUtil.loadFalseResult(1, "请先登录") + ")");
                    }
                    return null;
                }
            }
        }
        Object[] args = joinPoint.getArgs();
        Object obj = null;
        try {
            obj = joinPoint.proceed(args);
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return obj;
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java
@@ -1,9 +1,11 @@
package com.yeshi.fanli.controller.client;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -49,6 +51,8 @@
import com.yeshi.fanli.entity.bus.user.UserActiveLog;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.entity.common.Config;
import com.yeshi.fanli.entity.goods.CollectionGoodsV2;
import com.yeshi.fanli.entity.system.System;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -58,6 +62,7 @@
import com.yeshi.fanli.exception.goods.CollectionGoodsException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.AdminUserService;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.config.SystemService;
import com.yeshi.fanli.service.inter.goods.CollectionGoodsV2Service;
@@ -81,6 +86,7 @@
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.WxDownService;
import com.yeshi.fanli.util.AESUtil;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.GsonUtil;
import com.yeshi.fanli.util.HongBaoUtil;
@@ -90,6 +96,7 @@
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.Utils;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.email.MailSenderUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
@@ -171,6 +178,9 @@
    @Resource
    private CollectionGoodsV2Service collectionGoodsV2Service;
    @Resource
    private AdminUserService adminUserService;
    private static final String PASSWORD_MAX_ERROR = "password_max_error";
    private static final String EXTRACT_MIN_MONEY = "extract_min_money";
@@ -1235,6 +1245,30 @@
            JSONObject data = new JSONObject();
            data.put("id", extract.getId());
            out.print(JsonUtil.loadTrueResult(data));
            ThreadUtil.run(new Runnable() {
                @Override
                public void run() {
                    JSONObject json = new JSONObject();
                    json.put("timeStamp", java.lang.System.currentTimeMillis());
                    json.put("adminId", 4L);
                    String sign = AESUtil.encrypt(json.toString(), Constant.ADMINH5_AESKEY);
                    String url="";
                    try {
                        url = String.format("%s?from=emailh5&sign=%s",
                                Constant.systemCommonConfig.getExtractNotifyUrl(), URLEncoder.encode(sign, "UTF-8"));
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                    AdminUser adminUser = adminUserService.selectByPrimaryKey(4L);
                    Config config = configService.getConfig("extract_code_email_from");
                    String[] sts = config.getValue().split(",");
                    String account = sts[0];
                    String pwd = sts[1];
                    String msg = "提现审核链接:" + url;
                    boolean isS = MailSenderUtil.sendEmail(adminUser.getEmail(), account, pwd, "有新的提现审核", msg);
                }
            });
            return;
        } else if (etype == 1) {
            out.print(JsonUtil.loadFalseResult("已超过当日提现次数"));
fanli/src/main/java/com/yeshi/fanli/entity/config/SystemCommonConfig.java
@@ -58,10 +58,21 @@
    @Map("base_user_rank_icon_url")
    private String baseUserRankIconUrl;
    @Map("ios_push_certificate_pwd")
    private String iosPushCertificatePwd;
    @Map("extract_notify_url")
    private String extractNotifyUrl;
    public String getExtractNotifyUrl() {
        return extractNotifyUrl;
    }
    public void setExtractNotifyUrl(String extractNotifyUrl) {
        this.extractNotifyUrl = extractNotifyUrl;
    }
    public String getIosPushCertificatePwd() {
        return iosPushCertificatePwd;
    }
fanli/src/main/resource/system_config.properties
@@ -54,3 +54,8 @@
#IOS原生推送密码
ios_push_certificate_pwd=123
#提现通知处理链接
extract_notify_url=http://admin.flq.yeshitv.com/window/0phone/tiXian.html