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