Commit 3b01caa6 authored by 技术部-任文超's avatar 技术部-任文超

Merge branch '20191025-sonar' into 'master'

20191025 sonar

See merge request !36
parents 01111283 e866a8bf
...@@ -6,26 +6,26 @@ package cn.quantgroup.user.enums; ...@@ -6,26 +6,26 @@ package cn.quantgroup.user.enums;
public enum MaritalStatus { public enum MaritalStatus {
UNKNOWN("未知"), UNKNOWN("未知"),
SINGLE("未婚"), // 1 SINGLE("未婚"),
MARRIED("已婚"), // 2 MARRIED("已婚"),
DIVORCED("离异"), // 3 DIVORCED("离异"),
WINDOWED("丧偶"), // 4 WINDOWED("丧偶"),
OTHER("其他"); OTHER("其他");
String description; private String desc;
MaritalStatus(String desc) { MaritalStatus(String desc) {
description = desc; this.desc = desc;
} }
public String getDescription() { public String getDesc() {
return description; return desc;
} }
@Override @Override
public String toString() { public String toString() {
String sb = "MaritalStatus{" + "description='" + description + '\'' + String sb = "MaritalStatus{" + "desc='" + desc + '\'' +
'}'; '}';
return sb; return sb;
} }
......
...@@ -15,19 +15,19 @@ public enum Relation { ...@@ -15,19 +15,19 @@ public enum Relation {
SELF("本人"), SELF("本人"),
OTHER("其他"); OTHER("其他");
String description; private String desc;
Relation(String desc) { Relation(String desc) {
description = desc; this.desc = desc;
} }
public String getDescription() { public String getDesc() {
return description; return desc;
} }
@Override @Override
public String toString() { public String toString() {
String sb = "Relation{" + "description='" + description + '\'' + String sb = "Relation{" + "desc='" + desc + '\'' +
'}'; '}';
return sb; return sb;
} }
......
...@@ -25,14 +25,58 @@ public interface Constants { ...@@ -25,14 +25,58 @@ public interface Constants {
Long VERIFICATION_CODE_FINITE_COUNT = 3L; Long VERIFICATION_CODE_FINITE_COUNT = 3L;
String X_AUTH_TOKEN = "x-auth-token"; String X_AUTH_TOKEN = "x-auth-token";
int VERIFICATION_LEN = 2;
int SMS_CODE_LEN_4 = 4;
int SMS_CODE_LEN_6 = 6;
int TOKEN_LENGTH = 36;
int MD5_LENGTH = 32;
int THOUSAND_SECOND = 1000;
int MILLIS_PER_SECOND = 1000;
int MILLIS_OF_TEN_SECOND = 10000;
int PAGE_SIZE_MAX = 200;
int PAGE_SIZE_DEFAULT = 30;
int DAY_NO_MAX = 31;
int DAY_NO_MIN = 1;
int MONTH_NO_MAX = 12;
int MONTH_NO_MIN = 1;
int AGE_MAX = 150;
int USER_QUERY_INFO_BATCH_SIZE = 3000;
int USER_ID_BATCH_SIZE = 500;
/** 垃圾,前辈竟然用这个办法来识别UUID */
int UUID_MIN_LENGTH = 10;
String AUTO_SORT_TYPE = "auto";
String CHECK_FAIL = "fail";
String SPLIT_CHAR = ":";
String TOKEN_MASTER = "*";
String PASSWORD_HEADER = "Basic ";
int AUTHORIZE_HEADER_SIZE = 2;
String PAGE_NEXT_KEY_XYQB = "xyqb";
/** /**
* 登录账号/手机号参数名 * 登录账号/手机号参数名
*/ */
String PHONE_NO = "phoneNo"; String PHONE_NO = "phoneNo";
String ID_NO = "idNo";
String USER_ID = "userId";
String USER_NAME = "name";
String BANK_CARD = "bankCard";
String ADDRESS = "address";
String PASSWORD = "password";
String RESULT_CODE = "code";
String RESULT_DATA = "data";
String SUCCESS_CODE = "0000";
String PROTOCOL_HEAD_HTTPS = "https:";
String PROTOCOL_HEAD_HTTP = "http";
String REDIRECT = "redirect";
String LOCAL = "local";
String DOCKER_DOMAIN = "liangkebang";
/** /**
* 微信标识参数名 * 微信标识参数名
*/ */
String WECHAT_OPEN_ID = "wechat_open_id"; String WECHAT_OPEN_ID = "wechat_open_id";
String MERCHANT_BAITIAO = "baitiao";
String MERCHANT_WECHAT_PAY = "wechat-pay";
// -- Start -- IPV4安全策略常量组 // -- Start -- IPV4安全策略常量组
/** /**
...@@ -109,13 +153,19 @@ public interface Constants { ...@@ -109,13 +153,19 @@ public interface Constants {
* 默认随机密码长度 * 默认随机密码长度
*/ */
int RANDOM_PWD_LEN = 15; int RANDOM_PWD_LEN = 15;
/** 旧的大陆身份证号长度 */
int ID_NO_OLD_LENGTH = 15;
/** 标准大陆身份证号长度 */ /** 标准大陆身份证号长度 */
int IDNO_LENGTH = 18; int ID_NO_STANDARD_LENGTH = 18;
int ID_NO_CHECK_LENGTH = 17;
int ID_NO_AREA_CODE_LENGTH = 2;
int ID_NO_CHECK_MASK = 11;
int GENDER_MASK = 2;
interface Channel { interface Channel {
long BAITIAO = 222L; long BAITIAO = 222L;
String LKB_CODE = "0002"; // 量化派channnel_code
long WECHAT = 198L; long WECHAT = 198L;
long HENGCHANG = 58L;
} }
interface Session { interface Session {
......
package cn.quantgroup.xyqb.aspect.accessable; package cn.quantgroup.xyqb.aspect.accessable;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
...@@ -20,10 +21,10 @@ import javax.servlet.http.HttpServletRequest; ...@@ -20,10 +21,10 @@ import javax.servlet.http.HttpServletRequest;
* @author renwc * @author renwc
* @date 2017-12-01 * @date 2017-12-01
*/ */
@Slf4j
@Aspect @Aspect
@Component @Component
public class IpValidateAdvisor { public class IpValidateAdvisor {
private static final Logger LOGGER = LoggerFactory.getLogger(IpValidateAdvisor.class);
@Pointcut("execution(public * cn.quantgroup.xyqb.controller.internal..*.*Controller.*(..)) " + @Pointcut("execution(public * cn.quantgroup.xyqb.controller.internal..*.*Controller.*(..)) " +
" || execution(public * cn.quantgroup.xyqb.controller.dust..*.*Controller.*(..)) " + " || execution(public * cn.quantgroup.xyqb.controller.dust..*.*Controller.*(..)) " +
...@@ -35,13 +36,13 @@ public class IpValidateAdvisor { ...@@ -35,13 +36,13 @@ public class IpValidateAdvisor {
private Object doWhiteIpMatch(ProceedingJoinPoint pjp) throws Throwable { private Object doWhiteIpMatch(ProceedingJoinPoint pjp) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// 客户端IP // 客户端IP
String clientIp = IPUtil.getRemoteIP(request); String clientIp = IpUtil.getRemoteIP(request);
// 白名单 // 白名单
if (IPUtil.whiteOf(clientIp)) { if (IpUtil.whiteOf(clientIp)) {
return pjp.proceed(); return pjp.proceed();
} }
IPUtil.logIp(LOGGER, request); IpUtil.logIp(log, request);
LOGGER.error("Lock_ipv4: don't match white ip access:{}", clientIp); log.error("Lock_ipv4: don't match white ip access:{}", clientIp);
return JsonResult.buildErrorStateResult("非法访问", null); return JsonResult.buildErrorStateResult("非法访问", null);
} }
} }
...@@ -4,9 +4,10 @@ package cn.quantgroup.xyqb.aspect.captcha; ...@@ -4,9 +4,10 @@ package cn.quantgroup.xyqb.aspect.captcha;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService; import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import com.octo.captcha.service.CaptchaServiceException; import com.octo.captcha.service.CaptchaServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
...@@ -37,11 +38,11 @@ import java.util.UUID; ...@@ -37,11 +38,11 @@ import java.util.UUID;
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-07 * @since 2017-11-07
*/ */
@Slf4j
@Aspect @Aspect
@Component @Component
public class CaptchaFiniteValidateAdvisor { public class CaptchaFiniteValidateAdvisor {
private static final Logger LOGGER = LoggerFactory.getLogger(CaptchaFiniteValidateAdvisor.class);
private static final String SUPER_CAPTCHA_ID = UUID.nameUUIDFromBytes("__QG_APPCLIENT_AGENT__".getBytes(Charset.forName("UTF-8"))).toString(); private static final String SUPER_CAPTCHA_ID = UUID.nameUUIDFromBytes("__QG_APPCLIENT_AGENT__".getBytes(Charset.forName("UTF-8"))).toString();
private static final String SUPER_CAPTCHA = "__SUPERQG__"; private static final String SUPER_CAPTCHA = "__SUPERQG__";
...@@ -84,7 +85,7 @@ public class CaptchaFiniteValidateAdvisor { ...@@ -84,7 +85,7 @@ public class CaptchaFiniteValidateAdvisor {
String phoneNo = phonePasswordMap.get(Constants.PHONE_NO); String phoneNo = phonePasswordMap.get(Constants.PHONE_NO);
Long countErrorByPhone = getCount(phoneNo); Long countErrorByPhone = getCount(phoneNo);
if (countErrorByPhone == null) { if (countErrorByPhone == null) {
LOGGER.info("用户名或密码不正确, phoneNo={}, countErrorByPhone={}, clientIp={}", phoneNo, countErrorByPhone, IPUtil.getRemoteIP(request)); log.info("用户名或密码不正确, phoneNo={}, countErrorByPhone={}, clientIp={}", phoneNo, countErrorByPhone, IpUtil.getRemoteIP(request));
return JsonResult.buildErrorStateResult("用户名或密码不正确", null); return JsonResult.buildErrorStateResult("用户名或密码不正确", null);
} }
if (countErrorByPhone > Constants.Image_Need_Count) { if (countErrorByPhone > Constants.Image_Need_Count) {
...@@ -92,7 +93,7 @@ public class CaptchaFiniteValidateAdvisor { ...@@ -92,7 +93,7 @@ public class CaptchaFiniteValidateAdvisor {
String captchaId = Optional.ofNullable(request.getParameter(Constants.QG_CAPTCHA_ID)).orElse(""); String captchaId = Optional.ofNullable(request.getParameter(Constants.QG_CAPTCHA_ID)).orElse("");
String captchaValue = request.getParameter(Constants.QG_CAPTCHA_VALUE); String captchaValue = request.getParameter(Constants.QG_CAPTCHA_VALUE);
if (shouldSkipCaptchaValidate(registerFrom, captchaId, captchaValue)) { if (shouldSkipCaptchaValidate(registerFrom, captchaId, captchaValue)) {
LOGGER.info("使用超级图形验证码校验, registerFrom={}, clientIp={}", registerFrom, IPUtil.getRemoteIP(request)); log.info("使用超级图形验证码校验, registerFrom={}, clientIp={}", registerFrom, IpUtil.getRemoteIP(request));
return pjp.proceed(); return pjp.proceed();
} }
if (StringUtils.isNotBlank(captchaValue)) { if (StringUtils.isNotBlank(captchaValue)) {
...@@ -103,7 +104,7 @@ public class CaptchaFiniteValidateAdvisor { ...@@ -103,7 +104,7 @@ public class CaptchaFiniteValidateAdvisor {
try { try {
validCaptcha = imageCaptchaService.validateResponseForID(Constants.IMAGE_CAPTCHA_KEY + captchaId, captcha); validCaptcha = imageCaptchaService.validateResponseForID(Constants.IMAGE_CAPTCHA_KEY + captchaId, captcha);
} catch (CaptchaServiceException ex) { } catch (CaptchaServiceException ex) {
LOGGER.error("验证码校验异常, {}, {}", ex.getMessage(), ex); log.error("验证码校验异常, {}, {}", ex.getMessage(), ex);
} }
if (validCaptcha) { if (validCaptcha) {
return pjp.proceed(); return pjp.proceed();
...@@ -150,19 +151,18 @@ public class CaptchaFiniteValidateAdvisor { ...@@ -150,19 +151,18 @@ public class CaptchaFiniteValidateAdvisor {
* @return 账密参数Map 或 null * @return 账密参数Map 或 null
*/ */
private Map<String, String> getHeaderParam(HttpServletRequest request) { private Map<String, String> getHeaderParam(HttpServletRequest request) {
String verificationHeader = "Basic ";
String credential = request.getHeader("authorization"); String credential = request.getHeader("authorization");
if (StringUtils.isBlank(credential) || !credential.startsWith(verificationHeader)) { if (StringUtils.isBlank(credential) || !credential.startsWith(Constants.PASSWORD_HEADER)) {
LOGGER.info("参数无效, credential:{}", credential); log.info("参数无效, credential:{}", credential);
return null; return null;
} }
credential = credential.substring(verificationHeader.length(), credential.length()); credential = credential.substring(Constants.PASSWORD_HEADER.length());
byte[] buf = Base64.decodeBase64(credential); byte[] buf = Base64.decodeBase64(credential);
credential = new String(buf, Charset.forName("UTF-8")); credential = new String(buf, Charset.forName("UTF-8"));
String[] credentialArr = credential.split(":"); String[] credentialArr = credential.split(":");
boolean headerParamValid = credentialArr.length == 2; boolean headerParamValid = credentialArr.length == 2;
if (!headerParamValid) { if (!headerParamValid) {
LOGGER.info("参数无效, credential:{}", credential); log.info("参数无效, credential:{}", credential);
return null; return null;
} }
// 当前用户手机号和密码 // 当前用户手机号和密码
...@@ -170,10 +170,10 @@ public class CaptchaFiniteValidateAdvisor { ...@@ -170,10 +170,10 @@ public class CaptchaFiniteValidateAdvisor {
String password = credentialArr[1]; String password = credentialArr[1];
headerParamValid = headerParamValid && ValidationUtil.validatePhoneNo(phoneNo) && StringUtils.isNotBlank(password); headerParamValid = headerParamValid && ValidationUtil.validatePhoneNo(phoneNo) && StringUtils.isNotBlank(password);
if (!headerParamValid) { if (!headerParamValid) {
LOGGER.info("参数无效, credential:{}, phoneNo:{}, password:{}", credential, phoneNo, password); log.info("参数无效, credential:{}, phoneNo:{}, password:{}", credential, phoneNo, password);
return null; return null;
} }
LOGGER.info("账密登录, phoneNo:{}", phoneNo); log.info("账密登录, phoneNo:{}", phoneNo);
Map<String, String> phonePasswordMap = new HashMap<>(2); Map<String, String> phonePasswordMap = new HashMap<>(2);
phonePasswordMap.put(Constants.PHONE_NO, phoneNo); phonePasswordMap.put(Constants.PHONE_NO, phoneNo);
phonePasswordMap.put("password", password); phonePasswordMap.put("password", password);
......
...@@ -5,7 +5,7 @@ import cn.quantgroup.xyqb.model.ClientType; ...@@ -5,7 +5,7 @@ import cn.quantgroup.xyqb.model.ClientType;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService; import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService;
import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService; import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
...@@ -84,8 +84,8 @@ public class CaptchaNewValidateAdvisor { ...@@ -84,8 +84,8 @@ public class CaptchaNewValidateAdvisor {
String challenge = request.getParameter(Constants.FN_GEETEST_CHALLENGE); String challenge = request.getParameter(Constants.FN_GEETEST_CHALLENGE);
String validate = request.getParameter(Constants.FN_GEETEST_VALIDATE); String validate = request.getParameter(Constants.FN_GEETEST_VALIDATE);
String seccode = request.getParameter(Constants.FN_GEETEST_SECCODE); String seccode = request.getParameter(Constants.FN_GEETEST_SECCODE);
log.info("Geetest - 极验二次校验, phoneNo:{}, uniqueKey:{}, clientType:{}, ip:{}, challenge:{}, validate:{}, seccode:{}", phoneNo, uniqueKey, clientType, IPUtil.getRemoteIP(request), challenge, validate, seccode); log.info("Geetest - 极验二次校验, phoneNo:{}, uniqueKey:{}, clientType:{}, ip:{}, challenge:{}, validate:{}, seccode:{}", phoneNo, uniqueKey, clientType, IpUtil.getRemoteIP(request), challenge, validate, seccode);
return geetestCaptchaService.validGeetestCaptcha(uniqueKey, IPUtil.getRemoteIP(request), ClientType.valueByName(clientType), challenge, validate, seccode); return geetestCaptchaService.validGeetestCaptcha(uniqueKey, IpUtil.getRemoteIP(request), ClientType.valueByName(clientType), challenge, validate, seccode);
} }
/** /**
...@@ -99,7 +99,7 @@ public class CaptchaNewValidateAdvisor { ...@@ -99,7 +99,7 @@ public class CaptchaNewValidateAdvisor {
String phoneNo = request.getParameter(Constants.PHONE_NO); String phoneNo = request.getParameter(Constants.PHONE_NO);
String captchaId = Optional.ofNullable(request.getParameter(Constants.QG_CAPTCHA_ID)).orElse(""); String captchaId = Optional.ofNullable(request.getParameter(Constants.QG_CAPTCHA_ID)).orElse("");
String captchaValue = request.getParameter(Constants.QG_CAPTCHA_VALUE); String captchaValue = request.getParameter(Constants.QG_CAPTCHA_VALUE);
log.info("Quantgroup - 图形验证码校验, phoneNo:{}, ip:{}, captchaId:{}, captchaValue:{}", phoneNo, IPUtil.getRemoteIP(request), captchaId, captchaValue); log.info("Quantgroup - 图形验证码校验, phoneNo:{}, ip:{}, captchaId:{}, captchaValue:{}", phoneNo, IpUtil.getRemoteIP(request), captchaId, captchaValue);
return quantgroupCaptchaService.validQuantgroupCaptcha(captchaId, captchaValue); return quantgroupCaptchaService.validQuantgroupCaptcha(captchaId, captchaValue);
} }
......
...@@ -3,8 +3,9 @@ package cn.quantgroup.xyqb.aspect.captcha; ...@@ -3,8 +3,9 @@ package cn.quantgroup.xyqb.aspect.captcha;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService; import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import com.octo.captcha.service.CaptchaServiceException; import com.octo.captcha.service.CaptchaServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
...@@ -36,11 +37,11 @@ import java.util.UUID; ...@@ -36,11 +37,11 @@ import java.util.UUID;
* 修改时间:15/11/17 14:49 * 修改时间:15/11/17 14:49
* 修改备注: * 修改备注:
*/ */
@Slf4j
@Aspect @Aspect
@Component @Component
public class CaptchaValidateAdvisor { public class CaptchaValidateAdvisor {
private static final Logger LOGGER = LoggerFactory.getLogger(CaptchaValidateAdvisor.class);
private static final String SUPER_CAPTCHA_ID = UUID.nameUUIDFromBytes("__QG_APPCLIENT_AGENT__".getBytes(Charset.forName("UTF-8"))).toString(); private static final String SUPER_CAPTCHA_ID = UUID.nameUUIDFromBytes("__QG_APPCLIENT_AGENT__".getBytes(Charset.forName("UTF-8"))).toString();
private static final String SUPER_CAPTCHA = "__SUPERQG__"; private static final String SUPER_CAPTCHA = "__SUPERQG__";
...@@ -79,7 +80,7 @@ public class CaptchaValidateAdvisor { ...@@ -79,7 +80,7 @@ public class CaptchaValidateAdvisor {
String captchaId = Optional.ofNullable(request.getParameter(Constants.QG_CAPTCHA_ID)).orElse(""); String captchaId = Optional.ofNullable(request.getParameter(Constants.QG_CAPTCHA_ID)).orElse("");
String captchaValue = request.getParameter(Constants.QG_CAPTCHA_VALUE); String captchaValue = request.getParameter(Constants.QG_CAPTCHA_VALUE);
if (shouldSkipCaptchaValidate(registerFrom, captchaId, captchaValue)) { if (shouldSkipCaptchaValidate(registerFrom, captchaId, captchaValue)) {
LOGGER.info("使用超级图形验证码校验, registerFrom={}, clientIp={}", registerFrom, IPUtil.getRemoteIP(request)); log.info("使用超级图形验证码校验, registerFrom={}, clientIp={}", registerFrom, IpUtil.getRemoteIP(request));
return pjp.proceed(); return pjp.proceed();
} }
JsonResult result = JsonResult.buildSuccessResult("验证码不正确", ""); JsonResult result = JsonResult.buildSuccessResult("验证码不正确", "");
...@@ -92,7 +93,7 @@ public class CaptchaValidateAdvisor { ...@@ -92,7 +93,7 @@ public class CaptchaValidateAdvisor {
try { try {
validCaptcha = imageCaptchaService.validateResponseForID(Constants.IMAGE_CAPTCHA_KEY + captchaId, captcha); validCaptcha = imageCaptchaService.validateResponseForID(Constants.IMAGE_CAPTCHA_KEY + captchaId, captcha);
} catch (CaptchaServiceException ex) { } catch (CaptchaServiceException ex) {
LOGGER.error("验证码校验异常, {}, {}", ex.getMessage(), ex); log.error("验证码校验异常, {}, {}", ex.getMessage(), ex);
} }
if (validCaptcha) { if (validCaptcha) {
return pjp.proceed(); return pjp.proceed();
......
...@@ -5,7 +5,8 @@ import cn.quantgroup.xyqb.entity.User; ...@@ -5,7 +5,8 @@ import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder; import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
...@@ -28,11 +29,11 @@ import java.util.Set; ...@@ -28,11 +29,11 @@ import java.util.Set;
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-21 * @since 2017-11-21
*/ */
@Slf4j
@Aspect @Aspect
@Component @Component
public class PasswordFreeAccessValidateAdvisor { public class PasswordFreeAccessValidateAdvisor {
private static final Logger LOGGER = LoggerFactory.getLogger(PasswordFreeAccessValidateAdvisor.class);
private static final String USER_ID = "userId"; private static final String USER_ID = "userId";
/** /**
...@@ -65,42 +66,42 @@ public class PasswordFreeAccessValidateAdvisor { ...@@ -65,42 +66,42 @@ public class PasswordFreeAccessValidateAdvisor {
*/ */
private boolean tokenValid(HttpServletRequest request) { private boolean tokenValid(HttpServletRequest request) {
Objects.requireNonNull(request, "无效请求"); Objects.requireNonNull(request, "无效请求");
String clientIp = IPUtil.getRemoteIP(request); String clientIp = IpUtil.getRemoteIP(request);
Set<String> paramKeys = request.getParameterMap().keySet(); Set<String> paramKeys = request.getParameterMap().keySet();
if (!paramKeys.contains(Constants.PHONE_NO) && !paramKeys.contains(USER_ID)) { if (!paramKeys.contains(Constants.PHONE_NO) && !paramKeys.contains(USER_ID)) {
LOGGER.info("非法请求 - 缺少参数, paramKeys={}, clientIp={}", paramKeys, clientIp); log.info("非法请求 - 缺少参数, paramKeys={}, clientIp={}", paramKeys, clientIp);
return false; return false;
} }
// 当前请求的phoneNo/userId // 当前请求的phoneNo/userId
String phoneNo = request.getParameter(Constants.PHONE_NO); String phoneNo = request.getParameter(Constants.PHONE_NO);
String userId = request.getParameter(USER_ID); String userId = request.getParameter(USER_ID);
if (StringUtils.isBlank(phoneNo) && StringUtils.isBlank(userId)) { if (StringUtils.isBlank(phoneNo) && StringUtils.isBlank(userId)) {
LOGGER.info("非法请求 - 缺少参数, phoneNo={}, userId={}, clientIp={}", phoneNo, userId, clientIp); log.info("非法请求 - 缺少参数, phoneNo={}, userId={}, clientIp={}", phoneNo, userId, clientIp);
return false; return false;
} }
// 当前请求的Token // 当前请求的Token
String token = request.getHeader(Constants.X_AUTH_TOKEN); String token = request.getHeader(Constants.X_AUTH_TOKEN);
if (Objects.isNull(token) || token.length() != 36) { if (StringUtils.length(token) != Constants.TOKEN_LENGTH) {
LOGGER.info("非法请求 - 无效token, token={}, phoneNo={}, userId={}, clientIp={}", token, phoneNo, userId, clientIp); log.info("非法请求 - 无效token, token={}, phoneNo={}, userId={}, clientIp={}", token, phoneNo, userId, clientIp);
return false; return false;
} }
// 当前session // 当前session
SessionStruct session = XyqbSessionContextHolder.getXSessionFromRedis(token); SessionStruct session = XyqbSessionContextHolder.getXSessionFromRedis(token);
if (Objects.isNull(session) || Objects.isNull(session.getValues()) || Objects.isNull(session.getValues().getUser())) { if (Objects.isNull(session) || Objects.isNull(session.getValues()) || Objects.isNull(session.getValues().getUser())) {
LOGGER.info("非法请求 - 未登录, token={}, phoneNo={}, userId={}, clientIp={}", token, phoneNo, userId, clientIp); log.info("非法请求 - 未登录, token={}, phoneNo={}, userId={}, clientIp={}", token, phoneNo, userId, clientIp);
return false; return false;
} }
// 当前用户 // 当前用户
User user = session.getValues().getUser(); User user = session.getValues().getUser();
if (Objects.isNull(user.getId()) && StringUtils.isBlank(user.getPhoneNo())) { if (Objects.isNull(user.getId()) && StringUtils.isBlank(user.getPhoneNo())) {
LOGGER.info("非法请求 - 未登录, token={}, phoneNo={}, userId={}, clientIp={}", token, phoneNo, userId, clientIp); log.info("非法请求 - 未登录, token={}, phoneNo={}, userId={}, clientIp={}", token, phoneNo, userId, clientIp);
return false; return false;
} }
// 校对用户信息是否匹配 // 校对用户信息是否匹配
boolean valid = (Objects.nonNull(user.getId()) && Objects.equals(userId, user.getId().toString())); boolean valid = (Objects.nonNull(user.getId()) && Objects.equals(userId, user.getId().toString()));
valid = valid || (StringUtils.isNotBlank(phoneNo) && Objects.equals(phoneNo, user.getPhoneNo())); valid = valid || (StringUtils.isNotBlank(phoneNo) && Objects.equals(phoneNo, user.getPhoneNo()));
if (!valid) { if (!valid) {
LOGGER.info("非法请求 - 身份不匹配, token={}, phoneNo=({},{}), userId=({},{}), clientIp={}", token, phoneNo, user.getPhoneNo(), userId, user.getId(), clientIp); log.info("非法请求 - 身份不匹配, token={}, phoneNo=({},{}), userId=({},{}), clientIp={}", token, phoneNo, user.getPhoneNo(), userId, user.getId(), clientIp);
} }
return valid; return valid;
} }
......
...@@ -3,7 +3,8 @@ package cn.quantgroup.xyqb.aspect.lock; ...@@ -3,7 +3,8 @@ package cn.quantgroup.xyqb.aspect.lock;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
...@@ -28,12 +29,11 @@ import java.util.Objects; ...@@ -28,12 +29,11 @@ import java.util.Objects;
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-23 * @since 2017-11-23
*/ */
@Slf4j
@Aspect @Aspect
@Component @Component
public class PasswordErrorFiniteValidateAdvisor { public class PasswordErrorFiniteValidateAdvisor {
private static final Logger LOGGER = LoggerFactory.getLogger(PasswordErrorFiniteValidateAdvisor.class);
@Autowired @Autowired
@Qualifier("stringRedisTemplate") @Qualifier("stringRedisTemplate")
private RedisTemplate<String, String> redisTemplate; private RedisTemplate<String, String> redisTemplate;
...@@ -56,9 +56,9 @@ public class PasswordErrorFiniteValidateAdvisor { ...@@ -56,9 +56,9 @@ public class PasswordErrorFiniteValidateAdvisor {
private Object doFiniteValidate(ProceedingJoinPoint pjp) throws Throwable { private Object doFiniteValidate(ProceedingJoinPoint pjp) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// 客户端IP // 客户端IP
String clientIp = IPUtil.getRemoteIP(request); String clientIp = IpUtil.getRemoteIP(request);
// 白名单 // 白名单
if (IPUtil.whiteOf(clientIp)) { if (IpUtil.whiteOf(clientIp)) {
return pjp.proceed(); return pjp.proceed();
} }
// 补充白名单 // 补充白名单
...@@ -66,20 +66,20 @@ public class PasswordErrorFiniteValidateAdvisor { ...@@ -66,20 +66,20 @@ public class PasswordErrorFiniteValidateAdvisor {
return pjp.proceed(); return pjp.proceed();
} }
// 入口服务器IP // 入口服务器IP
if (StringUtils.startsWith(clientIp, "139.198.")) { if (StringUtils.startsWith(clientIp, IpUtil.IO_IP)) {
return pjp.proceed(); return pjp.proceed();
} }
// 黑名单 // 黑名单
if (redisTemplate.opsForSet().isMember(Constants.IPV4_LOCK_BLACK, clientIp)) { if (redisTemplate.opsForSet().isMember(Constants.IPV4_LOCK_BLACK, clientIp)) {
IPUtil.logIp(LOGGER, request); IpUtil.logIp(log, request);
LOGGER.info("Lock_ipv4: black ip access:{}", clientIp); log.info("Lock_ipv4: black ip access:{}", clientIp);
return JsonResult.buildErrorStateResult("登录失败", null); return JsonResult.buildErrorStateResult("登录失败", null);
} }
String lockIpv4Key = getLockIpv4Key(clientIp); String lockIpv4Key = getLockIpv4Key(clientIp);
String lock = redisTemplate.opsForValue().get(lockIpv4Key); String lock = redisTemplate.opsForValue().get(lockIpv4Key);
if (Objects.equals(Boolean.TRUE.toString(), lock)) { if (Objects.equals(Boolean.TRUE.toString(), lock)) {
IPUtil.logIp(LOGGER, request); IpUtil.logIp(log, request);
LOGGER.info("Lock_ipv4: locked ip access:{}", clientIp); log.info("Lock_ipv4: locked ip access:{}", clientIp);
return JsonResult.buildErrorStateResult("登录失败", null); return JsonResult.buildErrorStateResult("登录失败", null);
} }
return pjp.proceed(); return pjp.proceed();
......
package cn.quantgroup.xyqb.aspect.logcaller; package cn.quantgroup.xyqb.aspect.logcaller;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import com.google.common.base.Stopwatch; import com.google.common.base.Stopwatch;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
...@@ -21,13 +22,12 @@ import java.util.concurrent.TimeUnit; ...@@ -21,13 +22,12 @@ import java.util.concurrent.TimeUnit;
* 调用者记录 * 调用者记录
* Created by Administrator on 2017/5/15. * Created by Administrator on 2017/5/15.
*/ */
@Slf4j
@Aspect @Aspect
@Component @Component
@Order(value = Ordered.HIGHEST_PRECEDENCE) @Order(value = Ordered.HIGHEST_PRECEDENCE)
public class LogCallHttpAspect { public class LogCallHttpAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(LogCallHttpAspect.class);
@Pointcut(value = "execution(public * cn.quantgroup.xyqb.controller..*.*(..)) " + @Pointcut(value = "execution(public * cn.quantgroup.xyqb.controller..*.*(..)) " +
"&& !execution(* cn.quantgroup.xyqb.controller.ExceptionHandlingController.*(..))") "&& !execution(* cn.quantgroup.xyqb.controller.ExceptionHandlingController.*(..))")
private void logHttpCaller() { private void logHttpCaller() {
...@@ -38,7 +38,7 @@ public class LogCallHttpAspect { ...@@ -38,7 +38,7 @@ public class LogCallHttpAspect {
Stopwatch stopwatch = Stopwatch.createStarted(); Stopwatch stopwatch = Stopwatch.createStarted();
ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attrs.getRequest(); HttpServletRequest request = attrs.getRequest();
String remoteIP = IPUtil.getRemoteIP(request); String remoteIP = IpUtil.getRemoteIP(request);
Object[] args = pjp.getArgs(); Object[] args = pjp.getArgs();
boolean hasException = false; boolean hasException = false;
Object result; Object result;
...@@ -50,7 +50,7 @@ public class LogCallHttpAspect { ...@@ -50,7 +50,7 @@ public class LogCallHttpAspect {
} finally { } finally {
Stopwatch stop = stopwatch.stop(); Stopwatch stop = stopwatch.stop();
long elapsed = stop.elapsed(TimeUnit.MILLISECONDS); long elapsed = stop.elapsed(TimeUnit.MILLISECONDS);
LOGGER.info("[httpRequestLog],url:[{}],remoteIP:[{}],args:[{}],duration:[{}],exception:[{}]", log.info("[httpRequestLog],url:[{}],remoteIP:[{}],args:[{}],duration:[{}],exception:[{}]",
request.getRequestURL(), remoteIP, args, elapsed, hasException); request.getRequestURL(), remoteIP, args, elapsed, hasException);
} }
return result; return result;
......
...@@ -25,7 +25,7 @@ public class CaptchaConfig { ...@@ -25,7 +25,7 @@ public class CaptchaConfig {
@Bean @Bean
public CaptchaEngine initCaptchaEngine() { public CaptchaEngine initCaptchaEngine() {
return new CustomJCaptchaEngine(); return new CustomCaptchaEngine();
} }
@Bean @Bean
...@@ -39,7 +39,7 @@ public class CaptchaConfig { ...@@ -39,7 +39,7 @@ public class CaptchaConfig {
@Bean(name = "customCaptchaService") @Bean(name = "customCaptchaService")
@Autowired @Autowired
public AbstractManageableImageCaptchaService initCaptchaService(CaptchaStore captchaStore, CaptchaEngine captchaEngine) { public AbstractManageableImageCaptchaService initCaptchaService(CaptchaStore captchaStore, CaptchaEngine captchaEngine) {
return new CustomJCaptchaService(captchaStore, captchaEngine); return new CustomCaptchaService(captchaStore, captchaEngine);
} }
} }
...@@ -23,7 +23,7 @@ import java.awt.*; ...@@ -23,7 +23,7 @@ import java.awt.*;
import java.awt.image.ImageFilter; import java.awt.image.ImageFilter;
/** /**
* 类名称:CustomJCaptchaEngine * 类名称:CustomCaptchaEngine
* 类描述: * 类描述:
* *
* @author 李宁 * @author 李宁
...@@ -33,7 +33,7 @@ import java.awt.image.ImageFilter; ...@@ -33,7 +33,7 @@ import java.awt.image.ImageFilter;
* 修改时间:15/11/17 12:04 * 修改时间:15/11/17 12:04
* 修改备注: * 修改备注:
*/ */
public class CustomJCaptchaEngine extends ListImageCaptchaEngine { public class CustomCaptchaEngine extends ListImageCaptchaEngine {
private static final int MIN_WORD_LEN = 4; private static final int MIN_WORD_LEN = 4;
private static final int MAX_WORD_LEN = 4; private static final int MAX_WORD_LEN = 4;
......
...@@ -5,14 +5,13 @@ import com.octo.captcha.Captcha; ...@@ -5,14 +5,13 @@ import com.octo.captcha.Captcha;
import com.octo.captcha.engine.CaptchaEngine; import com.octo.captcha.engine.CaptchaEngine;
import com.octo.captcha.service.CaptchaServiceException; import com.octo.captcha.service.CaptchaServiceException;
import com.octo.captcha.service.captchastore.CaptchaStore; import com.octo.captcha.service.captchastore.CaptchaStore;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Locale; import java.util.Locale;
/** /**
* 类名称:CustomJCaptchaService * 类名称:CustomCaptchaService
* 类描述:自定义的验证马实现服务 * 类描述:自定义的验证马实现服务
* *
* @author 李宁 * @author 李宁
...@@ -22,9 +21,8 @@ import java.util.Locale; ...@@ -22,9 +21,8 @@ import java.util.Locale;
* 修改时间:15/11/17 19:41 * 修改时间:15/11/17 19:41
* 修改备注: * 修改备注:
*/ */
public class CustomJCaptchaService extends AbstractManageableImageCaptchaService { @Slf4j
public class CustomCaptchaService extends AbstractManageableImageCaptchaService {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomJCaptchaService.class);
/* /*
* 验证码管理策略: * 验证码管理策略:
...@@ -35,12 +33,12 @@ public class CustomJCaptchaService extends AbstractManageableImageCaptchaService ...@@ -35,12 +33,12 @@ public class CustomJCaptchaService extends AbstractManageableImageCaptchaService
private static final Integer MAX_CAPTCHA_STORE_SIZE = 70000; // 最大容量, 默认值是10w private static final Integer MAX_CAPTCHA_STORE_SIZE = 70000; // 最大容量, 默认值是10w
private static final Integer CAPTCHA_STORE_LOAD_BEFORE_GARBAGE_COLLECTION = 52500; // 配额, 超过此配额时执行一次垃圾清除, 默认值是:75000 private static final Integer CAPTCHA_STORE_LOAD_BEFORE_GARBAGE_COLLECTION = 52500; // 配额, 超过此配额时执行一次垃圾清除, 默认值是:75000
public CustomJCaptchaService(CaptchaStore captchaStore, CaptchaEngine captchaEngine) { public CustomCaptchaService(CaptchaStore captchaStore, CaptchaEngine captchaEngine) {
this(captchaStore, captchaEngine, MIN_GUARANTED_STORAGE_DELAY_IN_SECONDS, MAX_CAPTCHA_STORE_SIZE, CAPTCHA_STORE_LOAD_BEFORE_GARBAGE_COLLECTION); this(captchaStore, captchaEngine, MIN_GUARANTED_STORAGE_DELAY_IN_SECONDS, MAX_CAPTCHA_STORE_SIZE, CAPTCHA_STORE_LOAD_BEFORE_GARBAGE_COLLECTION);
} }
protected CustomJCaptchaService(CaptchaStore captchaStore, CaptchaEngine captchaEngine, int minGuarantedStorageDelayInSeconds, int maxCaptchaStoreSize, int captchaStoreLoadBeforeGarbageCollection) { protected CustomCaptchaService(CaptchaStore captchaStore, CaptchaEngine captchaEngine, int minGuarantedStorageDelayInSeconds, int maxCaptchaStoreSize, int captchaStoreLoadBeforeGarbageCollection) {
super(captchaStore, captchaEngine, minGuarantedStorageDelayInSeconds, maxCaptchaStoreSize, captchaStoreLoadBeforeGarbageCollection); super(captchaStore, captchaEngine, minGuarantedStorageDelayInSeconds, maxCaptchaStoreSize, captchaStoreLoadBeforeGarbageCollection);
} }
...@@ -70,7 +68,7 @@ public class CustomJCaptchaService extends AbstractManageableImageCaptchaService ...@@ -70,7 +68,7 @@ public class CustomJCaptchaService extends AbstractManageableImageCaptchaService
} }
valid = captcha.validateResponse(response); valid = captcha.validateResponse(response);
} catch (Exception ex) { } catch (Exception ex) {
LOGGER.warn("can not get captcha from redis"); log.warn("can not get captcha from redis");
valid = false; valid = false;
} }
...@@ -92,6 +90,7 @@ public class CustomJCaptchaService extends AbstractManageableImageCaptchaService ...@@ -92,6 +90,7 @@ public class CustomJCaptchaService extends AbstractManageableImageCaptchaService
* @return * @return
* @throws CaptchaServiceException * @throws CaptchaServiceException
*/ */
@Override
public Object getChallengeForID(String ID, Locale locale) throws CaptchaServiceException { public Object getChallengeForID(String ID, Locale locale) throws CaptchaServiceException {
Captcha captcha = this.generateAndStoreCaptcha(locale, ID); Captcha captcha = this.generateAndStoreCaptcha(locale, ID);
Object challenge = this.getChallengeClone(captcha); Object challenge = this.getChallengeClone(captcha);
......
...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.thirdparty.jcaptcha.SimpleCaptcha; ...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.thirdparty.jcaptcha.SimpleCaptcha;
import com.octo.captcha.Captcha; import com.octo.captcha.Captcha;
import com.octo.captcha.service.CaptchaServiceException; import com.octo.captcha.service.CaptchaServiceException;
import com.octo.captcha.service.captchastore.CaptchaStore; import com.octo.captcha.service.captchastore.CaptchaStore;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
...@@ -25,9 +26,9 @@ import java.util.concurrent.TimeUnit; ...@@ -25,9 +26,9 @@ import java.util.concurrent.TimeUnit;
* 修改时间:15/12/17 06:39 * 修改时间:15/12/17 06:39
* 修改备注: * 修改备注:
*/ */
@Slf4j
public class RedisCaptchaStore implements CaptchaStore { public class RedisCaptchaStore implements CaptchaStore {
private static final Logger LOGGER = LoggerFactory.getLogger(RedisCaptchaStore.class);
private static final long DEFAULT_EXPIRED_IN = 120L; private static final long DEFAULT_EXPIRED_IN = 120L;
private static final TimeUnit DEFAULT_EXPIRED_TIMEUNIT = TimeUnit.SECONDS; private static final TimeUnit DEFAULT_EXPIRED_TIMEUNIT = TimeUnit.SECONDS;
...@@ -103,7 +104,7 @@ public class RedisCaptchaStore implements CaptchaStore { ...@@ -103,7 +104,7 @@ public class RedisCaptchaStore implements CaptchaStore {
String captcharKey = buildCaptcharKey(captchaId); String captcharKey = buildCaptcharKey(captchaId);
Long expire = stringRedisTemplate.getExpire(captcharKey, TimeUnit.SECONDS); Long expire = stringRedisTemplate.getExpire(captcharKey, TimeUnit.SECONDS);
Object value = stringRedisTemplate.opsForValue().get(captcharKey); Object value = stringRedisTemplate.opsForValue().get(captcharKey);
LOGGER.info("captchaId={},captchaCode={},expire={}秒", captcharKey, value, expire); log.info("captchaId={},captchaCode={},expire={}秒", captcharKey, value, expire);
stringRedisTemplate.delete(captcharKey); stringRedisTemplate.delete(captcharKey);
return value != null ? new SimpleCaptcha(captchaId, String.valueOf(value)) : null; return value != null ? new SimpleCaptcha(captchaId, String.valueOf(value)) : null;
} }
......
...@@ -114,7 +114,7 @@ public class RedisConfig { ...@@ -114,7 +114,7 @@ public class RedisConfig {
template.setDefaultSerializer(jdkSerializationRedisSerializer); template.setDefaultSerializer(jdkSerializationRedisSerializer);
template.setConnectionFactory(factory); template.setConnectionFactory(factory);
XyqbSessionContextHolder.redisTemplate = stringRedisTemplate(factory); XyqbSessionContextHolder.setRedisTemplate(stringRedisTemplate(factory));
return template; return template;
} }
......
...@@ -10,13 +10,15 @@ final class IntegerToEnumConverterFactory implements ConverterFactory<String, En ...@@ -10,13 +10,15 @@ final class IntegerToEnumConverterFactory implements ConverterFactory<String, En
IntegerToEnumConverterFactory() { IntegerToEnumConverterFactory() {
} }
@Override
public <T extends Enum> Converter<String, T> getConverter(Class<T> targetType) { public <T extends Enum> Converter<String, T> getConverter(Class<T> targetType) {
Class<?> enumType = targetType; Class<?> enumType = targetType;
while (enumType != null && !enumType.isEnum()) { while (enumType != null && !enumType.isEnum()) {
enumType = enumType.getSuperclass(); enumType = enumType.getSuperclass();
} }
if (targetType == null) {
if (enumType == null) { throw new IllegalArgumentException("The target type null does not refer to an enum");
}else if (enumType == null) {
throw new IllegalArgumentException("The target type " + targetType.getName() + " does not refer to an enum"); throw new IllegalArgumentException("The target type " + targetType.getName() + " does not refer to an enum");
} else { } else {
return new IntegerToEnumConverterFactory.IntegerToEnum(enumType); return new IntegerToEnumConverterFactory.IntegerToEnum(enumType);
...@@ -30,6 +32,7 @@ final class IntegerToEnumConverterFactory implements ConverterFactory<String, En ...@@ -30,6 +32,7 @@ final class IntegerToEnumConverterFactory implements ConverterFactory<String, En
this.enumType = enumType; this.enumType = enumType;
} }
@Override
public T convert(String source) { public T convert(String source) {
T[] ts = enumType.getEnumConstants(); T[] ts = enumType.getEnumConstants();
int ordinal = Integer.parseInt(source); int ordinal = Integer.parseInt(source);
......
...@@ -19,7 +19,7 @@ import javax.annotation.Resource; ...@@ -19,7 +19,7 @@ import javax.annotation.Resource;
*/ */
@Primary @Primary
@Configuration @Configuration
public class LoanVestMQConfig { public class LoanVestMqConfig {
@Value("${loanvest.rabbitmq.queue}") @Value("${loanvest.rabbitmq.queue}")
private String queueName; private String queueName;
@Value("${loanvest.rabbitmq.exchange}") @Value("${loanvest.rabbitmq.exchange}")
......
package cn.quantgroup.xyqb.controller; package cn.quantgroup.xyqb.controller;
import cn.quantgroup.xyqb.exception.PasswordErrorLimitException; import cn.quantgroup.xyqb.exception.*;
import cn.quantgroup.xyqb.exception.UserNotExistException;
import cn.quantgroup.xyqb.exception.VerificationCodeErrorException;
import cn.quantgroup.xyqb.exception.WechatRelateUserException;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
...@@ -24,13 +22,12 @@ import java.util.Set; ...@@ -24,13 +22,12 @@ import java.util.Set;
* Created by Miraculous on 15/7/6. * Created by Miraculous on 15/7/6.
* 出现异常,进入这个handler。 * 出现异常,进入这个handler。
*/ */
@Slf4j
@ControllerAdvice @ControllerAdvice
@RestController @RestController
public class ExceptionHandlingController implements IBaseController { public class ExceptionHandlingController implements IBaseController {
private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionHandlingController.class); private static final JsonResult EXCEPTION_RESULT = new JsonResult("internal error", (long)HttpStatus.INTERNAL_SERVER_ERROR.value(), "");
private static final JsonResult EXCEPTION_RESULT = new JsonResult("internal error", 500L, "");
/** /**
* 密码错误次数达到上限异常 * 密码错误次数达到上限异常
...@@ -40,7 +37,7 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -40,7 +37,7 @@ public class ExceptionHandlingController implements IBaseController {
*/ */
@ExceptionHandler(PasswordErrorLimitException.class) @ExceptionHandler(PasswordErrorLimitException.class)
public JsonResult passwordErrorLimitException(PasswordErrorLimitException vce) { public JsonResult passwordErrorLimitException(PasswordErrorLimitException vce) {
LOGGER.info("throw PasswordErrorLimitException,msg={},businessCode={}, clientIp={}", vce.getMessage(), 2L, IPUtil.getRemoteIP(getRequest())); log.info("throw PasswordErrorLimitException,msg={},businessCode={}, clientIp={}", vce.getMessage(), 2L, IpUtil.getRemoteIP(getRequest()));
return JsonResult.buildErrorStateResult(vce.getMessage(), null, 2L); return JsonResult.buildErrorStateResult(vce.getMessage(), null, 2L);
} }
...@@ -52,7 +49,7 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -52,7 +49,7 @@ public class ExceptionHandlingController implements IBaseController {
*/ */
@ExceptionHandler(VerificationCodeErrorException.class) @ExceptionHandler(VerificationCodeErrorException.class)
public JsonResult verificationCodeErrorException(VerificationCodeErrorException vce) { public JsonResult verificationCodeErrorException(VerificationCodeErrorException vce) {
LOGGER.info("throw VerificationCodeErrorException,msg={},businessCode={}, clientIp={}", vce.getMessage(), 1L, IPUtil.getRemoteIP(getRequest())); log.info("throw VerificationCodeErrorException,msg={},businessCode={}, clientIp={}", vce.getMessage(), 1L, IpUtil.getRemoteIP(getRequest()));
return JsonResult.buildErrorStateResult(vce.getMessage(), null, 1L); return JsonResult.buildErrorStateResult(vce.getMessage(), null, 1L);
} }
...@@ -65,8 +62,20 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -65,8 +62,20 @@ public class ExceptionHandlingController implements IBaseController {
@ExceptionHandler(UserNotExistException.class) @ExceptionHandler(UserNotExistException.class)
@ResponseStatus(HttpStatus.UNAUTHORIZED) @ResponseStatus(HttpStatus.UNAUTHORIZED)
public JsonResult userNotExistException(UserNotExistException unee) { public JsonResult userNotExistException(UserNotExistException unee) {
LOGGER.info("throw UserNotExistException,msg={},businessCode={},code={}", unee.getMessage(), 1L, 401L); log.info("throw UserNotExistException,msg={},businessCode={},code={}", unee.getMessage(), 1L, (long)HttpStatus.UNAUTHORIZED.value());
return new JsonResult(unee.getMessage(), 401L, null); return new JsonResult(unee.getMessage(), (long)HttpStatus.UNAUTHORIZED.value(), null);
}
/**
* 用户查询或导出异常
*
* @param uqle
* @return
*/
@ExceptionHandler(UserQueryLogException.class)
public JsonResult userQueryLogException(UserQueryLogException uqle) {
log.info("throw UserQueryLogException,msg={},businessCode={},code={}", uqle.getMessage(), 1L, 0L);
return JsonResult.buildErrorStateResult(uqle.getMessage(), null);
} }
/** /**
...@@ -78,8 +87,8 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -78,8 +87,8 @@ public class ExceptionHandlingController implements IBaseController {
@ExceptionHandler(WechatRelateUserException.class) @ExceptionHandler(WechatRelateUserException.class)
@ResponseStatus(HttpStatus.UNAUTHORIZED) @ResponseStatus(HttpStatus.UNAUTHORIZED)
public JsonResult wechatRelateUserException(WechatRelateUserException wrue) { public JsonResult wechatRelateUserException(WechatRelateUserException wrue) {
LOGGER.info("throw WechatRelateUserException,msg={},businessCode={},code={}", wrue.getMessage(), 1L, 401L); log.info("throw WechatRelateUserException,msg={},businessCode={},code={}", wrue.getMessage(), 1L, (long)HttpStatus.UNAUTHORIZED.value());
return new JsonResult(wrue.getMessage(), 401L, null); return new JsonResult(wrue.getMessage(), (long)HttpStatus.UNAUTHORIZED.value(), null);
} }
/** /**
...@@ -93,7 +102,7 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -93,7 +102,7 @@ public class ExceptionHandlingController implements IBaseController {
HttpServletRequest request = getRequest(); HttpServletRequest request = getRequest();
String uri = request.getRequestURI(); String uri = request.getRequestURI();
String registerFrom = request.getParameter("registerFrom"); String registerFrom = request.getParameter("registerFrom");
LOGGER.error("[exception][global_exception]接口异常 URI:{}, registerFrom:{},error={}", uri, registerFrom, e); log.error("[exception][global_exception]接口异常 URI:{}, registerFrom:{},error={}", uri, registerFrom, e);
return EXCEPTION_RESULT; return EXCEPTION_RESULT;
} }
...@@ -102,7 +111,7 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -102,7 +111,7 @@ public class ExceptionHandlingController implements IBaseController {
ConstraintViolationException exs = (ConstraintViolationException) exception; ConstraintViolationException exs = (ConstraintViolationException) exception;
Set<ConstraintViolation<?>> constraintViolations = exs.getConstraintViolations(); Set<ConstraintViolation<?>> constraintViolations = exs.getConstraintViolations();
if (constraintViolations.isEmpty()) { if (constraintViolations.isEmpty()) {
LOGGER.error("这里出了个错....", exception.getMessage()); log.error("这里出了个错....", exception.getMessage());
return null; return null;
} }
String message = constraintViolations.iterator().next().getMessage(); String message = constraintViolations.iterator().next().getMessage();
......
...@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.controller; ...@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.controller;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
...@@ -56,7 +56,7 @@ public interface IBaseController { ...@@ -56,7 +56,7 @@ public interface IBaseController {
default String getIp() { default String getIp() {
HttpServletRequest request = getRequest(); HttpServletRequest request = getRequest();
return IPUtil.getRemoteIP(request); return IpUtil.getRemoteIP(request);
} }
default String getProtocol() { default String getProtocol() {
......
...@@ -4,6 +4,7 @@ import cn.quantgroup.xyqb.entity.UserAuthorized; ...@@ -4,6 +4,7 @@ import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserAuthorizedParam; import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService; import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -14,19 +15,18 @@ import javax.annotation.Resource; ...@@ -14,19 +15,18 @@ import javax.annotation.Resource;
/** /**
* @author xufei on 2018/1/5. * @author xufei on 2018/1/5.
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/user/auth") @RequestMapping("/user/auth")
public class UserAuthorizedController { public class UserAuthorizedController {
private static final Logger LOGGER = LoggerFactory.getLogger(UserAuthorizedController.class);
@Resource @Resource
private IUserAuthorizedService userAuthorizedService; private IUserAuthorizedService userAuthorizedService;
@RequestMapping(value = "/hasUserAuthorized") @RequestMapping(value = "/hasUserAuthorized")
public JsonResult hasUserAuthorized(String idNo) { public JsonResult hasUserAuthorized(String idNo) {
LOGGER.info("[hasUserAuthorized]需要校验的用户的身份证号为idNo:{}", idNo); log.info("[hasUserAuthorized]需要校验的用户的身份证号为idNo:{}", idNo);
if (userAuthorizedService.hasUserAuthorized(idNo)) { if (userAuthorizedService.hasUserAuthorized(idNo)) {
return JsonResult.buildSuccessResult(null, true); return JsonResult.buildSuccessResult(null, true);
} else { } else {
...@@ -37,13 +37,13 @@ public class UserAuthorizedController { ...@@ -37,13 +37,13 @@ public class UserAuthorizedController {
@RequestMapping(value = "/createUserAuthorized") @RequestMapping(value = "/createUserAuthorized")
public JsonResult createUserAuthorized(UserAuthorizedParam userAuthorizedParam) { public JsonResult createUserAuthorized(UserAuthorizedParam userAuthorizedParam) {
LOGGER.info("[createUserAuthorized]创建实名账户,userAuthorizedParam:{},", userAuthorizedParam); log.info("[createUserAuthorized]创建实名账户,userAuthorizedParam:{},", userAuthorizedParam);
try { try {
if (userAuthorizedService.checkUserAuthorizedParam(userAuthorizedParam)) { if (userAuthorizedService.checkUserAuthorizedParam(userAuthorizedParam)) {
return JsonResult.buildErrorStateResult("参数异常", null); return JsonResult.buildErrorStateResult("参数异常", null);
} }
} catch (Exception e) { } catch (Exception e) {
LOGGER.info("[createUserAuthorized]创建实名账户失败e:{}", e); log.info("[createUserAuthorized]创建实名账户失败e:{}", e);
return JsonResult.buildErrorStateResult("参数异常", null); return JsonResult.buildErrorStateResult("参数异常", null);
} }
UserAuthorized userAuthorized = userAuthorizedService.createUserAuthorized(userAuthorizedParam); UserAuthorized userAuthorized = userAuthorizedService.createUserAuthorized(userAuthorizedParam);
...@@ -57,7 +57,7 @@ public class UserAuthorizedController { ...@@ -57,7 +57,7 @@ public class UserAuthorizedController {
@RequestMapping(value = "/getUserAuthorizedId") @RequestMapping(value = "/getUserAuthorizedId")
public JsonResult getUserAuthorizedId(String userUuid) { public JsonResult getUserAuthorizedId(String userUuid) {
LOGGER.info("[getUserAuthorizedId]获取实名账户的id,userUuid:{}", userUuid); log.info("[getUserAuthorizedId]获取实名账户的id,userUuid:{}", userUuid);
return JsonResult.buildSuccessResult(null, userAuthorizedService.getUserAuthorizedId(userUuid)); return JsonResult.buildSuccessResult(null, userAuthorizedService.getUserAuthorizedId(userUuid));
} }
} }
...@@ -24,7 +24,7 @@ import cn.quantgroup.xyqb.service.user.IUserDetailService; ...@@ -24,7 +24,7 @@ import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.service.user.UserCenterService; import cn.quantgroup.xyqb.service.user.UserCenterService;
import cn.quantgroup.xyqb.service.wechat.IWechatService; import cn.quantgroup.xyqb.service.wechat.IWechatService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import cn.quantgroup.xyqb.util.MqUtils; import cn.quantgroup.xyqb.util.MqUtils;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
...@@ -121,7 +121,7 @@ public class UserController implements IBaseController { ...@@ -121,7 +121,7 @@ public class UserController implements IBaseController {
if (merchant == null) { if (merchant == null) {
return JsonResult.buildErrorStateResult("未知的连接", null); return JsonResult.buildErrorStateResult("未知的连接", null);
} }
if (!StringUtils.isEmpty(userId) && userId.length() > 10) { if (StringUtils.length(userId) > Constants.UUID_MIN_LENGTH) {
return loginWithUserId(channelId, appChannel, createdFrom, userId, merchant, dimension, request); return loginWithUserId(channelId, appChannel, createdFrom, userId, merchant, dimension, request);
} else { } else {
return loginWithHttpBasic(channelId, appChannel, createdFrom, merchant, dimension, request); return loginWithHttpBasic(channelId, appChannel, createdFrom, merchant, dimension, request);
...@@ -166,8 +166,9 @@ public class UserController implements IBaseController { ...@@ -166,8 +166,9 @@ public class UserController implements IBaseController {
HttpServletRequest request) { HttpServletRequest request) {
Map<String, JsonResult> validMap = getHeaderParam(request); Map<String, JsonResult> validMap = getHeaderParam(request);
log.info("login/fast -> channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{},clickId:{}", channelId, appChannel, createdFrom, btRegisterChannelId, key, dimension, clickId); log.info("login/fast -> channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{},clickId:{}", channelId, appChannel, createdFrom, btRegisterChannelId, key, dimension, clickId);
if (null != validMap.get("fail")) { JsonResult failResult = validMap.get(Constants.CHECK_FAIL);
return validMap.get("fail"); if (null != failResult) {
return failResult;
} }
Merchant merchant = merchantService.findMerchantByName(key); Merchant merchant = merchantService.findMerchantByName(key);
if (merchant == null) { if (merchant == null) {
...@@ -214,26 +215,26 @@ public class UserController implements IBaseController { ...@@ -214,26 +215,26 @@ public class UserController implements IBaseController {
String verificationHeader = "Verification "; String verificationHeader = "Verification ";
String credential = request.getHeader("authorization"); String credential = request.getHeader("authorization");
if (StringUtils.isBlank(credential)) { if (StringUtils.isBlank(credential)) {
result.put("fail", JsonResult.buildErrorStateResult("登录失败", null)); result.put(Constants.CHECK_FAIL, JsonResult.buildErrorStateResult("登录失败", null));
return result; return result;
} }
if (!credential.startsWith(verificationHeader)) { if (!credential.startsWith(verificationHeader)) {
result.put("fail", JsonResult.buildErrorStateResult("登录失败", null)); result.put(Constants.CHECK_FAIL, JsonResult.buildErrorStateResult("登录失败", null));
return result; return result;
} }
credential = credential.substring(verificationHeader.length(), credential.length()); credential = credential.substring(verificationHeader.length(), credential.length());
byte[] buf = Base64.decodeBase64(credential); byte[] buf = Base64.decodeBase64(credential);
credential = new String(buf, Charset.forName("UTF-8")); credential = new String(buf, Charset.forName("UTF-8"));
String[] credentialArr = credential.split(":"); String[] credentialArr = credential.split(Constants.SPLIT_CHAR);
if (credentialArr.length != 2) { if (credentialArr.length != Constants.VERIFICATION_LEN) {
result.put("fail", JsonResult.buildErrorStateResult("登录失败", null)); result.put(Constants.CHECK_FAIL, JsonResult.buildErrorStateResult("登录失败", null));
return result; return result;
} }
String phoneNo = credentialArr[0]; String phoneNo = credentialArr[0];
String verificationCode = credentialArr[1]; String verificationCode = credentialArr[1];
log.info("用户快速登录,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode); log.info("用户快速登录,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode);
if (!ValidationUtil.validatePhoneNo(phoneNo) || StringUtils.isBlank(verificationCode)) { if (!ValidationUtil.validatePhoneNo(phoneNo) || StringUtils.isBlank(verificationCode)) {
result.put("fail", JsonResult.buildErrorStateResult("登录失败", null)); result.put(Constants.CHECK_FAIL, JsonResult.buildErrorStateResult("登录失败", null));
return result; return result;
} }
result.put("success", JsonResult.buildSuccessResult(verificationCode, phoneNo)); result.put("success", JsonResult.buildSuccessResult(verificationCode, phoneNo));
...@@ -403,7 +404,7 @@ public class UserController implements IBaseController { ...@@ -403,7 +404,7 @@ public class UserController implements IBaseController {
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {
return JsonResult.buildSuccessResult(null, false); return JsonResult.buildSuccessResult(null, false);
} }
if (token.contains("*")) { if (token.contains(Constants.TOKEN_MASTER)) {
return JsonResult.buildSuccessResult(null, false); return JsonResult.buildSuccessResult(null, false);
} }
String tokenKey = Constants.SESSION_PREFIX + token; String tokenKey = Constants.SESSION_PREFIX + token;
...@@ -463,10 +464,10 @@ public class UserController implements IBaseController { ...@@ -463,10 +464,10 @@ public class UserController implements IBaseController {
private User verificateUserNameAndPassword(HttpServletRequest request) { private User verificateUserNameAndPassword(HttpServletRequest request) {
String credential = request.getHeader("authorization"); String credential = request.getHeader("authorization");
if (StringUtils.isBlank(credential) || !credential.startsWith("Basic ")) { if (StringUtils.isBlank(credential) || !credential.startsWith(Constants.PASSWORD_HEADER)) {
return null; return null;
} }
credential = credential.substring("Basic ".length(), credential.length()); credential = credential.substring(Constants.PASSWORD_HEADER.length());
byte[] buf = Base64.decodeBase64(credential); byte[] buf = Base64.decodeBase64(credential);
String bufStr = ""; String bufStr = "";
try { try {
...@@ -476,7 +477,7 @@ public class UserController implements IBaseController { ...@@ -476,7 +477,7 @@ public class UserController implements IBaseController {
} }
String clientIp = getIp(); String clientIp = getIp();
String[] credentialArr = bufStr.split(":"); String[] credentialArr = bufStr.split(":");
if (credentialArr.length != 2) { if (credentialArr.length != Constants.AUTHORIZE_HEADER_SIZE) {
log.info("用户登录失败:{}", bufStr); log.info("用户登录失败:{}", bufStr);
// 向该ipv4添加错误计数器 // 向该ipv4添加错误计数器
lockIpv4Service.countErrorByIpv4(clientIp); lockIpv4Service.countErrorByIpv4(clientIp);
...@@ -528,7 +529,7 @@ public class UserController implements IBaseController { ...@@ -528,7 +529,7 @@ public class UserController implements IBaseController {
*/ */
private boolean wechatRelateUserIfNecessary(User user, HttpServletRequest request) { private boolean wechatRelateUserIfNecessary(User user, HttpServletRequest request) {
Objects.requireNonNull(request, "无效请求"); Objects.requireNonNull(request, "无效请求");
String clientIp = IPUtil.getRemoteIP(request); String clientIp = IpUtil.getRemoteIP(request);
Set<String> paramKeys = request.getParameterMap().keySet(); Set<String> paramKeys = request.getParameterMap().keySet();
boolean ready = paramKeys.contains(Constants.WECHAT_OPEN_ID); boolean ready = paramKeys.contains(Constants.WECHAT_OPEN_ID);
if (!ready) { if (!ready) {
......
...@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.model.JsonResult; ...@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService; import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
...@@ -28,9 +29,10 @@ import java.util.UUID; ...@@ -28,9 +29,10 @@ import java.util.UUID;
* @author 李宁 * @author 李宁
* @version 1.0.0 创建时间:15/11/17 11:49 修改人: 修改时间:15/11/17 11:49 修改备注: * @version 1.0.0 创建时间:15/11/17 11:49 修改人: 修改时间:15/11/17 11:49 修改备注:
*/ */
@Api(value = "/api", description = "叫Api, 实际上是图形验证码. 你说神奇不神奇...")
@Slf4j
@RestController @RestController
@RequestMapping("/api") @RequestMapping("/api")
@Api(value = "/api", description = "叫Api, 实际上是图形验证码. 你说神奇不神奇...")
public class ImageCaptchaController { public class ImageCaptchaController {
private static final String IMAGE_FORMAT_PNG = "png"; private static final String IMAGE_FORMAT_PNG = "png";
...@@ -51,14 +53,12 @@ public class ImageCaptchaController { ...@@ -51,14 +53,12 @@ public class ImageCaptchaController {
BufferedImage challenge = imageCaptchaService.getImageChallengeForID(Constants.IMAGE_CAPTCHA_KEY + imageId, request.getLocale()); BufferedImage challenge = imageCaptchaService.getImageChallengeForID(Constants.IMAGE_CAPTCHA_KEY + imageId, request.getLocale());
ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream(); ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
try { try {
boolean write = ImageIO.write(challenge, IMAGE_FORMAT_PNG, jpegOutputStream); ImageIO.write(challenge, IMAGE_FORMAT_PNG, jpegOutputStream);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); log.error("图形验证码图片流返回失败", e);
return JsonResult.buildErrorStateResult("", "fail"); return JsonResult.buildErrorStateResult("", Constants.CHECK_FAIL);
} }
String imageBase64 = Base64.encodeBase64String(jpegOutputStream.toByteArray()); String imageBase64 = Base64.encodeBase64String(jpegOutputStream.toByteArray());
Map<String, String> data = new HashMap<>(); Map<String, String> data = new HashMap<>();
data.put("imageId", imageId); data.put("imageId", imageId);
data.put("image", String.format(IMG_BASE64_PATTREN, imageBase64)); data.put("image", String.format(IMG_BASE64_PATTREN, imageBase64));
......
...@@ -5,7 +5,7 @@ import cn.quantgroup.xyqb.model.ClientType; ...@@ -5,7 +5,7 @@ import cn.quantgroup.xyqb.model.ClientType;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService; import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService;
import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService; import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -41,7 +41,7 @@ public class NewCaptchaController { ...@@ -41,7 +41,7 @@ public class NewCaptchaController {
@RequestMapping(value = "/captcha/new") @RequestMapping(value = "/captcha/new")
@ApiOperation(value = "获取新图形验证码", notes = "获取新图形验证码", httpMethod = "POST") @ApiOperation(value = "获取新图形验证码", notes = "获取新图形验证码", httpMethod = "POST")
public JsonResult getCaptcha(String phoneNo, String clientType, HttpServletRequest request) { public JsonResult getCaptcha(String phoneNo, String clientType, HttpServletRequest request) {
String remoteIp = IPUtil.getRemoteIP(request); String remoteIp = IpUtil.getRemoteIP(request);
log.info("获取验证码, phoneNo:{}, clientType:{}, ip:{}, verifyType-qg:{}", phoneNo, clientType, remoteIp, geetestClose); log.info("获取验证码, phoneNo:{}, clientType:{}, ip:{}, verifyType-qg:{}", phoneNo, clientType, remoteIp, geetestClose);
if (StringUtils.isNotBlank(phoneNo) && !ValidationUtil.validatePhoneNo(phoneNo)) { if (StringUtils.isNotBlank(phoneNo) && !ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号格式错误", null); return JsonResult.buildErrorStateResult("手机号格式错误", null);
......
...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.controller.IBaseController; ...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -26,10 +27,10 @@ import java.util.concurrent.TimeUnit; ...@@ -26,10 +27,10 @@ import java.util.concurrent.TimeUnit;
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-25 * @since 2017-11-25
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/lock") @RequestMapping("/lock")
public class LockIpv4Controller implements IBaseController { public class LockIpv4Controller implements IBaseController {
private static final Logger LOGGER = LoggerFactory.getLogger(LockIpv4Controller.class);
private static final String WORD = "Are you a robot monkey?(^_^)"; private static final String WORD = "Are you a robot monkey?(^_^)";
@Autowired @Autowired
@Qualifier("stringRedisTemplate") @Qualifier("stringRedisTemplate")
...@@ -74,7 +75,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -74,7 +75,7 @@ public class LockIpv4Controller implements IBaseController {
@RequestParam(required = false) String act, @RequestParam(required = false) String act,
HttpServletRequest request) { HttpServletRequest request) {
if (!ValidationUtil.validateIpv4(ip) || StringUtils.isBlank(act) || StringUtils.isBlank(key)) { if (!ValidationUtil.validateIpv4(ip) || StringUtils.isBlank(act) || StringUtils.isBlank(key)) {
LOGGER.info("Lock_ipv4: fail to clear_or_lock ip:{}", ip); log.info("Lock_ipv4: fail to clear_or_lock ip:{}", ip);
return JsonResult.buildErrorStateResult(WORD, null); return JsonResult.buildErrorStateResult(WORD, null);
} }
if (Objects.equals(Boolean.TRUE.toString(), act) || Objects.equals(Boolean.FALSE.toString(), act)) { if (Objects.equals(Boolean.TRUE.toString(), act) || Objects.equals(Boolean.FALSE.toString(), act)) {
...@@ -86,7 +87,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -86,7 +87,7 @@ public class LockIpv4Controller implements IBaseController {
return JsonResult.buildSuccessResult("Success", null); return JsonResult.buildSuccessResult("Success", null);
} }
} }
LOGGER.info("Lock_ipv4: fail to clear_or_lock ip:{}", ip); log.info("Lock_ipv4: fail to clear_or_lock ip:{}", ip);
return JsonResult.buildErrorStateResult(WORD, null); return JsonResult.buildErrorStateResult(WORD, null);
} }
...@@ -113,10 +114,10 @@ public class LockIpv4Controller implements IBaseController { ...@@ -113,10 +114,10 @@ public class LockIpv4Controller implements IBaseController {
minutes = Integer.valueOf(redisMinutes); minutes = Integer.valueOf(redisMinutes);
} }
redisTemplate.opsForValue().set(lockIpv4Key, Boolean.TRUE.toString(), minutes, TimeUnit.MINUTES); redisTemplate.opsForValue().set(lockIpv4Key, Boolean.TRUE.toString(), minutes, TimeUnit.MINUTES);
LOGGER.info("Lock_ipv4: locked ip Success. ip:{}, error overstep {} times in {} minutes, do lock {} minutes", ip, counts, Constants.IPV4_FAILED_COUNT_MINUTES, minutes); log.info("Lock_ipv4: locked ip Success. ip:{}, error overstep {} times in {} minutes, do lock {} minutes", ip, counts, Constants.IPV4_FAILED_COUNT_MINUTES, minutes);
} else { } else {
redisTemplate.delete(lockIpv4Key); redisTemplate.delete(lockIpv4Key);
LOGGER.info("Lock_ipv4: unlocked ip Success. ip:{}", ip); log.info("Lock_ipv4: unlocked ip Success. ip:{}", ip);
} }
} }
...@@ -137,7 +138,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -137,7 +138,7 @@ public class LockIpv4Controller implements IBaseController {
@RequestParam(required = false) String type, @RequestParam(required = false) String type,
HttpServletRequest request) { HttpServletRequest request) {
if (!ValidationUtil.validateIpv4(ip) || StringUtils.isBlank(key) || StringUtils.isBlank(act) || StringUtils.isBlank(type)) { if (!ValidationUtil.validateIpv4(ip) || StringUtils.isBlank(key) || StringUtils.isBlank(act) || StringUtils.isBlank(type)) {
LOGGER.info("Lock_ipv4: fail to config hit list for ip:{}", ip); log.info("Lock_ipv4: fail to config hit list for ip:{}", ip);
return JsonResult.buildErrorStateResult(WORD, null); return JsonResult.buildErrorStateResult(WORD, null);
} }
boolean actOk = Objects.equals(Boolean.TRUE.toString(), act) || Objects.equals(Boolean.FALSE.toString(), act); boolean actOk = Objects.equals(Boolean.TRUE.toString(), act) || Objects.equals(Boolean.FALSE.toString(), act);
...@@ -150,7 +151,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -150,7 +151,7 @@ public class LockIpv4Controller implements IBaseController {
configHitList(ip, operate, lock); configHitList(ip, operate, lock);
return JsonResult.buildSuccessResult("Success", null); return JsonResult.buildSuccessResult("Success", null);
} }
LOGGER.info("Lock_ipv4: fail to config hit list for ip:{}", ip); log.info("Lock_ipv4: fail to config hit list for ip:{}", ip);
return JsonResult.buildErrorStateResult(WORD, null); return JsonResult.buildErrorStateResult(WORD, null);
} }
...@@ -168,21 +169,21 @@ public class LockIpv4Controller implements IBaseController { ...@@ -168,21 +169,21 @@ public class LockIpv4Controller implements IBaseController {
if (operate) { if (operate) {
if (lock) { if (lock) {
redisTemplate.opsForSet().add(Constants.IPV4_LOCK_BLACK, ip); redisTemplate.opsForSet().add(Constants.IPV4_LOCK_BLACK, ip);
LOGGER.info("Lock_ipv4: add black-list item Success, ip:{}", ip); log.info("Lock_ipv4: add black-list item Success, ip:{}", ip);
} else { } else {
redisTemplate.opsForSet().add(Constants.IPV4_LOCK_WHITE, ip); redisTemplate.opsForSet().add(Constants.IPV4_LOCK_WHITE, ip);
LOGGER.info("Lock_ipv4: add white-list item Success, ip:{}", ip); log.info("Lock_ipv4: add white-list item Success, ip:{}", ip);
} }
} else { } else {
if (lock) { if (lock) {
redisTemplate.opsForSet().remove(Constants.IPV4_LOCK_BLACK, ip); redisTemplate.opsForSet().remove(Constants.IPV4_LOCK_BLACK, ip);
LOGGER.info("Lock_ipv4: remove black-list item Success, ip:{}", ip); log.info("Lock_ipv4: remove black-list item Success, ip:{}", ip);
} else { } else {
redisTemplate.opsForSet().remove(Constants.IPV4_LOCK_WHITE, ip); redisTemplate.opsForSet().remove(Constants.IPV4_LOCK_WHITE, ip);
LOGGER.info("Lock_ipv4: remove white-list item Success, ip:{}", ip); log.info("Lock_ipv4: remove white-list item Success, ip:{}", ip);
} }
} }
LOGGER.info("Lock_ipv4: white-list:{},black-list:{}", JSONObject.toJSON(redisTemplate.opsForSet().members(Constants.IPV4_LOCK_WHITE)), JSONObject.toJSON(redisTemplate.opsForSet().members(Constants.IPV4_LOCK_BLACK))); log.info("Lock_ipv4: white-list:{},black-list:{}", JSONObject.toJSON(redisTemplate.opsForSet().members(Constants.IPV4_LOCK_WHITE)), JSONObject.toJSON(redisTemplate.opsForSet().members(Constants.IPV4_LOCK_BLACK)));
} }
/** /**
...@@ -202,7 +203,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -202,7 +203,7 @@ public class LockIpv4Controller implements IBaseController {
@RequestParam(required = false) String minutes, @RequestParam(required = false) String minutes,
HttpServletRequest request) { HttpServletRequest request) {
if (StringUtils.isBlank(key) || StringUtils.isBlank(act) || !StringUtils.isNumeric(counts) || !StringUtils.isNumeric(minutes)) { if (StringUtils.isBlank(key) || StringUtils.isBlank(act) || !StringUtils.isNumeric(counts) || !StringUtils.isNumeric(minutes)) {
LOGGER.info("Lock_ipv4: fail to config noun"); log.info("Lock_ipv4: fail to config noun");
return JsonResult.buildErrorStateResult(WORD, null); return JsonResult.buildErrorStateResult(WORD, null);
} }
boolean actOk = Objects.equals(Boolean.TRUE.toString(), act) || Objects.equals(Boolean.FALSE.toString(), act); boolean actOk = Objects.equals(Boolean.TRUE.toString(), act) || Objects.equals(Boolean.FALSE.toString(), act);
...@@ -219,7 +220,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -219,7 +220,7 @@ public class LockIpv4Controller implements IBaseController {
return JsonResult.buildSuccessResult("Success", null); return JsonResult.buildSuccessResult("Success", null);
} }
} }
LOGGER.info("Lock_ipv4: fail to config noun"); log.info("Lock_ipv4: fail to config noun");
return JsonResult.buildErrorStateResult(WORD, null); return JsonResult.buildErrorStateResult(WORD, null);
} }
...@@ -234,16 +235,16 @@ public class LockIpv4Controller implements IBaseController { ...@@ -234,16 +235,16 @@ public class LockIpv4Controller implements IBaseController {
if (operate) { if (operate) {
if (counts > 0) { if (counts > 0) {
redisTemplate.opsForValue().set(Constants.IPV4_LOCK_ON_COUNTS_REDIS, String.valueOf(counts)); redisTemplate.opsForValue().set(Constants.IPV4_LOCK_ON_COUNTS_REDIS, String.valueOf(counts));
LOGGER.info("Lock_ipv4: config redis-param counts Success, counts:{}", counts); log.info("Lock_ipv4: config redis-param counts Success, counts:{}", counts);
} }
if (minutes > 0) { if (minutes > 0) {
redisTemplate.opsForValue().set(Constants.IPV4_LOCK_MINUTES_REDIS, String.valueOf(minutes)); redisTemplate.opsForValue().set(Constants.IPV4_LOCK_MINUTES_REDIS, String.valueOf(minutes));
LOGGER.info("Lock_ipv4: config redis-param minutes Success, minutes:{}", minutes); log.info("Lock_ipv4: config redis-param minutes Success, minutes:{}", minutes);
} }
} else { } else {
redisTemplate.delete(Constants.IPV4_LOCK_ON_COUNTS_REDIS); redisTemplate.delete(Constants.IPV4_LOCK_ON_COUNTS_REDIS);
redisTemplate.delete(Constants.IPV4_LOCK_MINUTES_REDIS); redisTemplate.delete(Constants.IPV4_LOCK_MINUTES_REDIS);
LOGGER.info("Lock_ipv4: remove redis-param counts、minutes Success, counts:{},minutes:{}, current default:[counts:{},minutes:{}]", Constants.IPV4_LOCK_ON_FAILED_COUNTS, Constants.IPV4_FAILED_LOCK_MINUTES); log.info("Lock_ipv4: remove redis-param counts、minutes Success, counts:{},minutes:{}, current default:[counts:{},minutes:{}]", Constants.IPV4_LOCK_ON_FAILED_COUNTS, Constants.IPV4_FAILED_LOCK_MINUTES);
} }
} }
......
package cn.quantgroup.xyqb.controller.external.platform; package cn.quantgroup.xyqb.controller.external.platform;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.Merchant; import cn.quantgroup.xyqb.entity.Merchant;
import cn.quantgroup.xyqb.entity.MerchantConfig; import cn.quantgroup.xyqb.entity.MerchantConfig;
...@@ -21,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -21,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@RestController @RestController
@RequestMapping("/platform/api") @RequestMapping("/platform/api")
public class PlatformAPIController implements IBaseController { public class PlatformApiController implements IBaseController {
@Autowired @Autowired
private IPageService pageService; private IPageService pageService;
...@@ -52,7 +53,7 @@ public class PlatformAPIController implements IBaseController { ...@@ -52,7 +53,7 @@ public class PlatformAPIController implements IBaseController {
Tuple<String, Boolean> nextPageTuple = pageService.nextPage(user, target, currentPage); Tuple<String, Boolean> nextPageTuple = pageService.nextPage(user, target, currentPage);
Boolean isFinal = nextPageTuple.getValue(); Boolean isFinal = nextPageTuple.getValue();
String nextPage = nextPageTuple.getKey(); String nextPage = nextPageTuple.getKey();
if ("xyqb".equals(key)) { if (Constants.PAGE_NEXT_KEY_XYQB.equals(key)) {
MerchantConfig merchantConfig = merchantService.findConfigByMerchantIdAndConfigName(4L, "returnUrl"); MerchantConfig merchantConfig = merchantService.findConfigByMerchantIdAndConfigName(4L, "returnUrl");
return JsonResult.buildSuccessResult("", ImmutableMap.of("type", "external", "transition", merchantConfig.getConfigValue())); return JsonResult.buildSuccessResult("", ImmutableMap.of("type", "external", "transition", merchantConfig.getConfigValue()));
} }
......
...@@ -13,9 +13,10 @@ import cn.quantgroup.xyqb.service.merchant.IMerchantService; ...@@ -13,9 +13,10 @@ import cn.quantgroup.xyqb.service.merchant.IMerchantService;
import cn.quantgroup.xyqb.service.register.IUserRegisterService; import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -34,11 +35,11 @@ import static cn.quantgroup.xyqb.constant.UserConstant.USER_ERROR_OR_PASSWORD_ER ...@@ -34,11 +35,11 @@ import static cn.quantgroup.xyqb.constant.UserConstant.USER_ERROR_OR_PASSWORD_ER
* @author mengfan.feng * @author mengfan.feng
* @time 2015-10-27 11:41 * @time 2015-10-27 11:41
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/app") @RequestMapping("/app")
public class AppController implements IBaseController { public class AppController implements IBaseController {
private static final Logger LOGGER = LoggerFactory.getLogger(AppController.class);
@Autowired @Autowired
private ISessionService sessionService; private ISessionService sessionService;
@Autowired @Autowired
...@@ -77,7 +78,7 @@ public class AppController implements IBaseController { ...@@ -77,7 +78,7 @@ public class AppController implements IBaseController {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
LOGGER.info("第三方用户登录 [AppController] login --> loginFrom:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom, channelId, btRegisterChannelId, IPUtil.getRemoteIP(request), idNo, name); log.info("第三方用户登录 [AppController] login --> loginFrom:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom, channelId, btRegisterChannelId, IpUtil.getRemoteIP(request), idNo, name);
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo);
if (user == null) { if (user == null) {
user = userRegisterService.register(registerFrom, phoneNo, idNo, name, channelId, btRegisterChannelId); user = userRegisterService.register(registerFrom, phoneNo, idNo, name, channelId, btRegisterChannelId);
...@@ -94,7 +95,7 @@ public class AppController implements IBaseController { ...@@ -94,7 +95,7 @@ public class AppController implements IBaseController {
} }
LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, merchant.getId(), merchant.getName()); LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, merchant.getId(), merchant.getName());
AuthBean bean = sessionService.createSession(user, loginProperties); AuthBean bean = sessionService.createSession(user, loginProperties);
LOGGER.info("第三方用户登录成功 [AppController] login --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel); log.info("第三方用户登录成功 [AppController] login --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel);
return JsonResult.buildSuccessResult("登录成功", bean); return JsonResult.buildSuccessResult("登录成功", bean);
} }
...@@ -128,7 +129,7 @@ public class AppController implements IBaseController { ...@@ -128,7 +129,7 @@ public class AppController implements IBaseController {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
LOGGER.info("第三方用户登录 [AppController] loginSuper --> loginFrom:{},phoneNo:{},appChannel:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom, phoneNo, appChannel, channelId, btRegisterChannelId, IPUtil.getRemoteIP(request), idNo, name); log.info("第三方用户登录 [AppController] loginSuper --> loginFrom:{},phoneNo:{},appChannel:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom, phoneNo, appChannel, channelId, btRegisterChannelId, IpUtil.getRemoteIP(request), idNo, name);
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo);
if (user == null) { if (user == null) {
try { try {
...@@ -158,7 +159,7 @@ public class AppController implements IBaseController { ...@@ -158,7 +159,7 @@ public class AppController implements IBaseController {
context.setCreatedFrom(registerFrom); context.setCreatedFrom(registerFrom);
context.setAppChannel(appChannel); context.setAppChannel(appChannel);
loginInfo.setLoginContext(context); loginInfo.setLoginContext(context);
LOGGER.info("第三方用户获取信息登录成功 [AppController] loginSuper --> loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}", registerFrom, phoneNo, appChannel, channelId); log.info("第三方用户获取信息登录成功 [AppController] loginSuper --> loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}", registerFrom, phoneNo, appChannel, channelId);
return JsonResult.buildSuccessResult("登陆成功", loginInfo); return JsonResult.buildSuccessResult("登陆成功", loginInfo);
} }
...@@ -187,7 +188,7 @@ public class AppController implements IBaseController { ...@@ -187,7 +188,7 @@ public class AppController implements IBaseController {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
LOGGER.info("第三方用户登录 [AppController] login2 --> loginFrom:{},channelId:{}, requestIp:{}", registerFrom, channelId, IPUtil.getRemoteIP(request)); log.info("第三方用户登录 [AppController] login2 --> loginFrom:{},channelId:{}, requestIp:{}", registerFrom, channelId, IpUtil.getRemoteIP(request));
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo);
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
...@@ -197,7 +198,7 @@ public class AppController implements IBaseController { ...@@ -197,7 +198,7 @@ public class AppController implements IBaseController {
} }
LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, null, ""); LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, null, "");
AuthBean bean = sessionService.createSession(user, loginProperties); AuthBean bean = sessionService.createSession(user, loginProperties);
LOGGER.info("第三方用户登录成功 [AppController] login2 --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel); log.info("第三方用户登录成功 [AppController] login2 --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel);
return JsonResult.buildSuccessResult("登录成功", bean); return JsonResult.buildSuccessResult("登录成功", bean);
} }
......
...@@ -41,15 +41,15 @@ public class UserApiController { ...@@ -41,15 +41,15 @@ public class UserApiController {
private ISmsService smsService; private ISmsService smsService;
@RequestMapping("/user/is_passwd_set") @RequestMapping("/user/is_passwd_set")
public JsonResult isPasswordSet(String key, String phoneNo) { public JsonResult isPasswordSet(String phoneNo) {
if (!"abc1234".equals(key) || StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo);
if (null == user) { if (null == user) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
if (StringUtils.length(user.getPassword()) == 32) { if (StringUtils.length(user.getPassword()) == Constants.MD5_LENGTH) {
return JsonResult.buildSuccessResult(null, null); return JsonResult.buildSuccessResult(null, null);
} }
return JsonResult.buildErrorStateResult(null, null, 2L); return JsonResult.buildErrorStateResult(null, null, 2L);
......
...@@ -12,6 +12,7 @@ import cn.quantgroup.xyqb.service.user.*; ...@@ -12,6 +12,7 @@ import cn.quantgroup.xyqb.service.user.*;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -24,11 +25,11 @@ import java.sql.Timestamp; ...@@ -24,11 +25,11 @@ import java.sql.Timestamp;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
/** /**
* Created by 11 on 2017/3/22. * Created by 11 on 2017/3/22.
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/user/center") @RequestMapping("/user/center")
public class UserCenterController { public class UserCenterController {
...@@ -46,8 +47,6 @@ public class UserCenterController { ...@@ -46,8 +47,6 @@ public class UserCenterController {
@Autowired @Autowired
private IUserService userService; private IUserService userService;
private static final Logger LOGGER = LoggerFactory.getLogger(UserCenterController.class);
/** /**
* 根据用户手机号查询昵称. * 根据用户手机号查询昵称.
* *
...@@ -58,7 +57,7 @@ public class UserCenterController { ...@@ -58,7 +57,7 @@ public class UserCenterController {
@ApiOperation(value = "查询昵称", notes = "查询用户昵称", httpMethod = "POST") @ApiOperation(value = "查询昵称", notes = "查询用户昵称", httpMethod = "POST")
public JsonResult queryUserNick(String phoneNo) { public JsonResult queryUserNick(String phoneNo) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
...@@ -67,7 +66,7 @@ public class UserCenterController { ...@@ -67,7 +66,7 @@ public class UserCenterController {
} }
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId); UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
if (null != userAttached) { if (null != userAttached) {
LOGGER.info("获取用户昵称:{}", userAttached.getNick()); log.info("获取用户昵称:{}", userAttached.getNick());
return JsonResult.buildSuccessResult(null, userAttached.getNick()); return JsonResult.buildSuccessResult(null, userAttached.getNick());
} }
return JsonResult.buildSuccessResult(null, null); return JsonResult.buildSuccessResult(null, null);
...@@ -84,7 +83,7 @@ public class UserCenterController { ...@@ -84,7 +83,7 @@ public class UserCenterController {
@ApiOperation(value = "保存昵称", notes = "保存用户昵称", httpMethod = "POST") @ApiOperation(value = "保存昵称", notes = "保存用户昵称", httpMethod = "POST")
public JsonResult saveUserNick(String phoneNo, String nick) { public JsonResult saveUserNick(String phoneNo, String nick) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
...@@ -106,7 +105,7 @@ public class UserCenterController { ...@@ -106,7 +105,7 @@ public class UserCenterController {
@ApiOperation(value = "保存头像", notes = "保存用户头像", httpMethod = "POST") @ApiOperation(value = "保存头像", notes = "保存用户头像", httpMethod = "POST")
public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl) { public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl) {
if (StringUtils.isBlank(avatarUrl) || StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(avatarUrl) || StringUtils.isBlank(phoneNo)) {
LOGGER.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo); log.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
...@@ -118,7 +117,7 @@ public class UserCenterController { ...@@ -118,7 +117,7 @@ public class UserCenterController {
} }
UserAttached userAttached = userCenterService.saveUserAvatar(userId, avatarUrl); UserAttached userAttached = userCenterService.saveUserAvatar(userId, avatarUrl);
if (null == userAttached) { if (null == userAttached) {
LOGGER.error("保存用户头像昵称失败."); log.error("保存用户头像昵称失败.");
return JsonResult.buildErrorStateResult("信息保存失败,请稍后再试.", null); return JsonResult.buildErrorStateResult("信息保存失败,请稍后再试.", null);
} }
return JsonResult.buildSuccessResult("保存成功", userAttached); return JsonResult.buildSuccessResult("保存成功", userAttached);
...@@ -134,7 +133,7 @@ public class UserCenterController { ...@@ -134,7 +133,7 @@ public class UserCenterController {
@ApiOperation(value = "查询用户是否实名认证", notes = "查询用户是否实名认证", httpMethod = "POST") @ApiOperation(value = "查询用户是否实名认证", notes = "查询用户是否实名认证", httpMethod = "POST")
public JsonResult queryVerified(String phoneNo) { public JsonResult queryVerified(String phoneNo) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
...@@ -160,7 +159,7 @@ public class UserCenterController { ...@@ -160,7 +159,7 @@ public class UserCenterController {
@ApiOperation(value = "查询个人资料信息", notes = "查询个人资料信息", httpMethod = "POST") @ApiOperation(value = "查询个人资料信息", notes = "查询个人资料信息", httpMethod = "POST")
public JsonResult personalData(String phoneNo) { public JsonResult personalData(String phoneNo) {
if (StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
...@@ -202,27 +201,27 @@ public class UserCenterController { ...@@ -202,27 +201,27 @@ public class UserCenterController {
@ApiOperation(value = "保存用户联系人", notes = "保存用户联系人", httpMethod = "POST") @ApiOperation(value = "保存用户联系人", notes = "保存用户联系人", httpMethod = "POST")
public JsonResult saveUserContact(String phoneNo, String contactJson) { public JsonResult saveUserContact(String phoneNo, String contactJson) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("保存联系人,参数错误. phoneNo:{}", phoneNo); log.error("保存联系人,参数错误. phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数有误.", null); return JsonResult.buildErrorStateResult("参数有误.", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId); log.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
if (StringUtils.isEmpty(contactJson)) { if (StringUtils.isEmpty(contactJson)) {
LOGGER.error("保存联系人,联系人参数为空.contactJson:{}", contactJson); log.error("保存联系人,联系人参数为空.contactJson:{}", contactJson);
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
List<Contact> contacts = JSONObject.parseObject(contactJson, new TypeReference<List<Contact>>() { List<Contact> contacts = JSONObject.parseObject(contactJson, new TypeReference<List<Contact>>() {
}); });
if (CollectionUtils.isEmpty(contacts)) { if (CollectionUtils.isEmpty(contacts)) {
LOGGER.info("联系人不能空"); log.info("联系人不能空");
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
for (Contact contact : contacts) { for (Contact contact : contacts) {
if (!contact.valid()) { if (!contact.valid()) {
LOGGER.info("用户手机号或姓名错误, phoneNo:{},name:{}", contact.getPhoneNo(), contact.getName()); log.info("用户手机号或姓名错误, phoneNo:{},name:{}", contact.getPhoneNo(), contact.getName());
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
} }
...@@ -244,13 +243,13 @@ public class UserCenterController { ...@@ -244,13 +243,13 @@ public class UserCenterController {
@ApiOperation(value = "保存用户地址", notes = "保存用户地址", httpMethod = "POST") @ApiOperation(value = "保存用户地址", notes = "保存用户地址", httpMethod = "POST")
public JsonResult saveUserAddress(String phoneNo, String province, Long provinceCode, String city, Long cityCode, String address, public JsonResult saveUserAddress(String phoneNo, String province, Long provinceCode, String city, Long cityCode, String address,
Long districtCode, String district) { Long districtCode, String district) {
LOGGER.info("保存用户地址信息, phoneNo:{}, province:{}, provinceCode:{}, city:{}, cityCode:{},district:{}, address:{}", phoneNo, province, provinceCode, city, cityCode, district, address); log.info("保存用户地址信息, phoneNo:{}, province:{}, provinceCode:{}, city:{}, cityCode:{},district:{}, address:{}", phoneNo, province, provinceCode, city, cityCode, district, address);
if (StringUtils.isEmpty(phoneNo) || provinceCode == null || cityCode == null || StringUtils.isBlank(address)) { if (StringUtils.isEmpty(phoneNo) || provinceCode == null || cityCode == null || StringUtils.isBlank(address)) {
return JsonResult.buildErrorStateResult("参数错误", null); return JsonResult.buildErrorStateResult("参数错误", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId); log.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
//查询用户是否有保存地址信息 //查询用户是否有保存地址信息
...@@ -287,7 +286,7 @@ public class UserCenterController { ...@@ -287,7 +286,7 @@ public class UserCenterController {
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId); log.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
Address address = addressService.findByUserId(userId); Address address = addressService.findByUserId(userId);
...@@ -308,7 +307,7 @@ public class UserCenterController { ...@@ -308,7 +307,7 @@ public class UserCenterController {
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId); log.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
List<Contact> contacts = contactService.findByUserId(userId, true); List<Contact> contacts = contactService.findByUserId(userId, true);
...@@ -332,7 +331,7 @@ public class UserCenterController { ...@@ -332,7 +331,7 @@ public class UserCenterController {
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
LOGGER.error("保存用户经济信息,未获取到用户id. userId:{}", userId); log.error("保存用户经济信息,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
//查询用户是否保存过. //查询用户是否保存过.
......
...@@ -8,8 +8,6 @@ import javax.persistence.*; ...@@ -8,8 +8,6 @@ import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp; import java.sql.Timestamp;
//import cn.quantgroup.xyqb.entity.enumerate.*;
/** /**
* Created by 11 on 2016/12/30. * Created by 11 on 2016/12/30.
*/ */
......
package cn.quantgroup.xyqb.entity.enumerate;
/**
* Created by 11 on 2016/12/30.
*/
public enum EducationEnum {
UNKNOWN("暂无"),
MASTER("硕士及以上"),
UNDER_GRADUATE("本科"),
JUNIOR_COLLEGE("大专"),
TECHNICAL_SECONDARY_SCHOOL("中专"),
TECHNICAL_SCHOOL("技校"),
HIGH_SCHOOL("高中"),
MIDDLE_SCHOOL("初中"),
PRIMARY_SCHOOL("小学"),
OTHER("其他");
private String name;
EducationEnum(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name;
}
}
package cn.quantgroup.xyqb.entity.enumerate;
/**
* Created by 11 on 2016/12/30.
*/
public enum IncomeEnum {
UNKNOWN("未知"),
CASH("现金计算"),
PAY_CARD("工资卡"),
CASH_AND_PAY_CARD("混合");
private String desc;
IncomeEnum(String desc) {
this.desc = desc;
}
}
\ No newline at end of file
package cn.quantgroup.xyqb.entity.enumerate;
/**
* Created by 11 on 2016/12/30.
*/
public enum IncomeRangeEnum {
UNKNOWN("暂无"),
BELOW_1000("小于1000元"),
BELOW_3000("1000至3000元"),
BELOW_5000("3000至5000元"),
BELOW_8000("5000至8000元"),
BELOW_10000("8000至10000元"),
BELOW_15000("10000至15000元"),
BELOW_20000("15000至20000元"),
ABOVE_20000("大于20000元");
private String desc;
IncomeRangeEnum(String desc) {
this.desc = desc;
}
}
package cn.quantgroup.xyqb.entity.enumerate;
/**
* Created by sunnan on 2016-11-24.
*/
public enum MaritalStatus {
UNKNOWN("未知"),
SINGLE("未婚"), // 1
MARRIED("已婚"), // 2
DIVORCED("离异"), // 3
WINDOWED("丧偶"), // 4
OTHER("其他");
String description;
MaritalStatus(String desc) {
description = desc;
}
public String getDescription() {
return description;
}
@Override
public String toString() {
String sb = "MaritalStatus{" + "description='" + description + '\'' +
'}';
return sb;
}
}
package cn.quantgroup.xyqb.entity.enumerate;
/**
* Created by 11 on 2016/12/30.
*/
public enum OccupationEnum {
UNKNOWN("暂未填写"),
WORKER("工人"),
TEACHER("教师"),
WHITE_COLLAR("白领"),
STUDENT("学生"),
CAREER_BUILDER("创业者"),
SELF_EMPLOYER("个体户"),
EMPLOYEE("公司职员"),
BISUNESS_ENTITY("企业法人"),
ONLINE_STORE_OWNER("网店店主"),
UNEMPLOYED("暂无职业"),
OTHER("其他");
private String name;
OccupationEnum(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name;
}
}
package cn.quantgroup.xyqb.entity.enumerate;
/**
* Created by Miraculous on 2017/1/3.
*/
public enum Relation {
PARENT("父母"),
CHILDREN("子女"),
BROTHER("兄弟姐妹"),
COLLEAGUE("同事"),
CLASSMATE("同学"),
FRIEND("朋友"),
SPOUSE("夫妻"),
SELF("本人"),
OTHER("其他");
String description;
Relation(String desc) {
description = desc;
}
public String getDescription() {
return description;
}
@Override
public String toString() {
String sb = "Relation{" + "description='" + description + '\'' +
'}';
return sb;
}
}
...@@ -13,7 +13,7 @@ import org.springframework.stereotype.Component; ...@@ -13,7 +13,7 @@ import org.springframework.stereotype.Component;
* @author ag * @author ag
*/ */
@Component @Component
public class MQRegisteredEventListener implements ApplicationListener<RegisterEvent> { public class MqRegisteredEventListener implements ApplicationListener<RegisterEvent> {
@Override @Override
public void onApplicationEvent(RegisterEvent event) { public void onApplicationEvent(RegisterEvent event) {
......
...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.event; ...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.UserHashMapping; import cn.quantgroup.xyqb.entity.UserHashMapping;
import cn.quantgroup.xyqb.model.UserRegisterParam; import cn.quantgroup.xyqb.model.UserRegisterParam;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository; import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.util.encrypt.MD5Util; import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -35,14 +35,14 @@ public class PhoneHashEventListener implements ApplicationListener<RegisterEvent ...@@ -35,14 +35,14 @@ public class PhoneHashEventListener implements ApplicationListener<RegisterEvent
userHashMapping = new UserHashMapping(userId); userHashMapping = new UserHashMapping(userId);
} }
//无论如何都更新手机号 //无论如何都更新手机号
String phoneNoMd5 = MD5Util.build(phoneNo); String phoneNoMd5 = Md5Util.build(phoneNo);
userHashMapping.setPhoneNoMd5(phoneNoMd5); userHashMapping.setPhoneNoMd5(phoneNoMd5);
String idNo = userRegisterParam.getIdNo(); String idNo = userRegisterParam.getIdNo();
//如果有身份证号. 更新一下 //如果有身份证号. 更新一下
if (StringUtils.isNotEmpty(idNo)) { if (StringUtils.isNotEmpty(idNo)) {
idNo = idNo.toUpperCase(); idNo = idNo.toUpperCase();
userHashMapping.setIdNoMd5(MD5Util.build(idNo)); userHashMapping.setIdNoMd5(Md5Util.build(idNo));
} }
try { try {
......
...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.event; ...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserHashMapping; import cn.quantgroup.xyqb.entity.UserHashMapping;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository; import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.util.encrypt.MD5Util; import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -34,14 +34,14 @@ public class UserDetailHashEventListener implements ApplicationListener<UserDeta ...@@ -34,14 +34,14 @@ public class UserDetailHashEventListener implements ApplicationListener<UserDeta
if (userHashMapping == null) { if (userHashMapping == null) {
userHashMapping = new UserHashMapping(userDetail.getUserId()); userHashMapping = new UserHashMapping(userDetail.getUserId());
String phoneNo = userDetail.getPhoneNo(); String phoneNo = userDetail.getPhoneNo();
userHashMapping.setPhoneNoMd5(MD5Util.build(phoneNo)); userHashMapping.setPhoneNoMd5(Md5Util.build(phoneNo));
} }
String idNoMd5 = userHashMapping.getIdNoMd5(); String idNoMd5 = userHashMapping.getIdNoMd5();
String idNo = userDetail.getIdNo().toUpperCase(); String idNo = userDetail.getIdNo().toUpperCase();
String idNoMd5New = MD5Util.build(idNo); String idNoMd5New = Md5Util.build(idNo);
//新旧相同, 直接跳过 //新旧相同, 直接跳过
if (StringUtils.equals(idNoMd5, idNoMd5New)) { if (StringUtils.equals(idNoMd5, idNoMd5New)) {
......
package cn.quantgroup.xyqb.exception;
/**
* @author renwc
* @time 2019-10-30
*/
public class UserQueryLogException extends RuntimeException {
private static final long serialVersionUID = -1L;
public UserQueryLogException(String msg, Throwable t) {
super(msg, t);
}
public UserQueryLogException(String msg) {
super(msg);
}
}
...@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.model.session.SessionStruct; ...@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder; import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher; import org.springframework.util.AntPathMatcher;
...@@ -49,7 +50,7 @@ public class RequestFilter implements Filter { ...@@ -49,7 +50,7 @@ public class RequestFilter implements Filter {
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis();
if (Objects.isNull(sessionStruct)) { if (Objects.isNull(sessionStruct)) {
/* 如果没有获取到session信息则返回错误信息 */ /* 如果没有获取到session信息则返回错误信息 */
response.setStatus(401); response.setStatus(HttpStatus.SC_UNAUTHORIZED);
response.setHeader("Content-Type", "application/json;charset=utf-8"); response.setHeader("Content-Type", "application/json;charset=utf-8");
PrintWriter writer = response.getWriter(); PrintWriter writer = response.getWriter();
writer.print(UNAUTH_RESULT); writer.print(UNAUTH_RESULT);
......
...@@ -26,9 +26,9 @@ public class ApiResponse { ...@@ -26,9 +26,9 @@ public class ApiResponse {
public static final int OK = 4; public static final int OK = 4;
public static final int TOO_BUSY = 5; public static final int TOO_BUSY = 5;
int code; private int code;
String type; private String type;
String message; private String message;
public ApiResponse(){} public ApiResponse(){}
......
...@@ -8,7 +8,7 @@ import java.io.Serializable; ...@@ -8,7 +8,7 @@ import java.io.Serializable;
* Created by xuran on 2017/8/1. * Created by xuran on 2017/8/1.
*/ */
@Data @Data
public class XContactInfo implements Serializable { public class ContactInfo implements Serializable {
private static final long serialVersionUID = -1L; private static final long serialVersionUID = -1L;
private Long id; private Long id;
private Long userId; private Long userId;
......
...@@ -32,7 +32,7 @@ public class ContactModel implements Serializable { ...@@ -32,7 +32,7 @@ public class ContactModel implements Serializable {
ContactModel model = new ContactModel(); ContactModel model = new ContactModel();
model.setName(entity.getName()); model.setName(entity.getName());
model.setPhoneNo(entity.getPhoneNo()); model.setPhoneNo(entity.getPhoneNo());
model.setRelationName(Optional.ofNullable(entity.getRelation()).orElse(Relation.OTHER).getDescription()); model.setRelationName(Optional.ofNullable(entity.getRelation()).orElse(Relation.OTHER).getDesc());
model.setRelation(entity.getRelation().name()); model.setRelation(entity.getRelation().name());
return model; return model;
} }
......
...@@ -9,6 +9,7 @@ import java.io.Serializable; ...@@ -9,6 +9,7 @@ import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* Created by Miraculous on 2017/2/14. * Created by Miraculous on 2017/2/14.
...@@ -36,8 +37,12 @@ public class ContactRet implements Serializable { ...@@ -36,8 +37,12 @@ public class ContactRet implements Serializable {
ret.setName(c.getName()); ret.setName(c.getName());
ret.setPhoneNo(c.getPhoneNo()); ret.setPhoneNo(c.getPhoneNo());
ret.setRelation(c.getRelation()); ret.setRelation(c.getRelation());
ret.setCreatedAt(c.getCreatedAt().getTime()); if(Objects.nonNull(c.getCreatedAt())){
ret.setUpdateAt(c.getUpdateAt().getTime()); ret.setCreatedAt(c.getCreatedAt().getTime());
}
if(Objects.nonNull(c.getUpdateAt())) {
ret.setUpdateAt(c.getUpdateAt().getTime());
}
return ret; return ret;
} }
......
...@@ -25,10 +25,10 @@ public class JsonResult<T> implements Serializable { ...@@ -25,10 +25,10 @@ public class JsonResult<T> implements Serializable {
private String msg = ""; private String msg = "";
// 0成功,1失败 // 0成功,1失败
private String code = "0000"; private String code = Constants.SUCCESS_CODE;
// 业务错误码 // 业务错误码
private String businessCode = "0000"; private String businessCode = Constants.SUCCESS_CODE;
private T data = null; private T data = null;
......
...@@ -24,5 +24,5 @@ public class UserAssociation implements Serializable { ...@@ -24,5 +24,5 @@ public class UserAssociation implements Serializable {
private String district; private String district;
private String address; private String address;
private String qq; private String qq;
private List<XContactInfo> contractResults; private List<ContactInfo> contractResults;
} }
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.user.enums.EducationEnum;
import cn.quantgroup.user.enums.IncomeEnum;
import cn.quantgroup.user.enums.IncomeRangeEnum;
import cn.quantgroup.user.enums.OccupationEnum;
import cn.quantgroup.xyqb.entity.Address; import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact; import cn.quantgroup.xyqb.entity.Contact;
import lombok.Data; import lombok.Data;
import javax.persistence.Column;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
......
...@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.model; ...@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Data; import lombok.Data;
import org.springframework.util.Assert;
import java.io.Serializable; import java.io.Serializable;
...@@ -25,7 +26,7 @@ public class UserInfo implements Serializable { ...@@ -25,7 +26,7 @@ public class UserInfo implements Serializable {
private String IdNo; private String IdNo;
public UserInfo(User user, UserDetail userDetail) { public UserInfo(User user, UserDetail userDetail) {
assert user != null; Assert.notNull(user, "User信息无效");
this.id = user.getId(); this.id = user.getId();
this.phoneNo = user.getPhoneNo(); this.phoneNo = user.getPhoneNo();
this.registerFrom = user.getRegisteredFrom(); this.registerFrom = user.getRegisteredFrom();
......
...@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.model; ...@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Data; import lombok.Data;
import org.springframework.util.Assert;
import java.io.Serializable; import java.io.Serializable;
import java.util.Optional; import java.util.Optional;
...@@ -35,7 +36,7 @@ public class UserModel implements Serializable { ...@@ -35,7 +36,7 @@ public class UserModel implements Serializable {
} }
public UserModel(User user, UserDetail userDetail) { public UserModel(User user, UserDetail userDetail) {
assert user != null; Assert.notNull(user, "User信息无效");
this.id = user.getId(); this.id = user.getId();
this.phoneNo = user.getPhoneNo(); this.phoneNo = user.getPhoneNo();
this.registerFrom = user.getRegisteredFrom(); this.registerFrom = user.getRegisteredFrom();
......
...@@ -20,17 +20,17 @@ public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>, ...@@ -20,17 +20,17 @@ public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>,
UserDetail findByPhoneNo(String phone); UserDetail findByPhoneNo(String phone);
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update user_detail set qq = ?1 where user_id = ?2", nativeQuery = true) @Query(value = "update user_detail set qq = ?1 where user_id = ?2", nativeQuery = true)
void updateUserQQ(String qq, Long userId); void updateUserQq(String qq, Long userId);
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update user_detail set email = ?1 where user_id = ?2", nativeQuery = true) @Query(value = "update user_detail set email = ?1 where user_id = ?2", nativeQuery = true)
void updateUserEmail(String email, Long userId); void updateUserEmail(String email, Long userId);
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update user_detail set gender = ?1 where user_id = ?2", nativeQuery = true) @Query(value = "update user_detail set gender = ?1 where user_id = ?2", nativeQuery = true)
void updateGender(int gender, Long userId); void updateGender(int gender, Long userId);
...@@ -42,11 +42,10 @@ public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>, ...@@ -42,11 +42,10 @@ public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>,
* *
* @return * @return
*/ */
@Modifying
@Query(value = "select * from user_detail where gender!=1 and gender!=2 and id_no is not null", nativeQuery = true) @Query(value = "select * from user_detail where gender!=1 and gender!=2 and id_no is not null", nativeQuery = true)
List<UserDetail> selectUserDetailsBy(); List<UserDetail> selectUserDetailsBy();
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update user_detail set name=?1,id_no=?2,gender=?3 where phone_no=?4", nativeQuery = true) @Query(value = "update user_detail set name=?1,id_no=?2,gender=?3 where phone_no=?4", nativeQuery = true)
int updateNameAndIdNoByPhoneNo(String name, String idNo, int gender, String phoneNo); int updateNameAndIdNoByPhoneNo(String name, String idNo, int gender, String phoneNo);
......
...@@ -14,7 +14,7 @@ import java.util.List; ...@@ -14,7 +14,7 @@ import java.util.List;
*/ */
public interface IUserQueryLogRepository extends JpaRepository<UserQueryLog, Long> { public interface IUserQueryLogRepository extends JpaRepository<UserQueryLog, Long> {
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(nativeQuery = true, value = "select * from user_query_log ul where created_At between ?1 and ?2 limit ?3 ,?4 ") @Query(nativeQuery = true, value = "select * from user_query_log ul where created_At between ?1 and ?2 limit ?3 ,?4 ")
List<UserQueryLog> findQueryLogCreatedAt(Date beginDate, Date endDate, Integer pageId, Integer pageSize); List<UserQueryLog> findQueryLogCreatedAt(Date beginDate, Date endDate, Integer pageId, Integer pageSize);
......
...@@ -42,7 +42,7 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica ...@@ -42,7 +42,7 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica
@Query(value = "select * from user where created_at>=?1 and created_at<?2 ", nativeQuery = true) @Query(value = "select * from user where created_at>=?1 and created_at<?2 ", nativeQuery = true)
List<User> findRegisterUserByTime(String beginTime, String endTime); List<User> findRegisterUserByTime(String beginTime, String endTime);
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update user set enable=?1 where phone_no=?2", nativeQuery = true) @Query(value = "update user set enable=?1 where phone_no=?2", nativeQuery = true)
int forbiddenUser(Boolean enable, String phoneNo); int forbiddenUser(Boolean enable, String phoneNo);
......
...@@ -28,7 +28,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -28,7 +28,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
* @param userId * @param userId
* @return * @return
*/ */
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1", nativeQuery = true) @Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1", nativeQuery = true)
int dissociateByUserId(Long userId); int dissociateByUserId(Long userId);
...@@ -41,7 +41,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -41,7 +41,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
* @param openId - 微信标识 * @param openId - 微信标识
* @return 记录更新行数 * @return 记录更新行数
*/ */
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update wechat_userinfo set user_id=?1,phone_no=?2 where open_id=?3 and user_id is null", nativeQuery = true) @Query(value = "update wechat_userinfo set user_id=?1,phone_no=?2 where open_id=?3 and user_id is null", nativeQuery = true)
int relateUser(Long userId, String phoneNo, String openId); int relateUser(Long userId, String phoneNo, String openId);
...@@ -54,7 +54,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -54,7 +54,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
* @param userId - 用户标识 * @param userId - 用户标识
* @return 记录更新行数 * @return 记录更新行数
*/ */
@Transactional(propagation = MANDATORY) @Transactional(propagation = MANDATORY, rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where open_id=?1 or user_id=?2", nativeQuery = true) @Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where open_id=?1 or user_id=?2", nativeQuery = true)
int dissociateUser(String openId, Long userId); int dissociateUser(String openId, Long userId);
......
package cn.quantgroup.xyqb.service.auth.impl; package cn.quantgroup.xyqb.service.auth.impl;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.exception.IdCardException; import cn.quantgroup.xyqb.exception.IdCardException;
import cn.quantgroup.xyqb.model.Gender; import cn.quantgroup.xyqb.model.Gender;
import cn.quantgroup.xyqb.model.IdCardInfo; import cn.quantgroup.xyqb.model.IdCardInfo;
...@@ -80,10 +81,10 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -80,10 +81,10 @@ public class IdCardServiceImpl implements IIdCardService {
return false; return false;
} }
String actualId; String actualId;
if (idCardStr.length() == 18) { if (idCardStr.length() == Constants.ID_NO_STANDARD_LENGTH) {
actualId = idCardStr.substring(0, 17); actualId = idCardStr.substring(0, Constants.ID_NO_CHECK_LENGTH);
} else if (idCardStr.length() == 15) { } else if (idCardStr.length() == Constants.ID_NO_OLD_LENGTH) {
actualId = idCardStr.substring(0, 6) + "19" + idCardStr.substring(6, 15); actualId = idCardStr.substring(0, 6) + "19" + idCardStr.substring(6, Constants.ID_NO_OLD_LENGTH);
} else { } else {
return false; return false;
} }
...@@ -104,26 +105,26 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -104,26 +105,26 @@ public class IdCardServiceImpl implements IIdCardService {
} }
GregorianCalendar gc = new GregorianCalendar(); GregorianCalendar gc = new GregorianCalendar();
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr); Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr);
if (gc.get(Calendar.YEAR) - year > 150 || gc.getTime().getTime() - date.getTime() < 0) { if (gc.get(Calendar.YEAR) - year > Constants.AGE_MAX || gc.getTime().getTime() - date.getTime() < 0) {
return false; return false;
} }
if (month < 1 || month > 12) { if (month < Constants.MONTH_NO_MIN || month > Constants.MONTH_NO_MAX) {
return false; return false;
} }
if (day < 1 || day > 31) { if (day < Constants.DAY_NO_MIN || day > Constants.DAY_NO_MAX) {
return false; return false;
} }
String areaCode = actualId.substring(0, 2); String areaCode = actualId.substring(0, Constants.ID_NO_AREA_CODE_LENGTH);
if (!areaCodes.containsKey(areaCode)) { if (!areaCodes.containsKey(areaCode)) {
return false; return false;
} }
// 校验码 // 校验码
int acurateCode = 0; int acurateCode = 0;
for (int i = 0; i < 17; ++i) { for (int i = 0; i < Constants.ID_NO_CHECK_LENGTH; ++i) {
acurateCode += ((actualId.charAt(i) - '0') * wi[i]); acurateCode += ((actualId.charAt(i) - '0') * wi[i]);
} }
actualId += validCodes[acurateCode % 11]; actualId += validCodes[acurateCode % Constants.ID_NO_CHECK_MASK];
return idCardStr.length() != 18 || actualId.equalsIgnoreCase(idCardStr); return idCardStr.length() != Constants.ID_NO_STANDARD_LENGTH || actualId.equalsIgnoreCase(idCardStr);
} }
@Override @Override
...@@ -135,11 +136,11 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -135,11 +136,11 @@ public class IdCardServiceImpl implements IIdCardService {
} }
String actualId; String actualId;
String lastChar; String lastChar;
if (idCardStr.length() == 18) { if (idCardStr.length() == Constants.ID_NO_STANDARD_LENGTH) {
actualId = idCardStr.substring(0, 17); actualId = idCardStr.substring(0, Constants.ID_NO_CHECK_LENGTH);
lastChar = idCardStr.substring(16, 17).toLowerCase(); lastChar = idCardStr.substring(16, Constants.ID_NO_CHECK_LENGTH).toLowerCase();
} else if (idCardStr.length() == 15) { } else if (idCardStr.length() == Constants.ID_NO_OLD_LENGTH) {
actualId = idCardStr.substring(0, 6) + "19" + idCardStr.substring(6, 15); actualId = idCardStr.substring(0, 6) + "19" + idCardStr.substring(6, Constants.ID_NO_OLD_LENGTH);
lastChar = idCardStr.substring(13, 14).toLowerCase(); lastChar = idCardStr.substring(13, 14).toLowerCase();
} else { } else {
return cardInfo; return cardInfo;
...@@ -168,28 +169,28 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -168,28 +169,28 @@ public class IdCardServiceImpl implements IIdCardService {
return null; return null;
} }
if (gc.get(Calendar.YEAR) - year > 150 || gc.getTime().getTime() - date.getTime() < 0) { if (gc.get(Calendar.YEAR) - year > Constants.AGE_MAX || gc.getTime().getTime() - date.getTime() < 0) {
return cardInfo; return cardInfo;
} }
if (month < 1 || month > 12) { if (month < Constants.MONTH_NO_MIN || month > Constants.MONTH_NO_MAX) {
return cardInfo; return cardInfo;
} }
if (day < 1 || day > 31) { if (day < Constants.DAY_NO_MIN || day > Constants.DAY_NO_MAX) {
return cardInfo; return cardInfo;
} }
String areaCode = actualId.substring(0, 2); String areaCode = actualId.substring(0, Constants.ID_NO_AREA_CODE_LENGTH);
if (!areaCodes.containsKey(areaCode)) { if (!areaCodes.containsKey(areaCode)) {
return cardInfo; return cardInfo;
} }
// 校验码 // 校验码
int checkCode = 0; int checkCode = 0;
for (int i = 0; i < 17; ++i) { for (int i = 0; i < Constants.ID_NO_CHECK_LENGTH; ++i) {
checkCode += ((actualId.charAt(i) - '0') * wi[i]); checkCode += ((actualId.charAt(i) - '0') * wi[i]);
} }
actualId += validCodes[checkCode % 11]; actualId += validCodes[checkCode % Constants.ID_NO_CHECK_MASK];
if (idCardStr.length() == 18) { if (idCardStr.length() == Constants.ID_NO_STANDARD_LENGTH) {
if (!actualId.equalsIgnoreCase(idCardStr)) { if (!actualId.equalsIgnoreCase(idCardStr)) {
return cardInfo; return cardInfo;
} }
...@@ -197,7 +198,7 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -197,7 +198,7 @@ public class IdCardServiceImpl implements IIdCardService {
cardInfo.setIsValid(true); cardInfo.setIsValid(true);
// 判断男女 // 判断男女
if (Integer.parseInt(lastChar) % 2 == 0) { if (Integer.parseInt(lastChar) % Constants.GENDER_MASK == 0) {
cardInfo.setGender(Gender.FEMALE); cardInfo.setGender(Gender.FEMALE);
} else { } else {
cardInfo.setGender(Gender.MALE); cardInfo.setGender(Gender.MALE);
...@@ -215,11 +216,11 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -215,11 +216,11 @@ public class IdCardServiceImpl implements IIdCardService {
} }
String actualId; String actualId;
String lastValue; String lastValue;
if (idCardStr.length() == 18) { if (idCardStr.length() == Constants.ID_NO_STANDARD_LENGTH) {
actualId = idCardStr.substring(0, 17); actualId = idCardStr.substring(0, Constants.ID_NO_CHECK_LENGTH);
lastValue = idCardStr.substring(16, 17).toLowerCase(); lastValue = idCardStr.substring(16, Constants.ID_NO_CHECK_LENGTH).toLowerCase();
} else if (idCardStr.length() == 15) { } else if (idCardStr.length() == Constants.ID_NO_OLD_LENGTH) {
actualId = idCardStr.substring(0, 6) + "19" + idCardStr.substring(6, 15); actualId = idCardStr.substring(0, 6) + "19" + idCardStr.substring(6, Constants.ID_NO_OLD_LENGTH);
lastValue = idCardStr.substring(13, 14).toLowerCase(); lastValue = idCardStr.substring(13, 14).toLowerCase();
} else { } else {
throw new IdCardException("身份证号码必须为18位或15位"); throw new IdCardException("身份证号码必须为18位或15位");
...@@ -228,7 +229,7 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -228,7 +229,7 @@ public class IdCardServiceImpl implements IIdCardService {
throw new IdCardException("身份证格式不正确"); throw new IdCardException("身份证格式不正确");
} }
String yearStr = actualId.substring(6, 10); String yearStr = actualId.substring(6, 10);
String monthStr = actualId.substring(10, 12); String monthStr = actualId.substring(10, Constants.MONTH_NO_MAX);
String dayStr = actualId.substring(12, 14); String dayStr = actualId.substring(12, 14);
int year = Integer.parseInt(yearStr); int year = Integer.parseInt(yearStr);
int month = Integer.parseInt(monthStr); int month = Integer.parseInt(monthStr);
...@@ -240,28 +241,28 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -240,28 +241,28 @@ public class IdCardServiceImpl implements IIdCardService {
} }
GregorianCalendar gc = new GregorianCalendar(); GregorianCalendar gc = new GregorianCalendar();
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr); Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr);
if (gc.get(Calendar.YEAR) - year > 150 || gc.getTime().getTime() - date.getTime() < 0) { if (gc.get(Calendar.YEAR) - year > Constants.AGE_MAX || gc.getTime().getTime() - date.getTime() < 0) {
throw new IdCardException("身份证出生年份不正确"); throw new IdCardException("身份证出生年份不正确");
} }
if (month < 1 || month > 12) { if (month < Constants.MONTH_NO_MIN || month > Constants.MONTH_NO_MAX) {
throw new IdCardException("身份证出生月份不正确"); throw new IdCardException("身份证出生月份不正确");
} }
if (day < 1 || day > 31) { if (day < Constants.DAY_NO_MIN || day > Constants.DAY_NO_MAX) {
throw new IdCardException("身份证出生日期不正确"); throw new IdCardException("身份证出生日期不正确");
} }
String areaCode = actualId.substring(0, 2); String areaCode = actualId.substring(0, Constants.ID_NO_AREA_CODE_LENGTH);
if (!areaCodes.containsKey(areaCode)) { if (!areaCodes.containsKey(areaCode)) {
throw new IdCardException("身份证省份不正确"); throw new IdCardException("身份证省份不正确");
} }
// 校验码 // 校验码
int checkCode = 0; int checkCode = 0;
for (int i = 0; i < 17; ++i) { for (int i = 0; i < Constants.ID_NO_CHECK_LENGTH; ++i) {
checkCode += ((actualId.charAt(i) - '0') * wi[i]); checkCode += ((actualId.charAt(i) - '0') * wi[i]);
} }
actualId += validCodes[checkCode % 11]; actualId += validCodes[checkCode % Constants.ID_NO_CHECK_MASK];
if (idCardStr.length() == 18) { if (idCardStr.length() == Constants.ID_NO_STANDARD_LENGTH) {
if (!actualId.equalsIgnoreCase(idCardStr)) { if (!actualId.equalsIgnoreCase(idCardStr)) {
throw new IdCardException("身份证校验不正确"); throw new IdCardException("身份证校验不正确");
} }
...@@ -270,7 +271,7 @@ public class IdCardServiceImpl implements IIdCardService { ...@@ -270,7 +271,7 @@ public class IdCardServiceImpl implements IIdCardService {
IdCardInfo cardInfo = new IdCardInfo(); IdCardInfo cardInfo = new IdCardInfo();
cardInfo.setIsValid(true); cardInfo.setIsValid(true);
// 判断男女 // 判断男女
if (Integer.parseInt(lastValue) % 2 == 0) { if (Integer.parseInt(lastValue) % Constants.GENDER_MASK == 0) {
cardInfo.setGender(Gender.FEMALE); cardInfo.setGender(Gender.FEMALE);
} else { } else {
cardInfo.setGender(Gender.MALE); cardInfo.setGender(Gender.MALE);
......
...@@ -7,6 +7,7 @@ import cn.quantgroup.xyqb.repository.IUserAuthorizedRepository; ...@@ -7,6 +7,7 @@ import cn.quantgroup.xyqb.repository.IUserAuthorizedRepository;
import cn.quantgroup.xyqb.repository.IUserRepository; import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.auth.IIdCardService; import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService; import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -21,9 +22,9 @@ import java.util.Objects; ...@@ -21,9 +22,9 @@ import java.util.Objects;
/** /**
* @author xufei on 2018/1/5. * @author xufei on 2018/1/5.
*/ */
@Slf4j
@Service @Service
public class UserAuthorizedServiceImpl implements IUserAuthorizedService { public class UserAuthorizedServiceImpl implements IUserAuthorizedService {
private static final Logger LOGGER = LoggerFactory.getLogger(UserAuthorizedServiceImpl.class);
@Resource @Resource
private IIdCardService iIdCardService; private IIdCardService iIdCardService;
...@@ -41,12 +42,12 @@ public class UserAuthorizedServiceImpl implements IUserAuthorizedService { ...@@ -41,12 +42,12 @@ public class UserAuthorizedServiceImpl implements IUserAuthorizedService {
return Boolean.FALSE; return Boolean.FALSE;
} }
} catch (ParseException e) { } catch (ParseException e) {
LOGGER.error("[hasUserAuthorized]参数异常e:{}", e); log.error("[hasUserAuthorized]参数异常e:{}", e);
return Boolean.FALSE; return Boolean.FALSE;
} }
UserAuthorized userAuthorized = userAuthorizedRepository.findByIdNo(idNo); UserAuthorized userAuthorized = userAuthorizedRepository.findByIdNo(idNo);
LOGGER.info("[hasUserAuthorized]查询实名账户userAuthorized:{}", userAuthorized); log.info("[hasUserAuthorized]查询实名账户userAuthorized:{}", userAuthorized);
return null != userAuthorized; return null != userAuthorized;
} }
...@@ -86,10 +87,10 @@ public class UserAuthorizedServiceImpl implements IUserAuthorizedService { ...@@ -86,10 +87,10 @@ public class UserAuthorizedServiceImpl implements IUserAuthorizedService {
try { try {
userAuthorized = userAuthorizedRepository.save(userAuthorized); userAuthorized = userAuthorizedRepository.save(userAuthorized);
LOGGER.info("[createUserAuthorized]创建实名账户成功,userAuthorized:{}", userAuthorized); log.info("[createUserAuthorized]创建实名账户成功,userAuthorized:{}", userAuthorized);
return userAuthorized; return userAuthorized;
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("[createUserAuthorized]创建实名账户异常e:{}", e); log.error("[createUserAuthorized]创建实名账户异常e:{}", e);
return null; return null;
} }
} }
...@@ -102,7 +103,7 @@ public class UserAuthorizedServiceImpl implements IUserAuthorizedService { ...@@ -102,7 +103,7 @@ public class UserAuthorizedServiceImpl implements IUserAuthorizedService {
} }
UserAuthorized userAuthorized = userAuthorizedRepository.findByUserUuid(userUuid); UserAuthorized userAuthorized = userAuthorizedRepository.findByUserUuid(userUuid);
LOGGER.info("[getUserAuthorizedId]获取实名账户的id,userUuid:{},userAuthorized:{}", userUuid, userAuthorized); log.info("[getUserAuthorizedId]获取实名账户的id,userUuid:{},userAuthorized:{}", userUuid, userAuthorized);
if (null == userAuthorized) { if (null == userAuthorized) {
return null; return null;
} }
......
package cn.quantgroup.xyqb.service.captcha; package cn.quantgroup.xyqb.service.captcha;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpStatus;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -9,8 +12,6 @@ import java.io.InputStream; ...@@ -9,8 +12,6 @@ import java.io.InputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
...@@ -22,7 +23,6 @@ import java.util.Objects; ...@@ -22,7 +23,6 @@ import java.util.Objects;
*/ */
@Slf4j @Slf4j
public class GeetestLib { public class GeetestLib {
protected final String verName = "4.0"; protected final String verName = "4.0";
private String apiUrl; private String apiUrl;
...@@ -147,7 +147,7 @@ public class GeetestLib { ...@@ -147,7 +147,7 @@ public class GeetestLib {
gtlog("GET_URL:" + getUrl + param); gtlog("GET_URL:" + getUrl + param);
String result_str = readContentFromGet(getUrl + param); String result_str = readContentFromGet(getUrl + param);
if (Objects.equals(result_str, "fail")) { if (Objects.equals(result_str, Constants.CHECK_FAIL)) {
gtlog("gtServer register challenge failed"); gtlog("gtServer register challenge failed");
return 0; return 0;
...@@ -160,9 +160,9 @@ public class GeetestLib { ...@@ -160,9 +160,9 @@ public class GeetestLib {
gtlog("return_challenge:" + return_challenge); gtlog("return_challenge:" + return_challenge);
if (return_challenge.length() == 32) { if (return_challenge.length() == Constants.MD5_LENGTH) {
this.responseStr = this.getSuccessPreProcessRes(this.md5Encode(return_challenge + this.privateKey)); this.responseStr = this.getSuccessPreProcessRes(Md5Util.build(return_challenge + this.privateKey));
return 1; return 1;
...@@ -278,14 +278,14 @@ public class GeetestLib { ...@@ -278,14 +278,14 @@ public class GeetestLib {
response = readContentFromPost(postUrl, param); response = readContentFromPost(postUrl, param);
gtlog("response: " + response); gtlog("response: " + response);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("向gt-server进行二次验证", e);
} }
String return_seccode = ""; String return_seccode = "";
try { try {
JSONObject return_map = new JSONObject(response); JSONObject return_map = new JSONObject(response);
return_seccode = return_map.getString("seccode"); return_seccode = return_map.getString("seccode");
gtlog("md5: " + md5Encode(return_seccode)); gtlog("md5: " + Md5Util.build(return_seccode));
if (return_seccode.equals(md5Encode(seccode))) { if (return_seccode.equals(Md5Util.build(seccode))) {
return 1; return 1;
} else { } else {
return 0; return 0;
...@@ -328,7 +328,7 @@ public class GeetestLib { ...@@ -328,7 +328,7 @@ public class GeetestLib {
} }
protected boolean checkResultByPrivate(String challenge, String validate) { protected boolean checkResultByPrivate(String challenge, String validate) {
String encodeStr = md5Encode(privateKey + "geetest" + challenge); String encodeStr = Md5Util.build(privateKey + "geetest" + challenge);
return validate.equals(encodeStr); return validate.equals(encodeStr);
} }
...@@ -344,14 +344,15 @@ public class GeetestLib { ...@@ -344,14 +344,15 @@ public class GeetestLib {
URL getUrl = new URL(URL); URL getUrl = new URL(URL);
HttpURLConnection connection = (HttpURLConnection) getUrl HttpURLConnection connection = (HttpURLConnection) getUrl
.openConnection(); .openConnection();
// 设置连接主机超时(单位:毫秒)
connection.setConnectTimeout(2000);// 设置连接主机超时(单位:毫秒) connection.setConnectTimeout(2000);
connection.setReadTimeout(2000);// 设置从主机读取数据超时(单位:毫秒) // 设置从主机读取数据超时(单位:毫秒)
connection.setReadTimeout(2000);
// 建立与服务器的连接,并未发送数据 // 建立与服务器的连接,并未发送数据
connection.connect(); connection.connect();
if (connection.getResponseCode() == 200) { if (connection.getResponseCode() == HttpStatus.SC_OK) {
// 发送数据到服务器并使用Reader读取返回的数据 // 发送数据到服务器并使用Reader读取返回的数据
StringBuilder sBuffer = new StringBuilder(); StringBuilder sBuffer = new StringBuilder();
...@@ -362,12 +363,12 @@ public class GeetestLib { ...@@ -362,12 +363,12 @@ public class GeetestLib {
sBuffer.append(new String(buf, 0, n, "UTF-8")); sBuffer.append(new String(buf, 0, n, "UTF-8"));
} }
inStream.close(); inStream.close();
connection.disconnect();// 断开连接 // 断开连接
connection.disconnect();
return sBuffer.toString(); return sBuffer.toString();
} else { } else {
return Constants.CHECK_FAIL;
return "fail";
} }
} }
...@@ -385,9 +386,10 @@ public class GeetestLib { ...@@ -385,9 +386,10 @@ public class GeetestLib {
URL postUrl = new URL(URL); URL postUrl = new URL(URL);
HttpURLConnection connection = (HttpURLConnection) postUrl HttpURLConnection connection = (HttpURLConnection) postUrl
.openConnection(); .openConnection();
// 设置连接主机超时(单位:毫秒)
connection.setConnectTimeout(2000);// 设置连接主机超时(单位:毫秒) connection.setConnectTimeout(2000);
connection.setReadTimeout(2000);// 设置从主机读取数据超时(单位:毫秒) // 设置从主机读取数据超时(单位:毫秒)
connection.setReadTimeout(2000);
connection.setRequestMethod("POST"); connection.setRequestMethod("POST");
connection.setDoInput(true); connection.setDoInput(true);
connection.setDoOutput(true); connection.setDoOutput(true);
...@@ -401,7 +403,7 @@ public class GeetestLib { ...@@ -401,7 +403,7 @@ public class GeetestLib {
outputStreamWriter.flush(); outputStreamWriter.flush();
outputStreamWriter.close(); outputStreamWriter.close();
if (connection.getResponseCode() == 200) { if (connection.getResponseCode() == HttpStatus.SC_OK) {
// 发送数据到服务器并使用Reader读取返回的数据 // 发送数据到服务器并使用Reader读取返回的数据
StringBuilder sBuffer = new StringBuilder(); StringBuilder sBuffer = new StringBuilder();
...@@ -412,47 +414,14 @@ public class GeetestLib { ...@@ -412,47 +414,14 @@ public class GeetestLib {
sBuffer.append(new String(buf, 0, n, "UTF-8")); sBuffer.append(new String(buf, 0, n, "UTF-8"));
} }
inStream.close(); inStream.close();
connection.disconnect();// 断开连接 // 断开连接
connection.disconnect();
return sBuffer.toString(); return sBuffer.toString();
} else { } else {
return "fail"; return Constants.CHECK_FAIL;
}
}
/**
* md5 加密
*
* @param plainText
* @return
* @time 2014年7月10日 下午3:30:01
*/
private String md5Encode(String plainText) {
String re_md5 = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuilder buf = new StringBuilder();
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0) {
i += 256;
}
if (i < 16) {
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} }
return re_md5;
} }
} }
...@@ -2,8 +2,9 @@ package cn.quantgroup.xyqb.service.http.impl; ...@@ -2,8 +2,9 @@ package cn.quantgroup.xyqb.service.http.impl;
import cn.quantgroup.tech.brave.service.ITechHttpClient; import cn.quantgroup.tech.brave.service.ITechHttpClient;
import cn.quantgroup.xyqb.service.http.IHttpService; import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.util.Utils; import cn.quantgroup.xyqb.util.PasswordUtil;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.Charsets; import org.apache.commons.codec.Charsets;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -52,11 +53,10 @@ import java.util.*; ...@@ -52,11 +53,10 @@ import java.util.*;
* @author mengfan.feng * @author mengfan.feng
* @time 2015-08-13 10:19 * @time 2015-08-13 10:19
*/ */
@Slf4j
@Service @Service
public class HttpServiceImpl implements IHttpService { public class HttpServiceImpl implements IHttpService {
private static final Logger LOGGER = LoggerFactory.getLogger(HttpServiceImpl.class);
private static final int TIME_OUT = 60 * 1000; // 超时时间 private static final int TIME_OUT = 60 * 1000; // 超时时间
//注入brave-spring-boot-starter提供的techHttpClient //注入brave-spring-boot-starter提供的techHttpClient
@Resource @Resource
...@@ -103,12 +103,12 @@ public class HttpServiceImpl implements IHttpService { ...@@ -103,12 +103,12 @@ public class HttpServiceImpl implements IHttpService {
*/ */
private String doHttp(RequestBuilder requestBuilder, String uri, Map<String, String> headers, Map<String, String> parameters) { private String doHttp(RequestBuilder requestBuilder, String uri, Map<String, String> headers, Map<String, String> parameters) {
if (StringUtils.isEmpty(uri)) { if (StringUtils.isEmpty(uri)) {
LOGGER.info("uri cannot be empty, uri:{}", uri); log.info("uri cannot be empty, uri:{}", uri);
return null; return null;
} }
String method = requestBuilder.getMethod(); String method = requestBuilder.getMethod();
LOGGER.info("{}, uri:{}, headers:{}, parameters:{}", method, uri, headers, StringUtils.substring(Utils.safeMap2Str(parameters), 0, 200)); log.info("{}, uri:{}, headers:{}, parameters:{}", method, uri, headers, StringUtils.substring(PasswordUtil.filterPasswordToString(parameters), 0, 200));
HttpEntity httpEntity = null; HttpEntity httpEntity = null;
CloseableHttpResponse httpResponse = null; CloseableHttpResponse httpResponse = null;
try { try {
...@@ -129,11 +129,11 @@ public class HttpServiceImpl implements IHttpService { ...@@ -129,11 +129,11 @@ public class HttpServiceImpl implements IHttpService {
httpEntity = httpResponse.getEntity(); httpEntity = httpResponse.getEntity();
String response = EntityUtils.toString(httpEntity, Charsets.UTF_8); String response = EntityUtils.toString(httpEntity, Charsets.UTF_8);
LOGGER.info("{}, uri:{}, response:{}", method, uri, StringUtils.substring(response, 0, 200)); log.info("{}, uri:{}, response:{}", method, uri, StringUtils.substring(response, 0, 200));
return response; return response;
} catch (Exception e) { } catch (Exception e) {
LOGGER.info("{}, uri:{}, headers:{}, parameters:{}", method, uri, headers, StringUtils.substring(Utils.safeMap2Str(parameters), 0, 200), e); log.info("{}, uri:{}, headers:{}, parameters:{}", method, uri, headers, StringUtils.substring(PasswordUtil.filterPasswordToString(parameters), 0, 200), e);
return null; return null;
} finally { } finally {
EntityUtils.consumeQuietly(httpEntity); EntityUtils.consumeQuietly(httpEntity);
...@@ -142,7 +142,7 @@ public class HttpServiceImpl implements IHttpService { ...@@ -142,7 +142,7 @@ public class HttpServiceImpl implements IHttpService {
httpResponse.close(); httpResponse.close();
} }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("{}, httpResponse.close error", method, e); log.error("{}, httpResponse.close error", method, e);
} }
} }
} }
......
...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.service.mq.impl; ...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.service.mq.impl;
import cn.quantgroup.xyqb.service.mq.IRegisterMqService; import cn.quantgroup.xyqb.service.mq.IRegisterMqService;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.Queue;
...@@ -16,20 +17,20 @@ import java.io.Serializable; ...@@ -16,20 +17,20 @@ import java.io.Serializable;
/** /**
* Created by xuran on 2017/9/7. * Created by xuran on 2017/9/7.
*/ */
@Slf4j
@Service("registerMqService") @Service("registerMqService")
public class IRegisterMqServiceImpl implements IRegisterMqService { public class IRegisterMqServiceImpl implements IRegisterMqService {
private static final Logger LOGGER = LoggerFactory.getLogger(IRegisterMqServiceImpl.class);
@Autowired @Autowired
@Qualifier("registerRabbitTemplate") @Qualifier("registerRabbitTemplate")
RabbitTemplate registerRabTemplate; private RabbitTemplate registerRabTemplate;
@Autowired @Autowired
@Qualifier("registerRabbitTemplate4Gdt") @Qualifier("registerRabbitTemplate4Gdt")
RabbitTemplate registerRabbitTemplate4Gdt; private RabbitTemplate registerRabbitTemplate4Gdt;
@Autowired @Autowired
@Qualifier(value = "registerMqQueue") @Qualifier(value = "registerMqQueue")
Queue registerMqQueue; private Queue registerMqQueue;
/** /**
* 发送用登陆统计信息 * 发送用登陆统计信息
...@@ -40,12 +41,12 @@ public class IRegisterMqServiceImpl implements IRegisterMqService { ...@@ -40,12 +41,12 @@ public class IRegisterMqServiceImpl implements IRegisterMqService {
@Async @Async
public void send(Serializable message) { public void send(Serializable message) {
if (null == message) { if (null == message) {
LOGGER.error("广播用户注册消息不能为空"); log.error("广播用户注册消息不能为空");
} }
LOGGER.info("广播用户注册消息,message={}", message); log.info("广播用户注册消息,message={}", message);
String msg = JSONObject.toJSONString(message); String msg = JSONObject.toJSONString(message);
registerRabTemplate.convertAndSend(msg); registerRabTemplate.convertAndSend(msg);
LOGGER.info("广播用户注册消息,message={}", msg); log.info("广播用户注册消息,message={}", msg);
} }
/** /**
...@@ -57,12 +58,12 @@ public class IRegisterMqServiceImpl implements IRegisterMqService { ...@@ -57,12 +58,12 @@ public class IRegisterMqServiceImpl implements IRegisterMqService {
@Async @Async
public void send4Gdt(Serializable message) { public void send4Gdt(Serializable message) {
if (null == message) { if (null == message) {
LOGGER.error("广点通用户注册消息不能为空"); log.error("广点通用户注册消息不能为空");
} }
LOGGER.info("广点通用户注册消息,message={}", message); log.info("广点通用户注册消息,message={}", message);
String msg = JSONObject.toJSONString(message); String msg = JSONObject.toJSONString(message);
registerRabbitTemplate4Gdt.convertAndSend(msg); registerRabbitTemplate4Gdt.convertAndSend(msg);
LOGGER.info("广点通用户注册消息,message={}", msg); log.info("广点通用户注册消息,message={}", msg);
} }
} }
...@@ -3,9 +3,7 @@ package cn.quantgroup.xyqb.service.mq.impl; ...@@ -3,9 +3,7 @@ package cn.quantgroup.xyqb.service.mq.impl;
import cn.quantgroup.xyqb.model.UserStatistics; import cn.quantgroup.xyqb.model.UserStatistics;
import cn.quantgroup.xyqb.service.mq.IVestService; import cn.quantgroup.xyqb.service.mq.IVestService;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger; import lombok.extern.slf4j.Slf4j;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
...@@ -17,18 +15,14 @@ import javax.annotation.Resource; ...@@ -17,18 +15,14 @@ import javax.annotation.Resource;
* Created by xuran on 2017/6/21. * Created by xuran on 2017/6/21.
* 用户统计信息 * 用户统计信息
*/ */
@Service("loanVestMQService") @Slf4j
public class LoanVestMQServiceImpl implements IVestService { @Service("loanVestMqService")
private static final Logger LOGGER = LoggerFactory.getLogger(LoanVestMQServiceImpl.class); public class LoanVestMqServiceImpl implements IVestService {
@Resource @Resource
@Qualifier("rabbitTemplate") @Qualifier("rabbitTemplate")
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Resource
@Qualifier(value = "loanVestQueue")
Queue loanVestQueue;
/** /**
* 发送用登陆统计信息 * 发送用登陆统计信息
* *
...@@ -38,12 +32,13 @@ public class LoanVestMQServiceImpl implements IVestService { ...@@ -38,12 +32,13 @@ public class LoanVestMQServiceImpl implements IVestService {
@Async @Async
public void send(UserStatistics message) { public void send(UserStatistics message) {
if (null == message) { if (null == message) {
LOGGER.error("用户登陆统计消息不能为空"); log.error("用户登陆统计消息不能为空");
return;
} }
LOGGER.info("用户登陆统计发送,message={}", message); log.info("用户登陆统计发送,message={}", message);
String msg = JSONObject.toJSONString(message); String msg = JSONObject.toJSONString(message);
rabbitTemplate.convertAndSend("statistics-user", msg); rabbitTemplate.convertAndSend("statistics-user", msg);
LOGGER.info("用户登陆统计成功,message={}", msg); log.info("用户登陆统计成功,message={}", msg);
} }
} }
...@@ -5,11 +5,11 @@ import cn.quantgroup.xyqb.entity.User; ...@@ -5,11 +5,11 @@ import cn.quantgroup.xyqb.entity.User;
/** /**
* Created by Miraculous on 2017/1/3. * Created by Miraculous on 2017/1/3.
*/ */
public abstract class PageType { public abstract class BasePageType {
protected String name; protected String name;
protected Boolean needShow; protected Boolean needShow;
public PageType(String name, Boolean needShow) { public BasePageType(String name, Boolean needShow) {
this.name = name; this.name = name;
this.needShow = needShow; this.needShow = needShow;
} }
......
...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.service.page.impl; ...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.service.page.impl;
import cn.quantgroup.xyqb.entity.*; import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.model.Tuple; import cn.quantgroup.xyqb.model.Tuple;
import cn.quantgroup.xyqb.service.page.IPageService; import cn.quantgroup.xyqb.service.page.IPageService;
import cn.quantgroup.xyqb.service.page.bean.PageType; import cn.quantgroup.xyqb.service.page.bean.BasePageType;
import cn.quantgroup.xyqb.service.user.IAddressService; import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService; import cn.quantgroup.xyqb.service.user.IContactService;
import cn.quantgroup.xyqb.service.user.IUserDetailService; import cn.quantgroup.xyqb.service.user.IUserDetailService;
...@@ -22,10 +22,10 @@ import java.util.Map; ...@@ -22,10 +22,10 @@ import java.util.Map;
@Service @Service
public class PageServiceImpl implements IPageService { public class PageServiceImpl implements IPageService {
private Map<String, PageType[]> routerDefinetion; private Map<String, BasePageType[]> routerDefinetion;
@Autowired @Autowired
private IUserDetailService userDetailService; private IUserDetailService userDetailService;
private PageType pageIdNo = new PageType("name", false) { private BasePageType pageIdNo = new BasePageType("name", false) {
@Override @Override
public boolean canPass(User user) { public boolean canPass(User user) {
UserDetail userDetail = userDetailService.findByUserId(user.getId()); UserDetail userDetail = userDetailService.findByUserId(user.getId());
...@@ -34,7 +34,7 @@ public class PageServiceImpl implements IPageService { ...@@ -34,7 +34,7 @@ public class PageServiceImpl implements IPageService {
}; };
@Autowired @Autowired
private IUserExtInfoService userExtInfoService; private IUserExtInfoService userExtInfoService;
private PageType pageUserFinance = new PageType("info", false) { private BasePageType pageUserFinance = new BasePageType("info", false) {
@Override @Override
public boolean canPass(User user) { public boolean canPass(User user) {
UserExtInfo extInfo = userExtInfoService.findByUserId(user.getId()); UserExtInfo extInfo = userExtInfoService.findByUserId(user.getId());
...@@ -43,7 +43,7 @@ public class PageServiceImpl implements IPageService { ...@@ -43,7 +43,7 @@ public class PageServiceImpl implements IPageService {
}; };
@Autowired @Autowired
private IAddressService addressService; private IAddressService addressService;
private PageType pageAddress = new PageType("address", false) { private BasePageType pageAddress = new BasePageType("address", false) {
@Override @Override
public boolean canPass(User user) { public boolean canPass(User user) {
Address address = addressService.findByUserId(user.getId()); Address address = addressService.findByUserId(user.getId());
...@@ -52,7 +52,7 @@ public class PageServiceImpl implements IPageService { ...@@ -52,7 +52,7 @@ public class PageServiceImpl implements IPageService {
}; };
@Autowired @Autowired
private IContactService contactService; private IContactService contactService;
private PageType pageContacts = new PageType("contacts", false) { private BasePageType pageContacts = new BasePageType("contacts", false) {
@Override @Override
public boolean canPass(User user) { public boolean canPass(User user) {
List<Contact> contacts = contactService.findByUserId(user.getId(), true); List<Contact> contacts = contactService.findByUserId(user.getId(), true);
...@@ -64,19 +64,19 @@ public class PageServiceImpl implements IPageService { ...@@ -64,19 +64,19 @@ public class PageServiceImpl implements IPageService {
private void init() { private void init() {
routerDefinetion = new HashMap<>(); routerDefinetion = new HashMap<>();
routerDefinetion.put("cashTarget1", new PageType[]{ routerDefinetion.put("cashTarget1", new BasePageType[]{
pageIdNo, pageUserFinance pageIdNo, pageUserFinance
}); });
routerDefinetion.put("cashTarget2", new PageType[]{ routerDefinetion.put("cashTarget2", new BasePageType[]{
pageIdNo, pageAddress pageIdNo, pageAddress
}); });
routerDefinetion.put("cashTarget3", new PageType[]{ routerDefinetion.put("cashTarget3", new BasePageType[]{
pageIdNo, pageContacts pageIdNo, pageContacts
}); });
routerDefinetion.put("cashTarget4", new PageType[]{ routerDefinetion.put("cashTarget4", new BasePageType[]{
pageIdNo pageIdNo
}); });
routerDefinetion.put("cashTarget5", new PageType[]{ routerDefinetion.put("cashTarget5", new BasePageType[]{
}); });
} }
...@@ -85,7 +85,7 @@ public class PageServiceImpl implements IPageService { ...@@ -85,7 +85,7 @@ public class PageServiceImpl implements IPageService {
if (user == null) { if (user == null) {
return new Tuple<>("", false); return new Tuple<>("", false);
} }
PageType[] processLists = routerDefinetion.getOrDefault(target, null); BasePageType[] processLists = routerDefinetion.getOrDefault(target, null);
if (processLists == null) { if (processLists == null) {
return new Tuple<>("", false); return new Tuple<>("", false);
} }
...@@ -93,7 +93,7 @@ public class PageServiceImpl implements IPageService { ...@@ -93,7 +93,7 @@ public class PageServiceImpl implements IPageService {
return new Tuple<>("", true); return new Tuple<>("", true);
} }
boolean isBeforeCurrentPage = true; boolean isBeforeCurrentPage = true;
for (PageType page : processLists) { for (BasePageType page : processLists) {
if (!page.canPass(user)) { if (!page.canPass(user)) {
return new Tuple<>(page.getName(), false); return new Tuple<>(page.getName(), false);
} }
......
...@@ -69,7 +69,7 @@ public class UserRegisterServiceImpl implements IUserRegisterService { ...@@ -69,7 +69,7 @@ public class UserRegisterServiceImpl implements IUserRegisterService {
registerFrom = 1L; registerFrom = 1L;
} }
Long channelId = userRegisterParam.getChannelId(); Long channelId = userRegisterParam.getChannelId();
if (Objects.equals(channelId, 222L)) { if (Objects.equals(channelId, Constants.Channel.BAITIAO)) {
user.setRegisteredFrom(channelId); user.setRegisteredFrom(channelId);
} else { } else {
user.setRegisteredFrom(registerFrom); user.setRegisteredFrom(registerFrom);
......
...@@ -3,12 +3,11 @@ package cn.quantgroup.xyqb.service.session.aspect; ...@@ -3,12 +3,11 @@ package cn.quantgroup.xyqb.service.session.aspect;
import cn.quantgroup.xyqb.entity.UserBtRegister; import cn.quantgroup.xyqb.entity.UserBtRegister;
import cn.quantgroup.xyqb.model.session.SessionValue; import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService; import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
...@@ -17,16 +16,17 @@ import org.springframework.stereotype.Component; ...@@ -17,16 +16,17 @@ import org.springframework.stereotype.Component;
/** /**
* Created by Administrator on 2017/5/16. * Created by Administrator on 2017/5/16.
*/ */
@Slf4j
@Aspect @Aspect
@Component @Component
@Order(value = Ordered.HIGHEST_PRECEDENCE + 200) @Order(value = Ordered.HIGHEST_PRECEDENCE)
public class UserBtRegisterFillAspect { public class UserBtRegisterFillAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(UserBtRegisterFillAspect.class);
@Autowired @Autowired
private IUserBtRegisterService userBtRegisterService; private IUserBtRegisterService userBtRegisterService;
@Pointcut("@annotation(cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill)") //生成还款计划的时候,去生成趸交服务费 /** 生成还款计划的时候,去生成趸交服务费 */
@Pointcut("@annotation(cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill)")
public void userBtRegisterFillCut() { public void userBtRegisterFillCut() {
} }
...@@ -36,7 +36,7 @@ public class UserBtRegisterFillAspect { ...@@ -36,7 +36,7 @@ public class UserBtRegisterFillAspect {
try { try {
args = fillUserBtRegister(args); args = fillUserBtRegister(args);
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("补充用户白条登录渠道信息失败", e); log.error("补充用户白条登录渠道信息失败", e);
} }
return pjp.proceed(args); return pjp.proceed(args);
} }
......
...@@ -53,10 +53,10 @@ public class SessionServiceImpl implements ISessionService { ...@@ -53,10 +53,10 @@ public class SessionServiceImpl implements ISessionService {
//找到用户 //找到用户
String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties); String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties);
SessionStruct sessionStruct = null; SessionStruct sessionStruct = null;
if (org.apache.commons.lang.StringUtils.isNotEmpty(sessionId)) { if (StringUtils.isNotEmpty(sessionId)) {
sessionStruct = findSessionBySessionId(sessionId); sessionStruct = findSessionBySessionId(sessionId);
} }
if (Objects.nonNull(sessionStruct)) { if (Objects.nonNull(sessionStruct) && Objects.nonNull(properties)) {
sessionStruct.setAttribute("channelId", String.valueOf(properties.getChannelId())); sessionStruct.setAttribute("channelId", String.valueOf(properties.getChannelId()));
sessionStruct.setAttribute("createdFrom", String.valueOf(properties.getCreatedFrom())); sessionStruct.setAttribute("createdFrom", String.valueOf(properties.getCreatedFrom()));
sessionStruct.setAttribute("appChannel", String.valueOf(properties.getAppChannel())); sessionStruct.setAttribute("appChannel", String.valueOf(properties.getAppChannel()));
...@@ -80,7 +80,7 @@ public class SessionServiceImpl implements ISessionService { ...@@ -80,7 +80,7 @@ public class SessionServiceImpl implements ISessionService {
SessionStruct sessionStruct; SessionStruct sessionStruct;
//获取sessionid //获取sessionid
String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties); String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties);
if (StringUtils.length(sessionId) == 36) { if (StringUtils.length(sessionId) == Constants.TOKEN_LENGTH) {
sessionStruct = findSessionBySessionId(sessionId); sessionStruct = findSessionBySessionId(sessionId);
if (sessionStruct == null) { if (sessionStruct == null) {
sessionStruct = newSession(user, properties); sessionStruct = newSession(user, properties);
......
...@@ -8,8 +8,6 @@ import cn.quantgroup.xyqb.service.sms.ISmsService; ...@@ -8,8 +8,6 @@ import cn.quantgroup.xyqb.service.sms.ISmsService;
import lombok.Synchronized; import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -23,14 +21,9 @@ import java.util.Collections; ...@@ -23,14 +21,9 @@ import java.util.Collections;
* @author mengfan.feng * @author mengfan.feng
* @time 2015-07-25 18:47 * @time 2015-07-25 18:47
*/ */
@Service
@Slf4j @Slf4j
@Service
public class SmsServiceImpl implements ISmsService { public class SmsServiceImpl implements ISmsService {
private static final Logger LOGGER = LoggerFactory.getLogger(SmsServiceImpl.class);
private static final int SMS_VERIFICATION_MAXLEN = 4;
private static final String SMS_VERIFY_PREFIX = "sms:verify:";
private static SmsSender smsSender = null; private static SmsSender smsSender = null;
@Value("${sms.is.debug}") @Value("${sms.is.debug}")
...@@ -64,7 +57,7 @@ public class SmsServiceImpl implements ISmsService { ...@@ -64,7 +57,7 @@ public class SmsServiceImpl implements ISmsService {
//smsSender.sendAndForget(new SendAndForgetMsg(Collections.emptyList(), "24", "1", phoneNo)); //smsSender.sendAndForget(new SendAndForgetMsg(Collections.emptyList(), "24", "1", phoneNo));
log.info("注册完成,发送短信, phoneNo:{}", phoneNo); log.info("注册完成,发送短信, phoneNo:{}", phoneNo);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("注册完成短信发送异常", e);
} }
} }
...@@ -98,7 +91,7 @@ public class SmsServiceImpl implements ISmsService { ...@@ -98,7 +91,7 @@ public class SmsServiceImpl implements ISmsService {
return false; return false;
} }
String[] arr = randomCode.split(":"); String[] arr = randomCode.split(":");
if (arr.length != 2) { if (arr.length != Constants.VERIFICATION_LEN) {
return false; return false;
} }
String uniqueId = arr[0]; String uniqueId = arr[0];
...@@ -115,7 +108,7 @@ public class SmsServiceImpl implements ISmsService { ...@@ -115,7 +108,7 @@ public class SmsServiceImpl implements ISmsService {
//smsSender.confirmSmsResult("1", unqiueId); //smsSender.confirmSmsResult("1", unqiueId);
log.info("confirmMsg send success, uniqueId={}", unqiueId); log.info("confirmMsg send success, uniqueId={}", unqiueId);
} catch (Exception e) { } catch (Exception e) {
log.info("短信验证向短信中心确认失效"); log.info("短信验证向短信中心确认失效", e);
} }
return StringUtils.equals(code, smsVerificationCode); return StringUtils.equals(code, smsVerificationCode);
} }
......
...@@ -17,7 +17,7 @@ public interface IUserDetailService { ...@@ -17,7 +17,7 @@ public interface IUserDetailService {
UserDetail findByPhoneNo(String phoneNo); UserDetail findByPhoneNo(String phoneNo);
void updateUserQQ(Long userId, String qq); void updateUserQq(Long userId, String qq);
void updateUserEmail(Long userId, String email); void updateUserEmail(Long userId, String email);
......
...@@ -4,6 +4,7 @@ import cn.quantgroup.user.enums.Relation; ...@@ -4,6 +4,7 @@ import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.Contact; import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.repository.IContactRepository; import cn.quantgroup.xyqb.repository.IContactRepository;
import cn.quantgroup.xyqb.service.user.IContactService; import cn.quantgroup.xyqb.service.user.IContactService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -15,13 +16,14 @@ import org.springframework.util.CollectionUtils; ...@@ -15,13 +16,14 @@ import org.springframework.util.CollectionUtils;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* Created by Miraculous on 2017/1/3. * Created by Miraculous on 2017/1/3.
*/ */
@Slf4j
@Service @Service
public class ContactServiceImpl implements IContactService { public class ContactServiceImpl implements IContactService {
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(ContactServiceImpl.class);
@Autowired @Autowired
private IContactRepository contactRepository; private IContactRepository contactRepository;
...@@ -84,7 +86,7 @@ public class ContactServiceImpl implements IContactService { ...@@ -84,7 +86,7 @@ public class ContactServiceImpl implements IContactService {
if (null != relation) { if (null != relation) {
contact.setRelation(relation); contact.setRelation(relation);
} }
LOGGER.info("修改前联系人信息:{}", contact); log.info("修改前联系人信息:{}", contact);
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
contact.setUpdateAt(now); contact.setUpdateAt(now);
contact = save(contact); contact = save(contact);
...@@ -100,18 +102,26 @@ public class ContactServiceImpl implements IContactService { ...@@ -100,18 +102,26 @@ public class ContactServiceImpl implements IContactService {
private void mergeContacts(Long userId, List<Contact> contacts) { private void mergeContacts(Long userId, List<Contact> contacts) {
// 当前联系人列表 // 当前联系人列表
List<Contact> userContact = contactRepository.findByUserId(userId); List<Contact> userContact = contactRepository.findByUserId(userId);
int userContactCount = (userContact == null) ? 0 : userContact.size();
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
for (int i = 0; i < contacts.size(); i++) { for (int i = 0; i < contacts.size(); i++) {
Contact c = contacts.get(i); Contact c = contacts.get(i);
c.setId(null); c.setId(null);
c.setUserId(userId); c.setUserId(userId);
c.setRelation(c.getRelation() == null ? Relation.OTHER : c.getRelation()); if(Objects.isNull(c.getRelation())){
c.setRelation(Relation.OTHER);
}
c.setCreatedAt(now); c.setCreatedAt(now);
c.setUpdateAt(now); c.setUpdateAt(now);
if (userContactCount > i) { if (CollectionUtils.isEmpty(userContact) || userContact.size() <= i) {
c.setId(userContact.get(i).getId()); continue;
c.setCreatedAt(userContact.get(i).getCreatedAt() == null ? now : userContact.get(i).getCreatedAt()); }
Contact old = userContact.get(i);
if(Objects.isNull(old)){
continue;
}
c.setId(old.getId());
if(Objects.nonNull(old.getCreatedAt())){
c.setCreatedAt(old.getCreatedAt());
} }
} }
} }
......
...@@ -8,8 +8,6 @@ import cn.quantgroup.xyqb.util.PasswordUtil; ...@@ -8,8 +8,6 @@ import cn.quantgroup.xyqb.util.PasswordUtil;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -26,9 +24,8 @@ import java.util.Optional; ...@@ -26,9 +24,8 @@ import java.util.Optional;
@Slf4j @Slf4j
public class LkbUserviceImpl implements ILkbUserService { public class LkbUserviceImpl implements ILkbUserService {
private static final Logger LOGGER = LoggerFactory.getLogger(LkbUserviceImpl.class);
private static final String TOKEN_PATTERN = "timeunit=%sappkey=lkb010203#$%%"; private static final String TOKEN_PATTERN = "timeunit=%sappkey=lkb010203#$%%";
private static final String LKB_CODE = "0002";
@Autowired @Autowired
private IHttpService httpService; private IHttpService httpService;
...@@ -41,7 +38,7 @@ public class LkbUserviceImpl implements ILkbUserService { ...@@ -41,7 +38,7 @@ public class LkbUserviceImpl implements ILkbUserService {
String timeunit = System.currentTimeMillis() + ""; String timeunit = System.currentTimeMillis() + "";
String token = PasswordUtil.MD5(String.format(TOKEN_PATTERN, timeunit)); String token = PasswordUtil.MD5(String.format(TOKEN_PATTERN, timeunit));
Map<String, String> parameters = Maps.newHashMap(); Map<String, String> parameters = Maps.newHashMap();
parameters.put("appId", Constants.Channel.LKB_CODE); parameters.put("appId", LKB_CODE);
parameters.put("timeunit", timeunit); parameters.put("timeunit", timeunit);
parameters.put("token", token); parameters.put("token", token);
parameters.put("userId", uuid); parameters.put("userId", uuid);
...@@ -54,8 +51,8 @@ public class LkbUserviceImpl implements ILkbUserService { ...@@ -54,8 +51,8 @@ public class LkbUserviceImpl implements ILkbUserService {
} }
String response = httpService.post(clientUrl + "/user/push.json", parameters); String response = httpService.post(clientUrl + "/user/push.json", parameters);
Optional<Map> resultOptional = JsonUtil.fromJson(response, Map.class); Optional<Map> resultOptional = JsonUtil.fromJson(response, Map.class);
if (!resultOptional.isPresent() || !"0000".equals(resultOptional.get().get("code"))) { if (!resultOptional.isPresent() || !Constants.SUCCESS_CODE.equals(resultOptional.get().get(Constants.RESULT_CODE))) {
LOGGER.error("[lkb_user_push]向LKB同步用户失败,phoneNo:{},response={}", phoneNo, response); log.error("[lkb_user_push]向LKB同步用户失败,phoneNo:{},response={}", phoneNo, response);
return false; return false;
} }
return true; return true;
......
...@@ -5,8 +5,9 @@ import cn.quantgroup.xyqb.Constants; ...@@ -5,8 +5,9 @@ import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.exception.PasswordErrorLimitException; import cn.quantgroup.xyqb.exception.PasswordErrorLimitException;
import cn.quantgroup.xyqb.service.user.ILockIpv4Service; import cn.quantgroup.xyqb.service.user.ILockIpv4Service;
import cn.quantgroup.xyqb.util.DateUtils; import cn.quantgroup.xyqb.util.DateUtils;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IpUtil;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -23,9 +24,9 @@ import java.util.concurrent.TimeUnit; ...@@ -23,9 +24,9 @@ import java.util.concurrent.TimeUnit;
* *
* @author renwc * @author renwc
*/ */
@Slf4j
@Service @Service
public class LockIpv4ServiceImpl implements ILockIpv4Service { public class LockIpv4ServiceImpl implements ILockIpv4Service {
private static final Logger LOGGER = LoggerFactory.getLogger(ILockIpv4Service.class);
@Autowired @Autowired
@Qualifier("stringRedisTemplate") @Qualifier("stringRedisTemplate")
...@@ -36,16 +37,16 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -36,16 +37,16 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
// 密码错误时,给该账号添加计数器 // 密码错误时,给该账号添加计数器
String key = Constants.REDIS_PASSWORD_ERROR_COUNT + phoneNo; String key = Constants.REDIS_PASSWORD_ERROR_COUNT + phoneNo;
if (!stringRedisTemplate.hasKey(key)) { if (!stringRedisTemplate.hasKey(key)) {
LOGGER.info("添加错误计数器,key={}", key); log.info("添加错误计数器,key={}", key);
stringRedisTemplate.opsForValue().set(key, String.valueOf(0), DateUtils.getSeconds(), TimeUnit.SECONDS); stringRedisTemplate.opsForValue().set(key, String.valueOf(0), DateUtils.getSeconds(), TimeUnit.SECONDS);
} }
// 密码错误计数 // 密码错误计数
Long errorCount = stringRedisTemplate.opsForValue().increment(key, 1L); Long errorCount = stringRedisTemplate.opsForValue().increment(key, 1L);
if (errorCount > Constants.Image_Need_Count) { if (errorCount > Constants.Image_Need_Count) {
LOGGER.info("用户名或密码不正确,phoneNo={}", phoneNo); log.info("用户名或密码不正确,phoneNo={}", phoneNo);
throw new PasswordErrorLimitException("用户名或密码不正确"); throw new PasswordErrorLimitException("用户名或密码不正确");
} else if (Objects.equals(errorCount, Constants.Image_Need_Count)) { } else if (Objects.equals(errorCount, Constants.Image_Need_Count)) {
LOGGER.info("请输入图形验证码,phoneNo={}", phoneNo); log.info("请输入图形验证码,phoneNo={}", phoneNo);
throw new PasswordErrorLimitException("请输入图形验证码"); throw new PasswordErrorLimitException("请输入图形验证码");
} }
} }
...@@ -57,14 +58,14 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -57,14 +58,14 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
*/ */
@Override @Override
public void countErrorByIpv4(String ipv4) { public void countErrorByIpv4(String ipv4) {
if (ValidationUtil.validateIpv4(ipv4) && !IPUtil.whiteOf(ipv4)) { if (ValidationUtil.validateIpv4(ipv4) && !IpUtil.whiteOf(ipv4)) {
String ipv4Key = getErrorIpKey(ipv4); String ipv4Key = getErrorIpKey(ipv4);
if (!stringRedisTemplate.hasKey(ipv4Key)) { if (!stringRedisTemplate.hasKey(ipv4Key)) {
// 计数周期1分钟 // 计数周期1分钟
stringRedisTemplate.opsForValue().set(ipv4Key, String.valueOf(0), Constants.IPV4_FAILED_COUNT_MINUTES, TimeUnit.MINUTES); stringRedisTemplate.opsForValue().set(ipv4Key, String.valueOf(0), Constants.IPV4_FAILED_COUNT_MINUTES, TimeUnit.MINUTES);
} }
Long count = stringRedisTemplate.opsForValue().increment(ipv4Key, 1L); Long count = stringRedisTemplate.opsForValue().increment(ipv4Key, 1L);
LOGGER.info("Lock_ipv4: count deny ip access: ip={}, count={}", ipv4, count); log.info("Lock_ipv4: count deny ip access: ip={}, count={}", ipv4, count);
lockErrorIpv4(ipv4, count); lockErrorIpv4(ipv4, count);
} }
} }
...@@ -88,7 +89,7 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -88,7 +89,7 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
} }
String lockIpv4Key = getLockIpv4Key(ip); String lockIpv4Key = getLockIpv4Key(ip);
stringRedisTemplate.opsForValue().set(lockIpv4Key, Boolean.TRUE.toString(), minutes, TimeUnit.MINUTES); stringRedisTemplate.opsForValue().set(lockIpv4Key, Boolean.TRUE.toString(), minutes, TimeUnit.MINUTES);
LOGGER.info("Lock_ipv4: locked error ip access:{}, error overstep {} times in {} minutes, do lock {} minutes", ip, counts, Constants.IPV4_FAILED_COUNT_MINUTES, minutes); log.info("Lock_ipv4: locked error ip access:{}, error overstep {} times in {} minutes, do lock {} minutes", ip, counts, Constants.IPV4_FAILED_COUNT_MINUTES, minutes);
} }
/** /**
...@@ -98,14 +99,14 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -98,14 +99,14 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
*/ */
@Override @Override
public void countSuccessByIpv4(String ipv4) { public void countSuccessByIpv4(String ipv4) {
if (ValidationUtil.validateIpv4(ipv4) && !IPUtil.whiteOf(ipv4)) { if (ValidationUtil.validateIpv4(ipv4) && !IpUtil.whiteOf(ipv4)) {
String ipv4Key = getSuccessIpKey(ipv4); String ipv4Key = getSuccessIpKey(ipv4);
if (!stringRedisTemplate.hasKey(ipv4Key)) { if (!stringRedisTemplate.hasKey(ipv4Key)) {
// 计数周期1分钟 // 计数周期1分钟
stringRedisTemplate.opsForValue().set(ipv4Key, String.valueOf(0), Constants.IPV4_SUCCESS_COUNT_MINUTES, TimeUnit.MINUTES); stringRedisTemplate.opsForValue().set(ipv4Key, String.valueOf(0), Constants.IPV4_SUCCESS_COUNT_MINUTES, TimeUnit.MINUTES);
} }
Long count = stringRedisTemplate.opsForValue().increment(ipv4Key, 1L); Long count = stringRedisTemplate.opsForValue().increment(ipv4Key, 1L);
LOGGER.info("Lock_ipv4: count success ip access: ip={}, count={}", ipv4, count); log.info("Lock_ipv4: count success ip access: ip={}, count={}", ipv4, count);
// 恢复规则,观察 // Todo -- 误伤业务方,暂时下线[比如网贷之家:121.40.207.133] -- lockSuccessIpv4(ipv4, count); // 恢复规则,观察 // Todo -- 误伤业务方,暂时下线[比如网贷之家:121.40.207.133] -- lockSuccessIpv4(ipv4, count);
lockSuccessIpv4(ipv4, count); lockSuccessIpv4(ipv4, count);
} }
...@@ -120,7 +121,7 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -120,7 +121,7 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
// 锁定时长 // 锁定时长
String lockIpv4Key = getLockIpv4Key(ip); String lockIpv4Key = getLockIpv4Key(ip);
stringRedisTemplate.opsForValue().set(lockIpv4Key, Boolean.TRUE.toString(), Constants.IPV4_SUCCESS_LOCK_MINUTES, TimeUnit.MINUTES); stringRedisTemplate.opsForValue().set(lockIpv4Key, Boolean.TRUE.toString(), Constants.IPV4_SUCCESS_LOCK_MINUTES, TimeUnit.MINUTES);
LOGGER.info("Lock_ipv4: locked success ip access:{}, success overstep {} times in {} minutes, do lock {} minutes", ip, Constants.IPV4_LOCK_ON_SUCCESS_COUNTS, Constants.IPV4_SUCCESS_COUNT_MINUTES, Constants.IPV4_SUCCESS_LOCK_MINUTES); log.info("Lock_ipv4: locked success ip access:{}, success overstep {} times in {} minutes, do lock {} minutes", ip, Constants.IPV4_LOCK_ON_SUCCESS_COUNTS, Constants.IPV4_SUCCESS_COUNT_MINUTES, Constants.IPV4_SUCCESS_LOCK_MINUTES);
} }
private static String getErrorIpKey(String ipv4) { private static String getErrorIpKey(String ipv4) {
......
...@@ -68,8 +68,8 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -68,8 +68,8 @@ public class UserDetailServiceImpl implements IUserDetailService {
} }
@Override @Override
public void updateUserQQ(Long userId, String qq) { public void updateUserQq(Long userId, String qq) {
userDetailRepository.updateUserQQ(qq, userId); userDetailRepository.updateUserQq(qq, userId);
} }
@Override @Override
...@@ -180,7 +180,7 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -180,7 +180,7 @@ public class UserDetailServiceImpl implements IUserDetailService {
private PageRequest buildPageRequest(int pageNumber, int pagzSize, String sortType) { private PageRequest buildPageRequest(int pageNumber, int pagzSize, String sortType) {
Sort sort = null; Sort sort = null;
if ("auto".equals(sortType)) { if (Constants.AUTO_SORT_TYPE.equals(sortType)) {
sort = new Sort(Sort.Direction.ASC, "userId"); sort = new Sort(Sort.Direction.ASC, "userId");
} }
......
...@@ -25,7 +25,7 @@ public class UserExtInfoServiceImpl implements IUserExtInfoService { ...@@ -25,7 +25,7 @@ public class UserExtInfoServiceImpl implements IUserExtInfoService {
} }
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
@CacheEvict(value = "userextinfocache", key = "'extinfo' + #info.userId", cacheManager = "cacheManager") @CacheEvict(value = "userextinfocache", key = "'extinfo' + #info.userId", cacheManager = "cacheManager")
public UserExtInfo save(UserExtInfo info) { public UserExtInfo save(UserExtInfo info) {
return userExtInfoRepository.save(info); return userExtInfoRepository.save(info);
......
...@@ -37,7 +37,7 @@ import java.util.concurrent.TimeUnit; ...@@ -37,7 +37,7 @@ import java.util.concurrent.TimeUnit;
public class UserServiceImpl implements IUserService { public class UserServiceImpl implements IUserService {
@Autowired @Autowired
RedisTemplate<String, String> stringRedisTemplate; private RedisTemplate<String, String> stringRedisTemplate;
@Autowired @Autowired
private IUserRepository userRepository; private IUserRepository userRepository;
......
package cn.quantgroup.xyqb.service.wechat.impl; package cn.quantgroup.xyqb.service.wechat.impl;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.WechatUserInfo; import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.exception.WechatRelateUserException; import cn.quantgroup.xyqb.exception.WechatRelateUserException;
import cn.quantgroup.xyqb.model.webchat.AccessTokenResponse; import cn.quantgroup.xyqb.model.webchat.AccessTokenResponse;
...@@ -32,7 +33,6 @@ import java.util.concurrent.TimeUnit; ...@@ -32,7 +33,6 @@ import java.util.concurrent.TimeUnit;
@Service @Service
public class WechatServiceImpl implements IWechatService { public class WechatServiceImpl implements IWechatService {
private static final String WECHAT_TOKEN_KEY_PREFIX = "wechat:token:"; private static final String WECHAT_TOKEN_KEY_PREFIX = "wechat:token:";
private static final String WECHAT_USERINFO_KEY_PREFIX = "wechat:userinfo:";
@Value("${wechat.appid}") @Value("${wechat.appid}")
private String appId; private String appId;
@Value("${wechat.secret}") @Value("${wechat.secret}")
...@@ -42,8 +42,6 @@ public class WechatServiceImpl implements IWechatService { ...@@ -42,8 +42,6 @@ public class WechatServiceImpl implements IWechatService {
@Resource @Resource
private IHttpService httpService; private IHttpService httpService;
@Resource @Resource
private ISessionService sessionService;
@Resource
private IWeChatUserRepository weChatUserRepository; private IWeChatUserRepository weChatUserRepository;
@Autowired @Autowired
@Qualifier("stringRedisTemplate") @Qualifier("stringRedisTemplate")
...@@ -75,8 +73,8 @@ public class WechatServiceImpl implements IWechatService { ...@@ -75,8 +73,8 @@ public class WechatServiceImpl implements IWechatService {
if (accessTokenResponse == null) { if (accessTokenResponse == null) {
return null; return null;
} }
accessTokenResponse.setInitialTime(System.currentTimeMillis() - 10000); accessTokenResponse.setInitialTime(System.currentTimeMillis() - Constants.MILLIS_OF_TEN_SECOND);
redisTemplate.opsForValue().set(key, JSONObject.toJSONString(accessTokenResponse), accessTokenResponse.getExpiresIn() + 1000, TimeUnit.SECONDS); redisTemplate.opsForValue().set(key, JSONObject.toJSONString(accessTokenResponse), accessTokenResponse.getExpiresIn() + Constants.THOUSAND_SECOND, TimeUnit.SECONDS);
return accessTokenResponse; return accessTokenResponse;
} catch (Exception ex) { } catch (Exception ex) {
return null; return null;
...@@ -85,15 +83,15 @@ public class WechatServiceImpl implements IWechatService { ...@@ -85,15 +83,15 @@ public class WechatServiceImpl implements IWechatService {
try { try {
AccessTokenResponse response = JSONObject.parseObject(resultStr, AccessTokenResponse.class); AccessTokenResponse response = JSONObject.parseObject(resultStr, AccessTokenResponse.class);
// 刷新 // 刷新
if (response.getInitialTime() + response.getExpiresIn() * 1000 > System.currentTimeMillis()) { if (response.getInitialTime() + response.getExpiresIn() * Constants.MILLIS_PER_SECOND > System.currentTimeMillis()) {
String refreshTokenStr = refreshToken(response.getRefreshToken()); String refreshTokenStr = refreshToken(response.getRefreshToken());
response = JSONObject.parseObject(refreshTokenStr, AccessTokenResponse.class); response = JSONObject.parseObject(refreshTokenStr, AccessTokenResponse.class);
if (response == null) { if (response == null) {
return null; return null;
} }
response.setInitialTime(System.currentTimeMillis() - 10000); response.setInitialTime(System.currentTimeMillis() - Constants.MILLIS_OF_TEN_SECOND);
} }
redisTemplate.opsForValue().set(key, JSONObject.toJSONString(response), response.getExpiresIn() + 1000, TimeUnit.SECONDS); redisTemplate.opsForValue().set(key, JSONObject.toJSONString(response), response.getExpiresIn() + Constants.THOUSAND_SECOND, TimeUnit.SECONDS);
return response; return response;
} catch (Exception ex) { } catch (Exception ex) {
return null; return null;
...@@ -118,7 +116,7 @@ public class WechatServiceImpl implements IWechatService { ...@@ -118,7 +116,7 @@ public class WechatServiceImpl implements IWechatService {
} }
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public WechatUserInfo saveWechatUserInfo(WechatUserInfo userInfo) { public WechatUserInfo saveWechatUserInfo(WechatUserInfo userInfo) {
if (Objects.isNull(userInfo) || Objects.isNull(userInfo.getOpenId())) { if (Objects.isNull(userInfo) || Objects.isNull(userInfo.getOpenId())) {
return null; return null;
......
...@@ -20,7 +20,11 @@ import java.util.Objects; ...@@ -20,7 +20,11 @@ import java.util.Objects;
public class XyqbSessionContextHolder { public class XyqbSessionContextHolder {
private static final ThreadLocal<SessionStruct> threadSession = new ThreadLocal<>(); private static final ThreadLocal<SessionStruct> threadSession = new ThreadLocal<>();
public static RedisTemplate<String, String> redisTemplate = null; private static RedisTemplate<String, String> redisTemplate = null;
public static void setRedisTemplate(RedisTemplate<String, String> redisTemplate){
XyqbSessionContextHolder.redisTemplate = redisTemplate;
}
public static SessionStruct getXSession() { public static SessionStruct getXSession() {
SessionStruct sessionStruct; SessionStruct sessionStruct;
...@@ -40,7 +44,7 @@ public class XyqbSessionContextHolder { ...@@ -40,7 +44,7 @@ public class XyqbSessionContextHolder {
} }
public static SessionStruct getXSessionFromRedis(String token) { public static SessionStruct getXSessionFromRedis(String token) {
if (Objects.isNull(token) || token.length() != 36 || Objects.isNull(redisTemplate)) { if (StringUtils.length(token) != Constants.TOKEN_LENGTH || Objects.isNull(redisTemplate)) {
return null; return null;
} }
String result = redisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + token); String result = redisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + token);
......
...@@ -15,7 +15,7 @@ import javax.crypto.spec.SecretKeySpec; ...@@ -15,7 +15,7 @@ import javax.crypto.spec.SecretKeySpec;
* @version 1.0 * @version 1.0
*/ */
@Slf4j @Slf4j
public class AESUtil { public class AesUtil {
/** /**
* KEY算法 * KEY算法
...@@ -60,7 +60,7 @@ public class AESUtil { ...@@ -60,7 +60,7 @@ public class AESUtil {
*/ */
private static byte[] decryptAfterBase64DecodeToByte(String data, String key) { private static byte[] decryptAfterBase64DecodeToByte(String data, String key) {
try { try {
if (key == null || "".equals(key.trim().length())) { if (StringUtils.isBlank(key)) {
return null; return null;
} }
byte[] raw = key.getBytes(DATA_ENCODING); byte[] raw = key.getBytes(DATA_ENCODING);
......
...@@ -16,7 +16,7 @@ import java.util.Set; ...@@ -16,7 +16,7 @@ import java.util.Set;
* @author renwc * @author renwc
* @date 2017-12-01 * @date 2017-12-01
*/ */
public class IPUtil { public class IpUtil {
/** /**
* IP白名单 * IP白名单
* <p> * <p>
...@@ -30,6 +30,8 @@ public class IPUtil { ...@@ -30,6 +30,8 @@ public class IPUtil {
*/ */
private static final Set<String> WHITE_ADDRESS = Sets.newHashSet(); private static final Set<String> WHITE_ADDRESS = Sets.newHashSet();
private static final String LOCAL_ADDRESS = "127.0.0.1"; private static final String LOCAL_ADDRESS = "127.0.0.1";
/** 入口服务器IP */
public static final String IO_IP = "139.198.";
static { static {
String[] ips = {"172.16.", "172.18.", "172.20.", "172.21.", "172.30.", "172.41.", "192.168.3.", "192.168.4."}; String[] ips = {"172.16.", "172.18.", "172.20.", "172.21.", "172.30.", "172.41.", "192.168.3.", "192.168.4."};
...@@ -96,13 +98,14 @@ public class IPUtil { ...@@ -96,13 +98,14 @@ public class IPUtil {
} }
//过滤反向代理的ip //过滤反向代理的ip
String[] stemps = ip.split(","); String[] stemps = ip.split(",");
if (stemps != null && stemps.length >= 1) { if (stemps != null && stemps.length > 0) {
//得到第一个IP,即客户端真实IP //得到第一个IP,即客户端真实IP
ip = stemps[0]; ip = stemps[0];
} }
ip = ip.trim(); ip = ip.trim();
if (ip.length() > 23) { int twentyThree = 23;
ip = ip.substring(0, 23); if (ip.length() > twentyThree) {
ip = ip.substring(0, twentyThree);
} }
return ip; return ip;
} }
......
...@@ -24,7 +24,7 @@ public class MqUtils { ...@@ -24,7 +24,7 @@ public class MqUtils {
*/ */
public static void sendLoanVest(UserStatistics vest) { public static void sendLoanVest(UserStatistics vest) {
try { try {
IVestService mqService = ApplicationContextHolder.getBean("loanVestMQService"); IVestService mqService = ApplicationContextHolder.getBean("loanVestMqService");
mqService.send(vest); mqService.send(vest);
} catch (Exception e) { } catch (Exception e) {
log.error("[MQUtils][MQUtils_exception]发送用户统计信息,vest={},error={}", log.error("[MQUtils][MQUtils_exception]发送用户统计信息,vest={},error={}",
......
package cn.quantgroup.xyqb.util; package cn.quantgroup.xyqb.util;
import cn.quantgroup.xyqb.Constants;
import com.alibaba.fastjson.JSON;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
...@@ -89,4 +92,20 @@ public class PasswordUtil { ...@@ -89,4 +92,20 @@ public class PasswordUtil {
return Objects.equals(thePassword, targetPassword); return Objects.equals(thePassword, targetPassword);
} }
public static String filterPasswordToString(Map<String, String> info) {
if (null == info) {
return null;
}
if(!info.containsKey(Constants.PASSWORD)){
return JSON.toJSONString(info);
}
String password = info.get(Constants.PASSWORD);
// 先删掉
info.remove(Constants.PASSWORD);
String infoString = JSON.toJSONString(info);
// 再回填
info.put(Constants.PASSWORD, password);
return infoString;
}
} }
package cn.quantgroup.xyqb.util;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author mengfan.feng
*/
public class Utils {
private static Pattern pattern = Pattern.compile("(?<!\\d)(?:(?:1[34578]\\d{9})|(?:861[34578]\\d{9}))(?!\\d)");
public static String safeMap2Str(Map<String, String> info) {
if (null == info) {
return null;
}
StringBuilder builder = new StringBuilder();
builder.append("{");
info.forEach((key, value) -> {
if ("password".equals(key)) {
return;
}
builder.append(key);
builder.append("=");
builder.append(value);
builder.append(",");
});
builder.append("}");
return builder.toString();
}
public static String coverPhone(String str) {
if (str.length() <= 0) {
return "";
}
if (str.length() > 1024) //长度超过1024的字符串不走正则匹配过滤手机号
{
return "";
}
Matcher matcher = pattern.matcher(str);
Map<String, String> replaceMap = new HashMap<>();
while (matcher.find()) {
String group = matcher.group();
String replace = group.substring(0, 3).concat("****").concat(group.substring(7)).concat(" [".concat(PasswordUtil.MD5(group)).concat("]"));
replaceMap.put(group, replace);
}
Set<Map.Entry<String, String>> entries = replaceMap.entrySet();
for (Map.Entry<String, String> entry : entries) {
str = str.replaceAll(entry.getKey(), entry.getValue());
}
return str;
}
}
package cn.quantgroup.xyqb.util; package cn.quantgroup.xyqb.util;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.util.encrypt.MD5Util; import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -180,7 +180,7 @@ public class ValidationUtil { ...@@ -180,7 +180,7 @@ public class ValidationUtil {
public static String getMd5Key(boolean lock) { public static String getMd5Key(boolean lock) {
Calendar today = Calendar.getInstance(); Calendar today = Calendar.getInstance();
int hour_24 = today.get(Calendar.HOUR_OF_DAY); int hour_24 = today.get(Calendar.HOUR_OF_DAY);
return MD5Util.build(Constants.CLEAR_LOCK_FOR_IPV4_KEY + lock + hour_24); return Md5Util.build(Constants.CLEAR_LOCK_FOR_IPV4_KEY + lock + hour_24);
} }
} }
package cn.quantgroup.xyqb.util.encrypt; package cn.quantgroup.xyqb.util.encrypt;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -9,16 +10,15 @@ import java.security.NoSuchAlgorithmException; ...@@ -9,16 +10,15 @@ import java.security.NoSuchAlgorithmException;
/** /**
* Created by tums on 2015/11/30. * Created by tums on 2015/11/30.
*/ */
public final class MD5Util { @Slf4j
private static final Logger LOGGER = LoggerFactory.getLogger(MD5Util.class); public final class Md5Util {
public static String build(String content) { public static String build(String content) {
MessageDigest messageDigest; MessageDigest messageDigest;
try { try {
messageDigest = MessageDigest messageDigest = MessageDigest.getInstance("md5");
.getInstance("md5");
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
LOGGER.error(e.getMessage(), e); log.error("MessageDigest获取实例失败", e);
return null; return null;
} }
messageDigest.update(content.getBytes()); messageDigest.update(content.getBytes());
......
package cn.quantgroup.xyqb.util.encrypt; package cn.quantgroup.xyqb.util.encrypt;
import lombok.extern.slf4j.Slf4j;
import javax.crypto.Cipher; import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.math.BigInteger; import java.math.BigInteger;
...@@ -10,7 +12,8 @@ import java.security.spec.X509EncodedKeySpec; ...@@ -10,7 +12,8 @@ import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class RSA { @Slf4j
public class Rsa {
/** /**
* 指定key的大小 * 指定key的大小
*/ */
...@@ -166,19 +169,14 @@ public class RSA { ...@@ -166,19 +169,14 @@ public class RSA {
Base64.decodeBase64(privateKey.getBytes())); Base64.decodeBase64(privateKey.getBytes()));
KeyFactory keyf = KeyFactory.getInstance("RSA"); KeyFactory keyf = KeyFactory.getInstance("RSA");
PrivateKey priKey = keyf.generatePrivate(priPKCS8); PrivateKey priKey = keyf.generatePrivate(priPKCS8);
Signature signature = Signature.getInstance("SHA1WithRSA"); Signature signature = Signature.getInstance("SHA1WithRSA");
signature.initSign(priKey); signature.initSign(priKey);
signature.update(content.getBytes(charset)); signature.update(content.getBytes(charset));
byte[] signed = signature.sign(); byte[] signed = signature.sign();
return new String(Base64.encodeBase64(signed)); return new String(Base64.encodeBase64(signed));
} catch (Exception e) { } catch (Exception e) {
log.error("出错了", e);
} }
return null; return null;
} }
...@@ -187,19 +185,13 @@ public class RSA { ...@@ -187,19 +185,13 @@ public class RSA {
KeyFactory keyFactory = KeyFactory.getInstance("RSA"); KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] encodedKey = Base64.decode2(publicKey); byte[] encodedKey = Base64.decode2(publicKey);
PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey)); PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
Signature signature = Signature.getInstance("SHA1WithRSA");
Signature signature = Signature
.getInstance("SHA1WithRSA");
signature.initVerify(pubKey); signature.initVerify(pubKey);
signature.update(content.getBytes("utf-8")); signature.update(content.getBytes("utf-8"));
boolean bverify = signature.verify(Base64.decode2(sign)); boolean bverify = signature.verify(Base64.decode2(sign));
return bverify; return bverify;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("出错了", e);
} }
return false; return false;
......
...@@ -5,4 +5,4 @@ import service.QuantgroupCaptchaServiceTest; ...@@ -5,4 +5,4 @@ import service.QuantgroupCaptchaServiceTest;
@RunWith(Suite.class) @RunWith(Suite.class)
@Suite.SuiteClasses({GeetestCaptchaServiceTest.class, QuantgroupCaptchaServiceTest.class}) @Suite.SuiteClasses({GeetestCaptchaServiceTest.class, QuantgroupCaptchaServiceTest.class})
public class CaptchaVerifyTests {} public class CaptchaVerifyTest {}
\ No newline at end of file \ No newline at end of file
import demo.*;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({DynamicTest.class, MockMvcTest.class, MvcTest.class,
ParametersJunit4Test.class, ParametersJunit5Test.class,
RepsitoryJpaTest.class, RepsitoryTest.class, ServiceTest.class, WebTest.class})
public class DemoTest {}
\ No newline at end of file
import demo.*;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({DynamicTests.class, MockMvcTests.class, MvcTests.class,
ParametersJunit4Tests.class, ParametersJunit5Tests.class,
RepsitoryJpaTests.class, RepsitoryTests.class, ServiceTests.class, WebTests.class})
public class DemoTests {}
\ No newline at end of file
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import repsitory.UserAuthorizedRepsitoryTest;
import service.UserAuthorizedServiceTest;
import web.UserAuthorizedControllerTest;
@RunWith(Suite.class)
@Suite.SuiteClasses({UserAuthorizedRepsitoryTest.class, UserAuthorizedServiceTest.class, UserAuthorizedControllerTest.class})
public class UserAuthorizedTest {}
\ No newline at end of file
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import repsitory.UserAuthorizedRepsitoryTests;
import service.UserAuthorizedServiceTests;
import web.UserAuthorizedControllerTests;
@RunWith(Suite.class)
@Suite.SuiteClasses({UserAuthorizedRepsitoryTests.class, UserAuthorizedServiceTests.class, UserAuthorizedControllerTests.class})
public class UserAuthorizedTests {}
\ No newline at end of file
...@@ -2,12 +2,11 @@ package common; ...@@ -2,12 +2,11 @@ package common;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.util.AESUtil; import cn.quantgroup.xyqb.util.AesUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.RandomStringUtils;
import org.junit.Assert; import org.junit.Assert;
...@@ -19,8 +18,8 @@ import cn.quantgroup.xyqb.util.ValidationUtil; ...@@ -19,8 +18,8 @@ import cn.quantgroup.xyqb.util.ValidationUtil;
@Slf4j @Slf4j
@RunWith(JUnit4.class) @RunWith(JUnit4.class)
public class TestJdk8 { public class Jdk8Test {
final static String RANDOM_CHARS = "0123456789"; private final static String RANDOM_CHARS = "0123456789";
@Test @Test
public void testString() { public void testString() {
...@@ -39,7 +38,7 @@ public class TestJdk8 { ...@@ -39,7 +38,7 @@ public class TestJdk8 {
@Test @Test
public void wechatContent() { public void wechatContent() {
String userId = String.valueOf(50963791); String userId = String.valueOf(50963791);
String content = AESUtil.encryptAndBase64Encode(userId, Constants.AES_KEY); String content = AesUtil.encryptAndBase64Encode(userId, Constants.AES_KEY);
log.info("50963791:{}", content); log.info("50963791:{}", content);
} }
...@@ -51,7 +50,8 @@ public class TestJdk8 { ...@@ -51,7 +50,8 @@ public class TestJdk8 {
@Test @Test
public void random() { public void random() {
for(int i=0; i<10; i++){ int count = 10;
for(int i=0; i<count; i++){
log.info("{}-random:{}", i, RandomStringUtils.random(6, RANDOM_CHARS)); log.info("{}-random:{}", i, RandomStringUtils.random(6, RANDOM_CHARS));
} }
} }
......
package common;
import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@Slf4j
@RunWith(JUnit4.class)
public class Md5Test {
private final static String PWD = "123456";
@Test
public void test() {
log.info("pwd:{},Md5Util:{}", PWD, Md5Util.build(PWD));
}
}
...@@ -9,7 +9,7 @@ import cn.quantgroup.xyqb.util.ValidationUtil; ...@@ -9,7 +9,7 @@ import cn.quantgroup.xyqb.util.ValidationUtil;
@Slf4j @Slf4j
@RunWith(JUnit4.class) @RunWith(JUnit4.class)
public class TestValidationUtil { public class ValidationUtilTest {
public static void main(String[] args){ public static void main(String[] args){
String[][] contacts = { String[][] contacts = {
......
...@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.AbstractTransactionalJUnit4Spring ...@@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.AbstractTransactionalJUnit4Spring
* @author renwc * @author renwc
* @date 2018-01-05 * @date 2018-01-05
*/ */
public abstract class BaseParametersTests extends AbstractTransactionalJUnit4SpringContextTests { public abstract class BaseParametersTest extends AbstractTransactionalJUnit4SpringContextTests {
private TestContextManager testContextManager; private TestContextManager testContextManager;
@Before @Before
public void setUpContext() throws Exception { public void setUpContext() throws Exception {
......
...@@ -31,7 +31,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. ...@@ -31,7 +31,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@WebMvcTest({UserController.class}) @WebMvcTest({UserController.class})
@ContextConfiguration(classes = {JpaConfig.class, RedisConfig.class}, initializers = ApolloPropertySourceInitializer.class) @ContextConfiguration(classes = {JpaConfig.class, RedisConfig.class}, initializers = ApolloPropertySourceInitializer.class)
public class MockMvcTests { public class MockMvcTest {
@Resource @Resource
private MockMvc mvc; private MockMvc mvc;
@MockBean @MockBean
......
...@@ -26,10 +26,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. ...@@ -26,10 +26,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@SpringBootTest(classes = Bootstrap.class) @SpringBootTest(classes = Bootstrap.class)
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class) @ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class MvcTests { public class MvcTest {
private MockMvc mvc; private MockMvc mvc;
@Resource @Resource
WebApplicationContext webApplicationConnect; private WebApplicationContext webApplicationConnect;
@Before @Before
public void setUp() throws JsonProcessingException { public void setUp() throws JsonProcessingException {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment