Commit 435fc48c authored by 朱劲松​'s avatar 朱劲松​

refactor: just code refactor.

parent 6e4b8416
...@@ -10,7 +10,7 @@ public enum IncomeEnum { ...@@ -10,7 +10,7 @@ public enum IncomeEnum {
CASH_AND_PAY_CARD("混合"); CASH_AND_PAY_CARD("混合");
private String desc; private String desc;
private IncomeEnum(String desc){ private IncomeEnum(String desc) {
this.desc = desc; this.desc = desc;
} }
} }
\ No newline at end of file
...@@ -16,7 +16,7 @@ public enum IncomeRangeEnum { ...@@ -16,7 +16,7 @@ public enum IncomeRangeEnum {
private String desc; private String desc;
private IncomeRangeEnum(String desc){ private IncomeRangeEnum(String desc) {
this.desc = desc; this.desc = desc;
} }
......
...@@ -26,47 +26,87 @@ public interface Constants { ...@@ -26,47 +26,87 @@ 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";
/** 登录账号/手机号参数名 */ /**
* 登录账号/手机号参数名
*/
String PHONE_NO = "phoneNo"; String PHONE_NO = "phoneNo";
/** 微信标识参数名 */ /**
* 微信标识参数名
*/
String WECHAT_OPEN_ID = "wechat_open_id"; String WECHAT_OPEN_ID = "wechat_open_id";
// -- Start -- IPV4安全策略常量组 // -- Start -- IPV4安全策略常量组
/** 账密不匹配错误 - 按账号计数 */ /**
* 账密不匹配错误 - 按账号计数
*/
String REDIS_PASSWORD_ERROR_COUNT = "password_error_count:"; String REDIS_PASSWORD_ERROR_COUNT = "password_error_count:";
/** 账密不匹配错误 - 按IP计数 */ /**
* 账密不匹配错误 - 按IP计数
*/
String REDIS_PASSWORD_ERROR_COUNT_FOR_IPV4 = "password_error_count_4_ipv4:"; String REDIS_PASSWORD_ERROR_COUNT_FOR_IPV4 = "password_error_count_4_ipv4:";
/** 账密匹配成功 - 按IP计数 */ /**
* 账密匹配成功 - 按IP计数
*/
String REDIS_PASSWORD_SUCCESS_COUNT_FOR_IPV4 = "password_success_count_4_ipv4:"; String REDIS_PASSWORD_SUCCESS_COUNT_FOR_IPV4 = "password_success_count_4_ipv4:";
/** 账密安全策略 - 白名单 */ /**
* 账密安全策略 - 白名单
*/
String IPV4_LOCK_WHITE = "lock_ipv4:white:"; String IPV4_LOCK_WHITE = "lock_ipv4:white:";
/** 账密安全策略 - 黑名单 */ /**
* 账密安全策略 - 黑名单
*/
String IPV4_LOCK_BLACK = "lock_ipv4:black:"; String IPV4_LOCK_BLACK = "lock_ipv4:black:";
/** 账密安全策略 - 锁机制自定义参数 - 锁定分钟数 */ /**
* 账密安全策略 - 锁机制自定义参数 - 锁定分钟数
*/
String IPV4_LOCK_MINUTES_REDIS = "lock_ipv4:minutes:"; String IPV4_LOCK_MINUTES_REDIS = "lock_ipv4:minutes:";
/** 账密安全策略 - 锁机制自定义参数 - 锁开关阈值 */ /**
* 账密安全策略 - 锁机制自定义参数 - 锁开关阈值
*/
String IPV4_LOCK_ON_COUNTS_REDIS = "lock_ipv4:on_counts:"; String IPV4_LOCK_ON_COUNTS_REDIS = "lock_ipv4:on_counts:";
/** 账密安全策略 - 锁机制 - IPV4锁 */ /**
* 账密安全策略 - 锁机制 - IPV4锁
*/
String IPV4_LOCK = "lock_ipv4:"; String IPV4_LOCK = "lock_ipv4:";
/** 账密不匹配错误 - 锁机制默认参数 - 锁定分钟数 */ /**
* 账密不匹配错误 - 锁机制默认参数 - 锁定分钟数
*/
Long IPV4_FAILED_LOCK_MINUTES = 3 * 60L; Long IPV4_FAILED_LOCK_MINUTES = 3 * 60L;
/** 账密不匹配错误 - 锁机制默认参数 - 计数周期 */ /**
* 账密不匹配错误 - 锁机制默认参数 - 计数周期
*/
Long IPV4_FAILED_COUNT_MINUTES = 1L; Long IPV4_FAILED_COUNT_MINUTES = 1L;
/** 账密不匹配错误 - 锁机制默认参数 - 锁开关阈值 */ /**
* 账密不匹配错误 - 锁机制默认参数 - 锁开关阈值
*/
Long IPV4_LOCK_ON_FAILED_COUNTS = 60L; Long IPV4_LOCK_ON_FAILED_COUNTS = 60L;
/** 账密匹配成功 - 锁机制默认参数 - 锁定分钟数 */ /**
* 账密匹配成功 - 锁机制默认参数 - 锁定分钟数
*/
Long IPV4_SUCCESS_LOCK_MINUTES = 30L; Long IPV4_SUCCESS_LOCK_MINUTES = 30L;
/** 账密匹配成功 - 锁机制默认参数 - 计数周期 */ /**
* 账密匹配成功 - 锁机制默认参数 - 计数周期
*/
Long IPV4_SUCCESS_COUNT_MINUTES = 1 * 60L; Long IPV4_SUCCESS_COUNT_MINUTES = 1 * 60L;
/** 账密匹配成功 - 锁机制默认参数 - 锁开关阈值 */ /**
* 账密匹配成功 - 锁机制默认参数 - 锁开关阈值
*/
Long IPV4_LOCK_ON_SUCCESS_COUNTS = 40L; Long IPV4_LOCK_ON_SUCCESS_COUNTS = 40L;
/** 危险期 - 起始时间(Hour) */ /**
* 危险期 - 起始时间(Hour)
*/
int DANGEROUS_TIME_START = 22; int DANGEROUS_TIME_START = 22;
/** 危险期 - 结束时间(Hour) */ /**
* 危险期 - 结束时间(Hour)
*/
int DANGEROUS_TIME_END = 6; int DANGEROUS_TIME_END = 6;
/** 安全策略参数设置 - 秘钥 - 口令 */ /**
* 安全策略参数设置 - 秘钥 - 口令
*/
String CLEAR_LOCK_FOR_IPV4 = "x-clear-lock-11241842-y"; String CLEAR_LOCK_FOR_IPV4 = "x-clear-lock-11241842-y";
/** 安全策略参数设置 - 私钥 */ /**
* 安全策略参数设置 - 私钥
*/
String CLEAR_LOCK_FOR_IPV4_KEY = "lhp.family.dwy.sjs.yym.cxy.cpg"; String CLEAR_LOCK_FOR_IPV4_KEY = "lhp.family.dwy.sjs.yym.cxy.cpg";
// -- End -- IPV4安全策略常量组 // -- End -- IPV4安全策略常量组
/** /**
...@@ -99,20 +139,28 @@ public interface Constants { ...@@ -99,20 +139,28 @@ public interface Constants {
String AES_KEY = "ScnmRBhuQpo9kBdn"; String AES_KEY = "ScnmRBhuQpo9kBdn";
// -- Start -- 验证码常量组 // -- Start -- 验证码常量组
int GT_CAPTCHA_VALIDATE_SUCCESS =1; int GT_CAPTCHA_VALIDATE_SUCCESS = 1;
String GT_UNIQUE_KEY = "uniqueKey"; String GT_UNIQUE_KEY = "uniqueKey";
String FN_GEETEST_CHALLENGE = "geetest_challenge"; String FN_GEETEST_CHALLENGE = "geetest_challenge";
String FN_GEETEST_VALIDATE = "geetest_validate"; String FN_GEETEST_VALIDATE = "geetest_validate";
String FN_GEETEST_SECCODE = "geetest_seccode"; String FN_GEETEST_SECCODE = "geetest_seccode";
String QG_CAPTCHA_ID = "captchaId"; String QG_CAPTCHA_ID = "captchaId";
String QG_CAPTCHA_VALUE = "captchaValue"; String QG_CAPTCHA_VALUE = "captchaValue";
/** 客户端类型参数名 */ /**
* 客户端类型参数名
*/
String CLIENT_TYPE = "clientType"; String CLIENT_TYPE = "clientType";
/** 验证类型请求参数名 */ /**
* 验证类型请求参数名
*/
String VERIFY_PARAM = "verifyType"; String VERIFY_PARAM = "verifyType";
/** 验证类型 - 极验 */ /**
* 验证类型 - 极验
*/
String VERIFY_TYPE_GT = "gt"; String VERIFY_TYPE_GT = "gt";
/** 验证类型 - 量化派图形验证 */ /**
* 验证类型 - 量化派图形验证
*/
String VERIFY_TYPE_QG = "qg"; String VERIFY_TYPE_QG = "qg";
// -- End -- 验证码常量组 // -- End -- 验证码常量组
} }
...@@ -31,11 +31,11 @@ public class IpValidateAdvisor { ...@@ -31,11 +31,11 @@ public class IpValidateAdvisor {
@Around("whiteIpMatch()") @Around("whiteIpMatch()")
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(LOGGER, request);
......
...@@ -24,13 +24,15 @@ import org.springframework.web.context.request.RequestContextHolder; ...@@ -24,13 +24,15 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.*; import java.util.HashMap;
import java.util.concurrent.TimeUnit; import java.util.Map;
import java.util.Optional;
import java.util.UUID;
/** /**
* 限次图形验证码校验标记 * 限次图形验证码校验标记
*
* @author 任文超 * @author 任文超
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-07 * @since 2017-11-07
...@@ -83,13 +85,13 @@ public class CaptchaFiniteValidateAdvisor { ...@@ -83,13 +85,13 @@ public class CaptchaFiniteValidateAdvisor {
private Object doCapchaValidate(ProceedingJoinPoint pjp) throws Throwable { private Object doCapchaValidate(ProceedingJoinPoint pjp) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Map<String, String> phonePasswordMap = getHeaderParam(request); Map<String, String> phonePasswordMap = getHeaderParam(request);
if(phonePasswordMap == null || phonePasswordMap.isEmpty()){ if (phonePasswordMap == null || phonePasswordMap.isEmpty()) {
return JsonResult.buildErrorStateResult("用户名或密码不正确", null); return JsonResult.buildErrorStateResult("用户名或密码不正确", null);
} }
// 当前用户手机号 // 当前用户手机号
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)); LOGGER.info("用户名或密码不正确, phoneNo={}, countErrorByPhone={}, clientIp={}", phoneNo, countErrorByPhone, IPUtil.getRemoteIP(request));
return JsonResult.buildErrorStateResult("用户名或密码不正确", null); return JsonResult.buildErrorStateResult("用户名或密码不正确", null);
} }
...@@ -142,8 +144,8 @@ public class CaptchaFiniteValidateAdvisor { ...@@ -142,8 +144,8 @@ public class CaptchaFiniteValidateAdvisor {
return Long.valueOf(countString); return Long.valueOf(countString);
} }
private final static String getKey(String phoneNo){ private final static String getKey(String phoneNo) {
if(StringUtils.isBlank(phoneNo)){ if (StringUtils.isBlank(phoneNo)) {
return null; return null;
} }
return Constants.REDIS_PASSWORD_ERROR_COUNT + phoneNo; return Constants.REDIS_PASSWORD_ERROR_COUNT + phoneNo;
...@@ -166,7 +168,7 @@ public class CaptchaFiniteValidateAdvisor { ...@@ -166,7 +168,7 @@ public class CaptchaFiniteValidateAdvisor {
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); LOGGER.info("参数无效, credential:{}", credential);
return null; return null;
......
...@@ -4,6 +4,7 @@ import java.lang.annotation.*; ...@@ -4,6 +4,7 @@ import java.lang.annotation.*;
/** /**
* 限次的图形验证码校验标记 * 限次的图形验证码校验标记
*
* @author 任文超 * @author 任文超
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-07 * @since 2017-11-07
......
...@@ -6,7 +6,6 @@ import cn.quantgroup.xyqb.model.JsonResult; ...@@ -6,7 +6,6 @@ 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 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;
...@@ -39,7 +38,8 @@ public class CaptchaNewValidateAdvisor { ...@@ -39,7 +38,8 @@ public class CaptchaNewValidateAdvisor {
* 图形验证码切面 * 图形验证码切面
*/ */
@Pointcut("@annotation(cn.quantgroup.xyqb.aspect.captcha.CaptchaNewValidator)") @Pointcut("@annotation(cn.quantgroup.xyqb.aspect.captcha.CaptchaNewValidator)")
private void needCaptchaValidate(){} private void needCaptchaValidate() {
}
/** /**
* 在受图形验证码保护的接口方法执行前, 校验图形验证码 * 在受图形验证码保护的接口方法执行前, 校验图形验证码
...@@ -53,12 +53,12 @@ public class CaptchaNewValidateAdvisor { ...@@ -53,12 +53,12 @@ public class CaptchaNewValidateAdvisor {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// 验证码类别:gt - 极验,qg - 量化派图形验证 // 验证码类别:gt - 极验,qg - 量化派图形验证
if (Objects.equals(Constants.VERIFY_TYPE_GT, request.getParameter(Constants.VERIFY_PARAM))) { if (Objects.equals(Constants.VERIFY_TYPE_GT, request.getParameter(Constants.VERIFY_PARAM))) {
if(StringUtils.isBlank(request.getParameter(Constants.FN_GEETEST_CHALLENGE))){ if (StringUtils.isBlank(request.getParameter(Constants.FN_GEETEST_CHALLENGE))) {
return JsonResult.buildErrorStateResult("操作过快,请稍后重试", ""); return JsonResult.buildErrorStateResult("操作过快,请稍后重试", "");
} }
if(gtValid(request)){ if (gtValid(request)) {
return pjp.proceed(); return pjp.proceed();
}else{ } else {
return JsonResult.buildErrorStateResult("验证码不正确", ""); return JsonResult.buildErrorStateResult("验证码不正确", "");
} }
} else { } else {
...@@ -72,6 +72,7 @@ public class CaptchaNewValidateAdvisor { ...@@ -72,6 +72,7 @@ public class CaptchaNewValidateAdvisor {
/** /**
* 极验校验 * 极验校验
*
* @param request * @param request
* @return * @return
* @throws Throwable * @throws Throwable
...@@ -89,6 +90,7 @@ public class CaptchaNewValidateAdvisor { ...@@ -89,6 +90,7 @@ public class CaptchaNewValidateAdvisor {
/** /**
* 量化派图形码校验 * 量化派图形码校验
*
* @param request * @param request
* @return * @return
* @throws Throwable * @throws Throwable
......
...@@ -18,7 +18,8 @@ import org.springframework.web.context.request.RequestContextHolder; ...@@ -18,7 +18,8 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.Objects;
import java.util.Set;
/** /**
* 免密访问校验切面 * 免密访问校验切面
...@@ -38,7 +39,8 @@ public class PasswordFreeAccessValidateAdvisor { ...@@ -38,7 +39,8 @@ public class PasswordFreeAccessValidateAdvisor {
* 免密访问校验切面 * 免密访问校验切面
*/ */
@Pointcut("@annotation(cn.quantgroup.xyqb.aspect.limit.PasswordFreeAccessValidator)") @Pointcut("@annotation(cn.quantgroup.xyqb.aspect.limit.PasswordFreeAccessValidator)")
private void passwordFreeAccess() {} private void passwordFreeAccess() {
}
/** /**
* 执行免密访问校验 * 执行免密访问校验
...@@ -58,20 +60,21 @@ public class PasswordFreeAccessValidateAdvisor { ...@@ -58,20 +60,21 @@ public class PasswordFreeAccessValidateAdvisor {
/** /**
* 校验免密访问 * 校验免密访问
* 规则:token 与 身份标记(phoneNo、userId匹配) * 规则:token 与 身份标记(phoneNo、userId匹配)
*
* @return True or False * @return True or False
*/ */
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); LOGGER.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); LOGGER.info("非法请求 - 缺少参数, phoneNo={}, userId={}, clientIp={}", phoneNo, userId, clientIp);
return false; return false;
} }
...@@ -83,20 +86,20 @@ public class PasswordFreeAccessValidateAdvisor { ...@@ -83,20 +86,20 @@ public class PasswordFreeAccessValidateAdvisor {
} }
// 当前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); LOGGER.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); LOGGER.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); LOGGER.info("非法请求 - 身份不匹配, token={}, phoneNo=({},{}), userId=({},{}), clientIp={}", token, phoneNo, user.getPhoneNo(), userId, user.getId(), clientIp);
} }
return valid; return valid;
......
...@@ -4,6 +4,7 @@ import java.lang.annotation.*; ...@@ -4,6 +4,7 @@ import java.lang.annotation.*;
/** /**
* 免密访问校验标记 * 免密访问校验标记
*
* @author 任文超 * @author 任文超
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-21 * @since 2017-11-21
......
...@@ -23,6 +23,7 @@ import java.util.Objects; ...@@ -23,6 +23,7 @@ import java.util.Objects;
/** /**
* 密码错误限次的校验 * 密码错误限次的校验
*
* @author 任文超 * @author 任文超
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-23 * @since 2017-11-23
...@@ -57,26 +58,26 @@ public class PasswordErrorFiniteValidateAdvisor { ...@@ -57,26 +58,26 @@ public class PasswordErrorFiniteValidateAdvisor {
// 客户端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();
} }
// 补充白名单 // 补充白名单
if(redisTemplate.opsForSet().isMember(Constants.IPV4_LOCK_WHITE, clientIp)){ if (redisTemplate.opsForSet().isMember(Constants.IPV4_LOCK_WHITE, clientIp)) {
return pjp.proceed(); return pjp.proceed();
} }
// 入口服务器IP // 入口服务器IP
if(StringUtils.startsWith(clientIp, "139.198.")){ if (StringUtils.startsWith(clientIp, "139.198.")) {
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(LOGGER, request);
LOGGER.info("Lock_ipv4: black ip access:{}", clientIp); LOGGER.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(LOGGER, request);
LOGGER.info("Lock_ipv4: locked ip access:{}", clientIp); LOGGER.info("Lock_ipv4: locked ip access:{}", clientIp);
return JsonResult.buildErrorStateResult("登录失败", null); return JsonResult.buildErrorStateResult("登录失败", null);
...@@ -84,7 +85,7 @@ public class PasswordErrorFiniteValidateAdvisor { ...@@ -84,7 +85,7 @@ public class PasswordErrorFiniteValidateAdvisor {
return pjp.proceed(); return pjp.proceed();
} }
private final static String getLockIpv4Key(String ipv4){ private final static String getLockIpv4Key(String ipv4) {
return Constants.IPV4_LOCK + ipv4; return Constants.IPV4_LOCK + ipv4;
} }
......
...@@ -4,6 +4,7 @@ import java.lang.annotation.*; ...@@ -4,6 +4,7 @@ import java.lang.annotation.*;
/** /**
* 密码错误限次的校验标记 * 密码错误限次的校验标记
*
* @author 任文超 * @author 任文超
* @version 1.0.0 * @version 1.0.0
* @since 2017-11-23 * @since 2017-11-23
......
...@@ -37,14 +37,14 @@ public class LogCallHttpAspect { ...@@ -37,14 +37,14 @@ public class LogCallHttpAspect {
public Object record(ProceedingJoinPoint pjp) throws Throwable { public Object record(ProceedingJoinPoint pjp) throws Throwable {
Object result = pjp.proceed(); Object result = pjp.proceed();
ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if(Objects.nonNull(attrs)){ if (Objects.nonNull(attrs)) {
try { try {
HttpServletRequest request = attrs.getRequest(); HttpServletRequest request = attrs.getRequest();
String remoteIP = IPUtil.getRemoteIP(request); String remoteIP = IPUtil.getRemoteIP(request);
LogCallHttpAspect logCallHttpAspect = ApplicationContextHolder.getBean(LogCallHttpAspect.class); LogCallHttpAspect logCallHttpAspect = ApplicationContextHolder.getBean(LogCallHttpAspect.class);
// 异步记录日志 // 异步记录日志
logCallHttpAspect.asyncRecordIt(pjp,result,remoteIP); logCallHttpAspect.asyncRecordIt(pjp, result, remoteIP);
}catch (Exception e){ } catch (Exception e) {
LOGGER.error("打印http请求日志出错", e); LOGGER.error("打印http请求日志出错", e);
} }
} }
...@@ -53,16 +53,17 @@ public class LogCallHttpAspect { ...@@ -53,16 +53,17 @@ public class LogCallHttpAspect {
/** /**
* 异步记录日志 * 异步记录日志
*
* @param pjp * @param pjp
* @param result * @param result
* @param remoteIP * @param remoteIP
*/ */
@Async("logExecutor") @Async("logExecutor")
public void asyncRecordIt(ProceedingJoinPoint pjp, Object result, String remoteIP){ public void asyncRecordIt(ProceedingJoinPoint pjp, Object result, String remoteIP) {
Object[] args = pjp.getArgs(); Object[] args = pjp.getArgs();
String methodName = pjp.getSignature().getName(); String methodName = pjp.getSignature().getName();
String targetName = pjp.getTarget().getClass().getName(); String targetName = pjp.getTarget().getClass().getName();
LOGGER.info("http api is called,from IP:[{}],method :[{}],args:[{}],response:[{}]",remoteIP,targetName.concat(".").concat(methodName),args,result); LOGGER.info("http api is called,from IP:[{}],method :[{}],args:[{}],response:[{}]", remoteIP, targetName.concat(".").concat(methodName), args, result);
} }
} }
...@@ -4,7 +4,6 @@ package cn.quantgroup.xyqb.config.data; ...@@ -4,7 +4,6 @@ package cn.quantgroup.xyqb.config.data;
* Created by Miraculous on 2016/11/16. * Created by Miraculous on 2016/11/16.
*/ */
import cn.quantgroup.xyqb.util.ApplicationContextHolder;
import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
......
...@@ -86,6 +86,7 @@ public class HttpConfig { ...@@ -86,6 +86,7 @@ public class HttpConfig {
addFormatters(conversionService); addFormatters(conversionService);
return conversionService; return conversionService;
} }
@Bean @Bean
public ConverterRegistry integrationConversionService() { public ConverterRegistry integrationConversionService() {
FormattingConversionService conversionService = new DefaultFormattingConversionService(); FormattingConversionService conversionService = new DefaultFormattingConversionService();
...@@ -96,7 +97,7 @@ public class HttpConfig { ...@@ -96,7 +97,7 @@ public class HttpConfig {
private void addFormatters(FormattingConversionService conversionService) { private void addFormatters(FormattingConversionService conversionService) {
IntegerToEnumConverterFactory factory = new IntegerToEnumConverterFactory(); IntegerToEnumConverterFactory factory = new IntegerToEnumConverterFactory();
conversionService.removeConvertible(String.class,Enum.class); conversionService.removeConvertible(String.class, Enum.class);
conversionService.addConverterFactory(factory); conversionService.addConverterFactory(factory);
} }
......
...@@ -9,7 +9,7 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter { ...@@ -9,7 +9,7 @@ public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {
@Override @Override
public void addFormatters(FormatterRegistry registry) { public void addFormatters(FormatterRegistry registry) {
registry.removeConvertible(String.class,Enum.class); registry.removeConvertible(String.class, Enum.class);
registry.addConverterFactory(new IntegerToEnumConverterFactory()); registry.addConverterFactory(new IntegerToEnumConverterFactory());
} }
......
package cn.quantgroup.xyqb.config.mq; package cn.quantgroup.xyqb.config.mq;
import cn.quantgroup.xyqb.service.mq.IVestService; import org.springframework.amqp.core.*;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
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;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -58,28 +50,33 @@ public class LoanVestMQConfig { ...@@ -58,28 +50,33 @@ public class LoanVestMQConfig {
connectionFactory.setPublisherConfirms(false); connectionFactory.setPublisherConfirms(false);
return connectionFactory; return connectionFactory;
} }
@Primary @Primary
@Bean(name= "loanVestAmqpAdmin") @Bean(name = "loanVestAmqpAdmin")
public AmqpAdmin loanVestAdmin(@Qualifier("vestFactory") ConnectionFactory vestFactory) { public AmqpAdmin loanVestAdmin(@Qualifier("vestFactory") ConnectionFactory vestFactory) {
return new RabbitAdmin(vestFactory); return new RabbitAdmin(vestFactory);
} }
@Primary @Primary
@Bean(name = "loanVestExchange") @Bean(name = "loanVestExchange")
public FanoutExchange loanVestExchange() { public FanoutExchange loanVestExchange() {
return new FanoutExchange(loanVestExchange); return new FanoutExchange(loanVestExchange);
} }
@Primary @Primary
@Bean(name = "loanVestQueue") @Bean(name = "loanVestQueue")
public Queue loanVestQueue() { public Queue loanVestQueue() {
return new Queue(queueName); return new Queue(queueName);
} }
@Primary @Primary
@Bean(name = "loanVestBinding") @Bean(name = "loanVestBinding")
public Binding bindingLoanVest(@Qualifier("loanVestAmqpAdmin")AmqpAdmin loanVestAdmin, @Qualifier("loanVestQueue")Queue loanVestQueue, @Qualifier("loanVestExchange")FanoutExchange loanVestExchange) { public Binding bindingLoanVest(@Qualifier("loanVestAmqpAdmin") AmqpAdmin loanVestAdmin, @Qualifier("loanVestQueue") Queue loanVestQueue, @Qualifier("loanVestExchange") FanoutExchange loanVestExchange) {
Binding binding = BindingBuilder.bind(loanVestQueue).to(loanVestExchange); Binding binding = BindingBuilder.bind(loanVestQueue).to(loanVestExchange);
loanVestAdmin.declareBinding(binding); loanVestAdmin.declareBinding(binding);
return binding; return binding;
} }
@Primary @Primary
@Bean(name = "rabbitTemplate") @Bean(name = "rabbitTemplate")
public RabbitTemplate loanVestTemplate(@Qualifier("vestFactory") ConnectionFactory vestFactory) { public RabbitTemplate loanVestTemplate(@Qualifier("vestFactory") ConnectionFactory vestFactory) {
......
package cn.quantgroup.xyqb.config.mq; package cn.quantgroup.xyqb.config.mq;
import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.core.*;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitAdmin;
...@@ -13,7 +9,6 @@ import org.springframework.beans.factory.annotation.Qualifier; ...@@ -13,7 +9,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
/** /**
* Created by xuran on 2017/9/7. * Created by xuran on 2017/9/7.
...@@ -43,7 +38,6 @@ public class RegisterMqConfig { ...@@ -43,7 +38,6 @@ public class RegisterMqConfig {
private String virtualHost; private String virtualHost;
@Bean(name = "registerMqFactory") @Bean(name = "registerMqFactory")
public ConnectionFactory registerMqFactory() { public ConnectionFactory registerMqFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host, port); CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host, port);
...@@ -59,7 +53,7 @@ public class RegisterMqConfig { ...@@ -59,7 +53,7 @@ public class RegisterMqConfig {
return connectionFactory; return connectionFactory;
} }
@Bean(name= "registerMqAmqpAdmin") @Bean(name = "registerMqAmqpAdmin")
public AmqpAdmin registerMqAmqpAdmin(@Qualifier("registerMqFactory") ConnectionFactory registerMqFactory) { public AmqpAdmin registerMqAmqpAdmin(@Qualifier("registerMqFactory") ConnectionFactory registerMqFactory) {
return new RabbitAdmin(registerMqFactory); return new RabbitAdmin(registerMqFactory);
} }
...@@ -75,7 +69,7 @@ public class RegisterMqConfig { ...@@ -75,7 +69,7 @@ public class RegisterMqConfig {
} }
@Bean(name = "registerMqBinding") @Bean(name = "registerMqBinding")
public Binding registerMqBinding(@Qualifier("registerMqAmqpAdmin")AmqpAdmin registerMqAmqpAdmin, @Qualifier("registerMqQueue")Queue registerMqQueue, @Qualifier("registerMqExchange")FanoutExchange registerMqExchange) { public Binding registerMqBinding(@Qualifier("registerMqAmqpAdmin") AmqpAdmin registerMqAmqpAdmin, @Qualifier("registerMqQueue") Queue registerMqQueue, @Qualifier("registerMqExchange") FanoutExchange registerMqExchange) {
Binding binding = BindingBuilder.bind(registerMqQueue).to(registerMqExchange); Binding binding = BindingBuilder.bind(registerMqQueue).to(registerMqExchange);
registerMqAmqpAdmin.declareBinding(binding); registerMqAmqpAdmin.declareBinding(binding);
return binding; return binding;
...@@ -100,7 +94,7 @@ public class RegisterMqConfig { ...@@ -100,7 +94,7 @@ public class RegisterMqConfig {
} }
@Bean(name = "registerMqBinding4Gdt") @Bean(name = "registerMqBinding4Gdt")
public Binding registerMqBinding4Gdt(@Qualifier("registerMqAmqpAdmin")AmqpAdmin registerMqAmqpAdmin, @Qualifier("registerMqQueue4Gdt")Queue registerMqQueue4Gdt, @Qualifier("registerMqExchange4Gdt")FanoutExchange registerMqExchange4Gdt) { public Binding registerMqBinding4Gdt(@Qualifier("registerMqAmqpAdmin") AmqpAdmin registerMqAmqpAdmin, @Qualifier("registerMqQueue4Gdt") Queue registerMqQueue4Gdt, @Qualifier("registerMqExchange4Gdt") FanoutExchange registerMqExchange4Gdt) {
Binding binding = BindingBuilder.bind(registerMqQueue4Gdt).to(registerMqExchange4Gdt); Binding binding = BindingBuilder.bind(registerMqQueue4Gdt).to(registerMqExchange4Gdt);
registerMqAmqpAdmin.declareBinding(binding); registerMqAmqpAdmin.declareBinding(binding);
return binding; return binding;
......
...@@ -18,6 +18,7 @@ public class AsyncConfig { ...@@ -18,6 +18,7 @@ public class AsyncConfig {
/** /**
* 生成线程池 * 生成线程池
*
* @param corePoolSize * @param corePoolSize
* @param maxPoolSize * @param maxPoolSize
* @param queueCapacity * @param queueCapacity
...@@ -37,14 +38,16 @@ public class AsyncConfig { ...@@ -37,14 +38,16 @@ public class AsyncConfig {
executor.setWaitForTasksToCompleteOnShutdown(waitForCompleteOnShutdown); executor.setWaitForTasksToCompleteOnShutdown(waitForCompleteOnShutdown);
executor.setThreadNamePrefix(prefix); executor.setThreadNamePrefix(prefix);
executor.initialize(); executor.initialize();
return executor ; return executor;
} }
/** /**
* 日志线程池 * 日志线程池
*
* @return * @return
*/ */
@Bean(name = "logExecutor") @Bean(name = "logExecutor")
public Executor loanMqExecutor(){ public Executor loanMqExecutor() {
return generateThreadPoolTaskExecutor(100, 2000, 2000, true, 30, true, "loanMqExecutor-"); return generateThreadPoolTaskExecutor(100, 2000, 2000, true, 30, true, "loanMqExecutor-");
} }
} }
...@@ -54,6 +54,7 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -54,6 +54,7 @@ public class ExceptionHandlingController implements IBaseController {
/** /**
* 用户不存在异常 * 用户不存在异常
*
* @param unee * @param unee
* @return * @return
*/ */
...@@ -66,6 +67,7 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -66,6 +67,7 @@ public class ExceptionHandlingController implements IBaseController {
/** /**
* 微信关联异常 * 微信关联异常
*
* @param wrue * @param wrue
* @return * @return
*/ */
...@@ -78,6 +80,7 @@ public class ExceptionHandlingController implements IBaseController { ...@@ -78,6 +80,7 @@ public class ExceptionHandlingController implements IBaseController {
/** /**
* 其他全局异常 * 其他全局异常
*
* @param e * @param e
* @return * @return
*/ */
......
...@@ -8,7 +8,6 @@ import org.springframework.web.context.request.RequestContextHolder; ...@@ -8,7 +8,6 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -16,6 +15,7 @@ import java.util.Objects; ...@@ -16,6 +15,7 @@ import java.util.Objects;
import static cn.quantgroup.xyqb.session.XyqbSessionContextHolder.getXSession; import static cn.quantgroup.xyqb.session.XyqbSessionContextHolder.getXSession;
import static cn.quantgroup.xyqb.session.XyqbSessionContextHolder.getXSessionFromRedis; import static cn.quantgroup.xyqb.session.XyqbSessionContextHolder.getXSessionFromRedis;
/** /**
* Created by Miraculous on 15/7/5. * Created by Miraculous on 15/7/5.
*/ */
...@@ -43,7 +43,7 @@ public interface IBaseController { ...@@ -43,7 +43,7 @@ public interface IBaseController {
return session.getValues().getUser(); return session.getValues().getUser();
} }
default SessionStruct getCurrentSessionFromRedis(){ default SessionStruct getCurrentSessionFromRedis() {
return getXSessionFromRedis(); return getXSessionFromRedis();
} }
...@@ -68,7 +68,7 @@ public interface IBaseController { ...@@ -68,7 +68,7 @@ public interface IBaseController {
HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();
while (headerNames.hasMoreElements()) { while (headerNames.hasMoreElements()) {
String key = headerNames.nextElement(); String key = headerNames.nextElement();
if(Objects.equals("authorization", key)){ if (Objects.equals("authorization", key)) {
continue; continue;
} }
map.put(key, request.getHeader(key)); map.put(key, request.getHeader(key));
......
...@@ -4,8 +4,6 @@ import cn.quantgroup.xyqb.Constants; ...@@ -4,8 +4,6 @@ import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.captcha.CaptchaValidator; import cn.quantgroup.xyqb.aspect.captcha.CaptchaValidator;
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 java.util.*;
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;
...@@ -17,6 +15,9 @@ import javax.servlet.http.HttpServletRequest; ...@@ -17,6 +15,9 @@ import javax.servlet.http.HttpServletRequest;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/** /**
* 类名称:ImgCaptchaController * 类名称:ImgCaptchaController
...@@ -59,6 +60,7 @@ public class ImageCaptchaController { ...@@ -59,6 +60,7 @@ public class ImageCaptchaController {
data.put("image", String.format(IMG_BASE64_PATTREN, imageBase64)); data.put("image", String.format(IMG_BASE64_PATTREN, imageBase64));
return JsonResult.buildSuccessResult("", data); return JsonResult.buildSuccessResult("", data);
} }
/** /**
* 图片验证码验证 * 图片验证码验证
* 注意:本方法有中间层在用,用于QG图形验证码检验 * 注意:本方法有中间层在用,用于QG图形验证码检验
......
package cn.quantgroup.xyqb.controller.external.captcha; package cn.quantgroup.xyqb.controller.external.captcha;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.captcha.CaptchaNewValidator;
import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller; import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller;
import cn.quantgroup.xyqb.model.ClientType; import cn.quantgroup.xyqb.model.ClientType;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -18,7 +17,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -18,7 +17,10 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
/** /**
* @author xufei on 2018/1/30. * @author xufei on 2018/1/30.
...@@ -52,17 +54,17 @@ public class NewCaptchaController { ...@@ -52,17 +54,17 @@ public class NewCaptchaController {
Map<String, String> data = new HashMap<String, String>(); Map<String, String> data = new HashMap<String, String>();
Map<String, String> imgMap = null; Map<String, String> imgMap = null;
// 优先获取极验 // 优先获取极验
if(!Boolean.valueOf(geetestClose)){ if (!Boolean.valueOf(geetestClose)) {
imgMap = geetestCaptchaService.fetchGeetestCaptcha(keyMd5, remoteIp, ClientType.valueByName(clientType)); imgMap = geetestCaptchaService.fetchGeetestCaptcha(keyMd5, remoteIp, ClientType.valueByName(clientType));
data.put(Constants.VERIFY_PARAM, Constants.VERIFY_TYPE_GT); data.put(Constants.VERIFY_PARAM, Constants.VERIFY_TYPE_GT);
} }
// 备选方案:量化派图形验证码 // 备选方案:量化派图形验证码
if(Objects.isNull(imgMap) || imgMap.isEmpty()){ if (Objects.isNull(imgMap) || imgMap.isEmpty()) {
imgMap = quantgroupCaptchaService.fetchQuantgroupCaptcha(request.getLocale()); imgMap = quantgroupCaptchaService.fetchQuantgroupCaptcha(request.getLocale());
data.put(Constants.VERIFY_PARAM, Constants.VERIFY_TYPE_QG); data.put(Constants.VERIFY_PARAM, Constants.VERIFY_TYPE_QG);
} }
// 返回结果 // 返回结果
if(Objects.isNull(imgMap) || imgMap.isEmpty()){ if (Objects.isNull(imgMap) || imgMap.isEmpty()) {
return JsonResult.buildErrorStateResult("获取验证码失败", ""); return JsonResult.buildErrorStateResult("获取验证码失败", "");
} }
// 填充数据并返回 // 填充数据并返回
......
...@@ -17,7 +17,7 @@ public class HelloController { ...@@ -17,7 +17,7 @@ public class HelloController {
@RequestMapping("/hello") @RequestMapping("/hello")
public String hello(HttpServletRequest request) { public String hello(HttpServletRequest request) {
String ip = IPUtil.getRemoteIP(request); String ip = IPUtil.getRemoteIP(request);
if(ip.startsWith("192.168.12.")){ if (ip.startsWith("192.168.12.")) {
log.error("测试:", new Exception("Sentry捕获异常")); log.error("测试:", new Exception("Sentry捕获异常"));
} }
return "ok"; return "ok";
......
...@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
...@@ -37,29 +37,31 @@ public class LockIpv4Controller implements IBaseController { ...@@ -37,29 +37,31 @@ public class LockIpv4Controller implements IBaseController {
/** /**
* 获取操作密令 * 获取操作密令
* @header lock_ipv4 - 获取密令 *
* @param act - 操作标记,true-锁定/添加,false-解锁/删除 * @param act - 操作标记,true-锁定/添加,false-解锁/删除
* @param request * @param request
* @return * @return
* @header lock_ipv4 - 获取密令
*/ */
@RequestMapping("/key") @RequestMapping("/key")
public JsonResult key(@RequestParam(required = false)String act, HttpServletRequest request) { public JsonResult key(@RequestParam(required = false) String act, HttpServletRequest request) {
//系统环境 //系统环境
String jvmTest = Boolean.valueOf(System.getProperty("test")).toString(); String jvmTest = Boolean.valueOf(System.getProperty("test")).toString();
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)) {
// 操作标记 // 操作标记
boolean lock = Objects.equals(Boolean.TRUE.toString(), act); boolean lock = Objects.equals(Boolean.TRUE.toString(), act);
String header_key = request.getHeader(Constants.IPV4_LOCK.replace(":", "")); String header_key = request.getHeader(Constants.IPV4_LOCK.replace(":", ""));
if(Objects.equals(Constants.CLEAR_LOCK_FOR_IPV4, header_key)){ if (Objects.equals(Constants.CLEAR_LOCK_FOR_IPV4, header_key)) {
String md5Key = ValidationUtil.getMd5Key(lock); String md5Key = ValidationUtil.getMd5Key(lock);
return JsonResult.buildErrorStateResult(WORD.concat(jvmTest), md5Key); return JsonResult.buildErrorStateResult(WORD.concat(jvmTest), md5Key);
} }
} }
return JsonResult.buildErrorStateResult(WORD.concat(jvmTest),null); return JsonResult.buildErrorStateResult(WORD.concat(jvmTest), null);
} }
/** /**
* 锁定/解锁特定IP * 锁定/解锁特定IP
*
* @param ip - 目标IP * @param ip - 目标IP
* @param key - 密令 * @param key - 密令
* @param act - 操作标记,true-锁定,false-解锁 * @param act - 操作标记,true-锁定,false-解锁
...@@ -67,51 +69,52 @@ public class LockIpv4Controller implements IBaseController { ...@@ -67,51 +69,52 @@ public class LockIpv4Controller implements IBaseController {
* @return * @return
*/ */
@RequestMapping("/lock_ipv4") @RequestMapping("/lock_ipv4")
public JsonResult lockIpv4(@RequestParam(required = true)String ip, public JsonResult lockIpv4(@RequestParam(required = true) String ip,
@RequestParam(required = true)String key, @RequestParam(required = true) String key,
@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); LOGGER.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)) {
// 操作标记 // 操作标记
boolean lock = Objects.equals(Boolean.TRUE.toString(), act); boolean lock = Objects.equals(Boolean.TRUE.toString(), act);
boolean valid = ValidationUtil.isValid(key, lock); boolean valid = ValidationUtil.isValid(key, lock);
if(valid){ if (valid) {
lockIpv4(ip, lock); lockIpv4(ip, lock);
return JsonResult.buildSuccessResult("Success",null); return JsonResult.buildSuccessResult("Success", null);
} }
} }
LOGGER.info("Lock_ipv4: fail to clear_or_lock ip:{}", ip); LOGGER.info("Lock_ipv4: fail to clear_or_lock ip:{}", ip);
return JsonResult.buildErrorStateResult(WORD,null); return JsonResult.buildErrorStateResult(WORD, null);
} }
/** /**
* 锁定/解锁特定IP * 锁定/解锁特定IP
* @header lock_ipv4 - 获取密令 *
* @param ip - 目标IP * @param ip - 目标IP
* @param lock - 操作标记,true-锁定,false-解锁 * @param lock - 操作标记,true-锁定,false-解锁
* @header lock_ipv4 - 获取密令
*/ */
private void lockIpv4(String ip, boolean lock){ private void lockIpv4(String ip, boolean lock) {
String lockIpv4Key = getLockIpv4Key(ip); String lockIpv4Key = getLockIpv4Key(ip);
if(lock){ if (lock) {
// 每分钟计数阈值 // 每分钟计数阈值
long counts = Constants.IPV4_LOCK_ON_FAILED_COUNTS; long counts = Constants.IPV4_LOCK_ON_FAILED_COUNTS;
String redisCounts = redisTemplate.opsForValue().get(Constants.IPV4_LOCK_ON_COUNTS_REDIS); String redisCounts = redisTemplate.opsForValue().get(Constants.IPV4_LOCK_ON_COUNTS_REDIS);
if(StringUtils.isNumeric(redisCounts) && Integer.valueOf(redisCounts) > 0){ if (StringUtils.isNumeric(redisCounts) && Integer.valueOf(redisCounts) > 0) {
counts = Integer.valueOf(redisCounts); counts = Integer.valueOf(redisCounts);
} }
// 锁定时长 // 锁定时长
long minutes = Constants.IPV4_FAILED_LOCK_MINUTES; long minutes = Constants.IPV4_FAILED_LOCK_MINUTES;
String redisMinutes = redisTemplate.opsForValue().get(Constants.IPV4_LOCK_ON_COUNTS_REDIS); String redisMinutes = redisTemplate.opsForValue().get(Constants.IPV4_LOCK_ON_COUNTS_REDIS);
if(StringUtils.isNumeric(redisMinutes) && Integer.valueOf(redisMinutes) > 0){ if (StringUtils.isNumeric(redisMinutes) && Integer.valueOf(redisMinutes) > 0) {
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); LOGGER.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); LOGGER.info("Lock_ipv4: unlocked ip Success. ip:{}", ip);
} }
...@@ -119,6 +122,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -119,6 +122,7 @@ public class LockIpv4Controller implements IBaseController {
/** /**
* 配置特定IP到黑/白名单 - Redis * 配置特定IP到黑/白名单 - Redis
*
* @param ip - 目标IP * @param ip - 目标IP
* @param key - 密令 * @param key - 密令
* @param act - 操作:true-添加,false-删除 * @param act - 操作:true-添加,false-删除
...@@ -127,52 +131,53 @@ public class LockIpv4Controller implements IBaseController { ...@@ -127,52 +131,53 @@ public class LockIpv4Controller implements IBaseController {
* @return * @return
*/ */
@RequestMapping("/configHitList") @RequestMapping("/configHitList")
public JsonResult configHitList(@RequestParam(required = true)String ip, public JsonResult configHitList(@RequestParam(required = true) String ip,
@RequestParam(required = true)String key, @RequestParam(required = true) String key,
@RequestParam(required = false)String act, @RequestParam(required = false) String act,
@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); LOGGER.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);
boolean typeOk = Objects.equals(Boolean.TRUE.toString(), type) || Objects.equals(Boolean.FALSE.toString(), type); boolean typeOk = Objects.equals(Boolean.TRUE.toString(), type) || Objects.equals(Boolean.FALSE.toString(), type);
// 操作标记 // 操作标记
boolean valid = (actOk && typeOk) && ValidationUtil.isValid(key, Objects.equals(Boolean.TRUE.toString(), act)); boolean valid = (actOk && typeOk) && ValidationUtil.isValid(key, Objects.equals(Boolean.TRUE.toString(), act));
if(valid){ if (valid) {
boolean operate = Objects.equals(Boolean.TRUE.toString(), act); boolean operate = Objects.equals(Boolean.TRUE.toString(), act);
boolean lock = Objects.equals(Boolean.TRUE.toString(), type); boolean lock = Objects.equals(Boolean.TRUE.toString(), type);
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); LOGGER.info("Lock_ipv4: fail to config hit list for ip:{}", ip);
return JsonResult.buildErrorStateResult(WORD,null); return JsonResult.buildErrorStateResult(WORD, null);
} }
/** /**
* 配置特定IP到黑/白名单 - Redis * 配置特定IP到黑/白名单 - Redis
*
* @param ip - 目标IP * @param ip - 目标IP
* @param operate - 操作:true-添加,false-删除 * @param operate - 操作:true-添加,false-删除
* @param lock - 名单类型:true-黑名单,false-白名单 * @param lock - 名单类型:true-黑名单,false-白名单
*/ */
private void configHitList(String ip, boolean operate, boolean lock) { private void configHitList(String ip, boolean operate, boolean lock) {
if(!ValidationUtil.validateIpv4(ip)){ if (!ValidationUtil.validateIpv4(ip)) {
return; return;
} }
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); LOGGER.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); LOGGER.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); LOGGER.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); LOGGER.info("Lock_ipv4: remove white-list item Success, ip:{}", ip);
} }
...@@ -182,6 +187,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -182,6 +187,7 @@ public class LockIpv4Controller implements IBaseController {
/** /**
* 设定可选阈值 - Redis * 设定可选阈值 - Redis
*
* @param key - 密令 * @param key - 密令
* @param act - 操作:true-添加,false-删除 * @param act - 操作:true-添加,false-删除
* @param counts - 每分钟计数阈值 * @param counts - 每分钟计数阈值
...@@ -190,50 +196,51 @@ public class LockIpv4Controller implements IBaseController { ...@@ -190,50 +196,51 @@ public class LockIpv4Controller implements IBaseController {
* @return * @return
*/ */
@RequestMapping("/configNoun") @RequestMapping("/configNoun")
public JsonResult configNoun(@RequestParam(required = true)String key, public JsonResult configNoun(@RequestParam(required = true) String key,
@RequestParam(required = false)String act, @RequestParam(required = false) String act,
@RequestParam(required = false)String counts, @RequestParam(required = false) String counts,
@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"); LOGGER.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);
boolean valid = actOk && ValidationUtil.isValid(key, Objects.equals(Boolean.TRUE.toString(), act)); boolean valid = actOk && ValidationUtil.isValid(key, Objects.equals(Boolean.TRUE.toString(), act));
if(valid){ if (valid) {
// 操作标记 // 操作标记
boolean operate = Objects.equals(Boolean.TRUE.toString(), act); boolean operate = Objects.equals(Boolean.TRUE.toString(), act);
// 每分钟计数阈值 // 每分钟计数阈值
int redisCounts = Integer.valueOf(counts); int redisCounts = Integer.valueOf(counts);
// 锁定时长 // 锁定时长
int redisMinutes = Integer.valueOf(minutes); int redisMinutes = Integer.valueOf(minutes);
if(redisCounts > 0 && redisMinutes > 0){ if (redisCounts > 0 && redisMinutes > 0) {
configNoun(redisCounts, redisMinutes, operate); configNoun(redisCounts, redisMinutes, operate);
return JsonResult.buildSuccessResult("Success",null); return JsonResult.buildSuccessResult("Success", null);
} }
} }
LOGGER.info("Lock_ipv4: fail to config noun"); LOGGER.info("Lock_ipv4: fail to config noun");
return JsonResult.buildErrorStateResult(WORD,null); return JsonResult.buildErrorStateResult(WORD, null);
} }
/** /**
* 设定可选阈值 - Redis * 设定可选阈值 - Redis
*
* @param counts - 每分钟计数阈值(? > 0) * @param counts - 每分钟计数阈值(? > 0)
* @param minutes - 锁定时长(? > 0) * @param minutes - 锁定时长(? > 0)
* @param operate - 操作:true-添加,false-删除 * @param operate - 操作:true-添加,false-删除
*/ */
private final void configNoun(int counts, int minutes, boolean operate){ private final void configNoun(int counts, int minutes, boolean operate) {
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); LOGGER.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); LOGGER.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); 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);
...@@ -242,10 +249,11 @@ public class LockIpv4Controller implements IBaseController { ...@@ -242,10 +249,11 @@ public class LockIpv4Controller implements IBaseController {
/** /**
* 获取Redis-key * 获取Redis-key
*
* @param ipv4 * @param ipv4
* @return Redis-key * @return Redis-key
*/ */
private final static String getLockIpv4Key(String ipv4){ private final static String getLockIpv4Key(String ipv4) {
return Constants.IPV4_LOCK + ipv4; return Constants.IPV4_LOCK + ipv4;
} }
......
...@@ -7,8 +7,10 @@ import cn.quantgroup.motan.vo.UserSysResult; ...@@ -7,8 +7,10 @@ import cn.quantgroup.motan.vo.UserSysResult;
import cn.quantgroup.user.enums.*; import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.*; import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.model.*; import cn.quantgroup.xyqb.model.IdCardInfo;
import cn.quantgroup.xyqb.model.IdType; import cn.quantgroup.xyqb.model.IdType;
import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.session.LoginInfo; import cn.quantgroup.xyqb.model.session.LoginInfo;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.service.api.IUserApiService; import cn.quantgroup.xyqb.service.api.IUserApiService;
...@@ -128,7 +130,7 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -128,7 +130,7 @@ public class MotanUserServiceImpl implements UserMotanService {
} }
user.setUpdatedAt(now); user.setUpdatedAt(now);
user.setUuid(userBean.getUuid()); user.setUuid(userBean.getUuid());
user.setRegisteredFrom(null==userBean.getRegisteredFrom()?0L:userBean.getRegisteredFrom()); user.setRegisteredFrom(null == userBean.getRegisteredFrom() ? 0L : userBean.getRegisteredFrom());
User saveUser = userService.saveUser(user); User saveUser = userService.saveUser(user);
return returnSuccessValue(fromUser(saveUser)); return returnSuccessValue(fromUser(saveUser));
} }
...@@ -276,7 +278,7 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -276,7 +278,7 @@ public class MotanUserServiceImpl implements UserMotanService {
log.info("第三方用户登录, loginFrom:{}, requestIp:{}", appLoginParam.getRegisterFrom(), requestIp); log.info("第三方用户登录, loginFrom:{}, requestIp:{}", appLoginParam.getRegisterFrom(), requestIp);
User user = userService.findByPhoneInDb(appLoginParam.getPhoneNo()); User user = userService.findByPhoneInDb(appLoginParam.getPhoneNo());
if (user == null) { if (user == null) {
user = userRegisterService.register(appLoginParam.getRegisterFrom(), appLoginParam.getPhoneNo(), appLoginParam.getIdNo(), appLoginParam.getName(),appLoginParam.getChannelId()); user = userRegisterService.register(appLoginParam.getRegisterFrom(), appLoginParam.getPhoneNo(), appLoginParam.getIdNo(), appLoginParam.getName(), appLoginParam.getChannelId());
} }
if (user == null) { if (user == null) {
return returnErrorValue("账户或者密码错误"); return returnErrorValue("账户或者密码错误");
...@@ -349,7 +351,8 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -349,7 +351,8 @@ public class MotanUserServiceImpl implements UserMotanService {
String jsonContacts = JSON.toJSONString(contacts); String jsonContacts = JSON.toJSONString(contacts);
List<Contact> contactList = null; List<Contact> contactList = null;
try { try {
contactList = MAPPER.readValue(jsonContacts, new TypeReference<List<Contact>>(){}); contactList = MAPPER.readValue(jsonContacts, new TypeReference<List<Contact>>() {
});
} catch (Exception e) { } catch (Exception e) {
log.error("联系人列表转换错误", e); log.error("联系人列表转换错误", e);
return returnErrorValue("联系人转换错误"); return returnErrorValue("联系人转换错误");
...@@ -361,7 +364,8 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -361,7 +364,8 @@ public class MotanUserServiceImpl implements UserMotanService {
} }
} }
List<Contact> result = contactService.save(userId, contactList); List<Contact> result = contactService.save(userId, contactList);
List<XContact> xResult = convertObject(JSON.toJSONString(result), new TypeReference<List<XContact>>(){}); List<XContact> xResult = convertObject(JSON.toJSONString(result), new TypeReference<List<XContact>>() {
});
return returnSuccessValue(xResult); return returnSuccessValue(xResult);
} }
...@@ -471,7 +475,7 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -471,7 +475,7 @@ public class MotanUserServiceImpl implements UserMotanService {
} }
User user = userService.findById(userId); User user = userService.findById(userId);
if (null == user) { if (null == user) {
throw new RuntimeException("未查询到该用户,用户id:"+userId); throw new RuntimeException("未查询到该用户,用户id:" + userId);
} }
user.setEnable(false); user.setEnable(false);
user.setUpdatedAt(new Timestamp(System.currentTimeMillis())); user.setUpdatedAt(new Timestamp(System.currentTimeMillis()));
...@@ -541,7 +545,7 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -541,7 +545,7 @@ public class MotanUserServiceImpl implements UserMotanService {
} }
private XUserExtInfo fromUserExtInfo(UserExtInfo userExtInfo) { private XUserExtInfo fromUserExtInfo(UserExtInfo userExtInfo) {
return null==userExtInfo?null:userExtInfo.toXUserExtInfo(); return null == userExtInfo ? null : userExtInfo.toXUserExtInfo();
} }
@Override @Override
...@@ -644,7 +648,7 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -644,7 +648,7 @@ public class MotanUserServiceImpl implements UserMotanService {
@Override @Override
public UserSysResult<XLoginInfo> getLoginInfo(String token) { public UserSysResult<XLoginInfo> getLoginInfo(String token) {
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token);
if(null != sessionStruct) { if (null != sessionStruct) {
log.info("从用户中心获取到了用户登录信息:phone:[{}]", sessionStruct.getValues().getUser().getPhoneNo()); log.info("从用户中心获取到了用户登录信息:phone:[{}]", sessionStruct.getValues().getUser().getPhoneNo());
XLoginInfo loginInfo = new XLoginInfo(); XLoginInfo loginInfo = new XLoginInfo();
loginInfo.setUser(sessionStruct.getValues().getUser().toXUser()); loginInfo.setUser(sessionStruct.getValues().getUser().toXUser());
...@@ -700,10 +704,10 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -700,10 +704,10 @@ public class MotanUserServiceImpl implements UserMotanService {
@Override @Override
public UserSysResult<Map<Long, String>> findPhoneByUserIds(List<Long> userIds) { public UserSysResult<Map<Long, String>> findPhoneByUserIds(List<Long> userIds) {
if(!CollectionUtils.isEmpty(userIds) && userIds.size()<=500) { if (!CollectionUtils.isEmpty(userIds) && userIds.size() <= 500) {
Map<Long, String> userIdAndPhoneMap = userService.findPhoneByIdsInDb(userIds); Map<Long, String> userIdAndPhoneMap = userService.findPhoneByIdsInDb(userIds);
return returnSuccessValue(userIdAndPhoneMap); return returnSuccessValue(userIdAndPhoneMap);
}else { } else {
return returnErrorValue("批量查询每次最多进行500条用户信息的查询"); return returnErrorValue("批量查询每次最多进行500条用户信息的查询");
} }
} }
......
package cn.quantgroup.xyqb.controller.external.queryLog; package cn.quantgroup.xyqb.controller.external.queryLog;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.Address; import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
...@@ -10,13 +11,12 @@ import cn.quantgroup.xyqb.service.http.IHttpService; ...@@ -10,13 +11,12 @@ import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.user.IAddressService; import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IUserDetailService; import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserQueryLogService; import cn.quantgroup.xyqb.service.user.IUserQueryLogService;
import cn.quantgroup.xyqb.util.IdcardValidator; import cn.quantgroup.xyqb.util.IdcardValidator;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import cn.quantgroup.xyqb.util.encrypt.MD5Util; import cn.quantgroup.xyqb.util.encrypt.MD5Util;
import cn.quantgroup.xyqb.util.encrypt.RSA; import cn.quantgroup.xyqb.util.encrypt.RSA;
import com.alibaba.fastjson.JSON;
import com.google.gson.*; import com.google.gson.*;
import org.apache.poi.hssf.usermodel.*;
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;
...@@ -27,20 +27,12 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -27,20 +27,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream; import java.io.OutputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** /**
* Created by zenglibin on 17/06/13. * Created by zenglibin on 17/06/13.
*/ */
...@@ -65,231 +57,231 @@ public class UserQueryLogController { ...@@ -65,231 +57,231 @@ public class UserQueryLogController {
private String yunyingUrl; private String yunyingUrl;
@Autowired @Autowired
private IHttpService httpService; private IHttpService httpService;
private static final String PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYiw1PKWnCbkKyzHK+blHpKTR/qtO3Oq7nvjSdcopCSmOJqji3B+qJMrf03242mYJIQeF3YSTQZTfri5EkNgoqn0Y/KYpLAKuq89jPdIkB3lvirvew9tpfbAT4B14WgoWdMH5ooqBt0ly3f+JjoBM5dKFTOrhckhFDoaB3UAaaiQIDAQAB"; private static final String PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYiw1PKWnCbkKyzHK+blHpKTR/qtO3Oq7nvjSdcopCSmOJqji3B+qJMrf03242mYJIQeF3YSTQZTfri5EkNgoqn0Y/KYpLAKuq89jPdIkB3lvirvew9tpfbAT4B14WgoWdMH5ooqBt0ly3f+JjoBM5dKFTOrhckhFDoaB3UAaaiQIDAQAB";
private static final String PRIVATE_KEY = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJiLDU8pacJuQrLMcr5uUekpNH+q07c6rue+NJ1yikJKY4mqOLcH6okyt/TfbjaZgkhB4XdhJNBlN+uLkSQ2CiqfRj8piksAq6rz2M90iQHeW+Ku97D22l9sBPgHXhaChZ0wfmiioG3SXLd/4mOgEzl0oVM6uFySEUOhoHdQBpqJAgMBAAECgYA3DfCWwoaWEr9l0p4TFrPfZ+y3qwrQVZCsuRw6Ow2lUT3NgK8JeATw0WpNKZqYgBziQUzDjj8AK5fcHjobDJnsKGqC2VQ+j05hQZztoHTrYxOx6xrGxIzqmbt/dPsw779xXSRJu3DuUeCm6CrGZpVpPX/NtXBxIhXRY2KRNa1SZQJBAPMboc+M6/OeGPQqFvXg9jgEWcosBpy6HtukfjONQAVuM5e0pZa8SQCLhcoHgbbqcEhbDAJEqr9x9eZjjFPSt08CQQCgoe/hOVf0s5oo1IM1TVEUkGOIzVVlyTMwu0p4jwt3987D7BKZe7mCl41quWDwL4JIQ0GcivVMpJzYsDBZHRqnAkBMgCKAHHlXdSWnF+OXxg3U/NGAhDAke5EgTvgDouxFiTMlBwygjWlviXg1Zf1UoRtqOXRi9lbA3cyijirnacSTAkBmve0ug30MmOvbfcHGkANyQcBIOf2LMxu46bKCVgwh2bC4hACJhydqrgDX6GZmehy8l7gZpo+rTAa+WkMyXHk1AkEArt6ElkyNI7TDu0By59Zin05tuZJr6QoMXs9bVH+xP3OBG1KfPYTBc9yb5MOjXIxAjyGGeDpUfhuUDBe56GTOBA=="; private static final String PRIVATE_KEY = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJiLDU8pacJuQrLMcr5uUekpNH+q07c6rue+NJ1yikJKY4mqOLcH6okyt/TfbjaZgkhB4XdhJNBlN+uLkSQ2CiqfRj8piksAq6rz2M90iQHeW+Ku97D22l9sBPgHXhaChZ0wfmiioG3SXLd/4mOgEzl0oVM6uFySEUOhoHdQBpqJAgMBAAECgYA3DfCWwoaWEr9l0p4TFrPfZ+y3qwrQVZCsuRw6Ow2lUT3NgK8JeATw0WpNKZqYgBziQUzDjj8AK5fcHjobDJnsKGqC2VQ+j05hQZztoHTrYxOx6xrGxIzqmbt/dPsw779xXSRJu3DuUeCm6CrGZpVpPX/NtXBxIhXRY2KRNa1SZQJBAPMboc+M6/OeGPQqFvXg9jgEWcosBpy6HtukfjONQAVuM5e0pZa8SQCLhcoHgbbqcEhbDAJEqr9x9eZjjFPSt08CQQCgoe/hOVf0s5oo1IM1TVEUkGOIzVVlyTMwu0p4jwt3987D7BKZe7mCl41quWDwL4JIQ0GcivVMpJzYsDBZHRqnAkBMgCKAHHlXdSWnF+OXxg3U/NGAhDAke5EgTvgDouxFiTMlBwygjWlviXg1Zf1UoRtqOXRi9lbA3cyijirnacSTAkBmve0ug30MmOvbfcHGkANyQcBIOf2LMxu46bKCVgwh2bC4hACJhydqrgDX6GZmehy8l7gZpo+rTAa+WkMyXHk1AkEArt6ElkyNI7TDu0By59Zin05tuZJr6QoMXs9bVH+xP3OBG1KfPYTBc9yb5MOjXIxAjyGGeDpUfhuUDBe56GTOBA==";
@RequestMapping("/queryLog") @RequestMapping("/queryLog")
public JsonResult queryLog(HttpServletRequest request,@RequestParam(required=false) String beginDate,@RequestParam(required=false) String endDate, Integer pageId, Integer pageSize) { public JsonResult queryLog(HttpServletRequest request, @RequestParam(required = false) String beginDate, @RequestParam(required = false) String endDate, Integer pageId, Integer pageSize) {
LOGGER.info("查询日期:beginDate{},endDate{}",beginDate,endDate); LOGGER.info("查询日期:beginDate{},endDate{}", beginDate, endDate);
String token=request.getHeader(Constants.X_AUTH_TOKEN); String token = request.getHeader(Constants.X_AUTH_TOKEN);
if(StringUtils.isEmpty(token)){ if (StringUtils.isEmpty(token)) {
LOGGER.info("token为空,非法查询"); LOGGER.info("token为空,非法查询");
return JsonResult.buildErrorStateResult("缺少授权信息",null); return JsonResult.buildErrorStateResult("缺少授权信息", null);
} }
if(StringUtils.isEmpty(checkUserToken(token))){ if (StringUtils.isEmpty(checkUserToken(token))) {
LOGGER.info("token授权异常"); LOGGER.info("token授权异常");
return JsonResult.buildErrorStateResult("未授权查询",null); return JsonResult.buildErrorStateResult("未授权查询", null);
} }
try{ try {
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sfs=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1=null,date2=null; Date date1 = null, date2 = null;
if(beginDate!=null&& StringUtils.hasLength(beginDate)){ if (beginDate != null && StringUtils.hasLength(beginDate)) {
date1=sfs.parse(beginDate+" 00:00:00"); date1 = sfs.parse(beginDate + " 00:00:00");
}else{ } else {
String nowStr=sf.format(new Date()); String nowStr = sf.format(new Date());
date1=sfs.parse(nowStr+" 00:00:00"); date1 = sfs.parse(nowStr + " 00:00:00");
} }
if(endDate!=null&& StringUtils.hasLength(endDate)){ if (endDate != null && StringUtils.hasLength(endDate)) {
date2=sfs.parse(endDate+" 23:59:59"); date2 = sfs.parse(endDate + " 23:59:59");
}else{ } else {
String nowEndStr=sf.format(new Date()); String nowEndStr = sf.format(new Date());
date2=sfs.parse(nowEndStr+" 23:59:59"); date2 = sfs.parse(nowEndStr + " 23:59:59");
} }
int startP=(pageId-1)*pageSize; int startP = (pageId - 1) * pageSize;
List<UserQueryLog> userQueryLogs=userQueryLogService.findByTimestamp(date1,date2,startP,pageSize); List<UserQueryLog> userQueryLogs = userQueryLogService.findByTimestamp(date1, date2, startP, pageSize);
Long total=userQueryLogService.findByTimestampCount(date1,date2); Long total = userQueryLogService.findByTimestampCount(date1, date2);
PageModel<UserQueryLog> uqp=new PageModel<UserQueryLog>(); PageModel<UserQueryLog> uqp = new PageModel<UserQueryLog>();
uqp.setTotal(total); uqp.setTotal(total);
if(pageSize==0||pageSize<0){ if (pageSize == 0 || pageSize < 0) {
pageSize=30; pageSize = 30;
}else if(pageSize>200){ } else if (pageSize > 200) {
pageSize=200; pageSize = 200;
} }
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try{ try {
for(UserQueryLog ll:userQueryLogs){ for (UserQueryLog ll : userQueryLogs) {
ll.setCreateDate(sdf.format(ll.getCreatedAt())); ll.setCreateDate(sdf.format(ll.getCreatedAt()));
} }
}catch (Exception e){ } catch (Exception e) {
LOGGER.info("日期时间转换异常"); LOGGER.info("日期时间转换异常");
return JsonResult.buildErrorStateResult("日期时间转换异常",null); return JsonResult.buildErrorStateResult("日期时间转换异常", null);
} }
uqp.setPageSize(pageSize); uqp.setPageSize(pageSize);
uqp.setPageId(pageId); uqp.setPageId(pageId);
uqp.setPageList(userQueryLogs); uqp.setPageList(userQueryLogs);
int yu=total.intValue()%pageSize; int yu = total.intValue() % pageSize;
Double d=Math.ceil(total/pageSize); Double d = Math.ceil(total / pageSize);
uqp.setPages(yu>0?d.intValue()+1:d.intValue()); uqp.setPages(yu > 0 ? d.intValue() + 1 : d.intValue());
return JsonResult.buildSuccessResult("查询成功",uqp); return JsonResult.buildSuccessResult("查询成功", uqp);
}catch(Exception e){ } catch (Exception e) {
return JsonResult.buildErrorStateResult("查询失败",null); return JsonResult.buildErrorStateResult("查询失败", null);
} }
} }
@RequestMapping("/queryUserInfo") @RequestMapping("/queryUserInfo")
public JsonResult queryForResult(HttpServletRequest request,String key,String keyValues, String columns,Integer pageId,Integer pageSize) { public JsonResult queryForResult(HttpServletRequest request, String key, String keyValues, String columns, Integer pageId, Integer pageSize) {
LOGGER.info("查询条件:key{},columns{}",key,columns); LOGGER.info("查询条件:key{},columns{}", key, columns);
String token=request.getHeader(Constants.X_AUTH_TOKEN); String token = request.getHeader(Constants.X_AUTH_TOKEN);
if(StringUtils.isEmpty(token)){ if (StringUtils.isEmpty(token)) {
LOGGER.info("token为空,非法查询"); LOGGER.info("token为空,非法查询");
return JsonResult.buildErrorStateResult("缺少授权信息",null); return JsonResult.buildErrorStateResult("缺少授权信息", null);
} }
//columns=> userId,phoneNo,idNo,bankCard,address //columns=> userId,phoneNo,idNo,bankCard,address
//key=>phoneNo、idNo、userId //key=>phoneNo、idNo、userId
//checkKeysType; //checkKeysType;
//后台参数校验 //后台参数校验
//校验用户权限 //校验用户权限
String userName=checkUserToken(token); String userName = checkUserToken(token);
if(StringUtils.isEmpty(userName)){ if (StringUtils.isEmpty(userName)) {
LOGGER.info("token授权异常"); LOGGER.info("token授权异常");
return JsonResult.buildErrorStateResult("未授权查询",null); return JsonResult.buildErrorStateResult("未授权查询", null);
} }
//输入enter换行\n //输入enter换行\n
if(org.apache.commons.lang3.StringUtils.isEmpty(keyValues)){ if (org.apache.commons.lang3.StringUtils.isEmpty(keyValues)) {
return JsonResult.buildErrorStateResult("请输入查询条件",null); return JsonResult.buildErrorStateResult("请输入查询条件", null);
} }
String[] values=keyValues.split("\\n"); String[] values = keyValues.split("\\n");
List<String> queryV= Arrays.asList(values); List<String> queryV = Arrays.asList(values);
if(queryV!=null&&queryV.size()>3000){ if (queryV != null && queryV.size() > 3000) {
return JsonResult.buildErrorStateResult("查询记录数是"+queryV.size()+",超过3000条限制",null); return JsonResult.buildErrorStateResult("查询记录数是" + queryV.size() + ",超过3000条限制", null);
} }
List<UserQueryInfo> userQueryInfos=new ArrayList<UserQueryInfo>(); List<UserQueryInfo> userQueryInfos = new ArrayList<UserQueryInfo>();
List<UserDetail> userDetails=new ArrayList<UserDetail>(); List<UserDetail> userDetails = new ArrayList<UserDetail>();
Page<UserDetail> userDetailPage=null; Page<UserDetail> userDetailPage = null;
List<Address> addresslist=new ArrayList<Address>(); List<Address> addresslist = new ArrayList<Address>();
HashMap<String,String> phonesCards=new HashMap<String,String>(); HashMap<String, String> phonesCards = new HashMap<String, String>();
if(pageSize==0||pageSize<0){ if (pageSize == 0 || pageSize < 0) {
pageSize=30; pageSize = 30;
}else if(pageSize>200){ } else if (pageSize > 200) {
pageSize=200; pageSize = 200;
} }
//如果维度里面没有保护查询条件则加入条件 //如果维度里面没有保护查询条件则加入条件
if(!columns.contains(key)){ if (!columns.contains(key)) {
columns=columns+","+key; columns = columns + "," + key;
} }
if(Objects.equals(key, "userId")){ if (Objects.equals(key, "userId")) {
List<Long> userIds=new ArrayList<Long>(); List<Long> userIds = new ArrayList<Long>();
try{ try {
for(String s:queryV){ for (String s : queryV) {
if(s.length()>8){ if (s.length() > 8) {
return JsonResult.buildErrorStateResult("查询的userId"+s+"长度超过8位",null); return JsonResult.buildErrorStateResult("查询的userId" + s + "长度超过8位", null);
} }
long uid=Long.valueOf(s); long uid = Long.valueOf(s);
userIds.add(uid); userIds.add(uid);
} }
}catch(Exception e){ } catch (Exception e) {
return JsonResult.buildErrorStateResult("查询的userId有误",null); return JsonResult.buildErrorStateResult("查询的userId有误", null);
} }
userDetailPage=userDetailService.getUserDetailsPage(userIds,null,null,pageId,pageSize,"auto"); userDetailPage = userDetailService.getUserDetailsPage(userIds, null, null, pageId, pageSize, "auto");
}else if(Objects.equals(key, Constants.PHONE_NO)){ } else if (Objects.equals(key, Constants.PHONE_NO)) {
for(String pn:queryV){ for (String pn : queryV) {
if(!ValidationUtil.validatePhoneNo(pn)){ if (!ValidationUtil.validatePhoneNo(pn)) {
return JsonResult.buildErrorStateResult("查询的手机号码"+pn+"格式有误",null); return JsonResult.buildErrorStateResult("查询的手机号码" + pn + "格式有误", null);
} }
} }
userDetailPage=userDetailService.getUserDetailsPage(null,queryV,null,pageId,pageSize,"auto"); userDetailPage = userDetailService.getUserDetailsPage(null, queryV, null, pageId, pageSize, "auto");
}else if(Objects.equals(key, "idNo")){ } else if (Objects.equals(key, "idNo")) {
for(String idno:queryV){ for (String idno : queryV) {
if(!IdcardValidator.is18Idcard(idno)&&!IdcardValidator.is15Idcard(idno)){ if (!IdcardValidator.is18Idcard(idno) && !IdcardValidator.is15Idcard(idno)) {
return JsonResult.buildErrorStateResult("查询的身份证号"+idno+"格式有误",null); return JsonResult.buildErrorStateResult("查询的身份证号" + idno + "格式有误", null);
} }
} }
userDetailPage=userDetailService.getUserDetailsPage(null,null,queryV,pageId,pageSize,"auto"); userDetailPage = userDetailService.getUserDetailsPage(null, null, queryV, pageId, pageSize, "auto");
} }
if(userDetailPage!=null){ if (userDetailPage != null) {
userDetails=userDetailPage.getContent(); userDetails = userDetailPage.getContent();
} }
if(columns.contains("bankCard")){ if (columns.contains("bankCard")) {
//需加银行卡信息 //需加银行卡信息
if(Objects.equals(key, Constants.PHONE_NO)){ if (Objects.equals(key, Constants.PHONE_NO)) {
phonesCards=getBankCardsByPhoneNos(queryV); phonesCards = getBankCardsByPhoneNos(queryV);
if(phonesCards!=null&&phonesCards.get("errorMsg")!=null&&!StringUtils.isEmpty(phonesCards.get("errorMsg"))){ if (phonesCards != null && phonesCards.get("errorMsg") != null && !StringUtils.isEmpty(phonesCards.get("errorMsg"))) {
return JsonResult.buildErrorStateResult(phonesCards.get("errorMsg"),null); return JsonResult.buildErrorStateResult(phonesCards.get("errorMsg"), null);
} }
}else{ } else {
List<String> phones=new ArrayList<String>(); List<String> phones = new ArrayList<String>();
for(UserDetail uda:userDetails){ for (UserDetail uda : userDetails) {
phones.add(uda.getPhoneNo()); phones.add(uda.getPhoneNo());
} }
phonesCards=getBankCardsByPhoneNos(phones); phonesCards = getBankCardsByPhoneNos(phones);
if(phonesCards!=null&&phonesCards.get("errorMsg")!=null&&!StringUtils.isEmpty(phonesCards.get("errorMsg"))){ if (phonesCards != null && phonesCards.get("errorMsg") != null && !StringUtils.isEmpty(phonesCards.get("errorMsg"))) {
return JsonResult.buildErrorStateResult(phonesCards.get("errorMsg"),null); return JsonResult.buildErrorStateResult(phonesCards.get("errorMsg"), null);
} }
} }
} }
if(columns.contains("address")){ if (columns.contains("address")) {
List<Long> uidss=new ArrayList<Long>(); List<Long> uidss = new ArrayList<Long>();
//加地址信息 //加地址信息
for(UserDetail ud:userDetails){ for (UserDetail ud : userDetails) {
uidss.add(ud.getUserId()); uidss.add(ud.getUserId());
} }
if(uidss!=null&&uidss.size()>0){ if (uidss != null && uidss.size() > 0) {
addresslist=addressService.findByUserIds(uidss); addresslist = addressService.findByUserIds(uidss);
} }
} }
for(UserDetail ud:userDetails){ for (UserDetail ud : userDetails) {
UserQueryInfo uqi=new UserQueryInfo(); UserQueryInfo uqi = new UserQueryInfo();
if(columns.contains("idNo")){ if (columns.contains("idNo")) {
uqi.setIdNo(ud.getIdNo()); uqi.setIdNo(ud.getIdNo());
} }
if(columns.contains(Constants.PHONE_NO)){ if (columns.contains(Constants.PHONE_NO)) {
uqi.setPhoneNo(ud.getPhoneNo()); uqi.setPhoneNo(ud.getPhoneNo());
} }
if(columns.contains("name")){ if (columns.contains("name")) {
uqi.setName(ud.getName()); uqi.setName(ud.getName());
} }
if(columns.contains("userId")){ if (columns.contains("userId")) {
uqi.setUserId(ud.getUserId()); uqi.setUserId(ud.getUserId());
} }
if(columns.contains("address")){ if (columns.contains("address")) {
Optional<Address> oad=addresslist.stream().filter(addr->Objects.equals(addr.getUserId(), ud.getUserId())).findFirst(); Optional<Address> oad = addresslist.stream().filter(addr -> Objects.equals(addr.getUserId(), ud.getUserId())).findFirst();
if(oad.isPresent()){ if (oad.isPresent()) {
uqi.setAddress(oad.get().toString()); uqi.setAddress(oad.get().toString());
} }
} }
if(columns.contains("bankCard")&&phonesCards!=null){ if (columns.contains("bankCard") && phonesCards != null) {
uqi.setBankCards(phonesCards.get(ud.getPhoneNo())); uqi.setBankCards(phonesCards.get(ud.getPhoneNo()));
} }
userQueryInfos.add(uqi); userQueryInfos.add(uqi);
} }
//保存记录 //保存记录
UserQueryLog log=new UserQueryLog(); UserQueryLog log = new UserQueryLog();
log.setQueryItems(columns.replace("userId","用户ID").replace(Constants.PHONE_NO,"手机号").replace("name","姓名").replace("idNo","身份证号").replace("bankCard","银行卡号").replace("address","地址")); log.setQueryItems(columns.replace("userId", "用户ID").replace(Constants.PHONE_NO, "手机号").replace("name", "姓名").replace("idNo", "身份证号").replace("bankCard", "银行卡号").replace("address", "地址"));
log.setResultAmount(Long.valueOf(userDetailPage.getTotalElements())); log.setResultAmount(Long.valueOf(userDetailPage.getTotalElements()));
//转换存储 //转换存储
log.setQueryCondition(key.replace("userId","用户ID").replace(Constants.PHONE_NO,"手机号").replace("name","姓名").replace("idNo","身份证号")); log.setQueryCondition(key.replace("userId", "用户ID").replace(Constants.PHONE_NO, "手机号").replace("name", "姓名").replace("idNo", "身份证号"));
log.setQueryDetail(keyValues.replace("\n",";")); log.setQueryDetail(keyValues.replace("\n", ";"));
log.setLoginUserName(userName); log.setLoginUserName(userName);
userQueryLogService.save(log); userQueryLogService.save(log);
PageModel<UserQueryInfo> uqi=new PageModel<UserQueryInfo>(); PageModel<UserQueryInfo> uqi = new PageModel<UserQueryInfo>();
uqi.setPageId(pageId); uqi.setPageId(pageId);
uqi.setPageList(userQueryInfos); uqi.setPageList(userQueryInfos);
uqi.setPageSize(pageSize); uqi.setPageSize(pageSize);
uqi.setPages(userDetailPage.getTotalPages()); uqi.setPages(userDetailPage.getTotalPages());
uqi.setTotal(userDetailPage.getTotalElements()); uqi.setTotal(userDetailPage.getTotalElements());
return JsonResult.buildSuccessResult("查询成功",uqi); return JsonResult.buildSuccessResult("查询成功", uqi);
} }
private HashMap<String,String> getBankCardsByPhoneNos(List<String> phoneNos){ private HashMap<String, String> getBankCardsByPhoneNos(List<String> phoneNos) {
HashMap<String,Object> ha=new HashMap<String,Object>(); HashMap<String, Object> ha = new HashMap<String, Object>();
ha.put("type","1"); ha.put("type", "1");
ha.put("phones",phoneNos); ha.put("phones", phoneNos);
String phoneNoStr= new Gson().toJson(ha); String phoneNoStr = new Gson().toJson(ha);
String data=""; String data = "";
String sign=""; String sign = "";
HashMap<String,String> phonesMap=new HashMap<String,String>(); HashMap<String, String> phonesMap = new HashMap<String, String>();
try{ try {
data=RSA.encrypt(phoneNoStr,PUBLIC_KEY); data = RSA.encrypt(phoneNoStr, PUBLIC_KEY);
sign= MD5Util.build(data); sign = MD5Util.build(data);
}catch(Exception e){ } catch (Exception e) {
LOGGER.info("参数加密异常"); LOGGER.info("参数加密异常");
phonesMap.put("errorMsg","参数加密异常"); phonesMap.put("errorMsg", "参数加密异常");
return null; return null;
} }
...@@ -299,32 +291,32 @@ public class UserQueryLogController { ...@@ -299,32 +291,32 @@ public class UserQueryLogController {
parameters.put("sign", sign); parameters.put("sign", sign);
//访问用户中心查询用户银行卡接口 //访问用户中心查询用户银行卡接口
String resultStr = httpService.post(payCenterUrl + "/ex/search/card_list", parameters); String resultStr = httpService.post(payCenterUrl + "/ex/search/card_list", parameters);
try{ try {
JsonObject obj = new JsonParser().parse(resultStr).getAsJsonObject(); JsonObject obj = new JsonParser().parse(resultStr).getAsJsonObject();
if(obj.get("data")!=null) { if (obj.get("data") != null) {
JsonObject data1 = obj.get("data").getAsJsonObject(); JsonObject data1 = obj.get("data").getAsJsonObject();
String dataStr=data1.get("data").getAsString(); String dataStr = data1.get("data").getAsString();
String signStr=data1.get("sign").getAsString(); String signStr = data1.get("sign").getAsString();
//校验签名 //校验签名
if(MD5Util.build(dataStr).equals(signStr)){ if (MD5Util.build(dataStr).equals(signStr)) {
String jsonDataStr=RSA.decrypt(dataStr,PRIVATE_KEY); String jsonDataStr = RSA.decrypt(dataStr, PRIVATE_KEY);
JsonArray listObj = new JsonParser().parse(jsonDataStr).getAsJsonArray(); JsonArray listObj = new JsonParser().parse(jsonDataStr).getAsJsonArray();
for(JsonElement jsonElement : listObj) { for (JsonElement jsonElement : listObj) {
JsonObject jo = jsonElement.getAsJsonObject(); JsonObject jo = jsonElement.getAsJsonObject();
JsonArray cardList = jo.get("cardList").getAsJsonArray(); JsonArray cardList = jo.get("cardList").getAsJsonArray();
String phone = jo.get("phone").getAsString(); String phone = jo.get("phone").getAsString();
String cards=""; String cards = "";
for(JsonElement element : cardList){ for (JsonElement element : cardList) {
cards=cards+element.getAsString()+";"; cards = cards + element.getAsString() + ";";
} }
if(cards.length()>0){ if (cards.length() > 0) {
phonesMap.put(phone,cards.substring(0,cards.length()-1)); phonesMap.put(phone, cards.substring(0, cards.length() - 1));
} }
} }
}else{ } else {
phonesMap.put("errorMsg","签名校验失败!"); phonesMap.put("errorMsg", "签名校验失败!");
LOGGER.info("签名校验失败!"); LOGGER.info("签名校验失败!");
} }
} }
...@@ -333,132 +325,132 @@ public class UserQueryLogController { ...@@ -333,132 +325,132 @@ public class UserQueryLogController {
// LOGGER.info("从支付中心接口返回data为null"); // LOGGER.info("从支付中心接口返回data为null");
// } // }
}catch(Exception e){ } catch (Exception e) {
phonesMap.put("errorMsg","查询银行卡信息接口返回解析异常"); phonesMap.put("errorMsg", "查询银行卡信息接口返回解析异常");
LOGGER.info("查询银行卡信息接口返回解析异常"); LOGGER.info("查询银行卡信息接口返回解析异常");
} }
return phonesMap; return phonesMap;
} }
@RequestMapping("/exportUserInfo") @RequestMapping("/exportUserInfo")
public JsonResult exportExcel(final HttpServletResponse response, HttpServletRequest request,String key,String keyValues, String columns){ public JsonResult exportExcel(final HttpServletResponse response, HttpServletRequest request, String key, String keyValues, String columns) {
String token=request.getHeader(Constants.X_AUTH_TOKEN); String token = request.getHeader(Constants.X_AUTH_TOKEN);
if(StringUtils.isEmpty(token)){ if (StringUtils.isEmpty(token)) {
LOGGER.info("token为空,非法查询"); LOGGER.info("token为空,非法查询");
return JsonResult.buildErrorStateResult("缺少授权信息",null); return JsonResult.buildErrorStateResult("缺少授权信息", null);
} }
String userName=checkUserToken(token); String userName = checkUserToken(token);
if(StringUtils.isEmpty(userName)){ if (StringUtils.isEmpty(userName)) {
return JsonResult.buildErrorStateResult("未授权查询",null); return JsonResult.buildErrorStateResult("未授权查询", null);
} }
//输入enter换行\n //输入enter换行\n
if(org.apache.commons.lang3.StringUtils.isEmpty(keyValues)){ if (org.apache.commons.lang3.StringUtils.isEmpty(keyValues)) {
return JsonResult.buildErrorStateResult("请输入查询条件",null); return JsonResult.buildErrorStateResult("请输入查询条件", null);
} }
List<UserQueryInfo> uqls=new ArrayList<UserQueryInfo>(); List<UserQueryInfo> uqls = new ArrayList<UserQueryInfo>();
String[] values=keyValues.split(";"); String[] values = keyValues.split(";");
List<String> queryV= Arrays.asList(values); List<String> queryV = Arrays.asList(values);
if(queryV!=null&&queryV.size()>3000){ if (queryV != null && queryV.size() > 3000) {
return JsonResult.buildErrorStateResult("查询记录数是"+queryV.size()+",超过3000条限制",null); return JsonResult.buildErrorStateResult("查询记录数是" + queryV.size() + ",超过3000条限制", null);
} }
//如果维度里面没有保护查询条件则加入条件 //如果维度里面没有保护查询条件则加入条件
if(!columns.contains(key)){ if (!columns.contains(key)) {
columns=columns+","+key; columns = columns + "," + key;
} }
List<UserQueryInfo> userQueryInfos=new ArrayList<UserQueryInfo>(); List<UserQueryInfo> userQueryInfos = new ArrayList<UserQueryInfo>();
List<UserDetail> userDetails=new ArrayList<UserDetail>(); List<UserDetail> userDetails = new ArrayList<UserDetail>();
List<Address> addresslist=new ArrayList<Address>(); List<Address> addresslist = new ArrayList<Address>();
HashMap<String,String> phonesCards=new HashMap<String,String>(); HashMap<String, String> phonesCards = new HashMap<String, String>();
if(Objects.equals(key, "userId")){ if (Objects.equals(key, "userId")) {
List<Long> userIds=new ArrayList<Long>(); List<Long> userIds = new ArrayList<Long>();
try{ try {
for(String s:queryV){ for (String s : queryV) {
if(s.length()>8){ if (s.length() > 8) {
return JsonResult.buildErrorStateResult("查询的userId"+s+"长度超过8位",s); return JsonResult.buildErrorStateResult("查询的userId" + s + "长度超过8位", s);
} }
long uid=Long.valueOf(s); long uid = Long.valueOf(s);
userIds.add(uid); userIds.add(uid);
} }
}catch(Exception e){ } catch (Exception e) {
return JsonResult.buildErrorStateResult("查询的userId有误",null); return JsonResult.buildErrorStateResult("查询的userId有误", null);
} }
userDetails=userDetailService.findByUserIdIn(userIds); userDetails = userDetailService.findByUserIdIn(userIds);
}else if(Objects.equals(key,Constants.PHONE_NO)){ } else if (Objects.equals(key, Constants.PHONE_NO)) {
for(String pn:queryV){ for (String pn : queryV) {
if(!ValidationUtil.validatePhoneNo(pn)){ if (!ValidationUtil.validatePhoneNo(pn)) {
return JsonResult.buildErrorStateResult("查询的手机号码"+pn+"格式有误",pn); return JsonResult.buildErrorStateResult("查询的手机号码" + pn + "格式有误", pn);
} }
} }
userDetails=userDetailService.findByPhoneNos(queryV); userDetails = userDetailService.findByPhoneNos(queryV);
}else if(Objects.equals(key,"idNo")){ } else if (Objects.equals(key, "idNo")) {
for(String idno:queryV){ for (String idno : queryV) {
if(!IdcardValidator.is18Idcard(idno)&&!IdcardValidator.is15Idcard(idno)){ if (!IdcardValidator.is18Idcard(idno) && !IdcardValidator.is15Idcard(idno)) {
return JsonResult.buildErrorStateResult("查询的身份证号"+idno+"格式有误",idno); return JsonResult.buildErrorStateResult("查询的身份证号" + idno + "格式有误", idno);
} }
} }
userDetails=userDetailService.findByIdnos(queryV); userDetails = userDetailService.findByIdnos(queryV);
} }
if(columns.contains("bankCard")){ if (columns.contains("bankCard")) {
//需加银行卡信息 //需加银行卡信息
if(key.equals(Constants.PHONE_NO)){ if (key.equals(Constants.PHONE_NO)) {
phonesCards=getBankCardsByPhoneNos(queryV); phonesCards = getBankCardsByPhoneNos(queryV);
}else{ } else {
List<String> phones=new ArrayList<String>(); List<String> phones = new ArrayList<String>();
for(UserDetail uda:userDetails){ for (UserDetail uda : userDetails) {
phones.add(uda.getPhoneNo()); phones.add(uda.getPhoneNo());
} }
phonesCards=getBankCardsByPhoneNos(phones); phonesCards = getBankCardsByPhoneNos(phones);
} }
} }
if(columns.contains("address")){ if (columns.contains("address")) {
List<Long> uidss=new ArrayList<Long>(); List<Long> uidss = new ArrayList<Long>();
//加地址信息 //加地址信息
for(UserDetail ud:userDetails){ for (UserDetail ud : userDetails) {
uidss.add(ud.getUserId()); uidss.add(ud.getUserId());
} }
if(uidss!=null&&uidss.size()>0){ if (uidss != null && uidss.size() > 0) {
addresslist=addressService.findByUserIds(uidss); addresslist = addressService.findByUserIds(uidss);
} }
} }
for(UserDetail ud:userDetails){ for (UserDetail ud : userDetails) {
UserQueryInfo uqi=new UserQueryInfo(); UserQueryInfo uqi = new UserQueryInfo();
if(columns.contains("idNo")){ if (columns.contains("idNo")) {
uqi.setIdNo(ud.getIdNo()); uqi.setIdNo(ud.getIdNo());
} }
if(columns.contains(Constants.PHONE_NO)){ if (columns.contains(Constants.PHONE_NO)) {
uqi.setPhoneNo(ud.getPhoneNo()); uqi.setPhoneNo(ud.getPhoneNo());
} }
if(columns.contains("name")){ if (columns.contains("name")) {
uqi.setName(ud.getName()); uqi.setName(ud.getName());
} }
if(columns.contains("userId")){ if (columns.contains("userId")) {
uqi.setUserId(ud.getUserId()); uqi.setUserId(ud.getUserId());
} }
if(columns.contains("address")){ if (columns.contains("address")) {
Optional<Address> oad=addresslist.stream().filter(addr->Objects.equals(addr.getUserId(), ud.getUserId())).findFirst(); Optional<Address> oad = addresslist.stream().filter(addr -> Objects.equals(addr.getUserId(), ud.getUserId())).findFirst();
if(oad.isPresent()){ if (oad.isPresent()) {
uqi.setAddress(oad.get().toString()); uqi.setAddress(oad.get().toString());
} }
} }
if(columns.contains("bankCard")&&phonesCards!=null){ if (columns.contains("bankCard") && phonesCards != null) {
uqi.setBankCards(phonesCards.get(ud.getPhoneNo())); uqi.setBankCards(phonesCards.get(ud.getPhoneNo()));
} }
uqls.add(uqi); uqls.add(uqi);
...@@ -487,67 +479,65 @@ public class UserQueryLogController { ...@@ -487,67 +479,65 @@ public class UserQueryLogController {
HSSFCell cell = row.createCell(0); HSSFCell cell = row.createCell(0);
cell.setCellValue("userId"); cell.setCellValue("userId");
cell.setCellStyle(style); cell.setCellStyle(style);
cell = row.createCell( 1); cell = row.createCell(1);
cell.setCellValue("手机号"); cell.setCellValue("手机号");
cell.setCellStyle(style); cell.setCellStyle(style);
cell = row.createCell( 2); cell = row.createCell(2);
cell.setCellValue("姓名"); cell.setCellValue("姓名");
cell.setCellStyle(style); cell.setCellStyle(style);
cell = row.createCell( 3); cell = row.createCell(3);
cell.setCellValue("身份证号"); cell.setCellValue("身份证号");
cell.setCellStyle(style); cell.setCellStyle(style);
cell = row.createCell( 4); cell = row.createCell(4);
cell.setCellValue("银行卡号"); cell.setCellValue("银行卡号");
cell.setCellStyle(style); cell.setCellStyle(style);
cell = row.createCell( 5); cell = row.createCell(5);
cell.setCellValue("地址"); cell.setCellValue("地址");
cell.setCellStyle(style); cell.setCellStyle(style);
// 第五步,写入实体数据 实际应用中这些数据从数据库得到, // 第五步,写入实体数据 实际应用中这些数据从数据库得到,
//List list = CreateSimpleExcelToDisk.getStudent(); //List list = CreateSimpleExcelToDisk.getStudent();
for (int i = 0; i < uqls.size(); i++) for (int i = 0; i < uqls.size(); i++) {
{
row = sheet.createRow((int) i + 1); row = sheet.createRow((int) i + 1);
UserQueryInfo user = uqls.get(i); UserQueryInfo user = uqls.get(i);
// 第四步,创建单元格,并设置值 // 第四步,创建单元格,并设置值
if(user!=null&&row!=null){ if (user != null && row != null) {
HSSFCell cell0= row.createCell(0); HSSFCell cell0 = row.createCell(0);
if(cell0!=null){ if (cell0 != null) {
cell0.setCellValue(user.getUserId()==null?" ":String.valueOf(user.getUserId()));//user.getUserId()==null?" ":String.valueOf(user.getUserId()) cell0.setCellValue(user.getUserId() == null ? " " : String.valueOf(user.getUserId()));//user.getUserId()==null?" ":String.valueOf(user.getUserId())
} }
HSSFCell cell1= row.createCell(1); HSSFCell cell1 = row.createCell(1);
if(cell1!=null){ if (cell1 != null) {
cell1.setCellValue(user.getPhoneNo()==null?" ":user.getPhoneNo()); cell1.setCellValue(user.getPhoneNo() == null ? " " : user.getPhoneNo());
} }
HSSFCell cell2= row.createCell(2); HSSFCell cell2 = row.createCell(2);
if(cell2!=null){ if (cell2 != null) {
cell2.setCellValue(user.getName()==null?" ":user.getName()); cell2.setCellValue(user.getName() == null ? " " : user.getName());
} }
HSSFCell cell3= row.createCell(3); HSSFCell cell3 = row.createCell(3);
if(cell3!=null){ if (cell3 != null) {
cell3.setCellValue(user.getIdNo()==null?" ":user.getIdNo()); cell3.setCellValue(user.getIdNo() == null ? " " : user.getIdNo());
} }
HSSFCell cell4= row.createCell(4); HSSFCell cell4 = row.createCell(4);
if(cell4!=null){ if (cell4 != null) {
cell4.setCellValue(user.getBankCards()==null?" ":user.getBankCards()); cell4.setCellValue(user.getBankCards() == null ? " " : user.getBankCards());
} }
HSSFCell cell5= row.createCell(5); HSSFCell cell5 = row.createCell(5);
if(cell5!=null){ if (cell5 != null) {
cell5.setCellValue(user.getAddress()==null?" ":user.getAddress()); cell5.setCellValue(user.getAddress() == null ? " " : user.getAddress());
} }
} }
} }
// 第六步,将文件存到指定位置 // 第六步,将文件存到指定位置
try try {
{ OutputStream output = response.getOutputStream();
OutputStream output=response.getOutputStream();
response.reset(); response.reset();
response.setHeader("Content-disposition", "attachment; filename=users.xlsx"); response.setHeader("Content-disposition", "attachment; filename=users.xlsx");
response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setContentType("application/vnd.ms-excel;charset=utf-8");
...@@ -555,26 +545,24 @@ public class UserQueryLogController { ...@@ -555,26 +545,24 @@ public class UserQueryLogController {
wb.write(output); wb.write(output);
output.close(); output.close();
} } catch (Exception e) {
catch (Exception e)
{
e.printStackTrace(); e.printStackTrace();
} }
return JsonResult.buildSuccessResult("导出成功",null); return JsonResult.buildSuccessResult("导出成功", null);
} }
private String checkUserToken(String token){ private String checkUserToken(String token) {
HashMap<String, String> parameters = new HashMap<>(); HashMap<String, String> parameters = new HashMap<>();
parameters.put("token", token); parameters.put("token", token);
//访问用户中心查询用户银行卡接口 //访问用户中心查询用户银行卡接口
String resultStr = httpService.post(yunyingUrl + "/user/info", parameters); String resultStr = httpService.post(yunyingUrl + "/user/info", parameters);
try{ try {
JsonObject resultUser = new JsonParser().parse(resultStr).getAsJsonObject(); JsonObject resultUser = new JsonParser().parse(resultStr).getAsJsonObject();
if(Objects.equals("0000",resultUser.get("code").getAsString())&&resultUser.get("data").getAsJsonObject()!=null){ if (Objects.equals("0000", resultUser.get("code").getAsString()) && resultUser.get("data").getAsJsonObject() != null) {
String userName=resultUser.get("data").getAsJsonObject().get("user").getAsString(); String userName = resultUser.get("data").getAsJsonObject().get("user").getAsString();
return userName; return userName;
} }
}catch(Exception e){ } catch (Exception e) {
LOGGER.info("解析运营系统用户token返回结果resultStr异常"); LOGGER.info("解析运营系统用户token返回结果resultStr异常");
} }
return ""; return "";
......
...@@ -28,6 +28,7 @@ import static cn.quantgroup.xyqb.constant.UserConstant.USER_ERROR_OR_PASSWORD_ER ...@@ -28,6 +28,7 @@ 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
*/ */
...@@ -75,10 +76,10 @@ public class AppController implements IBaseController { ...@@ -75,10 +76,10 @@ public class AppController implements IBaseController {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
// Todo -- 截止2017-12-08 13:44:00只有52次调用记录,来自222(白条),最近一次:2017-11-11 12:15:53 // Todo -- 截止2017-12-08 13:44:00只有52次调用记录,来自222(白条),最近一次:2017-11-11 12:15:53
LOGGER.info("第三方用户登录 [AppController] login --> loginFrom:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom,channelId,btRegisterChannelId, IPUtil.getRemoteIP(request),idNo,name); LOGGER.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);
} }
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
...@@ -132,7 +133,7 @@ public class AppController implements IBaseController { ...@@ -132,7 +133,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); LOGGER.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) {
user = userRegisterService.register(registerFrom, phoneNo, idNo, name, channelId, btRegisterChannelId); user = userRegisterService.register(registerFrom, phoneNo, idNo, name, channelId, btRegisterChannelId);
...@@ -161,13 +162,13 @@ public class AppController implements IBaseController { ...@@ -161,13 +162,13 @@ public class AppController implements IBaseController {
context.setCreatedFrom(sessionStruct.getValues().getLoginProperties().getCreatedFrom()); context.setCreatedFrom(sessionStruct.getValues().getLoginProperties().getCreatedFrom());
context.setAppChannel(appChannel); context.setAppChannel(appChannel);
loginInfo.setLoginContext(context); loginInfo.setLoginContext(context);
LOGGER.info("第三方用户获取信息登录成功 [AppController] loginSuper --> loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}", registerFrom, phoneNo, appChannel,channelId); LOGGER.info("第三方用户获取信息登录成功 [AppController] loginSuper --> loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}", registerFrom, phoneNo, appChannel, channelId);
/* /*
* 部分免密渠道登录统计,用户中心不需识别,由统计平台来过滤 * 部分免密渠道登录统计,用户中心不需识别,由统计平台来过滤
* 贷款导航(84660);壹账通H5(159384) * 贷款导航(84660);壹账通H5(159384)
*/ */
user.setRegisteredFrom(registerFrom); user.setRegisteredFrom(registerFrom);
UserStatistics statistics = new UserStatistics(user, null,4, channelId); UserStatistics statistics = new UserStatistics(user, null, 4, channelId);
//增加登陆统计发送 //增加登陆统计发送
MqUtils.sendLoanVest(statistics); MqUtils.sendLoanVest(statistics);
...@@ -197,7 +198,7 @@ public class AppController implements IBaseController { ...@@ -197,7 +198,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)); LOGGER.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);
......
...@@ -188,7 +188,7 @@ public class InnerController implements IBaseController { ...@@ -188,7 +188,7 @@ public class InnerController implements IBaseController {
public JsonResult saveUser( public JsonResult saveUser(
String phoneNo, Long registeredFrom, Long createdAt, Long updatedAt, String phoneNo, Long registeredFrom, Long createdAt, Long updatedAt,
String password, String uuid) { String password, String uuid) {
log.info("保存用户,phoneNo:{},registeredFrom;{},uuid:{},createdAt:{},updatedAt:{}", phoneNo, registeredFrom, uuid,createdAt,updatedAt); log.info("保存用户,phoneNo:{},registeredFrom;{},uuid:{},createdAt:{},updatedAt:{}", phoneNo, registeredFrom, uuid, createdAt, updatedAt);
//参数验证 //参数验证
if (StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(phoneNo)) {
return JsonResult.buildErrorStateResult("用户手机号不能为空.", null); return JsonResult.buildErrorStateResult("用户手机号不能为空.", null);
...@@ -266,9 +266,9 @@ public class InnerController implements IBaseController { ...@@ -266,9 +266,9 @@ public class InnerController implements IBaseController {
return JsonResult.buildErrorStateResult("身份证号码错误", null); return JsonResult.buildErrorStateResult("身份证号码错误", null);
} }
User user = userService.findById(userId); User user = userService.findById(userId);
if(Objects.isNull(user)){ if (Objects.isNull(user)) {
return JsonResult.buildErrorStateResult("用户不存在", null); return JsonResult.buildErrorStateResult("用户不存在", null);
}else if(!Objects.equals(user.getPhoneNo(), phoneNo)){ } else if (!Objects.equals(user.getPhoneNo(), phoneNo)) {
return JsonResult.buildErrorStateResult("用户手机号不匹配", null); return JsonResult.buildErrorStateResult("用户手机号不匹配", null);
} }
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
...@@ -276,14 +276,14 @@ public class InnerController implements IBaseController { ...@@ -276,14 +276,14 @@ public class InnerController implements IBaseController {
* 如果已存在记录,则更新 * 如果已存在记录,则更新
*/ */
UserDetail userDetail = userDetailService.findByUserId(userId); UserDetail userDetail = userDetailService.findByUserId(userId);
if(Objects.isNull(userDetail)){ if (Objects.isNull(userDetail)) {
userDetail = userDetailService.findByPhoneNo(phoneNo); userDetail = userDetailService.findByPhoneNo(phoneNo);
// 按手机号查出记录,如果userId非空,说明是存疑数据或是其他用户的信息,停止修改操作,返回失败 // 按手机号查出记录,如果userId非空,说明是存疑数据或是其他用户的信息,停止修改操作,返回失败
if(Objects.nonNull(userDetail) && Objects.nonNull(userDetail.getUserId())){ if (Objects.nonNull(userDetail) && Objects.nonNull(userDetail.getUserId())) {
return JsonResult.buildErrorStateResult("手机号已使用.", null); return JsonResult.buildErrorStateResult("手机号已使用.", null);
} }
} }
if(Objects.isNull(userDetail)){ if (Objects.isNull(userDetail)) {
userDetail = new UserDetail(); userDetail = new UserDetail();
userDetail.setCreatedAt(now); userDetail.setCreatedAt(now);
} }
...@@ -311,10 +311,10 @@ public class InnerController implements IBaseController { ...@@ -311,10 +311,10 @@ public class InnerController implements IBaseController {
public JsonResult findUserDetailByUserId(Long userId) { public JsonResult findUserDetailByUserId(Long userId) {
UserDetail userDetail = null; UserDetail userDetail = null;
// 增加容错性,防备DB中存在的脏数据触发异常 // 增加容错性,防备DB中存在的脏数据触发异常
if(userId != null && userId > 0){ if (userId != null && userId > 0) {
userDetail = userDetailService.findByUserId(userId); userDetail = userDetailService.findByUserId(userId);
} }
if(Objects.isNull(userDetail)) { if (Objects.isNull(userDetail)) {
return JsonResult.buildErrorStateResult("", null); return JsonResult.buildErrorStateResult("", null);
} }
return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail)); return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail));
...@@ -384,6 +384,7 @@ public class InnerController implements IBaseController { ...@@ -384,6 +384,7 @@ public class InnerController implements IBaseController {
/** /**
* 更新用户email和qq * 更新用户email和qq
*
* @param qq * @param qq
* @param email * @param email
* @param userId - 用户主键 * @param userId - 用户主键
...@@ -395,10 +396,10 @@ public class InnerController implements IBaseController { ...@@ -395,10 +396,10 @@ public class InnerController implements IBaseController {
if (Objects.isNull(userId) || userId == 0L) { if (Objects.isNull(userId) || userId == 0L) {
return JsonResult.buildErrorStateResult("userId为空", null); return JsonResult.buildErrorStateResult("userId为空", null);
} }
if(StringUtils.isNotBlank(qq)){ if (StringUtils.isNotBlank(qq)) {
userDetailService.updateUserQQ(userId, qq); userDetailService.updateUserQQ(userId, qq);
} }
if(StringUtils.isNotBlank(email)){ if (StringUtils.isNotBlank(email)) {
userDetailService.updateUserEmail(userId, email); userDetailService.updateUserEmail(userId, email);
} }
return JsonResult.buildSuccessResult(null, null); return JsonResult.buildSuccessResult(null, null);
...@@ -435,7 +436,8 @@ public class InnerController implements IBaseController { ...@@ -435,7 +436,8 @@ public class InnerController implements IBaseController {
return JsonResult.buildErrorStateResult("参数不完整", String.valueOf(userId).concat(":").concat(contactsStr)); return JsonResult.buildErrorStateResult("参数不完整", String.valueOf(userId).concat(":").concat(contactsStr));
} }
log.info("保存用户联系人:userId:{}, contacts:{}", userId, contactsStr); log.info("保存用户联系人:userId:{}, contacts:{}", userId, contactsStr);
List<Contact> contacts = JSONObject.parseObject(contactsStr, new TypeReference<List<Contact>>(){}); List<Contact> contacts = JSONObject.parseObject(contactsStr, new TypeReference<List<Contact>>() {
});
if (CollectionUtils.isEmpty(contacts)) { if (CollectionUtils.isEmpty(contacts)) {
log.info("联系人不能为空"); log.info("联系人不能为空");
return JsonResult.buildErrorStateResult("联系人不能为空", contacts); return JsonResult.buildErrorStateResult("联系人不能为空", contacts);
...@@ -607,7 +609,7 @@ public class InnerController implements IBaseController { ...@@ -607,7 +609,7 @@ public class InnerController implements IBaseController {
Map<String, String> param = builder.build(); Map<String, String> param = builder.build();
String s = httpService.get(queryUrl.concat("/innerapi/user_detail/search_list"), param); String s = httpService.get(queryUrl.concat("/innerapi/user_detail/search_list"), param);
boolean isJson = StringUtils.isNotBlank(s) && s.trim().startsWith("{") && s.trim().endsWith("}"); boolean isJson = StringUtils.isNotBlank(s) && s.trim().startsWith("{") && s.trim().endsWith("}");
if(!isJson){ if (!isJson) {
log.warn("用户详情信息查询结果不完整:{}", s); log.warn("用户详情信息查询结果不完整:{}", s);
JsonResult.buildErrorStateResult("数据不完整", s); JsonResult.buildErrorStateResult("数据不完整", s);
} }
...@@ -659,9 +661,9 @@ public class InnerController implements IBaseController { ...@@ -659,9 +661,9 @@ public class InnerController implements IBaseController {
User user = null; User user = null;
if (!Objects.isNull(id) && id > 0) { if (!Objects.isNull(id) && id > 0) {
user = userService.findById(id); user = userService.findById(id);
}else if (ValidationUtil.validatePhoneNo(phoneNo)) { } else if (ValidationUtil.validatePhoneNo(phoneNo)) {
user = userService.findByPhoneWithCache(phoneNo); user = userService.findByPhoneWithCache(phoneNo);
}else if (StringUtils.isNotBlank(uuid)) { } else if (StringUtils.isNotBlank(uuid)) {
user = userService.findByUuidWithCache(uuid); user = userService.findByUuidWithCache(uuid);
} }
UserDetail userDetail = null; UserDetail userDetail = null;
...@@ -670,7 +672,7 @@ public class InnerController implements IBaseController { ...@@ -670,7 +672,7 @@ public class InnerController implements IBaseController {
} }
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
return JsonResult.buildErrorStateResult("用户不存在", ""); return JsonResult.buildErrorStateResult("用户不存在", "");
}else{ } else {
return JsonResult.buildSuccessResult("", new UserInfo(user, userDetail)); return JsonResult.buildSuccessResult("", new UserInfo(user, userDetail));
} }
} }
...@@ -857,6 +859,7 @@ public class InnerController implements IBaseController { ...@@ -857,6 +859,7 @@ public class InnerController implements IBaseController {
/** /**
* 刷新用户激活状态 * 刷新用户激活状态
*
* @param userId - 用户主键 * @param userId - 用户主键
* @param enable - 用户激活状态 * @param enable - 用户激活状态
* @return * @return
...@@ -884,6 +887,7 @@ public class InnerController implements IBaseController { ...@@ -884,6 +887,7 @@ public class InnerController implements IBaseController {
/** /**
* 清除用户缓存信息 * 清除用户缓存信息
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
...@@ -969,6 +973,7 @@ public class InnerController implements IBaseController { ...@@ -969,6 +973,7 @@ public class InnerController implements IBaseController {
/** /**
* 手机号批量查询uuid * 手机号批量查询uuid
*
* @param userPhones * @param userPhones
* @return * @return
*/ */
...@@ -1121,10 +1126,10 @@ public class InnerController implements IBaseController { ...@@ -1121,10 +1126,10 @@ public class InnerController implements IBaseController {
@RequestParam String appChannel, @RequestParam String appChannel,
@RequestParam(required = false, defaultValue = "1") Long channelId, @RequestParam(required = false, defaultValue = "1") Long channelId,
@RequestParam(required = false, defaultValue = "1") Long createdFrom, @RequestParam(required = false, defaultValue = "1") Long createdFrom,
@RequestParam(required = false,defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false)Long btRegisterChannelId, @RequestParam(required = false) Long btRegisterChannelId,
@RequestParam(required = false) String dimension) { @RequestParam(required = false) String dimension) {
log.info("/innerapi/verifyPhoneAndCode -> phoneNo:{},verificationCode:{},channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{}",phoneNo,verificationCode,channelId,appChannel,createdFrom,btRegisterChannelId,key,dimension); log.info("/innerapi/verifyPhoneAndCode -> phoneNo:{},verificationCode:{},channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{}", phoneNo, verificationCode, channelId, appChannel, createdFrom, btRegisterChannelId, key, dimension);
// 验证接入方 // 验证接入方
Merchant merchant = merchantService.findMerchantByName(key); Merchant merchant = merchantService.findMerchantByName(key);
if (merchant == null) { if (merchant == null) {
...@@ -1138,7 +1143,7 @@ public class InnerController implements IBaseController { ...@@ -1138,7 +1143,7 @@ public class InnerController implements IBaseController {
// 验证短信验证码 // 验证短信验证码
if (!smsService.verifyPhoneAndCode(phoneNo, verificationCode)) { if (!smsService.verifyPhoneAndCode(phoneNo, verificationCode)) {
// 是否需要重新获取 // 是否需要重新获取
if(smsService.needResendCode(phoneNo)){ if (smsService.needResendCode(phoneNo)) {
return JsonResult.buildErrorStateResult("验证码失效,请重新获取", ""); return JsonResult.buildErrorStateResult("验证码失效,请重新获取", "");
} }
log.info("验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode); log.info("验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode);
...@@ -1147,19 +1152,19 @@ public class InnerController implements IBaseController { ...@@ -1147,19 +1152,19 @@ public class InnerController implements IBaseController {
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo);
// 检查用户有效性 // 检查用户有效性
if (user != null && !user.getEnable()) { if (user != null && !user.getEnable()) {
log.error("用户不存在,或者已经注销,phoneNo:{}",phoneNo); log.error("用户不存在,或者已经注销,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("登录失败", null); return JsonResult.buildErrorStateResult("登录失败", null);
} }
// 用户不存在时自动注册 // 用户不存在时自动注册
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
user = userRegisterService.register(phoneNo, channelId, createdFrom, appChannel,btRegisterChannelId,dimension); user = userRegisterService.register(phoneNo, channelId, createdFrom, appChannel, btRegisterChannelId, dimension);
// 注册失败 // 注册失败
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
return JsonResult.buildErrorStateResult("用户不存在", ""); return JsonResult.buildErrorStateResult("用户不存在", "");
} }
} }
//增加登陆统计发送 //增加登陆统计发送
UserStatistics statistics=new UserStatistics(user,dimension,3,channelId); UserStatistics statistics = new UserStatistics(user, dimension, 3, channelId);
MqUtils.sendLoanVest(statistics); MqUtils.sendLoanVest(statistics);
return JsonResult.buildSuccessResult("校验成功", new UserRet(user)); return JsonResult.buildSuccessResult("校验成功", new UserRet(user));
} }
...@@ -1230,6 +1235,7 @@ public class InnerController implements IBaseController { ...@@ -1230,6 +1235,7 @@ public class InnerController implements IBaseController {
/** /**
* 激活/启用 用户 * 激活/启用 用户
* -- 供内部系统免密调用 * -- 供内部系统免密调用
*
* @param userId * @param userId
* @return * @return
*/ */
...@@ -1245,6 +1251,7 @@ public class InnerController implements IBaseController { ...@@ -1245,6 +1251,7 @@ public class InnerController implements IBaseController {
/** /**
* 注销/禁用 用户 * 注销/禁用 用户
* -- 供内部系统免密调用 * -- 供内部系统免密调用
*
* @param userId * @param userId
* @return * @return
*/ */
...@@ -1260,6 +1267,7 @@ public class InnerController implements IBaseController { ...@@ -1260,6 +1267,7 @@ public class InnerController implements IBaseController {
/** /**
* 重置用户实名信息接口 * 重置用户实名信息接口
* -- 供内部系统免密调用 * -- 供内部系统免密调用
*
* @param userId - 用户主键 * @param userId - 用户主键
* @param idNo - 身份证号 * @param idNo - 身份证号
* @param name - 姓名 * @param name - 姓名
...@@ -1269,7 +1277,7 @@ public class InnerController implements IBaseController { ...@@ -1269,7 +1277,7 @@ public class InnerController implements IBaseController {
@RequestMapping(path = "/userDetail/reset/{userId}", method = RequestMethod.POST) @RequestMapping(path = "/userDetail/reset/{userId}", method = RequestMethod.POST)
public JsonResult resetName(@PathVariable("userId") Long userId, @RequestParam("name") String name, @RequestParam("idNo") String idNo) { public JsonResult resetName(@PathVariable("userId") Long userId, @RequestParam("name") String name, @RequestParam("idNo") String idNo) {
log.info("重置用户实名信息 userId:{},name:{},idNo:{}", userId, name, idNo); log.info("重置用户实名信息 userId:{},name:{},idNo:{}", userId, name, idNo);
if(Objects.nonNull(userId) && ValidationUtil.validateChinese(name)){ if (Objects.nonNull(userId) && ValidationUtil.validateChinese(name)) {
try { try {
User user = userService.findById(userId); User user = userService.findById(userId);
int rows = userDetailService.updateIdCard(name, idNo, user.getPhoneNo()); int rows = userDetailService.updateIdCard(name, idNo, user.getPhoneNo());
...@@ -1279,7 +1287,7 @@ public class InnerController implements IBaseController { ...@@ -1279,7 +1287,7 @@ public class InnerController implements IBaseController {
log.error("用户姓名重置失败,userId[{}],name[{}],err:[{}]", userId, name, e); log.error("用户姓名重置失败,userId[{}],name[{}],err:[{}]", userId, name, e);
} }
return JsonResult.buildErrorStateResult("用户姓名重置失败.", "Error data"); return JsonResult.buildErrorStateResult("用户姓名重置失败.", "Error data");
}else{ } else {
return JsonResult.buildErrorStateResult("用户姓名重置失败.", "Error data"); return JsonResult.buildErrorStateResult("用户姓名重置失败.", "Error data");
} }
} }
...@@ -1292,13 +1300,13 @@ public class InnerController implements IBaseController { ...@@ -1292,13 +1300,13 @@ public class InnerController implements IBaseController {
@ApiOperation(notes = "重置密码接口 - 供内部系统免密调用", value = "重置密码", nickname = "resetPassword") @ApiOperation(notes = "重置密码接口 - 供内部系统免密调用", value = "重置密码", nickname = "resetPassword")
@RequestMapping(path = "/user/password/reset", method = RequestMethod.POST) @RequestMapping(path = "/user/password/reset", method = RequestMethod.POST)
public JsonResult resetPassword(@RequestParam("phone") String phone) { public JsonResult resetPassword(@RequestParam("phone") String phone) {
if(ValidationUtil.validatePhoneNo(phone)){ if (ValidationUtil.validatePhoneNo(phone)) {
try { try {
// 默认重置的密码是123456 // 默认重置的密码是123456
String password = "123456"; String password = "123456";
boolean result = userService.resetPassword(phone, password); boolean result = userService.resetPassword(phone, password);
log.info("重置用户密码,phoneNo:[{}],password:[{}],result:[{}]", phone, password, result); log.info("重置用户密码,phoneNo:[{}],password:[{}],result:[{}]", phone, password, result);
if(result){ if (result) {
return JsonResult.buildSuccessResult("用户密码已重置.", password); return JsonResult.buildSuccessResult("用户密码已重置.", password);
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -1357,6 +1365,7 @@ public class InnerController implements IBaseController { ...@@ -1357,6 +1365,7 @@ public class InnerController implements IBaseController {
/** /**
* 注销/禁用 用户 * 注销/禁用 用户
* -- 供内部人员使用(例如绝影) * -- 供内部人员使用(例如绝影)
*
* @param phoneNo * @param phoneNo
* @param enable * @param enable
* @param reason * @param reason
...@@ -1391,6 +1400,7 @@ public class InnerController implements IBaseController { ...@@ -1391,6 +1400,7 @@ public class InnerController implements IBaseController {
/** /**
* 清除微信关联 * 清除微信关联
* -- 供内部人员使用(例如绝影) * -- 供内部人员使用(例如绝影)
*
* @param userId * @param userId
* @param reason * @param reason
* @param content * @param content
......
...@@ -83,7 +83,7 @@ public class SyncUserController { ...@@ -83,7 +83,7 @@ public class SyncUserController {
} }
String phoneNo = userDetail.getPhoneNo(); String phoneNo = userDetail.getPhoneNo();
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo);
if(Objects.isNull(user)){ if (Objects.isNull(user)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
userDetail.setUserId(user.getId()); userDetail.setUserId(user.getId());
...@@ -91,16 +91,16 @@ public class SyncUserController { ...@@ -91,16 +91,16 @@ public class SyncUserController {
* 如果已存在记录,则更新 * 如果已存在记录,则更新
*/ */
UserDetail theUserDetail = userDetailService.findByUserId(user.getId()); UserDetail theUserDetail = userDetailService.findByUserId(user.getId());
if(Objects.isNull(theUserDetail)){ if (Objects.isNull(theUserDetail)) {
theUserDetail = userDetailService.findByPhoneNo(phoneNo); theUserDetail = userDetailService.findByPhoneNo(phoneNo);
// 按手机号查出记录,如果userId非空,说明是存疑数据或是其他用户的信息,停止修改操作,返回失败 // 按手机号查出记录,如果userId非空,说明是存疑数据或是其他用户的信息,停止修改操作,返回失败
if(Objects.nonNull(theUserDetail) && Objects.nonNull(theUserDetail.getUserId())){ if (Objects.nonNull(theUserDetail) && Objects.nonNull(theUserDetail.getUserId())) {
return JsonResult.buildErrorStateResult("手机号已使用.", null); return JsonResult.buildErrorStateResult("手机号已使用.", null);
} }
} }
if(Objects.isNull(theUserDetail)){ if (Objects.isNull(theUserDetail)) {
userDetail.setId(null); userDetail.setId(null);
}else { } else {
userDetail.setId(theUserDetail.getId()); userDetail.setId(theUserDetail.getId());
} }
userDetailService.saveUserDetail(userDetail); userDetailService.saveUserDetail(userDetail);
......
...@@ -88,23 +88,23 @@ public class UserApiController { ...@@ -88,23 +88,23 @@ public class UserApiController {
@RequestMapping(value = "/valid/{token}", method = RequestMethod.POST) @RequestMapping(value = "/valid/{token}", method = RequestMethod.POST)
public JsonResult checkToken(@ApiParam(value = "sid,session的id", required = true) @PathVariable("token") String token, public JsonResult checkToken(@ApiParam(value = "sid,session的id", required = true) @PathVariable("token") String token,
@ApiParam(value = "是否延续生命期,可选参数,默认为: false - 不延续", required = false) @RequestParam(name = "prolong", required = false, defaultValue = "false") Boolean prolong) { @ApiParam(value = "是否延续生命期,可选参数,默认为: false - 不延续", required = false) @RequestParam(name = "prolong", required = false, defaultValue = "false") Boolean prolong) {
if(Objects.isNull(token) || !ValidationUtil.validateToken(token)){ if (Objects.isNull(token) || !ValidationUtil.validateToken(token)) {
return JsonResult.buildErrorStateResult("token invalid", token); return JsonResult.buildErrorStateResult("token invalid", token);
} }
String tokenKey = Constants.SESSION_PREFIX + token; String tokenKey = Constants.SESSION_PREFIX + token;
String tokenKey2 = Constants.Session.USER_SESSION_CACHE + token; String tokenKey2 = Constants.Session.USER_SESSION_CACHE + token;
// 判断token是否存在 // 判断token是否存在
boolean exist = stringRedisTemplate.hasKey(tokenKey)||stringRedisTemplate.hasKey(tokenKey2); boolean exist = stringRedisTemplate.hasKey(tokenKey) || stringRedisTemplate.hasKey(tokenKey2);
log.info("检查token:[{}]有效性[{}],延续生命期[{}]", token, exist, prolong); log.info("检查token:[{}]有效性[{}],延续生命期[{}]", token, exist, prolong);
/* token存在且需要延续时,进一步判断session是否有效,有效时,自动续期 */ /* token存在且需要延续时,进一步判断session是否有效,有效时,自动续期 */
if(Boolean.logicalAnd(exist, prolong)){ if (Boolean.logicalAnd(exist, prolong)) {
// 获取session信息 // 获取session信息
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token);
if(Objects.isNull(sessionStruct)) { if (Objects.isNull(sessionStruct)) {
log.info("延续token:[{}]生命期,result:[{}],SessionStruct:{}", token, false, sessionStruct); log.info("延续token:[{}]生命期,result:[{}],SessionStruct:{}", token, false, sessionStruct);
/* 如果没有获取到session信息则返回错误信息 */ /* 如果没有获取到session信息则返回错误信息 */
return JsonResult.buildErrorStateResult("session invalid", token); return JsonResult.buildErrorStateResult("session invalid", token);
}else{ } else {
/* 延续session生命期 */ /* 延续session生命期 */
try { try {
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues()); sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues());
...@@ -114,9 +114,9 @@ public class UserApiController { ...@@ -114,9 +114,9 @@ public class UserApiController {
} }
} }
} }
if(exist){ if (exist) {
return JsonResult.buildSuccessResult("token valid", token); return JsonResult.buildSuccessResult("token valid", token);
}else{ } else {
return JsonResult.buildErrorStateResult("token invalid", token); return JsonResult.buildErrorStateResult("token invalid", token);
} }
} }
......
...@@ -14,7 +14,6 @@ import cn.quantgroup.xyqb.service.user.IUserService; ...@@ -14,7 +14,6 @@ import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.service.wechat.IWechatService; import cn.quantgroup.xyqb.service.wechat.IWechatService;
import cn.quantgroup.xyqb.util.EmojiUtil; import cn.quantgroup.xyqb.util.EmojiUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
...@@ -185,7 +184,8 @@ public class WeChatController implements IBaseController { ...@@ -185,7 +184,8 @@ public class WeChatController implements IBaseController {
LOGGER.info("从微信extdata版本接口进入:{}, extData:{}", schema, extData); LOGGER.info("从微信extdata版本接口进入:{}, extData:{}", schema, extData);
HashMap<String, Object> extDataObj; HashMap<String, Object> extDataObj;
try { try {
extDataObj = JSON.parseObject(extData, new TypeReference<HashMap<String, Object>>(){}); extDataObj = JSON.parseObject(extData, new TypeReference<HashMap<String, Object>>() {
});
} catch (Exception ex) { } catch (Exception ex) {
LOGGER.error("解析extData发生错误", ex); LOGGER.error("解析extData发生错误", ex);
receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, response); receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, response);
...@@ -201,6 +201,7 @@ public class WeChatController implements IBaseController { ...@@ -201,6 +201,7 @@ public class WeChatController implements IBaseController {
/** /**
* 前端微信跳转页面 * 前端微信跳转页面
*
* @param code * @param code
* @param systemKey * @param systemKey
* @param schema * @param schema
...@@ -208,7 +209,7 @@ public class WeChatController implements IBaseController { ...@@ -208,7 +209,7 @@ public class WeChatController implements IBaseController {
* @param redirect * @param redirect
* @param response * @param response
*/ */
private void receiveCodeWithDefault(String code, String systemKey, String schema, Long registerFrom, String redirect, HttpServletResponse response){ private void receiveCodeWithDefault(String code, String systemKey, String schema, Long registerFrom, String redirect, HttpServletResponse response) {
// 微信跳转请求入参监控 // 微信跳转请求入参监控
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
LOGGER.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:code:{},systemKey:{},schema:{},registerFrom:{},redirect:{},request:{}", code, systemKey, schema, registerFrom, redirect, JSON.toJSONString(getRequestHeaderMap(request))); LOGGER.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:code:{},systemKey:{},schema:{},registerFrom:{},redirect:{},request:{}", code, systemKey, schema, registerFrom, redirect, JSON.toJSONString(getRequestHeaderMap(request)));
...@@ -219,7 +220,7 @@ public class WeChatController implements IBaseController { ...@@ -219,7 +220,7 @@ public class WeChatController implements IBaseController {
redirect = Optional.ofNullable(redirect).orElse(""); redirect = Optional.ofNullable(redirect).orElse("");
schema = StringUtils.isBlank(schema) ? getProtocol() : schema; schema = StringUtils.isBlank(schema) ? getProtocol() : schema;
String domain = userUiDomain; String domain = userUiDomain;
if(Objects.equals(schema, "https:")){ if (Objects.equals(schema, "https:")) {
domain = userUiDomainS; domain = userUiDomainS;
} }
// 从code获取token // 从code获取token
...@@ -228,7 +229,7 @@ public class WeChatController implements IBaseController { ...@@ -228,7 +229,7 @@ public class WeChatController implements IBaseController {
LOGGER.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:merchant:{},token:{}", merchant, token); LOGGER.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:merchant:{},token:{}", merchant, token);
if (Objects.isNull(token) || StringUtils.isBlank(token.getOpenId())) { if (Objects.isNull(token) || StringUtils.isBlank(token.getOpenId())) {
// 让用户登录,不关联微信, 构造不关联微信的url // 让用户登录,不关联微信, 构造不关联微信的url
redirectNormalUrl(response, merchant, registerFrom,domain); redirectNormalUrl(response, merchant, registerFrom, domain);
return; return;
} }
// 获取已授权信息 - db // 获取已授权信息 - db
...@@ -249,9 +250,9 @@ public class WeChatController implements IBaseController { ...@@ -249,9 +250,9 @@ public class WeChatController implements IBaseController {
String nickName = EmojiUtil.filterUnicode4(userInfo.getNickName()); String nickName = EmojiUtil.filterUnicode4(userInfo.getNickName());
userInfo.setNickName(nickName); userInfo.setNickName(nickName);
} }
try{ try {
userInfo = wechatService.saveWechatUserInfo(userInfo); userInfo = wechatService.saveWechatUserInfo(userInfo);
}catch (Exception e){ } catch (Exception e) {
LOGGER.warn("微信用户首次登陆,保存userInfo异常,执行操作:Nick置为*并重新保存.", e); LOGGER.warn("微信用户首次登陆,保存userInfo异常,执行操作:Nick置为*并重新保存.", e);
userInfo.setNickName(EmojiUtil.BYTE_4_REPLACE_TEMPLATE); userInfo.setNickName(EmojiUtil.BYTE_4_REPLACE_TEMPLATE);
userInfo = wechatService.saveWechatUserInfo(userInfo); userInfo = wechatService.saveWechatUserInfo(userInfo);
...@@ -288,14 +289,14 @@ public class WeChatController implements IBaseController { ...@@ -288,14 +289,14 @@ public class WeChatController implements IBaseController {
Long registerFrom = null; Long registerFrom = null;
String redirect = null; String redirect = null;
String schema = "http:"; String schema = "http:";
if(Objects.equals("https:", request.getScheme())){ if (Objects.equals("https:", request.getScheme())) {
schema = "https:"; schema = "https:";
} }
receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, response); receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, response);
} }
private String createUserSession(User user, Merchant merchant, String redirect, String domain, Long registerFrom) { private String createUserSession(User user, Merchant merchant, String redirect, String domain, Long registerFrom) {
LOGGER.info("[WeChatController][createUserSession]微信授权及跳转:user:{},merchant:{},redirect:{},domain:{},registerFrom:{}",user, merchant, redirect, domain, registerFrom); LOGGER.info("[WeChatController][createUserSession]微信授权及跳转:user:{},merchant:{},redirect:{},domain:{},registerFrom:{}", user, merchant, redirect, domain, registerFrom);
if (StringUtils.isEmpty(redirect) || "redirect".equals(redirect)) { if (StringUtils.isEmpty(redirect) || "redirect".equals(redirect)) {
LOGGER.info("微信登录:redirect为null,走正常流程."); LOGGER.info("微信登录:redirect为null,走正常流程.");
if ("baitiao".equals(merchant.getName())) { if ("baitiao".equals(merchant.getName())) {
...@@ -320,29 +321,29 @@ public class WeChatController implements IBaseController { ...@@ -320,29 +321,29 @@ public class WeChatController implements IBaseController {
private String loginInWechatWithSessionCreated(User user, Merchant merchant, String target, Long channelId, String domain, Long registerFrom) { private String loginInWechatWithSessionCreated(User user, Merchant merchant, String target, Long channelId, String domain, Long registerFrom) {
AuthBean authBean = sessionService.createSession(channelId, registerFrom, "", user, merchant); AuthBean authBean = sessionService.createSession(channelId, registerFrom, "", user, merchant);
LOGGER.info("[WeChatController][loginInWechatWithSessionCreated]微信授权及跳转:user:{},merchant:{},target:{},channelId:{},domain:{},registerFrom:{}",user, merchant, target, channelId, domain, registerFrom); LOGGER.info("[WeChatController][loginInWechatWithSessionCreated]微信授权及跳转:user:{},merchant:{},target:{},channelId:{},domain:{},registerFrom:{}", user, merchant, target, channelId, domain, registerFrom);
return domain + "/landing?token=" + authBean.getToken() + "&registerFrom=" + registerFrom + "&channelId=" + channelId + "&key=" + merchant.getName() + "&target=" + target; return domain + "/landing?token=" + authBean.getToken() + "&registerFrom=" + registerFrom + "&channelId=" + channelId + "&key=" + merchant.getName() + "&target=" + target;
} }
private void redirectWechatLoginUrlWithoutLogin(HttpServletResponse response, Merchant merchant, WechatUserInfo userInfo, Long registerFrom,String domain) { private void redirectWechatLoginUrlWithoutLogin(HttpServletResponse response, Merchant merchant, WechatUserInfo userInfo, Long registerFrom, String domain) {
String redirectUrl = assembleWechatRedirectUrl(merchant, userInfo, registerFrom,domain); String redirectUrl = assembleWechatRedirectUrl(merchant, userInfo, registerFrom, domain);
LOGGER.info("[WeChatController][redirectWechatLoginUrlWithoutLogin]微信授权及跳转:redirectUrl:[{}]",redirectUrl); LOGGER.info("[WeChatController][redirectWechatLoginUrlWithoutLogin]微信授权及跳转:redirectUrl:[{}]", redirectUrl);
response.setHeader("Location", redirectUrl); response.setHeader("Location", redirectUrl);
response.setStatus(301); response.setStatus(301);
} }
private void redirectNormalUrl(HttpServletResponse response, Merchant merchant, Long registerFrom,String domain) { private void redirectNormalUrl(HttpServletResponse response, Merchant merchant, Long registerFrom, String domain) {
String redirectUrl = assembleNormalRedirectUrl(merchant, registerFrom,domain); String redirectUrl = assembleNormalRedirectUrl(merchant, registerFrom, domain);
LOGGER.info("[WeChatController][redirectNormalUrl]微信授权及跳转: redirectUrl:[{}]",redirectUrl); LOGGER.info("[WeChatController][redirectNormalUrl]微信授权及跳转: redirectUrl:[{}]", redirectUrl);
response.setHeader("Location", redirectUrl); response.setHeader("Location", redirectUrl);
response.setStatus(301); response.setStatus(301);
} }
private String assembleNormalRedirectUrl(Merchant merchant, Long registerFrom,String domain) { private String assembleNormalRedirectUrl(Merchant merchant, Long registerFrom, String domain) {
if ("baitiao".equals(merchant.getName())) { if ("baitiao".equals(merchant.getName())) {
if(registerFrom == 58L || registerFrom == 198L){ if (registerFrom == 58L || registerFrom == 198L) {
return domain + "/landing?key=baitiao&target=cashTarget5&channelId=222&registerFrom="+registerFrom; return domain + "/landing?key=baitiao&target=cashTarget5&channelId=222&registerFrom=" + registerFrom;
}else{ } else {
return domain + "/landing?key=baitiao&target=cashTarget5&channelId=222&registerFrom=198"; return domain + "/landing?key=baitiao&target=cashTarget5&channelId=222&registerFrom=198";
} }
} else if ("wechat-pay".equals(merchant.getName())) { } else if ("wechat-pay".equals(merchant.getName())) {
...@@ -352,11 +353,11 @@ public class WeChatController implements IBaseController { ...@@ -352,11 +353,11 @@ public class WeChatController implements IBaseController {
} }
} }
private String assembleWechatRedirectUrl(Merchant merchant, WechatUserInfo userInfo, Long registerFrom,String domain) { private String assembleWechatRedirectUrl(Merchant merchant, WechatUserInfo userInfo, Long registerFrom, String domain) {
if ("baitiao".equals(merchant.getName())) { if ("baitiao".equals(merchant.getName())) {
if(registerFrom == 58L || registerFrom == 198L){ if (registerFrom == 58L || registerFrom == 198L) {
return domain + "/landing?key=baitiao&target=cashTarget5&registerFrom=" + registerFrom + "&channelId=222&isWechat=true&openId=" + userInfo.getOpenId(); return domain + "/landing?key=baitiao&target=cashTarget5&registerFrom=" + registerFrom + "&channelId=222&isWechat=true&openId=" + userInfo.getOpenId();
}else{ } else {
return domain + "/landing?key=baitiao&target=cashTarget5&registerFrom=198&channelId=222&isWechat=true&openId=" + userInfo.getOpenId(); return domain + "/landing?key=baitiao&target=cashTarget5&registerFrom=198&channelId=222&isWechat=true&openId=" + userInfo.getOpenId();
} }
} else if ("wechat-pay".equals(merchant.getName())) { } else if ("wechat-pay".equals(merchant.getName())) {
...@@ -367,11 +368,11 @@ public class WeChatController implements IBaseController { ...@@ -367,11 +368,11 @@ public class WeChatController implements IBaseController {
} }
@RequestMapping("/active_redirect") @RequestMapping("/active_redirect")
public void forwardWechatRequest(HttpServletRequest request,HttpServletResponse response){ public void forwardWechatRequest(HttpServletRequest request, HttpServletResponse response) {
String redirectUrl = xyqbDomainStr+"/api/coupon/activity/wechat/rent_house/bargain?"; String redirectUrl = xyqbDomainStr + "/api/coupon/activity/wechat/rent_house/bargain?";
Enumeration<String> parameterNames = request.getParameterNames(); Enumeration<String> parameterNames = request.getParameterNames();
ImmutableList.Builder<String> builder = ImmutableList.builder(); ImmutableList.Builder<String> builder = ImmutableList.builder();
while (parameterNames.hasMoreElements()){ while (parameterNames.hasMoreElements()) {
String name = parameterNames.nextElement(); String name = parameterNames.nextElement();
builder.add(name.concat("=").concat(request.getParameter(name))); builder.add(name.concat("=").concat(request.getParameter(name)));
} }
......
package cn.quantgroup.xyqb.controller.external.user.center; package cn.quantgroup.xyqb.controller.external.user.center;
import cn.quantgroup.user.enums.EducationEnum;
import cn.quantgroup.user.enums.IncomeRangeEnum;
import cn.quantgroup.user.enums.MaritalStatus;
import cn.quantgroup.user.enums.OccupationEnum;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.limit.PasswordFreeAccessValidator; import cn.quantgroup.xyqb.aspect.limit.PasswordFreeAccessValidator;
import cn.quantgroup.xyqb.entity.*; import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.user.*; import cn.quantgroup.xyqb.service.user.*;
import cn.quantgroup.xyqb.util.EmojiUtil; import cn.quantgroup.xyqb.util.EmojiUtil;
...@@ -18,7 +21,10 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -18,7 +21,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.*; import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/** /**
* Created by 11 on 2017/3/22. * Created by 11 on 2017/3/22.
...@@ -44,6 +50,7 @@ public class UserCenterController { ...@@ -44,6 +50,7 @@ public class UserCenterController {
/** /**
* 用户中心首页,显示用户头像、昵称、姓名 * 用户中心首页,显示用户头像、昵称、姓名
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
...@@ -51,53 +58,54 @@ public class UserCenterController { ...@@ -51,53 +58,54 @@ public class UserCenterController {
@RequestMapping("/index") @RequestMapping("/index")
public JsonResult userCenterIndex(String phoneNo) { public JsonResult userCenterIndex(String phoneNo) {
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) { if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId); UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
Map<String, String> result = new HashMap<>(); Map<String, String> result = new HashMap<>();
if(userAttached != null) { if (userAttached != null) {
result.put("avatar", userAttached.getAvatar()); result.put("avatar", userAttached.getAvatar());
result.put("nick", userAttached.getNick()); result.put("nick", userAttached.getNick());
} }
UserDetail userDetail = userDetailService.findByUserId(userId); UserDetail userDetail = userDetailService.findByUserId(userId);
if(userDetail != null) { if (userDetail != null) {
result.put("name", userDetail.getName()); result.put("name", userDetail.getName());
result.put("sex", Optional.ofNullable(userDetail.getGender()).orElse(cn.quantgroup.xyqb.model.Gender.UNKNOWN).ordinal() + ""); result.put("sex", Optional.ofNullable(userDetail.getGender()).orElse(cn.quantgroup.xyqb.model.Gender.UNKNOWN).ordinal() + "");
result.put(Constants.PHONE_NO, userDetail.getPhoneNo().substring(0,3)+"****"+userDetail.getPhoneNo().substring(7,11)); result.put(Constants.PHONE_NO, userDetail.getPhoneNo().substring(0, 3) + "****" + userDetail.getPhoneNo().substring(7, 11));
} }
return JsonResult.buildSuccessResult(null, result); return JsonResult.buildSuccessResult(null, result);
} }
/** /**
* 上传后调用该接口保存用户头像 * 上传后调用该接口保存用户头像
*
* @param phoneNo 用户手机号 * @param phoneNo 用户手机号
* @param avatarUrl 上传后生成的头像地址 * @param avatarUrl 上传后生成的头像地址
* @return * @return
*/ */
@RequestMapping("/save/avatar") @RequestMapping("/save/avatar")
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); LOGGER.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, 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) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
if(StringUtils.isBlank(avatarUrl)) { if (StringUtils.isBlank(avatarUrl)) {
avatarUrl = Constants.UserAvatar.AVATAR_DEFAULT; avatarUrl = Constants.UserAvatar.AVATAR_DEFAULT;
} }
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId); UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
//查询到数据,直接更新头像和更新时间 //查询到数据,直接更新头像和更新时间
if(null != userAttached) { if (null != userAttached) {
userAttached.setAvatar(avatarUrl); userAttached.setAvatar(avatarUrl);
userAttached.setUpdatedAt(new Timestamp(System.currentTimeMillis())); userAttached.setUpdatedAt(new Timestamp(System.currentTimeMillis()));
} else { } else {
userAttached = createUserAttached(userId, avatarUrl, ""); userAttached = createUserAttached(userId, avatarUrl, "");
} }
UserAttached result = userCenterService.saveUserAttached(userAttached); UserAttached result = userCenterService.saveUserAttached(userAttached);
if(null == userAttached) { if (null == userAttached) {
LOGGER.error("保存用户头像昵称失败."); LOGGER.error("保存用户头像昵称失败.");
return JsonResult.buildErrorStateResult("信息保存失败,请稍后再试.", null); return JsonResult.buildErrorStateResult("信息保存失败,请稍后再试.", null);
} }
...@@ -106,21 +114,22 @@ public class UserCenterController { ...@@ -106,21 +114,22 @@ public class UserCenterController {
/** /**
* 根据用户手机号查询昵称. * 根据用户手机号查询昵称.
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
@RequestMapping("/queryNick") @RequestMapping("/queryNick")
public JsonResult queryUserNick(String phoneNo) { public JsonResult queryUserNick(String phoneNo) {
if(StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); LOGGER.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) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId); UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
if(null != userAttached) { if (null != userAttached) {
LOGGER.info("获取用户昵称:{}", userAttached.getNick()); LOGGER.info("获取用户昵称:{}", userAttached.getNick());
return JsonResult.buildSuccessResult(null, userAttached.getNick()); return JsonResult.buildSuccessResult(null, userAttached.getNick());
} }
...@@ -129,18 +138,19 @@ public class UserCenterController { ...@@ -129,18 +138,19 @@ public class UserCenterController {
/** /**
* 修改用户的昵称 * 修改用户的昵称
*
* @param phoneNo * @param phoneNo
* @param nick * @param nick
* @return * @return
*/ */
@RequestMapping("/saveNick") @RequestMapping("/saveNick")
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); LOGGER.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) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
if (StringUtils.isNotBlank(nick)) { if (StringUtils.isNotBlank(nick)) {
...@@ -148,7 +158,7 @@ public class UserCenterController { ...@@ -148,7 +158,7 @@ public class UserCenterController {
nick = EmojiUtil.filterUnicode4(nick); nick = EmojiUtil.filterUnicode4(nick);
} }
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId); UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
if(null == userAttached) { if (null == userAttached) {
userAttached = createUserAttached(userId, "", nick); userAttached = createUserAttached(userId, "", nick);
} else { } else {
userAttached.setNick(nick); userAttached.setNick(nick);
...@@ -160,48 +170,49 @@ public class UserCenterController { ...@@ -160,48 +170,49 @@ public class UserCenterController {
/** /**
* 查询用户是否实名认证. * 查询用户是否实名认证.
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
@RequestMapping("/query/verified") @RequestMapping("/query/verified")
public JsonResult queryVerified(String phoneNo) { public JsonResult queryVerified(String phoneNo) {
if(StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); LOGGER.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) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
UserDetail userDetail = userDetailService.findByUserId(userId); UserDetail userDetail = userDetailService.findByUserId(userId);
if(null != userDetail) { if (null != userDetail) {
return JsonResult.buildSuccessResult(null, userDetail); return JsonResult.buildSuccessResult(null, userDetail);
} }
return JsonResult.buildSuccessResult(null, null); return JsonResult.buildSuccessResult(null, null);
} }
/** /**
* 个人资料信息 * 个人资料信息
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
@PasswordFreeAccessValidator @PasswordFreeAccessValidator
@RequestMapping("/personalData") @RequestMapping("/personalData")
public JsonResult personalData(String phoneNo) { public JsonResult personalData(String phoneNo) {
if(StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); LOGGER.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) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId); UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
List<Contact> contacts = contactService.findByUserId(userId, true); List<Contact> contacts = contactService.findByUserId(userId, true);
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
if(null != userExtInfo) { if (null != userExtInfo) {
result.put("contacts", null != contacts && contacts.size() > 0 ? true : false); result.put("contacts", null != contacts && contacts.size() > 0 ? true : false);
result.put("occupation", userExtInfo.getOccupationEnum() == null ? "" : userExtInfo.getOccupationEnum().ordinal()); result.put("occupation", userExtInfo.getOccupationEnum() == null ? "" : userExtInfo.getOccupationEnum().ordinal());
result.put("education", userExtInfo.getEducationEnum() == null ? "" : userExtInfo.getEducationEnum().ordinal()); result.put("education", userExtInfo.getEducationEnum() == null ? "" : userExtInfo.getEducationEnum().ordinal());
...@@ -209,7 +220,7 @@ public class UserCenterController { ...@@ -209,7 +220,7 @@ public class UserCenterController {
result.put("marryStatus", userExtInfo.getMarryStatus() == null ? "" : userExtInfo.getMarryStatus().ordinal()); result.put("marryStatus", userExtInfo.getMarryStatus() == null ? "" : userExtInfo.getMarryStatus().ordinal());
} }
Address address = addressService.findByUserId(userId); Address address = addressService.findByUserId(userId);
if(null != address) { if (null != address) {
//用户住址信息,返回二级信息: //用户住址信息,返回二级信息:
result.put("address", address.getAddress()); result.put("address", address.getAddress());
result.put("provinceCode", address.getProvinceCode()); result.put("provinceCode", address.getProvinceCode());
...@@ -224,31 +235,33 @@ public class UserCenterController { ...@@ -224,31 +235,33 @@ public class UserCenterController {
/** /**
* 保存用户联系人, * 保存用户联系人,
*
* @param phoneNo 用户手机号 * @param phoneNo 用户手机号
* @param contactJson 要保存的联系人json串 * @param contactJson 要保存的联系人json串
* @return * @return
*/ */
@RequestMapping("/contacts/save") @RequestMapping("/contacts/save")
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); LOGGER.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); LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
if(StringUtils.isEmpty(contactJson)) { if (StringUtils.isEmpty(contactJson)) {
LOGGER.error("保存联系人,联系人参数为空.contactJson:{}", contactJson); LOGGER.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("联系人不能空"); LOGGER.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()); LOGGER.info("用户手机号或姓名错误, phoneNo:{},name:{}", contact.getPhoneNo(), contact.getName());
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
...@@ -260,6 +273,7 @@ public class UserCenterController { ...@@ -260,6 +273,7 @@ public class UserCenterController {
/** /**
* 保存用户住址信息 * 保存用户住址信息
*
* @param province * @param province
* @param provinceCode * @param provinceCode
* @param city * @param city
...@@ -275,13 +289,13 @@ public class UserCenterController { ...@@ -275,13 +289,13 @@ public class UserCenterController {
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); LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
//查询用户是否有保存地址信息 //查询用户是否有保存地址信息
Address addressInfo = addressService.findByUserId(userId); Address addressInfo = addressService.findByUserId(userId);
if(null == addressInfo) { if (null == addressInfo) {
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
addressInfo = new Address(); addressInfo = new Address();
addressInfo.setCreatedAt(now); addressInfo.setCreatedAt(now);
...@@ -307,16 +321,17 @@ public class UserCenterController { ...@@ -307,16 +321,17 @@ public class UserCenterController {
/** /**
* 查询用户住址信息 * 查询用户住址信息
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
@RequestMapping("/searchAddress/phoneNo") @RequestMapping("/searchAddress/phoneNo")
public JsonResult searchUserAddress(String phoneNo) { public JsonResult searchUserAddress(String phoneNo) {
if(StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) { if (null == userId || userId == 0L) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId); LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
...@@ -326,16 +341,17 @@ public class UserCenterController { ...@@ -326,16 +341,17 @@ public class UserCenterController {
/** /**
* 查询用户联系人 * 查询用户联系人
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
@RequestMapping("/searchContacts/phoneNo") @RequestMapping("/searchContacts/phoneNo")
public JsonResult searchUserContacts(String phoneNo) { public JsonResult searchUserContacts(String phoneNo) {
if(StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) { if (null == userId || userId == 0L) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId); LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
...@@ -345,6 +361,7 @@ public class UserCenterController { ...@@ -345,6 +361,7 @@ public class UserCenterController {
/** /**
* 保存用户经济信息 * 保存用户经济信息
*
* @param educationEnum 学历 * @param educationEnum 学历
* @param occupationEnum 职业 * @param occupationEnum 职业
* @param incomeRangeEnum 月收入范围 * @param incomeRangeEnum 月收入范围
...@@ -353,18 +370,18 @@ public class UserCenterController { ...@@ -353,18 +370,18 @@ public class UserCenterController {
*/ */
@RequestMapping("/save/userExtInfo") @RequestMapping("/save/userExtInfo")
public JsonResult saveUserExtInfo(String phoneNo, EducationEnum educationEnum, MaritalStatus maritalStatus, IncomeRangeEnum incomeRangeEnum, OccupationEnum occupationEnum) { public JsonResult saveUserExtInfo(String phoneNo, EducationEnum educationEnum, MaritalStatus maritalStatus, IncomeRangeEnum incomeRangeEnum, OccupationEnum occupationEnum) {
if(StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) { if (null == userId || userId == 0L) {
LOGGER.error("保存用户经济信息,未获取到用户id. userId:{}", userId); LOGGER.error("保存用户经济信息,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
//查询用户是否保存过. //查询用户是否保存过.
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId); UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
if(null == userExtInfo) { if (null == userExtInfo) {
userExtInfo = new UserExtInfo(); userExtInfo = new UserExtInfo();
userExtInfo.setUserId(userId); userExtInfo.setUserId(userId);
} }
...@@ -381,6 +398,7 @@ public class UserCenterController { ...@@ -381,6 +398,7 @@ public class UserCenterController {
/** /**
* 创建用户附加信息实体 * 创建用户附加信息实体
*
* @param userId * @param userId
* @param avatar * @param avatar
* @param nick * @param nick
...@@ -400,6 +418,7 @@ public class UserCenterController { ...@@ -400,6 +418,7 @@ public class UserCenterController {
/** /**
* 根据手机号查询用户id, nodejs调用接口无法获取到userId. * 根据手机号查询用户id, nodejs调用接口无法获取到userId.
* 所以增加该接口来查询用户id * 所以增加该接口来查询用户id
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
......
...@@ -6,13 +6,9 @@ import cn.quantgroup.xyqb.model.JsonResult; ...@@ -6,13 +6,9 @@ import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserRet; import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.session.LoginInfo; import cn.quantgroup.xyqb.model.session.LoginInfo;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
import cn.quantgroup.xyqb.service.user.IUserService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -32,7 +28,7 @@ public class AuthInfoController implements IBaseController { ...@@ -32,7 +28,7 @@ public class AuthInfoController implements IBaseController {
@RequestMapping("/info/login") @RequestMapping("/info/login")
public JsonResult loginInfo(HttpServletRequest request) { public JsonResult loginInfo(HttpServletRequest request) {
SessionStruct sessionStruct = getCurrentSessionFromRedis(); SessionStruct sessionStruct = getCurrentSessionFromRedis();
if(null != sessionStruct) { if (null != sessionStruct) {
log.info("从用户中心获取到了用户登录信息:phone:[{}]", sessionStruct.getValues().getUser().getPhoneNo()); log.info("从用户中心获取到了用户登录信息:phone:[{}]", sessionStruct.getValues().getUser().getPhoneNo());
LoginInfo loginInfo = new LoginInfo(); LoginInfo loginInfo = new LoginInfo();
loginInfo.setUser(new UserRet(sessionStruct.getValues().getUser())); loginInfo.setUser(new UserRet(sessionStruct.getValues().getUser()));
...@@ -48,7 +44,7 @@ public class AuthInfoController implements IBaseController { ...@@ -48,7 +44,7 @@ public class AuthInfoController implements IBaseController {
return JsonResult.buildSuccessResult("", loginInfo); return JsonResult.buildSuccessResult("", loginInfo);
} }
log.info("[/auth/info/login] 未查到用户登录信息, request-Header:{}", JSON.toJSONString(getRequestHeaderMap(request))); log.info("[/auth/info/login] 未查到用户登录信息, request-Header:{}", JSON.toJSONString(getRequestHeaderMap(request)));
return JsonResult.buildErrorStateResult("用户未登录",null); return JsonResult.buildErrorStateResult("用户未登录", null);
} }
} }
...@@ -4,18 +4,13 @@ import cn.quantgroup.xyqb.controller.IBaseController; ...@@ -4,18 +4,13 @@ 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;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.Tuple; import cn.quantgroup.xyqb.model.Tuple;
import cn.quantgroup.xyqb.service.merchant.IMerchantService; import cn.quantgroup.xyqb.service.merchant.IMerchantService;
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.user.IUserDetailService; import cn.quantgroup.xyqb.service.user.IUserDetailService;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import java.util.HashMap;
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.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
...@@ -57,7 +52,7 @@ public class PlatformAPIController implements IBaseController { ...@@ -57,7 +52,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 ("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()));
} }
......
...@@ -49,6 +49,7 @@ public class SmsController implements IBaseController { ...@@ -49,6 +49,7 @@ public class SmsController implements IBaseController {
private static final Long PHONE_MAX_PER_DAY = 20L;//手机号短信上限 private static final Long PHONE_MAX_PER_DAY = 20L;//手机号短信上限
private static final Long PHONE_VOICE_MAX_PER_DAY = 5L;//手机号语音上限 private static final Long PHONE_VOICE_MAX_PER_DAY = 5L;//手机号语音上限
private static final Long DEVICE_MAX_PER_DAY = 20L;//设备每天上限 private static final Long DEVICE_MAX_PER_DAY = 20L;//设备每天上限
/** /**
* 短信验证码: for H5 * 短信验证码: for H5
* 使用 @FPLock 注解并加入自定义限制参数, 做针对手机号的发送次数限制 * 使用 @FPLock 注解并加入自定义限制参数, 做针对手机号的发送次数限制
...@@ -62,14 +63,15 @@ public class SmsController implements IBaseController { ...@@ -62,14 +63,15 @@ public class SmsController implements IBaseController {
@RequestMapping("/send_sms_verification_code") @RequestMapping("/send_sms_verification_code")
public JsonResult verifyPhoneNoH5(@RequestParam String phoneNo, public JsonResult verifyPhoneNoH5(@RequestParam String phoneNo,
@RequestParam(required = false) String registerFrom, @RequestParam(required = false) String registerFrom,
@RequestParam(required = false,defaultValue = "")String appName, @RequestParam(required = false, defaultValue = "") String appName,
@RequestParam(required = false) String smsMerchant) { @RequestParam(required = false) String smsMerchant) {
LOGGER.info("注册-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("注册-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
return sendVerificationCode2(phoneNo,appName, smsMerchant); return sendVerificationCode2(phoneNo, appName, smsMerchant);
} }
/** /**
* 短信验证码 : 重置密码 * 短信验证码 : 重置密码
*
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @param registerFrom - * @param registerFrom -
* @param appName - * @param appName -
...@@ -80,10 +82,10 @@ public class SmsController implements IBaseController { ...@@ -80,10 +82,10 @@ public class SmsController implements IBaseController {
@RequestMapping("/send_reset_code") @RequestMapping("/send_reset_code")
public JsonResult resetPasswordH5(@RequestParam String phoneNo, public JsonResult resetPasswordH5(@RequestParam String phoneNo,
@RequestParam(required = false) String registerFrom, @RequestParam(required = false) String registerFrom,
@RequestParam(required = false,defaultValue = "")String appName, @RequestParam(required = false, defaultValue = "") String appName,
@RequestParam(required = false) String smsMerchant) { @RequestParam(required = false) String smsMerchant) {
LOGGER.info("重置密码-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("重置密码-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
return sendVerificationCode2(phoneNo,appName, smsMerchant); return sendVerificationCode2(phoneNo, appName, smsMerchant);
} }
/** /**
...@@ -140,10 +142,10 @@ public class SmsController implements IBaseController { ...@@ -140,10 +142,10 @@ public class SmsController implements IBaseController {
@RequestMapping("/send_login_code") @RequestMapping("/send_login_code")
public JsonResult sendLoginCode(@RequestParam String phoneNo, public JsonResult sendLoginCode(@RequestParam String phoneNo,
@RequestParam(required = false) String registerFrom, @RequestParam(required = false) String registerFrom,
@RequestParam(required = false,defaultValue = "")String appName, @RequestParam(required = false, defaultValue = "") String appName,
@RequestParam(required = false) String smsMerchant) { @RequestParam(required = false) String smsMerchant) {
LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
return sendVerificationCode2(phoneNo,appName, smsMerchant); return sendVerificationCode2(phoneNo, appName, smsMerchant);
} }
/** /**
...@@ -157,10 +159,10 @@ public class SmsController implements IBaseController { ...@@ -157,10 +159,10 @@ public class SmsController implements IBaseController {
@RequestMapping("/send_regist_code") @RequestMapping("/send_regist_code")
public JsonResult sendRegistCode(@RequestParam String phoneNo, public JsonResult sendRegistCode(@RequestParam String phoneNo,
@RequestParam(required = false) String registerFrom, @RequestParam(required = false) String registerFrom,
@RequestParam(required = false,defaultValue = "")String appName, @RequestParam(required = false, defaultValue = "") String appName,
@RequestParam(required = false) String smsMerchant) { @RequestParam(required = false) String smsMerchant) {
LOGGER.info("快速注册-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("快速注册-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
return sendVerificationCode2(phoneNo,appName, smsMerchant); return sendVerificationCode2(phoneNo, appName, smsMerchant);
} }
/** /**
...@@ -171,7 +173,7 @@ public class SmsController implements IBaseController { ...@@ -171,7 +173,7 @@ public class SmsController implements IBaseController {
* @param smsMerchant - 短信模板/类型 * @param smsMerchant - 短信模板/类型
* @return * @return
*/ */
private JsonResult sendVerificationCode2(String phoneNo,String appName, String smsMerchant) { private JsonResult sendVerificationCode2(String phoneNo, String appName, String smsMerchant) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号格式有误", null); return JsonResult.buildErrorStateResult("手机号格式有误", null);
} }
...@@ -257,6 +259,7 @@ public class SmsController implements IBaseController { ...@@ -257,6 +259,7 @@ public class SmsController implements IBaseController {
/** /**
* 快速登陆发送短信验证码 * 快速登陆发送短信验证码
*
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @param registerFrom - * @param registerFrom -
* @param deviceId - * @param deviceId -
...@@ -268,13 +271,15 @@ public class SmsController implements IBaseController { ...@@ -268,13 +271,15 @@ public class SmsController implements IBaseController {
public JsonResult sendLoginSmsCodeNew(@RequestParam String phoneNo, public JsonResult sendLoginSmsCodeNew(@RequestParam String phoneNo,
@RequestParam(required = false) String registerFrom, @RequestParam(required = false) String registerFrom,
@RequestParam(required = false) String deviceId, @RequestParam(required = false) String deviceId,
@RequestParam(required = false,defaultValue = "")String appName, @RequestParam(required = false, defaultValue = "") String appName,
@RequestParam(required = false) String smsMerchant) { @RequestParam(required = false) String smsMerchant) {
LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
return sendVerificationCode2New(phoneNo, deviceId, true,appName, smsMerchant); return sendVerificationCode2New(phoneNo, deviceId, true, appName, smsMerchant);
} }
/** /**
* 快速登陆发送短信验证码 * 快速登陆发送短信验证码
*
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @param registerFrom - * @param registerFrom -
* @param deviceId - * @param deviceId -
...@@ -286,10 +291,10 @@ public class SmsController implements IBaseController { ...@@ -286,10 +291,10 @@ public class SmsController implements IBaseController {
public JsonResult sendLoginSmsCodeNewForH5(@RequestParam String phoneNo, public JsonResult sendLoginSmsCodeNewForH5(@RequestParam String phoneNo,
@RequestParam(required = false) String registerFrom, @RequestParam(required = false) String registerFrom,
@RequestParam(required = false) String deviceId, @RequestParam(required = false) String deviceId,
@RequestParam(required = false,defaultValue = "")String appName, @RequestParam(required = false, defaultValue = "") String appName,
@RequestParam(required = false) String smsMerchant) { @RequestParam(required = false) String smsMerchant) {
LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom); LOGGER.info("快速登陆-发送验证码, phoneNo:{}, registerFrom:{}", phoneNo, registerFrom);
return sendVerificationCode2New(phoneNo, deviceId, false,appName, smsMerchant); return sendVerificationCode2New(phoneNo, deviceId, false, appName, smsMerchant);
} }
/** /**
...@@ -302,12 +307,12 @@ public class SmsController implements IBaseController { ...@@ -302,12 +307,12 @@ public class SmsController implements IBaseController {
* @param smsMerchant - 短信模板/类型 * @param smsMerchant - 短信模板/类型
* @return * @return
*/ */
private JsonResult sendVerificationCode2New(String phoneNo, String deviceId, boolean isApp,String appName, String smsMerchant) { private JsonResult sendVerificationCode2New(String phoneNo, String deviceId, boolean isApp, String appName, String smsMerchant) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号格式有误", null); return JsonResult.buildErrorStateResult("手机号格式有误", null);
} }
String clientIp = getIp(); String clientIp = getIp();
LOGGER.info("请求短信新版本接口:phoneNo:{},deviceId:{},IP:{}",phoneNo,deviceId,clientIp); LOGGER.info("请求短信新版本接口:phoneNo:{},deviceId:{},IP:{}", phoneNo, deviceId, clientIp);
// 手机号计数器 // 手机号计数器
Long getPhoneVerificationCount = redisTemplate.opsForHash().increment(Constants.REDIS_SMS_CODE_COUNT, phoneNo, 1); Long getPhoneVerificationCount = redisTemplate.opsForHash().increment(Constants.REDIS_SMS_CODE_COUNT, phoneNo, 1);
redisTemplate.expire(Constants.REDIS_SMS_CODE_COUNT, DateUtils.getSeconds(), TimeUnit.SECONDS); redisTemplate.expire(Constants.REDIS_SMS_CODE_COUNT, DateUtils.getSeconds(), TimeUnit.SECONDS);
...@@ -342,7 +347,7 @@ public class SmsController implements IBaseController { ...@@ -342,7 +347,7 @@ public class SmsController implements IBaseController {
String key = Constants.REDIS_PREFIX_VERIFICATION_CODE + phoneNo; String key = Constants.REDIS_PREFIX_VERIFICATION_CODE + phoneNo;
long expire = redisTemplate.getExpire(key, TimeUnit.MINUTES); long expire = redisTemplate.getExpire(key, TimeUnit.MINUTES);
if (expire >= EXPIRE_MINUTES - 1) { if (expire >= EXPIRE_MINUTES - 1) {
LOGGER.info("sendVerificationCode2New1分钟内不能重复获取验证码:phoneNo:{},deviceId:{},ip:{}",phoneNo,deviceId,clientIp); LOGGER.info("sendVerificationCode2New1分钟内不能重复获取验证码:phoneNo:{},deviceId:{},ip:{}", phoneNo, deviceId, clientIp);
return JsonResult.buildErrorStateResult("1分钟内不能重复获取验证码", null); return JsonResult.buildErrorStateResult("1分钟内不能重复获取验证码", null);
} }
String randomCode = smsIsDebug ? "0000" : String.valueOf(random.nextInt(8999) + 1000); String randomCode = smsIsDebug ? "0000" : String.valueOf(random.nextInt(8999) + 1000);
...@@ -364,13 +369,13 @@ public class SmsController implements IBaseController { ...@@ -364,13 +369,13 @@ public class SmsController implements IBaseController {
redisTemplate.opsForValue().set(key, uniqueId + ":" + randomCode, EXPIRE_MINUTES, TimeUnit.MINUTES); redisTemplate.opsForValue().set(key, uniqueId + ":" + randomCode, EXPIRE_MINUTES, TimeUnit.MINUTES);
//删除用户重置密码,多次错误逻辑 //删除用户重置密码,多次错误逻辑
deleteRetSendCode(phoneNo); deleteRetSendCode(phoneNo);
if(isApp && needImageVlidate(clientIp,deviceId,phoneNo)){ if (isApp && needImageVlidate(clientIp, deviceId, phoneNo)) {
return JsonResult.buildSuccessResult("发送成功", uniqueId,0003L); return JsonResult.buildSuccessResult("发送成功", uniqueId, 0003L);
} }
LOGGER.info("sendVerificationCode2New获取短信成功:phone:{},deviceId:{},ip:{}",phoneNo,deviceId,clientIp); LOGGER.info("sendVerificationCode2New获取短信成功:phone:{},deviceId:{},ip:{}", phoneNo, deviceId, clientIp);
return JsonResult.buildSuccessResult("发送成功", uniqueId); return JsonResult.buildSuccessResult("发送成功", uniqueId);
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("发送短信验证码失败:phone:{},deviceId:{},ip:{}",phoneNo,deviceId,clientIp); LOGGER.error("发送短信验证码失败:phone:{},deviceId:{},ip:{}", phoneNo, deviceId, clientIp);
return JsonResult.buildErrorStateResult("发送失败", null); return JsonResult.buildErrorStateResult("发送失败", null);
} }
} }
...@@ -386,7 +391,7 @@ public class SmsController implements IBaseController { ...@@ -386,7 +391,7 @@ public class SmsController implements IBaseController {
return JsonResult.buildErrorStateResult("usage参数无效", null); return JsonResult.buildErrorStateResult("usage参数无效", null);
} }
String clientIp = getIp(); String clientIp = getIp();
LOGGER.info("请求短信新版本接口:phoneNo:{},deviceId:{},usage:{},IP:{}",phoneNo,deviceId,usage,clientIp); LOGGER.info("请求短信新版本接口:phoneNo:{},deviceId:{},usage:{},IP:{}", phoneNo, deviceId, usage, clientIp);
// 手机号计数器 // 手机号计数器
String verificationCountKey = Constants.REDIS_VOICE_CODE_COUNT + usage; String verificationCountKey = Constants.REDIS_VOICE_CODE_COUNT + usage;
Long getPhoneVerificationCount = redisTemplate.opsForHash().increment(verificationCountKey, phoneNo, 1); Long getPhoneVerificationCount = redisTemplate.opsForHash().increment(verificationCountKey, phoneNo, 1);
...@@ -401,7 +406,7 @@ public class SmsController implements IBaseController { ...@@ -401,7 +406,7 @@ public class SmsController implements IBaseController {
// IP计数器 // IP计数器
Long getIPVerificationCount = 0L; Long getIPVerificationCount = 0L;
if (StringUtils.isNotBlank(clientIp)) { if (StringUtils.isNotBlank(clientIp)) {
String verificationIPCountKey = Constants.REDIS_VOICE_IP_COUNT+clientIp; String verificationIPCountKey = Constants.REDIS_VOICE_IP_COUNT + clientIp;
getIPVerificationCount = redisTemplate.opsForHash().increment(Constants.REDIS_VOICE_IP_COUNT, verificationIPCountKey, 1); getIPVerificationCount = redisTemplate.opsForHash().increment(Constants.REDIS_VOICE_IP_COUNT, verificationIPCountKey, 1);
redisTemplate.expire(Constants.REDIS_VOICE_IP_COUNT, DateUtils.getSeconds(), TimeUnit.SECONDS); redisTemplate.expire(Constants.REDIS_VOICE_IP_COUNT, DateUtils.getSeconds(), TimeUnit.SECONDS);
} }
...@@ -434,9 +439,9 @@ public class SmsController implements IBaseController { ...@@ -434,9 +439,9 @@ public class SmsController implements IBaseController {
redisTemplate.opsForValue().set(key, uniqueId + ":" + randomCode, EXPIRE_MINUTES, TimeUnit.MINUTES); redisTemplate.opsForValue().set(key, uniqueId + ":" + randomCode, EXPIRE_MINUTES, TimeUnit.MINUTES);
//删除用户重置密码,多次错误逻辑 //删除用户重置密码,多次错误逻辑
deleteRetSendCode(phoneNo); deleteRetSendCode(phoneNo);
if(needImageVlidate(clientIp,deviceId,phoneNo)){ if (needImageVlidate(clientIp, deviceId, phoneNo)) {
return JsonResult.buildSuccessResult("发送成功", uniqueId,0003L); return JsonResult.buildSuccessResult("发送成功", uniqueId, 0003L);
} }
return JsonResult.buildSuccessResult("发送成功", uniqueId); return JsonResult.buildSuccessResult("发送成功", uniqueId);
} catch (Exception e) { } catch (Exception e) {
...@@ -447,6 +452,7 @@ public class SmsController implements IBaseController { ...@@ -447,6 +452,7 @@ public class SmsController implements IBaseController {
/** /**
* 判断下次是否提示图形验证码 * 判断下次是否提示图形验证码
*
* @param clientIp * @param clientIp
* @param deviceId * @param deviceId
* @param phoneNo * @param phoneNo
...@@ -460,7 +466,7 @@ public class SmsController implements IBaseController { ...@@ -460,7 +466,7 @@ public class SmsController implements IBaseController {
Long ip = StringUtils.isBlank(countIP) ? 1L : Long.valueOf(countIP); Long ip = StringUtils.isBlank(countIP) ? 1L : Long.valueOf(countIP);
Long devId = StringUtils.isBlank(countDeviceId) ? 1L : Long.valueOf(countDeviceId); Long devId = StringUtils.isBlank(countDeviceId) ? 1L : Long.valueOf(countDeviceId);
Long phNo = StringUtils.isBlank(countPhoneNo) ? 1L : Long.valueOf(countPhoneNo); Long phNo = StringUtils.isBlank(countPhoneNo) ? 1L : Long.valueOf(countPhoneNo);
if (ip >= Constants.Image_Need_Count || devId >= Constants.Image_Need_Count || phNo >= Constants.Image_Need_Count ) { if (ip >= Constants.Image_Need_Count || devId >= Constants.Image_Need_Count || phNo >= Constants.Image_Need_Count) {
need = true; need = true;
} }
return need; return need;
...@@ -468,10 +474,11 @@ public class SmsController implements IBaseController { ...@@ -468,10 +474,11 @@ public class SmsController implements IBaseController {
/** /**
* 删除用户重置密码时短信验证错误 * 删除用户重置密码时短信验证错误
*
* @param phoneNo * @param phoneNo
*/ */
private void deleteRetSendCode(String phoneNo){ private void deleteRetSendCode(String phoneNo) {
String verificationCountKey = Constants.REDIS_VERIFICATION_COUNT+phoneNo; String verificationCountKey = Constants.REDIS_VERIFICATION_COUNT + phoneNo;
redisTemplate.opsForHash().delete(verificationCountKey, Constants.REDIS_VERIFICATION_COUNT); redisTemplate.opsForHash().delete(verificationCountKey, Constants.REDIS_VERIFICATION_COUNT);
} }
......
...@@ -40,7 +40,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -40,7 +40,10 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.*; import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
/** /**
* Http服务接口:用户注册、登录、重置密码 * Http服务接口:用户注册、登录、重置密码
...@@ -103,10 +106,10 @@ public class UserController implements IBaseController { ...@@ -103,10 +106,10 @@ public class UserController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel, @RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel,
@RequestParam(required = false, defaultValue = "1") Long createdFrom, @RequestParam(required = false, defaultValue = "1") Long createdFrom,
@RequestParam(required = false, defaultValue = "") String userId, @RequestParam(required = false, defaultValue = "") String userId,
@RequestParam(required = false,defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false) String dimension, @RequestParam(required = false) String dimension,
HttpServletRequest request) { HttpServletRequest request) {
log.info("loginV1 -> channelId:{},appChennel:{},createdFrom:{},userId:{},key:{},dimension:{}",channelId, appChannel, createdFrom, userId, key, dimension); log.info("loginV1 -> channelId:{},appChennel:{},createdFrom:{},userId:{},key:{},dimension:{}", channelId, appChannel, createdFrom, userId, key, dimension);
return login(channelId, appChannel, createdFrom, userId, key, dimension, request); return login(channelId, appChannel, createdFrom, userId, key, dimension, request);
} }
...@@ -117,18 +120,18 @@ public class UserController implements IBaseController { ...@@ -117,18 +120,18 @@ public class UserController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel, @RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel,
@RequestParam(required = false, defaultValue = "1") Long createdFrom, @RequestParam(required = false, defaultValue = "1") Long createdFrom,
@RequestParam(required = false, defaultValue = "") String userId, @RequestParam(required = false, defaultValue = "") String userId,
@RequestParam(required = false,defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false) String dimension, @RequestParam(required = false) String dimension,
HttpServletRequest request) { HttpServletRequest request) {
log.info("login -> channelId:{},appChannel:{},createdFrom:{},userId:{},key:{},dimension:{}",channelId,appChannel,createdFrom,userId,key,dimension); log.info("login -> channelId:{},appChannel:{},createdFrom:{},userId:{},key:{},dimension:{}", channelId, appChannel, createdFrom, userId, key, dimension);
Merchant merchant = merchantService.findMerchantByName(key); Merchant merchant = merchantService.findMerchantByName(key);
if (merchant == null) { if (merchant == null) {
return JsonResult.buildErrorStateResult("未知的连接", null); return JsonResult.buildErrorStateResult("未知的连接", null);
} }
if (!StringUtils.isEmpty(userId) && userId.length() > 10) { if (!StringUtils.isEmpty(userId) && userId.length() > 10) {
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);
} }
} }
...@@ -150,12 +153,12 @@ public class UserController implements IBaseController { ...@@ -150,12 +153,12 @@ public class UserController implements IBaseController {
public JsonResult loginFastV1( public JsonResult loginFastV1(
@RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel, @RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel,
@RequestParam(required = false, defaultValue = "1") Long createdFrom, @RequestParam(required = false, defaultValue = "1") Long createdFrom,
@RequestParam(required = false,defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false) Long btRegisterChannelId, @RequestParam(required = false) Long btRegisterChannelId,
@RequestParam(required = false) String dimension, @RequestParam(required = false) String dimension,
@RequestParam(name = "click_id", required = false) String clickId, @RequestParam(name = "click_id", required = false) String clickId,
HttpServletRequest request) { HttpServletRequest request) {
log.info("login/fastV1 -> channelId:{},appChennel:{},createdFrom:{},key:{},btRegisterChannelId:{},dimension:{},clickId:{}",channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId); log.info("login/fastV1 -> channelId:{},appChennel:{},createdFrom:{},key:{},btRegisterChannelId:{},dimension:{},clickId:{}", channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId);
return loginFast(channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId, request); return loginFast(channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId, request);
} }
...@@ -163,13 +166,13 @@ public class UserController implements IBaseController { ...@@ -163,13 +166,13 @@ public class UserController implements IBaseController {
public JsonResult loginFast( public JsonResult loginFast(
@RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel, @RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel,
@RequestParam(required = false, defaultValue = "1") Long createdFrom, @RequestParam(required = false, defaultValue = "1") Long createdFrom,
@RequestParam(required = false,defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false)Long btRegisterChannelId, @RequestParam(required = false) Long btRegisterChannelId,
@RequestParam(required = false) String dimension, @RequestParam(required = false) String dimension,
@RequestParam(name = "click_id", required = false) String clickId, @RequestParam(name = "click_id", required = false) String clickId,
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")) { if (null != validMap.get("fail")) {
return validMap.get("fail"); return validMap.get("fail");
} }
...@@ -188,23 +191,23 @@ public class UserController implements IBaseController { ...@@ -188,23 +191,23 @@ public class UserController implements IBaseController {
verifyPhoneAndCode(phoneNo, verificationCode); verifyPhoneAndCode(phoneNo, verificationCode);
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo);
if (user != null && !user.getEnable()) { if (user != null && !user.getEnable()) {
log.error("用户不存在,或者已经注销,phoneNo:{}",phoneNo); log.error("用户不存在,或者已经注销,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("登录失败", null); return JsonResult.buildErrorStateResult("登录失败", null);
} }
if (user == null) { if (user == null) {
// Service层会负责发送注册消息到LoanVest // Service层会负责发送注册消息到LoanVest
user = userRegisterService.register(phoneNo, channelId, createdFrom, appChannel,btRegisterChannelId,dimension); user = userRegisterService.register(phoneNo, channelId, createdFrom, appChannel, btRegisterChannelId, dimension);
if (user == null) { if (user == null) {
throw new UserNotExistException("用户未找到"); throw new UserNotExistException("用户未找到");
} }
//广点通转化注册 - 发送消息 - 方法内过滤 //广点通转化注册 - 发送消息 - 方法内过滤
MqUtils.sendRegisterMessageForGdt(phoneNo, clickId); MqUtils.sendRegisterMessageForGdt(phoneNo, clickId);
} }
if(!wechatRelateUserIfNecessary(user, request)){ if (!wechatRelateUserIfNecessary(user, request)) {
return JsonResult.buildErrorStateResult("登录时微信关联失败", null); return JsonResult.buildErrorStateResult("登录时微信关联失败", null);
} }
//增加登陆统计发送 //增加登陆统计发送
UserStatistics statistics = new UserStatistics(user,dimension,3,channelId); UserStatistics statistics = new UserStatistics(user, dimension, 3, channelId);
MqUtils.sendLoanVest(statistics); MqUtils.sendLoanVest(statistics);
return new JsonResult(sessionService.createSession(channelId, createdFrom, appChannel, user, merchant)); return new JsonResult(sessionService.createSession(channelId, createdFrom, appChannel, user, merchant));
} }
...@@ -259,8 +262,8 @@ public class UserController implements IBaseController { ...@@ -259,8 +262,8 @@ public class UserController implements IBaseController {
public JsonResult register(@RequestParam String phoneNo, @RequestParam String password, public JsonResult register(@RequestParam String phoneNo, @RequestParam String password,
@RequestParam String verificationCode, @RequestParam(required = false) Long channelId, @RequestParam String verificationCode, @RequestParam(required = false) Long channelId,
@RequestParam(required = false) Long registerFrom, @RequestParam(required = false) Long registerFrom,
@RequestParam(required = false)Long btRegisterChannelId,@RequestParam(required = false)String dimension) { @RequestParam(required = false) Long btRegisterChannelId, @RequestParam(required = false) String dimension) {
log.info("用户注册:register -> phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{},btRegisterChannelId:{},dimension:{}", phoneNo, verificationCode, channelId, registerFrom,btRegisterChannelId,dimension); log.info("用户注册:register -> phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{},btRegisterChannelId:{},dimension:{}", phoneNo, verificationCode, channelId, registerFrom, btRegisterChannelId, dimension);
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
log.info("用户注册失败,手机号错误:register -> registerFrom:{}, phoneNo:{}", registerFrom, phoneNo); log.info("用户注册失败,手机号错误:register -> registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("手机号错误", null); return JsonResult.buildErrorStateResult("手机号错误", null);
...@@ -281,7 +284,7 @@ public class UserController implements IBaseController { ...@@ -281,7 +284,7 @@ public class UserController implements IBaseController {
log.info("用户注册失败,该手机号已经被注册:register -> registerFrom:{}, phoneNo:{}", registerFrom, phoneNo); log.info("用户注册失败,该手机号已经被注册:register -> registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("该手机号已经被注册", null); return JsonResult.buildErrorStateResult("该手机号已经被注册", null);
} }
if (!userRegisterService.register(phoneNo, password, registerFrom, getIp(), channelId,btRegisterChannelId,dimension)) { if (!userRegisterService.register(phoneNo, password, registerFrom, getIp(), channelId, btRegisterChannelId, dimension)) {
log.info("用户快速注册失败,请稍后重试, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo); log.info("用户快速注册失败,请稍后重试, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("注册失败,请稍后重试", null); return JsonResult.buildErrorStateResult("注册失败,请稍后重试", null);
} }
...@@ -355,7 +358,6 @@ public class UserController implements IBaseController { ...@@ -355,7 +358,6 @@ public class UserController implements IBaseController {
} }
/** /**
* 检查token是否已经过期不存在了 * 检查token是否已经过期不存在了
* *
...@@ -365,16 +367,16 @@ public class UserController implements IBaseController { ...@@ -365,16 +367,16 @@ public class UserController implements IBaseController {
@LogHttpCaller @LogHttpCaller
@RequestMapping("/exists_token") @RequestMapping("/exists_token")
public JsonResult checkToken(@RequestParam String token) { public JsonResult checkToken(@RequestParam String token) {
if(StringUtils.isEmpty(token)){ if (StringUtils.isEmpty(token)) {
return JsonResult.buildSuccessResult(null,false); return JsonResult.buildSuccessResult(null, false);
} }
if(token.contains("*")){ if (token.contains("*")) {
return JsonResult.buildSuccessResult(null,false); return JsonResult.buildSuccessResult(null, false);
} }
String tokenKey = Constants.SESSION_PREFIX + token; String tokenKey = Constants.SESSION_PREFIX + token;
String tokenKey2 = Constants.Session.USER_SESSION_CACHE + token; String tokenKey2 = Constants.Session.USER_SESSION_CACHE + token;
// 判断token是否存在 // 判断token是否存在
boolean exist = stringRedisTemplate.hasKey(tokenKey)||stringRedisTemplate.hasKey(tokenKey2); boolean exist = stringRedisTemplate.hasKey(tokenKey) || stringRedisTemplate.hasKey(tokenKey2);
return JsonResult.buildSuccessResult("token valid", exist); return JsonResult.buildSuccessResult("token valid", exist);
} }
...@@ -390,17 +392,17 @@ public class UserController implements IBaseController { ...@@ -390,17 +392,17 @@ public class UserController implements IBaseController {
return JsonResult.buildSuccessResult("token校验成功", userModel); return JsonResult.buildSuccessResult("token校验成功", userModel);
} }
private JsonResult loginWithHttpBasic(Long channelId, String appChannel, Long createdFrom, Merchant merchant,String dimension, HttpServletRequest request) { private JsonResult loginWithHttpBasic(Long channelId, String appChannel, Long createdFrom, Merchant merchant, String dimension, HttpServletRequest request) {
User user = verificateUserNameAndPassword(request); User user = verificateUserNameAndPassword(request);
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult("用户名或密码不正确", null); return JsonResult.buildErrorStateResult("用户名或密码不正确", null);
}else if(!wechatRelateUserIfNecessary(user, request)){ } else if (!wechatRelateUserIfNecessary(user, request)) {
return JsonResult.buildErrorStateResult("登录时微信关联失败", null); return JsonResult.buildErrorStateResult("登录时微信关联失败", null);
} }
//增加登陆统计发送 //增加登陆统计发送
UserStatistics statistics=new UserStatistics(user,dimension,1,channelId); UserStatistics statistics = new UserStatistics(user, dimension, 1, channelId);
MqUtils.sendLoanVest(statistics); MqUtils.sendLoanVest(statistics);
log.info("用户登陆成功phonNo:{},当前ip:{},用户登陆信息:{}",user.getPhoneNo(), IPUtil.getRemoteIP(request), statistics); log.info("用户登陆成功phonNo:{},当前ip:{},用户登陆信息:{}", user.getPhoneNo(), IPUtil.getRemoteIP(request), statistics);
return new JsonResult(sessionService.createSession(channelId, createdFrom, appChannel, user, merchant)); return new JsonResult(sessionService.createSession(channelId, createdFrom, appChannel, user, merchant));
} }
...@@ -452,17 +454,17 @@ public class UserController implements IBaseController { ...@@ -452,17 +454,17 @@ public class UserController implements IBaseController {
return StringUtils.defaultString(targetPassword, "").equals(PasswordUtil.MD5(paramPass.toLowerCase() + Constants.PASSWORD_SALT)); return StringUtils.defaultString(targetPassword, "").equals(PasswordUtil.MD5(paramPass.toLowerCase() + Constants.PASSWORD_SALT));
} }
private JsonResult loginWithUserId(Long channelId, String appChannel, Long createdFrom, String userId, Merchant merchant,String dimension,HttpServletRequest request) { private JsonResult loginWithUserId(Long channelId, String appChannel, Long createdFrom, String userId, Merchant merchant, String dimension, HttpServletRequest request) {
//查询用户 //查询用户
User user = userService.findByUuidInDb(userId); User user = userService.findByUuidInDb(userId);
if (Objects.isNull(user) || !user.getEnable()) { if (Objects.isNull(user) || !user.getEnable()) {
log.error("用户不存在,或者已经注销,userId:{}",userId); log.error("用户不存在,或者已经注销,userId:{}", userId);
return JsonResult.buildErrorStateResult("登录失败", null); return JsonResult.buildErrorStateResult("登录失败", null);
} else if(!wechatRelateUserIfNecessary(user, request)){ } else if (!wechatRelateUserIfNecessary(user, request)) {
return JsonResult.buildErrorStateResult("登录时微信关联失败", null); return JsonResult.buildErrorStateResult("登录时微信关联失败", null);
} }
//增加登陆统计发送 //增加登陆统计发送
UserStatistics statistics=new UserStatistics(user,dimension,4,channelId); UserStatistics statistics = new UserStatistics(user, dimension, 4, channelId);
MqUtils.sendLoanVest(statistics); MqUtils.sendLoanVest(statistics);
//更新session //更新session
return new JsonResult(sessionService.createSession(channelId, createdFrom, appChannel, user, merchant)); return new JsonResult(sessionService.createSession(channelId, createdFrom, appChannel, user, merchant));
...@@ -470,45 +472,47 @@ public class UserController implements IBaseController { ...@@ -470,45 +472,47 @@ public class UserController implements IBaseController {
/** /**
* 如果必要的话,关联用户和微信 * 如果必要的话,关联用户和微信
*
* @param user - 用户标识 * @param user - 用户标识
* @param request - 当前请求 * @param request - 当前请求
* @return true - 继续登录,false - 微信关联失败,重新登录 * @return true - 继续登录,false - 微信关联失败,重新登录
*/ */
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) {
return true; return true;
}else if(Objects.isNull(user) || Objects.isNull(user.getId()) || StringUtils.isBlank(request.getParameter(Constants.WECHAT_OPEN_ID))){ } else if (Objects.isNull(user) || Objects.isNull(user.getId()) || StringUtils.isBlank(request.getParameter(Constants.WECHAT_OPEN_ID))) {
log.warn("微信关联失败,user:{}, request-Header:{}",user, JSON.toJSONString(getRequestHeaderMap(request))); log.warn("微信关联失败,user:{}, request-Header:{}", user, JSON.toJSONString(getRequestHeaderMap(request)));
return false; return false;
} }
Long userId = user.getId(); Long userId = user.getId();
String phoneNo = user.getPhoneNo(); String phoneNo = user.getPhoneNo();
try{ try {
int rows = wechatService.relateUser(userId, phoneNo, request.getParameter(Constants.WECHAT_OPEN_ID)); int rows = wechatService.relateUser(userId, phoneNo, request.getParameter(Constants.WECHAT_OPEN_ID));
return rows > 0; return rows > 0;
}catch (Exception e){ } catch (Exception e) {
log.error("微信关联失败,user:{}, request-Header:{}",user, JSON.toJSONString(getRequestHeaderMap(request)), e); log.error("微信关联失败,user:{}, request-Header:{}", user, JSON.toJSONString(getRequestHeaderMap(request)), e);
} }
return false; return false;
} }
/** /**
* 校验短信验证码 * 校验短信验证码
*
* @param phoneNo * @param phoneNo
* @param verificationCode * @param verificationCode
*/ */
private void verifyPhoneAndCode(String phoneNo, String verificationCode) { private void verifyPhoneAndCode(String phoneNo, String verificationCode) {
// 非生产环境直接跳过验证码检验 // 非生产环境直接跳过验证码检验
if(!TechEnvironment.isPro()){ if (!TechEnvironment.isPro()) {
return; return;
} }
if (!smsService.verifyPhoneAndCode(phoneNo, verificationCode)) { if (!smsService.verifyPhoneAndCode(phoneNo, verificationCode)) {
// 是否需要重新发送短信验证码 // 是否需要重新发送短信验证码
if(smsService.needResendCode(phoneNo)){ if (smsService.needResendCode(phoneNo)) {
throw new VerificationCodeErrorException("验证码失效,请重新获取"); throw new VerificationCodeErrorException("验证码失效,请重新获取");
} }
log.info("验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode); log.info("验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode);
......
...@@ -58,14 +58,14 @@ public class UserDetailController implements IBaseController { ...@@ -58,14 +58,14 @@ public class UserDetailController implements IBaseController {
* 如果已存在记录,则更新 * 如果已存在记录,则更新
*/ */
UserDetail userDetail = userDetailService.findByUserId(user.getId()); UserDetail userDetail = userDetailService.findByUserId(user.getId());
if(Objects.isNull(userDetail)){ if (Objects.isNull(userDetail)) {
userDetail = userDetailService.findByPhoneNo(user.getPhoneNo()); userDetail = userDetailService.findByPhoneNo(user.getPhoneNo());
// 按手机号查出记录,如果userId非空,说明是存疑数据或是其他用户的信息,停止修改操作,返回失败 // 按手机号查出记录,如果userId非空,说明是存疑数据或是其他用户的信息,停止修改操作,返回失败
if(Objects.nonNull(userDetail) && Objects.nonNull(userDetail.getUserId())){ if (Objects.nonNull(userDetail) && Objects.nonNull(userDetail.getUserId())) {
return JsonResult.buildErrorStateResult("手机号已使用.", null); return JsonResult.buildErrorStateResult("手机号已使用.", null);
} }
} }
if(Objects.isNull(userDetail)){ if (Objects.isNull(userDetail)) {
userDetail = new UserDetail(); userDetail = new UserDetail();
userDetail.setCreatedAt(now); userDetail.setCreatedAt(now);
} }
......
...@@ -43,11 +43,11 @@ public class Address implements Serializable { ...@@ -43,11 +43,11 @@ public class Address implements Serializable {
private Timestamp updateAt; private Timestamp updateAt;
@PreUpdate @PreUpdate
public void preUpdate(){ public void preUpdate() {
this.updateAt = new Timestamp(System.currentTimeMillis()); this.updateAt = new Timestamp(System.currentTimeMillis());
} }
public String toString(){ public String toString() {
return province+"(省)"+city+"(市)"+district+"(区/县)"+address; return province + "(省)" + city + "(市)" + district + "(区/县)" + address;
} }
} }
...@@ -36,9 +36,10 @@ public class Contact implements Serializable { ...@@ -36,9 +36,10 @@ public class Contact implements Serializable {
/** /**
* 数据合法性校验 * 数据合法性校验
*
* @return * @return
*/ */
public boolean valid(){ public boolean valid() {
return (ValidationUtil.validatePhoneNo(this.phoneNo) && ValidationUtil.validateChinese(this.name)); return (ValidationUtil.validatePhoneNo(this.phoneNo) && ValidationUtil.validateChinese(this.name));
} }
......
...@@ -57,7 +57,6 @@ public class User implements Serializable { ...@@ -57,7 +57,6 @@ public class User implements Serializable {
private static final long serialVersionUID = -1L; private static final long serialVersionUID = -1L;
public XUser toXUser() { public XUser toXUser() {
XUser xUser = new XUser(); XUser xUser = new XUser();
xUser.setId(this.getId()); xUser.setId(this.getId());
......
...@@ -16,7 +16,7 @@ public class UserAttached { ...@@ -16,7 +16,7 @@ public class UserAttached {
@Column(name = "id") @Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@Column( name = "user_id") @Column(name = "user_id")
private Long userId; private Long userId;
@Column(name = "avatar") @Column(name = "avatar")
private String avatar; private String avatar;
......
...@@ -18,7 +18,7 @@ public class UserAuthorized { ...@@ -18,7 +18,7 @@ public class UserAuthorized {
@Id @Id
@Column(name = "id") @Column(name = "id")
@GeneratedValue(generator = "uuid") @GeneratedValue(generator = "uuid")
@GenericGenerator(name ="uuid" , strategy = "org.hibernate.id.UUIDGenerator") @GenericGenerator(name = "uuid", strategy = "org.hibernate.id.UUIDGenerator")
private String id; private String id;
@Column(name = "user_uuid") @Column(name = "user_uuid")
......
...@@ -46,17 +46,17 @@ public class UserBtRegister implements Serializable { ...@@ -46,17 +46,17 @@ public class UserBtRegister implements Serializable {
@PrePersist @PrePersist
public void prePersist(){ public void prePersist() {
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
this.createdAt =now; this.createdAt = now;
this.updatedAt =now; this.updatedAt = now;
} }
@PreUpdate @PreUpdate
public void preUpdate(){ public void preUpdate() {
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
this.createdAt =now; this.createdAt = now;
this.updatedAt =now; this.updatedAt = now;
} }
} }
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.motan.retbean.XUserExtInfo; import cn.quantgroup.motan.retbean.XUserExtInfo;
//import cn.quantgroup.xyqb.entity.enumerate.*;
import cn.quantgroup.user.enums.*; import cn.quantgroup.user.enums.*;
import lombok.Data; import lombok.Data;
...@@ -9,6 +8,8 @@ import javax.persistence.*; ...@@ -9,6 +8,8 @@ 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.
*/ */
...@@ -47,7 +48,7 @@ public class UserExtInfo implements Serializable { ...@@ -47,7 +48,7 @@ public class UserExtInfo implements Serializable {
@Column(name = "updated_at") @Column(name = "updated_at")
private Timestamp updateAt; private Timestamp updateAt;
public XUserExtInfo toXUserExtInfo(){ public XUserExtInfo toXUserExtInfo() {
XUserExtInfo xUserExtInfo = new XUserExtInfo(); XUserExtInfo xUserExtInfo = new XUserExtInfo();
xUserExtInfo.setId(this.id); xUserExtInfo.setId(this.id);
xUserExtInfo.setUserId(this.userId); xUserExtInfo.setUserId(this.userId);
......
...@@ -5,7 +5,6 @@ import lombok.Data; ...@@ -5,7 +5,6 @@ import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date; import java.util.Date;
/** /**
...@@ -33,7 +32,7 @@ public class UserQueryLog implements Serializable { ...@@ -33,7 +32,7 @@ public class UserQueryLog implements Serializable {
@Column(name = "query_detail") @Column(name = "query_detail")
private String queryDetail; private String queryDetail;
@Column(name = "created_at") @Column(name = "created_at")
private Date createdAt=new Date(); private Date createdAt = new Date();
@Transient @Transient
private String createDate; private String createDate;
......
...@@ -48,9 +48,10 @@ public class UserSpouse implements Serializable { ...@@ -48,9 +48,10 @@ public class UserSpouse implements Serializable {
/** /**
* 数据合法性校验 * 数据合法性校验
*
* @return * @return
*/ */
public boolean valid(){ public boolean valid() {
return (ValidationUtil.validatePhoneNo(this.spousePhone) && ValidationUtil.validateChinese(this.spouseName)); return (ValidationUtil.validatePhoneNo(this.spousePhone) && ValidationUtil.validateChinese(this.spouseName));
} }
} }
...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.exception; ...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.exception;
/** /**
* 密码错误次数达到上限异常 * 密码错误次数达到上限异常
*
* @author 任文超 * @author 任文超
* @time 2017-11-10 * @time 2017-11-10
*/ */
......
...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.exception; ...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.exception;
/** /**
* 微信关联用户异常 * 微信关联用户异常
*
* @author 任文超 * @author 任文超
* @time 2018-04-03 * @time 2018-04-03
*/ */
......
...@@ -7,8 +7,6 @@ import cn.quantgroup.xyqb.service.session.ISessionService; ...@@ -7,8 +7,6 @@ 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.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher; import org.springframework.util.AntPathMatcher;
...@@ -46,10 +44,10 @@ public class RequestFilter implements Filter { ...@@ -46,10 +44,10 @@ public class RequestFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletResponse response = (HttpServletResponse) servletResponse;
// 带状态接口 // 带状态接口
if(isMatch(request)){ if (isMatch(request)) {
// 需获取session信息 // 需获取session信息
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(); SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis();
if(Objects.isNull(sessionStruct)) { if (Objects.isNull(sessionStruct)) {
/* 如果没有获取到session信息则返回错误信息 */ /* 如果没有获取到session信息则返回错误信息 */
response.setStatus(401); response.setStatus(401);
response.setHeader("Content-Type", "application/json;charset=utf-8"); response.setHeader("Content-Type", "application/json;charset=utf-8");
...@@ -57,7 +55,7 @@ public class RequestFilter implements Filter { ...@@ -57,7 +55,7 @@ public class RequestFilter implements Filter {
writer.print(UNAUTH_RESULT); writer.print(UNAUTH_RESULT);
writer.close(); writer.close();
return; return;
}else{ } else {
/* 延续session生命期 */ /* 延续session生命期 */
try { try {
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues()); sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues());
...@@ -71,6 +69,7 @@ public class RequestFilter implements Filter { ...@@ -71,6 +69,7 @@ public class RequestFilter implements Filter {
/** /**
* 判断是否带状态请求 * 判断是否带状态请求
*
* @param request * @param request
* @return * @return
*/ */
......
...@@ -7,6 +7,7 @@ import java.io.Serializable; ...@@ -7,6 +7,7 @@ import java.io.Serializable;
/** /**
* 地址信息数据模型 * 地址信息数据模型
*
* @author renwc * @author renwc
* @date 2018-01-04 * @date 2018-01-04
*/ */
...@@ -22,7 +23,9 @@ public class AddressModel implements Serializable { ...@@ -22,7 +23,9 @@ public class AddressModel implements Serializable {
private String district; private String district;
private String address; private String address;
private AddressModel(){} private AddressModel() {
}
public static AddressModel entity2Model(Address entity) { public static AddressModel entity2Model(Address entity) {
if (entity == null) { if (entity == null) {
return null; return null;
......
...@@ -4,23 +4,26 @@ import java.util.Optional; ...@@ -4,23 +4,26 @@ import java.util.Optional;
/** /**
* 验证码验证类型 * 验证码验证类型
*
* @author renwc * @author renwc
* @date 2018-02-02 * @date 2018-02-02
*/ */
public enum ClientType { public enum ClientType {
APP("native"), H5("h5"), WEB("web"); APP("native"), H5("h5"), WEB("web");
ClientType(String alias){ ClientType(String alias) {
this.alias = alias; this.alias = alias;
} }
private String alias; private String alias;
public String getAlias(){
public String getAlias() {
return this.alias; return this.alias;
} }
public final static ClientType valueByName(String name) { public final static ClientType valueByName(String name) {
name = Optional.ofNullable(name).orElse("").toLowerCase(); name = Optional.ofNullable(name).orElse("").toLowerCase();
switch (name){ switch (name) {
case "app": case "app":
case "native": case "native":
return APP; return APP;
......
...@@ -9,6 +9,7 @@ import java.util.Optional; ...@@ -9,6 +9,7 @@ import java.util.Optional;
/** /**
* 联系人数据模型 * 联系人数据模型
*
* @author renwc * @author renwc
* @date 2018-01-04 * @date 2018-01-04
*/ */
...@@ -21,7 +22,9 @@ public class ContactModel implements Serializable { ...@@ -21,7 +22,9 @@ public class ContactModel implements Serializable {
private String relationName; private String relationName;
private String relation; private String relation;
private ContactModel(){} private ContactModel() {
}
public static ContactModel entity2Model(Contact entity) { public static ContactModel entity2Model(Contact entity) {
if (entity == null) { if (entity == null) {
return null; return null;
......
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.user.enums.Relation; import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.Contact;
import lombok.Data; import lombok.Data;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
......
...@@ -123,6 +123,7 @@ public class JsonResult implements Serializable { ...@@ -123,6 +123,7 @@ public class JsonResult implements Serializable {
return "JsonResult{" + return "JsonResult{" +
"businessCode='" + businessCode + '\'' + "businessCode='" + businessCode + '\'' +
", code='" + code + '\'' + ", code='" + code + '\'' +
", msg='" + msg + '\'' +
", data=" + data + ", data=" + data +
'}'; '}';
} }
......
...@@ -11,5 +11,5 @@ public class LoginProperties { ...@@ -11,5 +11,5 @@ public class LoginProperties {
private Long createdFrom = 1L; private Long createdFrom = 1L;
private String appChannel = ""; private String appChannel = "";
private String merchantName; private String merchantName;
private Long btMerchantId =1L; private Long btMerchantId = 1L;
} }
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
......
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import lombok.Data;
/** /**
* Created by xuran on 2017/8/1. * Created by xuran on 2017/8/1.
......
...@@ -11,6 +11,7 @@ import java.util.Objects; ...@@ -11,6 +11,7 @@ import java.util.Objects;
/** /**
* 用户综合信息数据模型 * 用户综合信息数据模型
*
* @author renwc * @author renwc
* @date 2018-01-04 * @date 2018-01-04
*/ */
...@@ -34,13 +35,14 @@ public class UserAssociationModel implements Serializable { ...@@ -34,13 +35,14 @@ public class UserAssociationModel implements Serializable {
/** /**
* 填充地址模型列表 * 填充地址模型列表
*
* @param entitylist * @param entitylist
*/ */
public void putAddressList(List<Address> entitylist){ public void putAddressList(List<Address> entitylist) {
if(Objects.isNull(entitylist)){ if (Objects.isNull(entitylist)) {
return; return;
} }
if(Objects.isNull(this.addressList)){ if (Objects.isNull(this.addressList)) {
this.addressList = new ArrayList<AddressModel>(entitylist.size()); this.addressList = new ArrayList<AddressModel>(entitylist.size());
} }
for (Address entity : entitylist) { for (Address entity : entitylist) {
...@@ -50,13 +52,14 @@ public class UserAssociationModel implements Serializable { ...@@ -50,13 +52,14 @@ public class UserAssociationModel implements Serializable {
/** /**
* 填充联系人模型列表 * 填充联系人模型列表
*
* @param entitylist * @param entitylist
*/ */
public void putContactList(List<Contact> entitylist){ public void putContactList(List<Contact> entitylist) {
if(Objects.isNull(entitylist)){ if (Objects.isNull(entitylist)) {
return; return;
} }
if(Objects.isNull(this.contactList)){ if (Objects.isNull(this.contactList)) {
this.contactList = new ArrayList<ContactModel>(entitylist.size()); this.contactList = new ArrayList<ContactModel>(entitylist.size());
} }
for (Contact entity : entitylist) { for (Contact entity : entitylist) {
......
...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.model; ...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import cn.quantgroup.xyqb.model.IdType;
import java.io.Serializable; import java.io.Serializable;
/** /**
......
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.UserExtInfo;
import cn.quantgroup.user.enums.*; import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.entity.UserExtInfo;
import lombok.Data; import lombok.Data;
/** /**
......
...@@ -37,7 +37,7 @@ public class UserFullInfo implements Serializable { ...@@ -37,7 +37,7 @@ public class UserFullInfo implements Serializable {
} }
public UserFullInfo(User user, UserDetail userDetail) { public UserFullInfo(User user, UserDetail userDetail) {
if (user != null){ if (user != null) {
this.id = user.getId(); this.id = user.getId();
this.phoneNo = user.getPhoneNo(); this.phoneNo = user.getPhoneNo();
this.registerFrom = user.getRegisteredFrom(); this.registerFrom = user.getRegisteredFrom();
......
...@@ -2,10 +2,10 @@ package cn.quantgroup.xyqb.model; ...@@ -2,10 +2,10 @@ 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 java.io.Serializable;
import jdk.nashorn.internal.ir.IdentNode;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
/** /**
* Created by xuran on 2017/7/5. * Created by xuran on 2017/7/5.
*/ */
......
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable; import java.io.Serializable;
...@@ -38,5 +36,4 @@ public class UserQueryInfo implements Serializable { ...@@ -38,5 +36,4 @@ public class UserQueryInfo implements Serializable {
private String address; private String address;
} }
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import java.io.Serializable;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;
/** /**
* Created by xuran on 2017/9/7. * Created by xuran on 2017/9/7.
...@@ -31,6 +31,7 @@ public class UserRegisterMqMessage implements Serializable { ...@@ -31,6 +31,7 @@ public class UserRegisterMqMessage implements Serializable {
//上一次修改时间 //上一次修改时间
private Long updatedAt; private Long updatedAt;
public UserRegisterMqMessage(User user) { public UserRegisterMqMessage(User user) {
Long createTimeStamp = user.getCreatedAt().getTime(); Long createTimeStamp = user.getCreatedAt().getTime();
Long updateTimeStamp = user.getUpdatedAt().getTime(); Long updateTimeStamp = user.getUpdatedAt().getTime();
......
...@@ -16,7 +16,9 @@ import lombok.NoArgsConstructor; ...@@ -16,7 +16,9 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
public class UserRegisterParam { public class UserRegisterParam {
/** ======数据部分开始====== */ /**
* ======数据部分开始======
*/
private Long registerFrom; // 注册渠道 private Long registerFrom; // 注册渠道
private String phoneNo; // 手机号 private String phoneNo; // 手机号
private String password; // 密码 private String password; // 密码
...@@ -30,7 +32,9 @@ public class UserRegisterParam { ...@@ -30,7 +32,9 @@ public class UserRegisterParam {
private User user; // 注册生成的用户,也是返回结果 private User user; // 注册生成的用户,也是返回结果
/** ======数据部分结束====== */ /** ======数据部分结束====== */
/** ======流程控制部分开始====== */ /**
* ======流程控制部分开始======
*/
private boolean generateRandomPwd = false; // 是否生成随机密码 private boolean generateRandomPwd = false; // 是否生成随机密码
private boolean sendSuccessSms = true; // 是否发送注册成功短信 private boolean sendSuccessSms = true; // 是否发送注册成功短信
private boolean sendAppSms = true; // 是否发送推送App短信 private boolean sendAppSms = true; // 是否发送推送App短信
......
...@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.model; ...@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable; import java.io.Serializable;
......
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.UserSpouse;
import cn.quantgroup.user.enums.MaritalStatus; import cn.quantgroup.user.enums.MaritalStatus;
import cn.quantgroup.xyqb.entity.UserSpouse;
import lombok.Data; import lombok.Data;
/** /**
......
...@@ -39,11 +39,11 @@ public class UserStatistics { ...@@ -39,11 +39,11 @@ public class UserStatistics {
} }
public UserStatistics(User user, String dimension, int action,Long channel) { public UserStatistics(User user, String dimension, int action, Long channel) {
this.uuid = user.getUuid(); this.uuid = user.getUuid();
this.registerFrom = user.getRegisteredFrom(); this.registerFrom = user.getRegisteredFrom();
this.action = action; this.action = action;
this.dimension = dimension; this.dimension = dimension;
this.channel=channel; this.channel = channel;
} }
} }
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import java.io.Serializable;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
/** /**
* Created by xuran on 2017/8/1. * Created by xuran on 2017/8/1.
*/ */
......
...@@ -24,7 +24,7 @@ public class LoginInfo { ...@@ -24,7 +24,7 @@ public class LoginInfo {
} }
public XLoginInfo toXLoginInfo() { public XLoginInfo toXLoginInfo() {
XLoginInfo xLoginInfo= new XLoginInfo(); XLoginInfo xLoginInfo = new XLoginInfo();
// xLoginInfo.setUser(); // xLoginInfo.setUser();
......
...@@ -3,10 +3,9 @@ package cn.quantgroup.xyqb.model.sms; ...@@ -3,10 +3,9 @@ package cn.quantgroup.xyqb.model.sms;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.Optional;
/** /**
* 短信模板适配枚举类 * 短信模板适配枚举类
*
* @author renwc * @author renwc
* @date 2018-04-23 * @date 2018-04-23
*/ */
...@@ -44,6 +43,7 @@ public enum SmsMerchant { ...@@ -44,6 +43,7 @@ public enum SmsMerchant {
/** /**
* 获取短信模板id * 获取短信模板id
*
* @return * @return
*/ */
public String getMerchantId() { public String getMerchantId() {
...@@ -52,6 +52,7 @@ public enum SmsMerchant { ...@@ -52,6 +52,7 @@ public enum SmsMerchant {
/** /**
* 获取短信contentId * 获取短信contentId
*
* @return * @return
*/ */
public String getContentId() { public String getContentId() {
...@@ -61,17 +62,18 @@ public enum SmsMerchant { ...@@ -61,17 +62,18 @@ public enum SmsMerchant {
/** /**
* 根据name实例化枚举值 * 根据name实例化枚举值
* 无匹配项时返回默认枚举值 * 无匹配项时返回默认枚举值
*
* @param name * @param name
* @return * @return
*/ */
public static SmsMerchant of(String name){ public static SmsMerchant of(String name) {
if(StringUtils.isBlank(name)){ if (StringUtils.isBlank(name)) {
return DEFAULT; return DEFAULT;
} }
SmsMerchant merchant = null; SmsMerchant merchant = null;
try{ try {
merchant = SmsMerchant.valueOf(name.toUpperCase()); merchant = SmsMerchant.valueOf(name.toUpperCase());
}catch (Exception e){ } catch (Exception e) {
log.warn("短信模板适配类型:[非法值]:{}", name, e); log.warn("短信模板适配类型:[非法值]:{}", name, e);
merchant = DEFAULT; merchant = DEFAULT;
} }
......
package cn.quantgroup.xyqb.repository; package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.Address; import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.User;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/** /**
* Created by 11 on 2016/12/30. * Created by 11 on 2016/12/30.
*/ */
public interface IAddressRepository extends JpaRepository<Address, Long> ,JpaSpecificationExecutor<Address> { public interface IAddressRepository extends JpaRepository<Address, Long>, JpaSpecificationExecutor<Address> {
Address findByUserId(Long userId); Address findByUserId(Long userId);
} }
...@@ -7,5 +7,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; ...@@ -7,5 +7,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/** /**
* Created by Administrator on 2017/5/16. * Created by Administrator on 2017/5/16.
*/ */
public interface IUserBtRegisterRepository extends JpaRepository<UserBtRegister, Long>,JpaSpecificationExecutor<UserBtRegister> { public interface IUserBtRegisterRepository extends JpaRepository<UserBtRegister, Long>, JpaSpecificationExecutor<UserBtRegister> {
} }
...@@ -14,7 +14,7 @@ import java.util.List; ...@@ -14,7 +14,7 @@ import java.util.List;
* @author mengfan.feng * @author mengfan.feng
* @time 2015-09-11 11:22 * @time 2015-09-11 11:22
*/ */
public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>,JpaSpecificationExecutor<UserDetail> { public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>, JpaSpecificationExecutor<UserDetail> {
UserDetail findByUserId(Long userId); UserDetail findByUserId(Long userId);
...@@ -33,12 +33,13 @@ public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>,J ...@@ -33,12 +33,13 @@ public interface IUserDetailRepository extends JpaRepository<UserDetail, Long>,J
@Transactional @Transactional
@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);
List<UserDetail> findAll(Specification<UserDetail> specification); List<UserDetail> findAll(Specification<UserDetail> specification);
/** /**
* 修复线上身份证问题,后续误用 * 修复线上身份证问题,后续误用
*
* @return * @return
*/ */
@Modifying @Modifying
......
...@@ -18,9 +18,9 @@ public interface IUserQueryLogRepository extends JpaRepository<UserQueryLog, Lon ...@@ -18,9 +18,9 @@ public interface IUserQueryLogRepository extends JpaRepository<UserQueryLog, Lon
@Transactional @Transactional
@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);
@Query(nativeQuery=true,value = "select count(1) from user_query_log ul where created_At between ?1 and ?2 ") @Query(nativeQuery = true, value = "select count(1) from user_query_log ul where created_At between ?1 and ?2 ")
Long findQueryLogCountCreatedAt(Date beginDate, Date endDate); Long findQueryLogCountCreatedAt(Date beginDate, Date endDate);
} }
...@@ -23,8 +23,8 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica ...@@ -23,8 +23,8 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica
User findById(Long id); User findById(Long id);
@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
@Modifying @Modifying
......
...@@ -24,6 +24,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -24,6 +24,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
/** /**
* 解除关联关系 -- 当前用户的已关联微信 * 解除关联关系 -- 当前用户的已关联微信
* 注:应用服务的JDBC数据源连接,无delete权限 * 注:应用服务的JDBC数据源连接,无delete权限
*
* @param userId * @param userId
* @return * @return
*/ */
...@@ -34,6 +35,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -34,6 +35,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
/** /**
* 关联用户 * 关联用户
*
* @param userId - 用户标识 * @param userId - 用户标识
* @param phoneNo * @param phoneNo
* @param openId - 微信标识 * @param openId - 微信标识
...@@ -47,6 +49,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -47,6 +49,7 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
/** /**
* 解除关联关系 -- 包括:1、当前微信旧的关联用户;2、当前用户旧的关联微信 * 解除关联关系 -- 包括:1、当前微信旧的关联用户;2、当前用户旧的关联微信
* 强制事务 * 强制事务
*
* @param openId - 微信标识 * @param openId - 微信标识
* @param userId - 用户标识 * @param userId - 用户标识
* @return 记录更新行数 * @return 记录更新行数
......
...@@ -13,6 +13,7 @@ public interface IUserApiService { ...@@ -13,6 +13,7 @@ public interface IUserApiService {
/** /**
* 根据uuid查询用户完整信息 * 根据uuid查询用户完整信息
*
* @param uuid * @param uuid
* @return * @return
*/ */
...@@ -20,6 +21,7 @@ public interface IUserApiService { ...@@ -20,6 +21,7 @@ public interface IUserApiService {
/** /**
* 根据phone查询完整信息 * 根据phone查询完整信息
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
......
...@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.service.api.impl; ...@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.service.api.impl;
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 cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserFullInfo; import cn.quantgroup.xyqb.model.UserFullInfo;
import cn.quantgroup.xyqb.model.model.BlacklistMatchResult; import cn.quantgroup.xyqb.model.model.BlacklistMatchResult;
import cn.quantgroup.xyqb.service.api.IUserApiService; import cn.quantgroup.xyqb.service.api.IUserApiService;
......
...@@ -9,6 +9,7 @@ import java.util.Map; ...@@ -9,6 +9,7 @@ import java.util.Map;
public interface IQuantgroupCaptchaService { public interface IQuantgroupCaptchaService {
/** /**
* 获取QG验证码 * 获取QG验证码
*
* @param locale * @param locale
* @return * @return
* @throws Exception EX * @throws Exception EX
...@@ -17,6 +18,7 @@ public interface IQuantgroupCaptchaService { ...@@ -17,6 +18,7 @@ public interface IQuantgroupCaptchaService {
/** /**
* 校验QG验证码 * 校验QG验证码
*
* @param captchaId * @param captchaId
* @param captchaValue * @param captchaValue
* @return * @return
......
...@@ -60,7 +60,7 @@ public class GeetestCaptchaServiceImpl implements IGeetestCaptchaService { ...@@ -60,7 +60,7 @@ public class GeetestCaptchaServiceImpl implements IGeetestCaptchaService {
param.put("user_id", markId); param.put("user_id", markId);
if (Objects.isNull(clientType)) { if (Objects.isNull(clientType)) {
param.put("client_type", ClientType.APP.getAlias()); param.put("client_type", ClientType.APP.getAlias());
}else{ } else {
param.put("client_type", clientType.getAlias()); param.put("client_type", clientType.getAlias());
} }
param.put("ip_address", remoteIp); param.put("ip_address", remoteIp);
......
...@@ -8,5 +8,6 @@ import java.io.Serializable; ...@@ -8,5 +8,6 @@ import java.io.Serializable;
*/ */
public interface IRegisterMqService { public interface IRegisterMqService {
void send(Serializable message); void send(Serializable message);
void send4Gdt(Serializable message); void send4Gdt(Serializable message);
} }
...@@ -33,34 +33,36 @@ public class IRegisterMqServiceImpl implements IRegisterMqService { ...@@ -33,34 +33,36 @@ public class IRegisterMqServiceImpl implements IRegisterMqService {
/** /**
* 发送用登陆统计信息 * 发送用登陆统计信息
*
* @param message 订单信息 * @param message 订单信息
*/ */
@Override @Override
@Async @Async
public void send(Serializable message){ public void send(Serializable message) {
if(null==message){ if (null == message) {
LOGGER.error("广播用户注册消息不能为空"); LOGGER.error("广播用户注册消息不能为空");
} }
LOGGER.info("广播用户注册消息,message={}",message); LOGGER.info("广播用户注册消息,message={}", message);
String msg = JSONObject.toJSONString(message); String msg = JSONObject.toJSONString(message);
registerRabTemplate.convertAndSend(msg); registerRabTemplate.convertAndSend(msg);
LOGGER.info("广播用户注册消息,message={}",msg); LOGGER.info("广播用户注册消息,message={}", msg);
} }
/** /**
* 发送用登陆统计信息 * 发送用登陆统计信息
*
* @param message 订单信息 * @param message 订单信息
*/ */
@Override @Override
@Async @Async
public void send4Gdt(Serializable message){ public void send4Gdt(Serializable message) {
if(null==message){ if (null == message) {
LOGGER.error("广点通用户注册消息不能为空"); LOGGER.error("广点通用户注册消息不能为空");
} }
LOGGER.info("广点通用户注册消息,message={}",message); LOGGER.info("广点通用户注册消息,message={}", message);
String msg = JSONObject.toJSONString(message); String msg = JSONObject.toJSONString(message);
registerRabbitTemplate4Gdt.convertAndSend(msg); registerRabbitTemplate4Gdt.convertAndSend(msg);
LOGGER.info("广点通用户注册消息,message={}",msg); LOGGER.info("广点通用户注册消息,message={}", msg);
} }
} }
...@@ -7,7 +7,6 @@ import org.slf4j.Logger; ...@@ -7,7 +7,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Queue; 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.Autowired;
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;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -32,18 +31,19 @@ public class LoanVestMQServiceImpl implements IVestService { ...@@ -32,18 +31,19 @@ public class LoanVestMQServiceImpl implements IVestService {
/** /**
* 发送用登陆统计信息 * 发送用登陆统计信息
*
* @param message 订单信息 * @param message 订单信息
*/ */
@Override @Override
@Async @Async
public void send(UserStatistics message){ public void send(UserStatistics message) {
if(null==message){ if (null == message) {
LOGGER.error("用户登陆统计消息不能为空"); LOGGER.error("用户登陆统计消息不能为空");
} }
LOGGER.info("用户登陆统计发送,message={}",message); LOGGER.info("用户登陆统计发送,message={}", message);
String msg = JSONObject.toJSONString(message); String msg = JSONObject.toJSONString(message);
loanVestRabbitTemplate.convertAndSend("statistics-user", msg); loanVestRabbitTemplate.convertAndSend("statistics-user", msg);
LOGGER.info("用户登陆统计成功,message={}",msg); LOGGER.info("用户登陆统计成功,message={}", msg);
} }
} }
...@@ -14,7 +14,7 @@ import java.util.Map; ...@@ -14,7 +14,7 @@ import java.util.Map;
* Created by liqing on 2017/12/5 0005. * Created by liqing on 2017/12/5 0005.
*/ */
@Slf4j @Slf4j
public abstract class AbstractUserRegisterService implements IUserRegisterService,ApplicationContextAware { public abstract class AbstractUserRegisterService implements IUserRegisterService, ApplicationContextAware {
private static Map<String, AbstractUserRegisterHandler> userRegisterHandlerMap = Maps.newConcurrentMap(); private static Map<String, AbstractUserRegisterHandler> userRegisterHandlerMap = Maps.newConcurrentMap();
private static final String USER_REGISTER_HANDLER_DEFAULT_KEY = "register_default"; private static final String USER_REGISTER_HANDLER_DEFAULT_KEY = "register_default";
...@@ -31,9 +31,10 @@ public abstract class AbstractUserRegisterService implements IUserRegisterServic ...@@ -31,9 +31,10 @@ public abstract class AbstractUserRegisterService implements IUserRegisterServic
/** /**
* 创建默认注册流程 * 创建默认注册流程
* 1、保存基本信息 - 2、保存用户详情 - 3、保存白条信息 - 4、发送短信 - 5、发送mq * 1、保存基本信息 - 2、保存用户详情 - 3、保存白条信息 - 4、发送短信 - 5、发送mq
*
* @param applicationContext * @param applicationContext
*/ */
protected AbstractUserRegisterHandler createDefaultUserRegisterHandler(ApplicationContext applicationContext){ protected AbstractUserRegisterHandler createDefaultUserRegisterHandler(ApplicationContext applicationContext) {
AbstractUserRegisterHandler baseUserRegisterHandler = applicationContext.getBean("baseUserRegisterHandler", AbstractUserRegisterHandler.class); AbstractUserRegisterHandler baseUserRegisterHandler = applicationContext.getBean("baseUserRegisterHandler", AbstractUserRegisterHandler.class);
AbstractUserRegisterHandler detailUserRegisterHandler = applicationContext.getBean("detailUserRegisterHandler", AbstractUserRegisterHandler.class); AbstractUserRegisterHandler detailUserRegisterHandler = applicationContext.getBean("detailUserRegisterHandler", AbstractUserRegisterHandler.class);
AbstractUserRegisterHandler btUserRegisterHandler = applicationContext.getBean("btUserRegisterHandler", AbstractUserRegisterHandler.class); AbstractUserRegisterHandler btUserRegisterHandler = applicationContext.getBean("btUserRegisterHandler", AbstractUserRegisterHandler.class);
...@@ -51,9 +52,10 @@ public abstract class AbstractUserRegisterService implements IUserRegisterServic ...@@ -51,9 +52,10 @@ public abstract class AbstractUserRegisterService implements IUserRegisterServic
* 创建扩展注册流程 * 创建扩展注册流程
* 1、保存基本信息 - 2、保存用户详情 - 3、保存白条信息 - 4、保存用户地址 - 5、保存联系人 * 1、保存基本信息 - 2、保存用户详情 - 3、保存白条信息 - 4、保存用户地址 - 5、保存联系人
* 5、发送短信 - 6、发送mq * 5、发送短信 - 6、发送mq
*
* @param applicationContext * @param applicationContext
*/ */
protected AbstractUserRegisterHandler createExtUserRegisterHandler(ApplicationContext applicationContext){ protected AbstractUserRegisterHandler createExtUserRegisterHandler(ApplicationContext applicationContext) {
AbstractUserRegisterHandler baseUserRegisterHandler = applicationContext.getBean("baseUserRegisterHandler", AbstractUserRegisterHandler.class); AbstractUserRegisterHandler baseUserRegisterHandler = applicationContext.getBean("baseUserRegisterHandler", AbstractUserRegisterHandler.class);
AbstractUserRegisterHandler detailUserRegisterHandler = applicationContext.getBean("detailUserRegisterHandler", AbstractUserRegisterHandler.class); AbstractUserRegisterHandler detailUserRegisterHandler = applicationContext.getBean("detailUserRegisterHandler", AbstractUserRegisterHandler.class);
AbstractUserRegisterHandler btUserRegisterHandler = applicationContext.getBean("btUserRegisterHandler", AbstractUserRegisterHandler.class); AbstractUserRegisterHandler btUserRegisterHandler = applicationContext.getBean("btUserRegisterHandler", AbstractUserRegisterHandler.class);
...@@ -73,14 +75,15 @@ public abstract class AbstractUserRegisterService implements IUserRegisterServic ...@@ -73,14 +75,15 @@ public abstract class AbstractUserRegisterService implements IUserRegisterServic
/** /**
* 获取默认注册流程 * 获取默认注册流程
*
* @return * @return
*/ */
protected AbstractUserRegisterHandler getDefaultUserRegisterHandler(){ protected AbstractUserRegisterHandler getDefaultUserRegisterHandler() {
AbstractUserRegisterHandler curUserRegisterHandler = userRegisterHandlerMap.get(USER_REGISTER_HANDLER_DEFAULT_KEY); AbstractUserRegisterHandler curUserRegisterHandler = userRegisterHandlerMap.get(USER_REGISTER_HANDLER_DEFAULT_KEY);
if (curUserRegisterHandler == null){ if (curUserRegisterHandler == null) {
synchronized (USER_REGISTER_HANDLER_DEFAULT_KEY){ synchronized (USER_REGISTER_HANDLER_DEFAULT_KEY) {
curUserRegisterHandler = userRegisterHandlerMap.get(USER_REGISTER_HANDLER_DEFAULT_KEY); curUserRegisterHandler = userRegisterHandlerMap.get(USER_REGISTER_HANDLER_DEFAULT_KEY);
if (curUserRegisterHandler == null){ if (curUserRegisterHandler == null) {
curUserRegisterHandler = createDefaultUserRegisterHandler(ApplicationContextHolder.getApplicationContext()); curUserRegisterHandler = createDefaultUserRegisterHandler(ApplicationContextHolder.getApplicationContext());
} }
} }
...@@ -90,14 +93,15 @@ public abstract class AbstractUserRegisterService implements IUserRegisterServic ...@@ -90,14 +93,15 @@ public abstract class AbstractUserRegisterService implements IUserRegisterServic
/** /**
* 获取扩展注册流程 * 获取扩展注册流程
*
* @return * @return
*/ */
protected AbstractUserRegisterHandler getExtUserRegisterHandler(){ protected AbstractUserRegisterHandler getExtUserRegisterHandler() {
AbstractUserRegisterHandler curUserRegisterHandler = userRegisterHandlerMap.get(USER_REGISTER_HANDLER_EXT_KEY); AbstractUserRegisterHandler curUserRegisterHandler = userRegisterHandlerMap.get(USER_REGISTER_HANDLER_EXT_KEY);
if (curUserRegisterHandler == null){ if (curUserRegisterHandler == null) {
synchronized (USER_REGISTER_HANDLER_EXT_KEY){ synchronized (USER_REGISTER_HANDLER_EXT_KEY) {
curUserRegisterHandler = userRegisterHandlerMap.get(USER_REGISTER_HANDLER_EXT_KEY); curUserRegisterHandler = userRegisterHandlerMap.get(USER_REGISTER_HANDLER_EXT_KEY);
if (curUserRegisterHandler == null){ if (curUserRegisterHandler == null) {
curUserRegisterHandler = createExtUserRegisterHandler(ApplicationContextHolder.getApplicationContext()); curUserRegisterHandler = createExtUserRegisterHandler(ApplicationContextHolder.getApplicationContext());
} }
} }
......
...@@ -10,6 +10,7 @@ public interface IUserRegisterService { ...@@ -10,6 +10,7 @@ public interface IUserRegisterService {
/** /**
* 以默认流程注册 * 以默认流程注册
*
* @param userRegisterParam * @param userRegisterParam
* @return * @return
* @throws Exception * @throws Exception
...@@ -18,6 +19,7 @@ public interface IUserRegisterService { ...@@ -18,6 +19,7 @@ public interface IUserRegisterService {
/** /**
* 以扩展流程注册 * 以扩展流程注册
*
* @param userRegisterParam * @param userRegisterParam
* @return * @return
* @throws Exception * @throws Exception
...@@ -27,6 +29,7 @@ public interface IUserRegisterService { ...@@ -27,6 +29,7 @@ public interface IUserRegisterService {
/** /**
* 替换AppController.register * 替换AppController.register
* /app/login,/app/login_super * /app/login,/app/login_super
*
* @param registerFrom * @param registerFrom
* @param phoneNo * @param phoneNo
* @param idNo * @param idNo
...@@ -40,6 +43,7 @@ public interface IUserRegisterService { ...@@ -40,6 +43,7 @@ public interface IUserRegisterService {
/** /**
* 替换InnerController里的userService.registerAndReturn * 替换InnerController里的userService.registerAndReturn
* /innerapi/user/register * /innerapi/user/register
*
* @param phoneNo * @param phoneNo
* @param password * @param password
* @param registerFrom * @param registerFrom
...@@ -50,6 +54,7 @@ public interface IUserRegisterService { ...@@ -50,6 +54,7 @@ public interface IUserRegisterService {
/** /**
* 替换UserController.register里的userService.register * 替换UserController.register里的userService.register
* /user/register * /user/register
*
* @param phoneNo * @param phoneNo
* @param password * @param password
* @param registerFrom * @param registerFrom
...@@ -59,11 +64,12 @@ public interface IUserRegisterService { ...@@ -59,11 +64,12 @@ public interface IUserRegisterService {
* @param dimension * @param dimension
* @return * @return
*/ */
boolean register(String phoneNo, String password, Long registerFrom, String ip, Long channelId, Long btRegisterChannelId,String dimension); boolean register(String phoneNo, String password, Long registerFrom, String ip, Long channelId, Long btRegisterChannelId, String dimension);
/** /**
* 替换UserController.loginFast里的registerFastWhenLogin * 替换UserController.loginFast里的registerFastWhenLogin
* /user/login/fast * /user/login/fast
*
* @param phoneNo * @param phoneNo
* @param channelId * @param channelId
* @param registerFrom * @param registerFrom
...@@ -72,11 +78,12 @@ public interface IUserRegisterService { ...@@ -72,11 +78,12 @@ public interface IUserRegisterService {
* @param dimension * @param dimension
* @return * @return
*/ */
User register(String phoneNo, Long channelId, Long registerFrom, String appChannel, Long btRegisterChannelId,String dimension); User register(String phoneNo, Long channelId, Long registerFrom, String appChannel, Long btRegisterChannelId, String dimension);
/** /**
* 替换InnerController.saveMulti里的userService.registerAndReturn * 替换InnerController.saveMulti里的userService.registerAndReturn
* /innserapi/user/save_multi * /innserapi/user/save_multi
*
* @param registeredFrom * @param registeredFrom
* @param channelId * @param channelId
* @param phoneNo * @param phoneNo
...@@ -92,10 +99,11 @@ public interface IUserRegisterService { ...@@ -92,10 +99,11 @@ public interface IUserRegisterService {
* @param contacts * @param contacts
* @return * @return
*/ */
User register(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo, String provinceCode, String province, String cityCode, String city, String districtCode, String district, String address, String contacts,Long btRegisterChannelId); User register(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo, String provinceCode, String province, String cityCode, String city, String districtCode, String district, String address, String contacts, Long btRegisterChannelId);
/** /**
* 替换MotanUserServiceImpl.appLoginAndFetchLoginInfo和MotanUserServiceImpl.appLogin里的register * 替换MotanUserServiceImpl.appLoginAndFetchLoginInfo和MotanUserServiceImpl.appLogin里的register
*
* @param registerFrom * @param registerFrom
* @param phoneNo * @param phoneNo
* @param idNo * @param idNo
......
...@@ -35,7 +35,7 @@ public class AddressUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -35,7 +35,7 @@ public class AddressUserRegisterHandler extends AbstractUserRegisterHandler {
address.setCreatedAt(currentTime); address.setCreatedAt(currentTime);
address.setUpdateAt(currentTime); address.setUpdateAt(currentTime);
addressRepository.save(address); addressRepository.save(address);
if (successor != null){ if (successor != null) {
return successor.handleRegister(userRegisterParam); return successor.handleRegister(userRegisterParam);
} }
return userRegisterParam.getUser(); return userRegisterParam.getUser();
......
...@@ -43,7 +43,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -43,7 +43,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler {
// user保存成功后同步用户信息到Lkb // user保存成功后同步用户信息到Lkb
pushUserToLkb(uuid, userRegisterParam); pushUserToLkb(uuid, userRegisterParam);
userRegisterParam.setUser(user); userRegisterParam.setUser(user);
if (successor != null){ if (successor != null) {
return successor.handleRegister(userRegisterParam); return successor.handleRegister(userRegisterParam);
} }
return userRegisterParam.getUser(); return userRegisterParam.getUser();
...@@ -51,6 +51,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -51,6 +51,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler {
/** /**
* 保存用户user信息 * 保存用户user信息
*
* @param uuid * @param uuid
* @param userRegisterParam * @param userRegisterParam
* @return * @return
...@@ -71,7 +72,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -71,7 +72,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler {
user.setRegisteredFrom(registerFrom); user.setRegisteredFrom(registerFrom);
} }
String password = StringUtils.defaultString(userRegisterParam.getPassword(), ""); String password = StringUtils.defaultString(userRegisterParam.getPassword(), "");
if (userRegisterParam.isGenerateRandomPwd()){ // 如果需要生成随机密码 if (userRegisterParam.isGenerateRandomPwd()) { // 如果需要生成随机密码
password = PasswordUtil.generateRandomPwd(Constants.RANDOM_PWD_LEN); password = PasswordUtil.generateRandomPwd(Constants.RANDOM_PWD_LEN);
} }
user.setPassword(PasswordUtil.MD5(password.toLowerCase() + Constants.PASSWORD_SALT)); user.setPassword(PasswordUtil.MD5(password.toLowerCase() + Constants.PASSWORD_SALT));
...@@ -84,6 +85,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -84,6 +85,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler {
/** /**
* 同步用户信息到Lkb,失败影响注册流程 * 同步用户信息到Lkb,失败影响注册流程
*
* @param uuid * @param uuid
* @param userRegisterParam * @param userRegisterParam
*/ */
...@@ -91,7 +93,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -91,7 +93,7 @@ public class BaseUserRegisterHandler extends AbstractUserRegisterHandler {
log.info("[pushUserToLkb]同步用户信息到Lkb,phoneNo : {}", userRegisterParam.getPhoneNo()); log.info("[pushUserToLkb]同步用户信息到Lkb,phoneNo : {}", userRegisterParam.getPhoneNo());
boolean pushResult = lkbUserService.pushUser(uuid, userRegisterParam.getPhoneNo(), boolean pushResult = lkbUserService.pushUser(uuid, userRegisterParam.getPhoneNo(),
userRegisterParam.getName(), userRegisterParam.getIdNo()); userRegisterParam.getName(), userRegisterParam.getIdNo());
if (!pushResult){ if (!pushResult) {
log.error("[userRegisterHandler][baseUserRegisterHandler]同步用户至Lkb出错,userRegisterParam:{}", JsonUtil.toJson(userRegisterParam)); log.error("[userRegisterHandler][baseUserRegisterHandler]同步用户至Lkb出错,userRegisterParam:{}", JsonUtil.toJson(userRegisterParam));
throw new PushUserToLkbException("同步用户至Lkb出错"); throw new PushUserToLkbException("同步用户至Lkb出错");
} }
......
...@@ -32,12 +32,12 @@ public class BtUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -32,12 +32,12 @@ public class BtUserRegisterHandler extends AbstractUserRegisterHandler {
Long channelId = userRegisterParam.getChannelId(); Long channelId = userRegisterParam.getChannelId();
User user = userRegisterParam.getUser(); User user = userRegisterParam.getUser();
Long btRegisterChannelId = userRegisterParam.getBtRegisterChannelId(); Long btRegisterChannelId = userRegisterParam.getBtRegisterChannelId();
if(!Objects.isNull(user) && Objects.equals(channelId, 222L)){ if (!Objects.isNull(user) && Objects.equals(channelId, 222L)) {
UserBtRegister userBtRegister = new UserBtRegister(); UserBtRegister userBtRegister = new UserBtRegister();
userBtRegister.setUserId(user.getId()); userBtRegister.setUserId(user.getId());
if(null == btRegisterChannelId){ if (null == btRegisterChannelId) {
userBtRegister.setRegisterBtMerchantId(0L); userBtRegister.setRegisterBtMerchantId(0L);
}else{ } else {
userBtRegister.setRegisterBtMerchantId(btRegisterChannelId); userBtRegister.setRegisterBtMerchantId(btRegisterChannelId);
} }
userBtRegister.setIsActive(true); userBtRegister.setIsActive(true);
...@@ -46,7 +46,7 @@ public class BtUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -46,7 +46,7 @@ public class BtUserRegisterHandler extends AbstractUserRegisterHandler {
userBtRegister.setUpdatedAt(currentTime); userBtRegister.setUpdatedAt(currentTime);
userBtRegisterService.save(userBtRegister); userBtRegisterService.save(userBtRegister);
} }
if (!Objects.isNull(successor)){ if (!Objects.isNull(successor)) {
return successor.handleRegister(userRegisterParam); return successor.handleRegister(userRegisterParam);
} }
return userRegisterParam.getUser(); return userRegisterParam.getUser();
......
...@@ -37,14 +37,15 @@ public class ContactUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -37,14 +37,15 @@ public class ContactUserRegisterHandler extends AbstractUserRegisterHandler {
String contact_str = userRegisterParam.getContacts(); String contact_str = userRegisterParam.getContacts();
User user = userRegisterParam.getUser(); User user = userRegisterParam.getUser();
if (StringUtils.isNotBlank(contact_str)) { if (StringUtils.isNotBlank(contact_str)) {
List<Contact> contactList = JSONObject.parseObject(contact_str, new TypeReference<List<Contact>>() {}); List<Contact> contactList = JSONObject.parseObject(contact_str, new TypeReference<List<Contact>>() {
});
if (CollectionUtils.isNotEmpty(contactList)) { if (CollectionUtils.isNotEmpty(contactList)) {
convertContactList(user.getId(), contactList, 2); convertContactList(user.getId(), contactList, 2);
contactRepository.save(contactList); contactRepository.save(contactList);
} }
} }
if (successor != null){ if (successor != null) {
return successor.handleRegister(userRegisterParam); return successor.handleRegister(userRegisterParam);
} }
return userRegisterParam.getUser(); return userRegisterParam.getUser();
...@@ -52,11 +53,12 @@ public class ContactUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -52,11 +53,12 @@ public class ContactUserRegisterHandler extends AbstractUserRegisterHandler {
/** /**
* 转换联系人信息 * 转换联系人信息
*
* @param userId 用户id * @param userId 用户id
* @param contacts 联系人列表 * @param contacts 联系人列表
* @param number 允许的联系人数量 * @param number 允许的联系人数量
*/ */
private void convertContactList(Long userId, List<Contact> contacts,int number) { private void convertContactList(Long userId, List<Contact> contacts, int number) {
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
int count = 1; int count = 1;
for (Contact c : contacts) { for (Contact c : contacts) {
......
...@@ -43,7 +43,7 @@ public class DetailUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -43,7 +43,7 @@ public class DetailUserRegisterHandler extends AbstractUserRegisterHandler {
log.error("[exception][detailUserRegisterHandler_exception]userRegisterParam={},error={}", log.error("[exception][detailUserRegisterHandler_exception]userRegisterParam={},error={}",
JsonUtil.toJson(userRegisterParam), e); JsonUtil.toJson(userRegisterParam), e);
} }
if (successor != null){ if (successor != null) {
return successor.handleRegister(userRegisterParam); return successor.handleRegister(userRegisterParam);
} }
return userRegisterParam.getUser(); return userRegisterParam.getUser();
...@@ -51,6 +51,7 @@ public class DetailUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -51,6 +51,7 @@ public class DetailUserRegisterHandler extends AbstractUserRegisterHandler {
/** /**
* 执行用户详情注册 * 执行用户详情注册
*
* @param userRegisterParam * @param userRegisterParam
*/ */
private void doHandleUserDetailRegister(UserRegisterParam userRegisterParam) throws Exception { private void doHandleUserDetailRegister(UserRegisterParam userRegisterParam) throws Exception {
......
...@@ -29,7 +29,7 @@ public class MqUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -29,7 +29,7 @@ public class MqUserRegisterHandler extends AbstractUserRegisterHandler {
log.error("[exception][mqUserRegisterHandler_exception]userRegisterParam={},error={}", log.error("[exception][mqUserRegisterHandler_exception]userRegisterParam={},error={}",
JsonUtil.toJson(userRegisterParam), e); JsonUtil.toJson(userRegisterParam), e);
} }
if (successor != null){ if (successor != null) {
return successor.handleRegister(userRegisterParam); return successor.handleRegister(userRegisterParam);
} }
return userRegisterParam.getUser(); return userRegisterParam.getUser();
...@@ -37,16 +37,17 @@ public class MqUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -37,16 +37,17 @@ public class MqUserRegisterHandler extends AbstractUserRegisterHandler {
/** /**
* 执行注册发送mq * 执行注册发送mq
*
* @param userRegisterParam * @param userRegisterParam
*/ */
private void doHandleMqUserRegister(UserRegisterParam userRegisterParam) { private void doHandleMqUserRegister(UserRegisterParam userRegisterParam) {
if (!userRegisterParam.isSendSuccessMq()){ if (!userRegisterParam.isSendSuccessMq()) {
return; return;
} }
Long channelId = userRegisterParam.getChannelId(); Long channelId = userRegisterParam.getChannelId();
String dimension = userRegisterParam.getDimension(); String dimension = userRegisterParam.getDimension();
User user = userRegisterParam.getUser(); User user = userRegisterParam.getUser();
if (user != null){ if (user != null) {
MqUtils.sendRegisterMessage(channelId, dimension, user); MqUtils.sendRegisterMessage(channelId, dimension, user);
} }
} }
......
...@@ -33,7 +33,7 @@ public class SmsUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -33,7 +33,7 @@ public class SmsUserRegisterHandler extends AbstractUserRegisterHandler {
log.error("[exception][smsUserRegisterHandler_exception]userRegisterParam={},error={}", log.error("[exception][smsUserRegisterHandler_exception]userRegisterParam={},error={}",
JsonUtil.toJson(userRegisterParam), e); JsonUtil.toJson(userRegisterParam), e);
} }
if (successor != null){ if (successor != null) {
return successor.handleRegister(userRegisterParam); return successor.handleRegister(userRegisterParam);
} }
return userRegisterParam.getUser(); return userRegisterParam.getUser();
...@@ -41,6 +41,7 @@ public class SmsUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -41,6 +41,7 @@ public class SmsUserRegisterHandler extends AbstractUserRegisterHandler {
/** /**
* 执行发送短信 * 执行发送短信
*
* @param userRegisterParam * @param userRegisterParam
*/ */
private void doHandleSmsUserRegister(UserRegisterParam userRegisterParam) { private void doHandleSmsUserRegister(UserRegisterParam userRegisterParam) {
...@@ -64,20 +65,22 @@ public class SmsUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -64,20 +65,22 @@ public class SmsUserRegisterHandler extends AbstractUserRegisterHandler {
/** /**
* 执行发送推送app短信 TODO * 执行发送推送app短信 TODO
*
* @param userRegisterParam * @param userRegisterParam
*/ */
private void doHandleSendAppSms(UserRegisterParam userRegisterParam) { private void doHandleSendAppSms(UserRegisterParam userRegisterParam) {
if (!userRegisterParam.isSendAppSms()){ if (!userRegisterParam.isSendAppSms()) {
return; return;
} }
} }
/** /**
* 执行发送注册成功短信 * 执行发送注册成功短信
*
* @param userRegisterParam * @param userRegisterParam
*/ */
private void doHandleSendSuccessSms(UserRegisterParam userRegisterParam) { private void doHandleSendSuccessSms(UserRegisterParam userRegisterParam) {
if (!userRegisterParam.isSendSuccessSms()){ if (!userRegisterParam.isSendSuccessSms()) {
return; return;
} }
Long registerFrom = userRegisterParam.getRegisterFrom(); Long registerFrom = userRegisterParam.getRegisterFrom();
...@@ -85,7 +88,7 @@ public class SmsUserRegisterHandler extends AbstractUserRegisterHandler { ...@@ -85,7 +88,7 @@ public class SmsUserRegisterHandler extends AbstractUserRegisterHandler {
if (registerFrom != 645L && registerFrom != 900L && registerFrom != 158412L) { if (registerFrom != 645L && registerFrom != 900L && registerFrom != 158412L) {
smsService.sendAfterRegister(phoneNo); smsService.sendAfterRegister(phoneNo);
log.info("第三方登录用户注册成功,registerFrom:{}, phoneNo:{},并且已发送短信通知", registerFrom, phoneNo); log.info("第三方登录用户注册成功,registerFrom:{}, phoneNo:{},并且已发送短信通知", registerFrom, phoneNo);
}else if(registerFrom == 900L){ } else if (registerFrom == 900L) {
smsService.sendAfterRegister(phoneNo, "123"); smsService.sendAfterRegister(phoneNo, "123");
log.info("第三方(聚美)登录用户注册成功,registerFrom:{},phoneNo:{},并且已发送短信通知", registerFrom, phoneNo); log.info("第三方(聚美)登录用户注册成功,registerFrom:{},phoneNo:{},并且已发送短信通知", registerFrom, phoneNo);
} }
......
...@@ -79,7 +79,7 @@ public class UserRegisterServiceImpl extends AbstractUserRegisterService { ...@@ -79,7 +79,7 @@ public class UserRegisterServiceImpl extends AbstractUserRegisterService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public User register(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo, String provinceCode, String province, String cityCode, String city, String districtCode, String district, String address, String contacts,Long btRegisterChannelId) { public User register(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo, String provinceCode, String province, String cityCode, String city, String districtCode, String district, String address, String contacts, Long btRegisterChannelId) {
Address addressObj = new Address(); Address addressObj = new Address();
addressObj.setProvinceCode(Long.valueOf(provinceCode)); addressObj.setProvinceCode(Long.valueOf(provinceCode));
addressObj.setProvince(province); addressObj.setProvince(province);
......
package cn.quantgroup.xyqb.service.session.aspect; package cn.quantgroup.xyqb.service.session.aspect;
import cn.quantgroup.xyqb.entity.User;
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;
...@@ -35,20 +34,20 @@ public class UserBtRegisterFillAspect { ...@@ -35,20 +34,20 @@ public class UserBtRegisterFillAspect {
public Object handleSingleServiceFeeRule(ProceedingJoinPoint pjp) throws Throwable { public Object handleSingleServiceFeeRule(ProceedingJoinPoint pjp) throws Throwable {
Object[] args = pjp.getArgs(); Object[] args = pjp.getArgs();
try { try {
args =fillUserBtRegister(args); args = fillUserBtRegister(args);
}catch (Exception e){ } catch (Exception e) {
LOGGER.error("补充用户白条登录渠道信息失败",e); LOGGER.error("补充用户白条登录渠道信息失败", e);
} }
return pjp.proceed(args); return pjp.proceed(args);
} }
private Object[] fillUserBtRegister(Object[] args) { private Object[] fillUserBtRegister(Object[] args) {
for (int i = 0;i<args.length;i++){ for (int i = 0; i < args.length; i++) {
Object obj = args[i]; Object obj = args[i];
if (obj instanceof SessionValue){ if (obj instanceof SessionValue) {
SessionValue value =(SessionValue)obj; SessionValue value = (SessionValue) obj;
UserBtRegister userBtRegister = userBtRegisterService.findByUserId(value.getUser().getId()); UserBtRegister userBtRegister = userBtRegisterService.findByUserId(value.getUser().getId());
if(null != userBtRegister && null != value.getLoginProperties()){ if (null != userBtRegister && null != value.getLoginProperties()) {
value.getLoginProperties().setBtMerchantId(userBtRegister.getRegisterBtMerchantId()); value.getLoginProperties().setBtMerchantId(userBtRegister.getRegisterBtMerchantId());
} }
} }
......
...@@ -10,11 +10,7 @@ import cn.quantgroup.xyqb.model.session.SessionValue; ...@@ -10,11 +10,7 @@ import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill; import cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.service.user.impl.UserServiceImpl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Joiner;
import jdk.nashorn.internal.parser.JSONParser;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -22,11 +18,9 @@ import org.springframework.beans.factory.annotation.Qualifier; ...@@ -22,11 +18,9 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Caching; import org.springframework.cache.annotation.Caching;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.persistence.Cacheable;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -77,13 +71,13 @@ public class SessionServiceImpl implements ISessionService { ...@@ -77,13 +71,13 @@ public class SessionServiceImpl implements ISessionService {
sessionStruct.setAttribute("appChannel", String.valueOf(appChannel)); sessionStruct.setAttribute("appChannel", String.valueOf(appChannel));
sessionStruct.getValues().setLoginProperties(properties); sessionStruct.getValues().setLoginProperties(properties);
persistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues());
}else{ } else {
sessionStruct = createSessionAndPersist(user, properties); sessionStruct = createSessionAndPersist(user, properties);
} }
AuthBean authBean = new AuthBean(); AuthBean authBean = new AuthBean();
authBean.setPhoneNo(user.getPhoneNo()); authBean.setPhoneNo(user.getPhoneNo());
authBean.setToken(sessionStruct.getSid()); authBean.setToken(sessionStruct.getSid());
log.info("用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}", createdFrom, user.getPhoneNo(), appChannel,channelId); log.info("用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}", createdFrom, user.getPhoneNo(), appChannel, channelId);
return authBean; return authBean;
} }
...@@ -235,6 +229,7 @@ public class SessionServiceImpl implements ISessionService { ...@@ -235,6 +229,7 @@ public class SessionServiceImpl implements ISessionService {
/** /**
* 获取用户的会话缓存Set的Redis-Key * 获取用户的会话缓存Set的Redis-Key
*
* @param userId - 用户主键 * @param userId - 用户主键
* @return * @return
*/ */
......
package cn.quantgroup.xyqb.service.sms; package cn.quantgroup.xyqb.service.sms;
import cn.quantgroup.sms.SmsSender; import cn.quantgroup.sms.SmsSender;
import cn.quantgroup.xyqb.Constants;
/** /**
* 短信发送服务 * 短信发送服务
...@@ -15,10 +14,11 @@ public interface ISmsService { ...@@ -15,10 +14,11 @@ public interface ISmsService {
void sendAfterRegister(String phoneNo); void sendAfterRegister(String phoneNo);
void sendAfterRegister(String phoneNo,String contentId); void sendAfterRegister(String phoneNo, String contentId);
/** /**
* 验证手机号和验证码是否匹配 * 验证手机号和验证码是否匹配
*
* @param phoneNo 手机号 * @param phoneNo 手机号
* @param verificationCode 验证码(短信/语音) * @param verificationCode 验证码(短信/语音)
* @return * @return
...@@ -27,6 +27,7 @@ public interface ISmsService { ...@@ -27,6 +27,7 @@ public interface ISmsService {
/** /**
* 是否需要重新发送短信验证码 * 是否需要重新发送短信验证码
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
......
...@@ -5,8 +5,6 @@ import cn.quantgroup.sms.SmsSender; ...@@ -5,8 +5,6 @@ import cn.quantgroup.sms.SmsSender;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.service.sms.ISmsService; import cn.quantgroup.xyqb.service.sms.ISmsService;
import lombok.Synchronized; import lombok.Synchronized;
import java.util.Collections;
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.Logger;
...@@ -17,6 +15,8 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -17,6 +15,8 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collections;
/** /**
* @author mengfan.feng * @author mengfan.feng
...@@ -31,7 +31,7 @@ public class SmsServiceImpl implements ISmsService { ...@@ -31,7 +31,7 @@ public class SmsServiceImpl implements ISmsService {
private static final int SMS_VERIFICATION_MAXLEN = 4; private static final int SMS_VERIFICATION_MAXLEN = 4;
private static final String SMS_VERIFY_PREFIX = "sms:verify:"; 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}")
private Boolean isDebug; private Boolean isDebug;
@Autowired @Autowired
...@@ -41,8 +41,8 @@ public class SmsServiceImpl implements ISmsService { ...@@ -41,8 +41,8 @@ public class SmsServiceImpl implements ISmsService {
@Override @Override
@Synchronized @Synchronized
public SmsSender getSmsSender() { public SmsSender getSmsSender() {
if(null==smsSender){ if (null == smsSender) {
smsSender=new SmsSender(); smsSender = new SmsSender();
} }
return smsSender; return smsSender;
} }
...@@ -51,6 +51,7 @@ public class SmsServiceImpl implements ISmsService { ...@@ -51,6 +51,7 @@ public class SmsServiceImpl implements ISmsService {
/** /**
* 24-“【信用钱包】么么哒,等您好久了~感谢您注册信用钱包,我们来给您送钱啦,点击提交借款申请,万元现金立即到手 s.xyqb.com/a” * 24-“【信用钱包】么么哒,等您好久了~感谢您注册信用钱包,我们来给您送钱啦,点击提交借款申请,万元现金立即到手 s.xyqb.com/a”
* 1005-“【信用钱包】等您好久了~感谢您的注册,尊享息费5折优惠。登录 s.xyqb.com/a 享更多优惠(合理消费,理性借贷)” * 1005-“【信用钱包】等您好久了~感谢您的注册,尊享息费5折优惠。登录 s.xyqb.com/a 享更多优惠(合理消费,理性借贷)”
*
* @param phoneNo * @param phoneNo
*/ */
@Override @Override
...@@ -119,7 +120,7 @@ public class SmsServiceImpl implements ISmsService { ...@@ -119,7 +120,7 @@ public class SmsServiceImpl implements ISmsService {
String verificationCountKey = Constants.REDIS_VERIFICATION_COUNT + phoneNo; String verificationCountKey = Constants.REDIS_VERIFICATION_COUNT + phoneNo;
Long getVerificationCount = stringRedisTemplate.opsForHash().increment(verificationCountKey, Constants.REDIS_VERIFICATION_COUNT, 1); Long getVerificationCount = stringRedisTemplate.opsForHash().increment(verificationCountKey, Constants.REDIS_VERIFICATION_COUNT, 1);
boolean needResend = getVerificationCount >= Constants.VERIFICATION_CODE_FINITE_COUNT; boolean needResend = getVerificationCount >= Constants.VERIFICATION_CODE_FINITE_COUNT;
if(needResend) { if (needResend) {
String key = Constants.REDIS_PREFIX_VERIFICATION_CODE + phoneNo; String key = Constants.REDIS_PREFIX_VERIFICATION_CODE + phoneNo;
stringRedisTemplate.delete(key); stringRedisTemplate.delete(key);
stringRedisTemplate.opsForHash().delete(verificationCountKey, Constants.REDIS_VERIFICATION_COUNT); stringRedisTemplate.opsForHash().delete(verificationCountKey, Constants.REDIS_VERIFICATION_COUNT);
......
...@@ -10,7 +10,6 @@ import java.util.List; ...@@ -10,7 +10,6 @@ import java.util.List;
*/ */
public interface IContactService { public interface IContactService {
/** /**
*
* @param userId - 用户主键 * @param userId - 用户主键
* @param trim - 是否清除非法错误记录,true-清除,false-不清除 * @param trim - 是否清除非法错误记录,true-清除,false-不清除
* @return * @return
...@@ -22,11 +21,13 @@ public interface IContactService { ...@@ -22,11 +21,13 @@ public interface IContactService {
/** /**
* 批量保存用户联系人 * 批量保存用户联系人
* 如果已存在联系人,则覆盖更新 * 如果已存在联系人,则覆盖更新
*
* @param userId - 用户主键 * @param userId - 用户主键
* @param contacts - 联系人列表 * @param contacts - 联系人列表
* @return * @return
*/ */
List<Contact> save(Long userId, List<Contact> contacts); List<Contact> save(Long userId, List<Contact> contacts);
Contact save(Contact contact); Contact save(Contact contact);
Contact saveContact(String name, String phoneNo, Relation relation, Contact contact); Contact saveContact(String name, String phoneNo, Relation relation, Contact contact);
......
...@@ -26,6 +26,7 @@ public interface ILkbUserService { ...@@ -26,6 +26,7 @@ public interface ILkbUserService {
/** /**
* 同步用戶信息 * 同步用戶信息
*
* @param uuid * @param uuid
* @param phoneNo * @param phoneNo
* @param name * @param name
......
...@@ -3,24 +3,28 @@ package cn.quantgroup.xyqb.service.user; ...@@ -3,24 +3,28 @@ package cn.quantgroup.xyqb.service.user;
/** /**
* IPV4锁机制Service * IPV4锁机制Service
*
* @author renwc * @author renwc
*/ */
public interface ILockIpv4Service { public interface ILockIpv4Service {
/** /**
* 向该phoneNo添加错误计数器 * 向该phoneNo添加错误计数器
*
* @param phoneNo * @param phoneNo
*/ */
void countErrorByPhoneNo(String phoneNo); void countErrorByPhoneNo(String phoneNo);
/** /**
* 向该ipv4添加错误计数器 * 向该ipv4添加错误计数器
*
* @param ip - 目标ip * @param ip - 目标ip
*/ */
void countErrorByIpv4(String ip); void countErrorByIpv4(String ip);
/** /**
* 锁定IPV4 * 锁定IPV4
*
* @param ip - 目标ip * @param ip - 目标ip
* @param count - 错误计数 * @param count - 错误计数
*/ */
...@@ -28,12 +32,14 @@ public interface ILockIpv4Service { ...@@ -28,12 +32,14 @@ public interface ILockIpv4Service {
/** /**
* 向该phoneNo添加错误计数器 * 向该phoneNo添加错误计数器
*
* @param ip - 目标ip * @param ip - 目标ip
*/ */
void countSuccessByIpv4(String ip); void countSuccessByIpv4(String ip);
/** /**
* 锁定IPV4 * 锁定IPV4
*
* @param ip - 目标ip * @param ip - 目标ip
* @param count - 错误计数 * @param count - 错误计数
*/ */
......
...@@ -29,7 +29,7 @@ public interface IUserDetailService { ...@@ -29,7 +29,7 @@ public interface IUserDetailService {
List<UserDetail> findByIdnos(List<String> idnos); List<UserDetail> findByIdnos(List<String> idnos);
Page<UserDetail> getUserDetailsPage(List<Long> userId,List<String> phoneNos,List<String> idNos, int pageNumber, int pageSize, Page<UserDetail> getUserDetailsPage(List<Long> userId, List<String> phoneNos, List<String> idNos, int pageNumber, int pageSize,
String sortType); String sortType);
......
package cn.quantgroup.xyqb.service.user; package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.UserQueryLog; import cn.quantgroup.xyqb.entity.UserQueryLog;
import java.sql.Timestamp;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -12,7 +10,7 @@ import java.util.List; ...@@ -12,7 +10,7 @@ import java.util.List;
*/ */
public interface IUserQueryLogService { public interface IUserQueryLogService {
List<UserQueryLog> findByTimestamp(Date beginDate, Date endDate,Integer pageId,Integer pageSize); List<UserQueryLog> findByTimestamp(Date beginDate, Date endDate, Integer pageId, Integer pageSize);
Long findByTimestampCount(Date beginDate, Date endDate); Long findByTimestampCount(Date beginDate, Date endDate);
......
...@@ -30,13 +30,13 @@ public interface IUserService { ...@@ -30,13 +30,13 @@ public interface IUserService {
List<User> findByPhones(List<String> phones); List<User> findByPhones(List<String> phones);
List<User> findRegisterUserByTime(String beginTime,String endTime); List<User> findRegisterUserByTime(String beginTime, String endTime);
/** /**
* 禁用用户 * 禁用用户
* *
* @param phoneNo 电话号码 * @param phoneNo 电话号码
*/ */
int forbiddenUser(Boolean enable,String phoneNo); int forbiddenUser(Boolean enable, String phoneNo);
} }
...@@ -7,5 +7,6 @@ import cn.quantgroup.xyqb.entity.UserAttached; ...@@ -7,5 +7,6 @@ import cn.quantgroup.xyqb.entity.UserAttached;
*/ */
public interface UserCenterService { public interface UserCenterService {
UserAttached searchUserAttachedByUserId(Long userId); UserAttached searchUserAttachedByUserId(Long userId);
UserAttached saveUserAttached(UserAttached userAttached); UserAttached saveUserAttached(UserAttached userAttached);
} }
package cn.quantgroup.xyqb.service.user.impl; package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.user.enums.Relation; import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.controller.external.user.InnerController;
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 cn.quantgroup.xyqb.util.ValidationUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.bcel.classfile.Constant;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
...@@ -17,8 +14,6 @@ import org.springframework.stereotype.Service; ...@@ -17,8 +14,6 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
...@@ -35,7 +30,7 @@ public class ContactServiceImpl implements IContactService { ...@@ -35,7 +30,7 @@ public class ContactServiceImpl implements IContactService {
@Cacheable(value = "contact", key = "'contact:' + #trim + #userId", unless = "#result == null or #result.size() == 0", cacheManager = "cacheManager") @Cacheable(value = "contact", key = "'contact:' + #trim + #userId", unless = "#result == null or #result.size() == 0", cacheManager = "cacheManager")
public List<Contact> findByUserId(Long userId, boolean trim) { public List<Contact> findByUserId(Long userId, boolean trim) {
List<Contact> contacts = contactRepository.findByUserId(userId); List<Contact> contacts = contactRepository.findByUserId(userId);
if(trim){ if (trim) {
trim(contacts); trim(contacts);
} }
return contacts; return contacts;
...@@ -43,14 +38,15 @@ public class ContactServiceImpl implements IContactService { ...@@ -43,14 +38,15 @@ public class ContactServiceImpl implements IContactService {
/** /**
* 过滤掉非法联系人记录 * 过滤掉非法联系人记录
*
* @param contacts - 包含待清除记录的联系人列表 * @param contacts - 包含待清除记录的联系人列表
*/ */
private void trim(List<Contact> contacts){ private void trim(List<Contact> contacts) {
if(CollectionUtils.isEmpty(contacts)){ if (CollectionUtils.isEmpty(contacts)) {
return ; return;
} }
Iterator<Contact> iterator = contacts.iterator(); Iterator<Contact> iterator = contacts.iterator();
while(iterator.hasNext()){ while (iterator.hasNext()) {
Contact contact = iterator.next(); Contact contact = iterator.next();
if (!contact.valid()) { if (!contact.valid()) {
iterator.remove(); iterator.remove();
...@@ -68,7 +64,7 @@ public class ContactServiceImpl implements IContactService { ...@@ -68,7 +64,7 @@ public class ContactServiceImpl implements IContactService {
@CacheEvict(value = "contact", key = "'contact:true' + #userId", cacheManager = "cacheManager"), @CacheEvict(value = "contact", key = "'contact:true' + #userId", cacheManager = "cacheManager"),
@CacheEvict(value = "contact", key = "'contact:false' + #userId", cacheManager = "cacheManager")}) @CacheEvict(value = "contact", key = "'contact:false' + #userId", cacheManager = "cacheManager")})
public List<Contact> save(Long userId, List<Contact> contacts) { public List<Contact> save(Long userId, List<Contact> contacts) {
if(userId == null){ if (userId == null) {
return null; return null;
} }
// 合并当前用户列表到更新列表 // 合并当前用户列表到更新列表
...@@ -95,7 +91,7 @@ public class ContactServiceImpl implements IContactService { ...@@ -95,7 +91,7 @@ public class ContactServiceImpl implements IContactService {
if (null != relation) { if (null != relation) {
contact.setRelation(relation); contact.setRelation(relation);
} }
LOGGER.info("修改前联系人信息:{}",contact); LOGGER.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);
...@@ -104,6 +100,7 @@ public class ContactServiceImpl implements IContactService { ...@@ -104,6 +100,7 @@ public class ContactServiceImpl implements IContactService {
/** /**
* 合并当前用户列表到更新列表 * 合并当前用户列表到更新列表
*
* @param userId - 用户主键 * @param userId - 用户主键
* @param contacts - 新联系人列表 * @param contacts - 新联系人列表
*/ */
...@@ -112,14 +109,14 @@ public class ContactServiceImpl implements IContactService { ...@@ -112,14 +109,14 @@ public class ContactServiceImpl implements IContactService {
List<Contact> userContact = contactRepository.findByUserId(userId); List<Contact> userContact = contactRepository.findByUserId(userId);
int userContactCount = (userContact == null) ? 0 : userContact.size(); 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()); c.setRelation(c.getRelation() == null ? Relation.OTHER : c.getRelation());
c.setCreatedAt(now); c.setCreatedAt(now);
c.setUpdateAt(now); c.setUpdateAt(now);
if(userContactCount > i){ if (userContactCount > i) {
c.setId(userContact.get(i).getId()); c.setId(userContact.get(i).getId());
c.setCreatedAt(contacts.get(i).getCreatedAt() == null ? now : contacts.get(i).getCreatedAt()); c.setCreatedAt(contacts.get(i).getCreatedAt() == null ? now : contacts.get(i).getCreatedAt());
c.setRelation(contacts.get(i).getRelation() == null ? Relation.OTHER : contacts.get(i).getRelation()); c.setRelation(contacts.get(i).getRelation() == null ? Relation.OTHER : contacts.get(i).getRelation());
......
...@@ -97,10 +97,10 @@ public class LkbUserviceImpl implements ILkbUserService { ...@@ -97,10 +97,10 @@ public class LkbUserviceImpl implements ILkbUserService {
parameters.put("token", token); parameters.put("token", token);
parameters.put("userId", uuid); parameters.put("userId", uuid);
parameters.put("loginName", phoneNo); parameters.put("loginName", phoneNo);
if (StringUtils.isNotBlank(name)){ if (StringUtils.isNotBlank(name)) {
parameters.put("realName", name); parameters.put("realName", name);
} }
if (StringUtils.isNotBlank(idNo)){ if (StringUtils.isNotBlank(idNo)) {
parameters.put("idCardNo", idNo); parameters.put("idCardNo", idNo);
} }
String response = httpService.post(clientUrl + userPushPath, parameters); String response = httpService.post(clientUrl + userPushPath, parameters);
......
...@@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit; ...@@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit;
/** /**
* IPV4锁机制Service实现 * IPV4锁机制Service实现
*
* @author renwc * @author renwc
*/ */
@Service @Service
...@@ -51,13 +52,14 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -51,13 +52,14 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
/** /**
* 对白名单之外的所有公有、私有IP执行错误计数 * 对白名单之外的所有公有、私有IP执行错误计数
*
* @param ipv4 * @param ipv4
*/ */
@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);
} }
...@@ -68,20 +70,20 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -68,20 +70,20 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
} }
@Override @Override
public void lockErrorIpv4(String ip, long count){ public void lockErrorIpv4(String ip, long count) {
// 每分钟计数阈值 // 每分钟计数阈值
long counts = Constants.IPV4_LOCK_ON_FAILED_COUNTS; long counts = Constants.IPV4_LOCK_ON_FAILED_COUNTS;
String redisCounts = stringRedisTemplate.opsForValue().get(Constants.IPV4_LOCK_ON_COUNTS_REDIS); String redisCounts = stringRedisTemplate.opsForValue().get(Constants.IPV4_LOCK_ON_COUNTS_REDIS);
if(StringUtils.isNumeric(redisCounts) && Integer.valueOf(redisCounts) > 0){ if (StringUtils.isNumeric(redisCounts) && Integer.valueOf(redisCounts) > 0) {
counts = Integer.valueOf(redisCounts); counts = Integer.valueOf(redisCounts);
} }
if(count < counts){ if (count < counts) {
return; return;
} }
// 锁定时长 // 锁定时长
long minutes = Constants.IPV4_FAILED_LOCK_MINUTES; long minutes = Constants.IPV4_FAILED_LOCK_MINUTES;
String redisMinutes = stringRedisTemplate.opsForValue().get(Constants.IPV4_LOCK_ON_COUNTS_REDIS); String redisMinutes = stringRedisTemplate.opsForValue().get(Constants.IPV4_LOCK_ON_COUNTS_REDIS);
if(StringUtils.isNumeric(redisMinutes) && Integer.valueOf(redisMinutes) > 0){ if (StringUtils.isNumeric(redisMinutes) && Integer.valueOf(redisMinutes) > 0) {
minutes = Integer.valueOf(redisMinutes); minutes = Integer.valueOf(redisMinutes);
} }
String lockIpv4Key = getLockIpv4Key(ip); String lockIpv4Key = getLockIpv4Key(ip);
...@@ -91,13 +93,14 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -91,13 +93,14 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
/** /**
* 对白名单之外的所有公有、私有IP执行成功计数 * 对白名单之外的所有公有、私有IP执行成功计数
*
* @param ipv4 * @param ipv4
*/ */
@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);
} }
...@@ -109,9 +112,9 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -109,9 +112,9 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
} }
@Override @Override
public void lockSuccessIpv4(String ip, long count){ public void lockSuccessIpv4(String ip, long count) {
// 每小时计数阈值 // 每小时计数阈值
if(count < Constants.IPV4_LOCK_ON_SUCCESS_COUNTS){ if (count < Constants.IPV4_LOCK_ON_SUCCESS_COUNTS) {
return; return;
} }
// 锁定时长 // 锁定时长
...@@ -120,15 +123,15 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -120,15 +123,15 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
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); 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);
} }
private final static String getErrorIpKey(String ipv4){ private final static String getErrorIpKey(String ipv4) {
return Constants.REDIS_PASSWORD_ERROR_COUNT_FOR_IPV4 + ipv4; return Constants.REDIS_PASSWORD_ERROR_COUNT_FOR_IPV4 + ipv4;
} }
private final static String getSuccessIpKey(String ipv4){ private final static String getSuccessIpKey(String ipv4) {
return Constants.REDIS_PASSWORD_SUCCESS_COUNT_FOR_IPV4 + ipv4; return Constants.REDIS_PASSWORD_SUCCESS_COUNT_FOR_IPV4 + ipv4;
} }
private final static String getLockIpv4Key(String ipv4){ private final static String getLockIpv4Key(String ipv4) {
return Constants.IPV4_LOCK + ipv4; return Constants.IPV4_LOCK + ipv4;
} }
} }
...@@ -22,7 +22,7 @@ public class UserBtRegisterServiceImpl implements IUserBtRegisterService { ...@@ -22,7 +22,7 @@ public class UserBtRegisterServiceImpl implements IUserBtRegisterService {
@Override @Override
@Cacheable(value = "btRegisterCache", key = "'userId' + #userId", unless = "#result == null", cacheManager = "cacheManager") @Cacheable(value = "btRegisterCache", key = "'userId' + #userId", unless = "#result == null", cacheManager = "cacheManager")
public UserBtRegister findByUserId(Long userId) { public UserBtRegister findByUserId(Long userId) {
if(null != userId) { if (null != userId) {
return userBtRegisterRepository.findOne((root, query, cb) -> { return userBtRegisterRepository.findOne((root, query, cb) -> {
List<Predicate> list = new ArrayList<>(); List<Predicate> list = new ArrayList<>();
list.add(cb.equal(root.get("isActive").as(Boolean.class), Boolean.TRUE)); list.add(cb.equal(root.get("isActive").as(Boolean.class), Boolean.TRUE));
......
...@@ -12,17 +12,6 @@ import cn.quantgroup.xyqb.service.user.IUserDetailService; ...@@ -12,17 +12,6 @@ import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO; import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
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;
...@@ -35,6 +24,17 @@ import org.springframework.data.jpa.domain.Specification; ...@@ -35,6 +24,17 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/** /**
* Created by 11 on 2016/12/29. * Created by 11 on 2016/12/29.
*/ */
...@@ -151,15 +151,15 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -151,15 +151,15 @@ public class UserDetailServiceImpl implements IUserDetailService {
Specification<UserDetail> specification = new Specification<UserDetail>() { Specification<UserDetail> specification = new Specification<UserDetail>() {
@Override @Override
public Predicate toPredicate(Root<UserDetail> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) { public Predicate toPredicate(Root<UserDetail> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
if (userId!=null&&userId.size()>0) { if (userId != null && userId.size() > 0) {
criteriaQuery.where(root.get("userId").in(userId)); criteriaQuery.where(root.get("userId").in(userId));
list.add(criteriaQuery.getRestriction()); list.add(criteriaQuery.getRestriction());
} }
if (phoneNo!=null&&phoneNo.size()>0) { if (phoneNo != null && phoneNo.size() > 0) {
criteriaQuery.where(root.get(Constants.PHONE_NO).in(phoneNo)); criteriaQuery.where(root.get(Constants.PHONE_NO).in(phoneNo));
list.add(criteriaQuery.getRestriction()); list.add(criteriaQuery.getRestriction());
} }
if (idNo!=null&&idNo.size()>0) { if (idNo != null && idNo.size() > 0) {
criteriaQuery.where(root.get("idNo").in(idNo)); criteriaQuery.where(root.get("idNo").in(idNo));
list.add(criteriaQuery.getRestriction()); list.add(criteriaQuery.getRestriction());
} }
...@@ -183,27 +183,27 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -183,27 +183,27 @@ public class UserDetailServiceImpl implements IUserDetailService {
public Page<UserDetail> getUserDetailsPage(List<Long> userId, List<String> phoneNos, List<String> idNos, int pageNumber, int pageSize, public Page<UserDetail> getUserDetailsPage(List<Long> userId, List<String> phoneNos, List<String> idNos, int pageNumber, int pageSize,
String sortType) { String sortType) {
PageRequest pageRequest = buildPageRequest(pageNumber, pageSize, sortType); PageRequest pageRequest = buildPageRequest(pageNumber, pageSize, sortType);
Specification<UserDetail> spec = valueInSpecification(userId,phoneNos,idNos); Specification<UserDetail> spec = valueInSpecification(userId, phoneNos, idNos);
return userDetailRepository.findAll(spec, pageRequest); return userDetailRepository.findAll(spec, pageRequest);
} }
@Override @Override
public void fixedIdNoAndGender() { public void fixedIdNoAndGender() {
List<UserDetail> details=userDetailRepository.selectUserDetailsBy(); List<UserDetail> details = userDetailRepository.selectUserDetailsBy();
if(!CollectionUtils.isEmpty(details)){ if (!CollectionUtils.isEmpty(details)) {
for (UserDetail detail:details){ for (UserDetail detail : details) {
try { try {
if(!idCardService.isIdCardValid(detail.getIdNo())){ if (!idCardService.isIdCardValid(detail.getIdNo())) {
LOGGER.error("修复用户老数据身份证号错误",detail.getUserId()); LOGGER.error("修复用户老数据身份证号错误", detail.getUserId());
continue; continue;
} }
Gender gender=idCardService.getIdCardInfo(detail.getIdNo()).getGender(); Gender gender = idCardService.getIdCardInfo(detail.getIdNo()).getGender();
if(null!=gender){ if (null != gender) {
userDetailRepository.updateGender(gender.ordinal(),detail.getUserId()); userDetailRepository.updateGender(gender.ordinal(), detail.getUserId());
} }
} catch (ParseException e) { } catch (ParseException e) {
LOGGER.error("修复用户老数据身份证号错误",detail.getUserId()); LOGGER.error("修复用户老数据身份证号错误", detail.getUserId());
continue; continue;
} }
} }
......
...@@ -6,7 +6,6 @@ import cn.quantgroup.xyqb.service.user.IUserQueryLogService; ...@@ -6,7 +6,6 @@ import cn.quantgroup.xyqb.service.user.IUserQueryLogService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -20,13 +19,13 @@ public class UserQueryLogServiceImpl implements IUserQueryLogService { ...@@ -20,13 +19,13 @@ public class UserQueryLogServiceImpl implements IUserQueryLogService {
private IUserQueryLogRepository userQueryLogRepository; private IUserQueryLogRepository userQueryLogRepository;
@Override @Override
public List<UserQueryLog> findByTimestamp(Date beginDate,Date endDate,Integer pageId,Integer pageSize) { public List<UserQueryLog> findByTimestamp(Date beginDate, Date endDate, Integer pageId, Integer pageSize) {
return userQueryLogRepository.findQueryLogCreatedAt(beginDate,endDate,pageId,pageSize); return userQueryLogRepository.findQueryLogCreatedAt(beginDate, endDate, pageId, pageSize);
} }
@Override @Override
public Long findByTimestampCount(Date beginDate, Date endDate) { public Long findByTimestampCount(Date beginDate, Date endDate) {
return userQueryLogRepository.findQueryLogCountCreatedAt(beginDate,endDate); return userQueryLogRepository.findQueryLogCountCreatedAt(beginDate, endDate);
} }
@Override @Override
......
...@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.service.user.impl; ...@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.repository.*; import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
...@@ -130,7 +130,7 @@ public class UserServiceImpl implements IUserService { ...@@ -130,7 +130,7 @@ public class UserServiceImpl implements IUserService {
@Override @Override
public List<User> findRegisterUserByTime(String beginTime, String endTime) { public List<User> findRegisterUserByTime(String beginTime, String endTime) {
return userRepository.findRegisterUserByTime(beginTime,endTime); return userRepository.findRegisterUserByTime(beginTime, endTime);
} }
@Override @Override
......
...@@ -19,6 +19,7 @@ public interface IWechatService { ...@@ -19,6 +19,7 @@ public interface IWechatService {
/** /**
* 关联用户和微信 * 关联用户和微信
*
* @param userId - 用户标识 * @param userId - 用户标识
* @param phoneNo * @param phoneNo
* @param openId - 微信标识 * @param openId - 微信标识
...@@ -29,6 +30,7 @@ public interface IWechatService { ...@@ -29,6 +30,7 @@ public interface IWechatService {
/** /**
* 按userId查微信信息 * 按userId查微信信息
* 此接口实现处不应加缓存,否则解绑时(在关联用户的事务中)不好清除 * 此接口实现处不应加缓存,否则解绑时(在关联用户的事务中)不好清除
*
* @param userId - 用户标识 * @param userId - 用户标识
* @return * @return
*/ */
......
...@@ -8,17 +8,12 @@ import cn.quantgroup.xyqb.service.http.IHttpService; ...@@ -8,17 +8,12 @@ import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.wechat.IWechatService; import cn.quantgroup.xyqb.service.wechat.IWechatService;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
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;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.data.domain.Example;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -124,11 +119,11 @@ public class WechatServiceImpl implements IWechatService { ...@@ -124,11 +119,11 @@ public class WechatServiceImpl implements IWechatService {
@Override @Override
@Transactional @Transactional
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;
} }
long count = weChatUserRepository.countByOpenId(userInfo.getOpenId()); long count = weChatUserRepository.countByOpenId(userInfo.getOpenId());
if(count > 0){ if (count > 0) {
//注意,这里会抛异常(5000/total),WeChatController中已捕获处理 //注意,这里会抛异常(5000/total),WeChatController中已捕获处理
return weChatUserRepository.findByOpenId(userInfo.getOpenId()); return weChatUserRepository.findByOpenId(userInfo.getOpenId());
} }
...@@ -141,35 +136,35 @@ public class WechatServiceImpl implements IWechatService { ...@@ -141,35 +136,35 @@ public class WechatServiceImpl implements IWechatService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int relateUser(Long userId, String phoneNo, String openId) { public int relateUser(Long userId, String phoneNo, String openId) {
if(Objects.isNull(userId) || Objects.isNull(openId) || StringUtils.isBlank(openId)){ if (Objects.isNull(userId) || Objects.isNull(openId) || StringUtils.isBlank(openId)) {
log.error("微信关联失败:非法入参:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId); log.error("微信关联失败:非法入参:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
return 0; return 0;
} }
// Old - 当前openId的WechatUserInfo // Old - 当前openId的WechatUserInfo
WechatUserInfo wechatUserInfo = weChatUserRepository.findByOpenId(openId); WechatUserInfo wechatUserInfo = weChatUserRepository.findByOpenId(openId);
if(Objects.nonNull(wechatUserInfo) && Objects.equals(userId, wechatUserInfo.getUserId()) && Objects.equals(openId, wechatUserInfo.getOpenId())){ if (Objects.nonNull(wechatUserInfo) && Objects.equals(userId, wechatUserInfo.getUserId()) && Objects.equals(openId, wechatUserInfo.getOpenId())) {
log.info("微信关联成功:重复关联:跳过:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId); log.info("微信关联成功:重复关联:跳过:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
return 1; return 1;
} }
// 强制解除关联 // 强制解除关联
int dissociate = weChatUserRepository.dissociateUser(openId, userId); int dissociate = weChatUserRepository.dissociateUser(openId, userId);
if(dissociate < 1){ if (dissociate < 1) {
log.error("微信关联失败:解绑条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId); log.error("微信关联失败:解绑条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
throw new WechatRelateUserException("微信关联失败"); throw new WechatRelateUserException("微信关联失败");
} }
int relate = weChatUserRepository.relateUser(userId, Optional.ofNullable(phoneNo).orElse(""), openId); int relate = weChatUserRepository.relateUser(userId, Optional.ofNullable(phoneNo).orElse(""), openId);
if(relate < 1){ if (relate < 1) {
log.error("微信关联失败:绑定条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId); log.error("微信关联失败:绑定条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
throw new WechatRelateUserException("微信关联失败"); throw new WechatRelateUserException("微信关联失败");
} }
// Todo : 如果当前openId已关联其他用户,则解绑成功后要注销其登录session -- 考虑后暂时不执行,影响太大 // Todo : 如果当前openId已关联其他用户,则解绑成功后要注销其登录session -- 考虑后暂时不执行,影响太大
log.info("微信关联成功:[service]:userId:{},phoneNo:{},openId:{},dissociate:{},relate:{},Old-WechatUserInfo:{}", userId, phoneNo, openId,dissociate,relate, wechatUserInfo); log.info("微信关联成功:[service]:userId:{},phoneNo:{},openId:{},dissociate:{},relate:{},Old-WechatUserInfo:{}", userId, phoneNo, openId, dissociate, relate, wechatUserInfo);
return relate; return relate;
} }
@Override @Override
public WechatUserInfo findWechatUserInfoByPhoneNo(String phoneNo) { public WechatUserInfo findWechatUserInfoByPhoneNo(String phoneNo) {
if(!ValidationUtil.validatePhoneNo(phoneNo)){ if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return null; return null;
} }
return weChatUserRepository.findByPhoneNo(phoneNo); return weChatUserRepository.findByPhoneNo(phoneNo);
...@@ -193,6 +188,7 @@ public class WechatServiceImpl implements IWechatService { ...@@ -193,6 +188,7 @@ public class WechatServiceImpl implements IWechatService {
/** /**
* 按userId查微信信息 * 按userId查微信信息
* 此处不应加缓存,否则解绑时不好清除 * 此处不应加缓存,否则解绑时不好清除
*
* @param userId - 用户标识 * @param userId - 用户标识
* @return * @return
*/ */
......
...@@ -6,8 +6,6 @@ import cn.quantgroup.xyqb.model.session.SessionValue; ...@@ -6,8 +6,6 @@ import cn.quantgroup.xyqb.model.session.SessionValue;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
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.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
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;
...@@ -28,20 +26,20 @@ public class XyqbSessionContextHolder { ...@@ -28,20 +26,20 @@ public class XyqbSessionContextHolder {
SessionStruct sessionStruct; SessionStruct sessionStruct;
if (threadSession.get() != null) { if (threadSession.get() != null) {
sessionStruct = threadSession.get(); sessionStruct = threadSession.get();
}else { } else {
sessionStruct = getXSessionFromRedis(); sessionStruct = getXSessionFromRedis();
threadSession.set(sessionStruct); threadSession.set(sessionStruct);
} }
return sessionStruct; return sessionStruct;
} }
public static SessionStruct getXSessionFromRedis(){ public static SessionStruct getXSessionFromRedis() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader(Constants.X_AUTH_TOKEN); String token = request.getHeader(Constants.X_AUTH_TOKEN);
return getXSessionFromRedis(token); return getXSessionFromRedis(token);
} }
public static SessionStruct getXSessionFromRedis(String token){ public static SessionStruct getXSessionFromRedis(String token) {
if (Objects.isNull(token) || token.length() != 36 || Objects.isNull(redisTemplate)) { if (Objects.isNull(token) || token.length() != 36 || Objects.isNull(redisTemplate)) {
return null; return null;
} }
...@@ -60,7 +58,7 @@ public class XyqbSessionContextHolder { ...@@ -60,7 +58,7 @@ public class XyqbSessionContextHolder {
sessionStruct.setSid(token); sessionStruct.setSid(token);
sessionStruct.setValues(values); sessionStruct.setValues(values);
return sessionStruct; return sessionStruct;
}catch (Exception e){ } catch (Exception e) {
log.warn("[XyqbSessionContextHolder][getXSessionFromRedis] 序列化SessionValue出错:sid:{},sessionValue:{}", token, result, e); log.warn("[XyqbSessionContextHolder][getXSessionFromRedis] 序列化SessionValue出错:sid:{},sessionValue:{}", token, result, e);
return null; return null;
} }
......
...@@ -34,7 +34,7 @@ public class SimpleCaptcha extends ImageCaptcha { ...@@ -34,7 +34,7 @@ public class SimpleCaptcha extends ImageCaptcha {
} }
private Boolean validateResponse(String response) { private Boolean validateResponse(String response) {
if(StringUtils.isBlank(this.response) || StringUtils.isBlank(response)){ if (StringUtils.isBlank(this.response) || StringUtils.isBlank(response)) {
return false; return false;
} }
return StringUtils.equals(this.response, response); return StringUtils.equals(this.response, response);
......
...@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.Constants; ...@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.Constants;
import lombok.extern.slf4j.Slf4j; 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 sun.misc.BASE64Decoder;
import javax.crypto.Cipher; import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
...@@ -12,6 +11,7 @@ import javax.crypto.spec.SecretKeySpec; ...@@ -12,6 +11,7 @@ import javax.crypto.spec.SecretKeySpec;
/** /**
* AES编码器工具 * AES编码器工具
* 使用AES加密解密 AES-128-ECB加密 * 使用AES加密解密 AES-128-ECB加密
*
* @version 1.0 * @version 1.0
*/ */
@Slf4j @Slf4j
...@@ -34,6 +34,7 @@ public class AESUtil { ...@@ -34,6 +34,7 @@ public class AESUtil {
/** /**
* 数据解密,返回字符串 * 数据解密,返回字符串
*
* @param data 待解密的数据 * @param data 待解密的数据
* @param key 解密使用的KEY * @param key 解密使用的KEY
* @return 解密之后的数据 * @return 解密之后的数据
...@@ -41,7 +42,7 @@ public class AESUtil { ...@@ -41,7 +42,7 @@ public class AESUtil {
public static String decryptAfterBase64Decode(String data, String key) { public static String decryptAfterBase64Decode(String data, String key) {
try { try {
byte[] bytes = decryptAfterBase64DecodeToByte(data, key); byte[] bytes = decryptAfterBase64DecodeToByte(data, key);
if (bytes != null && bytes.length > 0){ if (bytes != null && bytes.length > 0) {
return new String(bytes, DATA_ENCODING); return new String(bytes, DATA_ENCODING);
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -52,6 +53,7 @@ public class AESUtil { ...@@ -52,6 +53,7 @@ public class AESUtil {
/** /**
* 数据解密,返回字节数据 * 数据解密,返回字节数据
*
* @param data * @param data
* @param key * @param key
* @return * @return
...@@ -92,6 +94,7 @@ public class AESUtil { ...@@ -92,6 +94,7 @@ public class AESUtil {
/** /**
* 对字节数组加密 * 对字节数组加密
*
* @param data * @param data
* @param key * @param key
* @return * @return
...@@ -111,6 +114,7 @@ public class AESUtil { ...@@ -111,6 +114,7 @@ public class AESUtil {
/** /**
* 执行加密和base64编码 * 执行加密和base64编码
*
* @param data * @param data
* @param key * @param key
* @return * @return
...@@ -125,7 +129,7 @@ public class AESUtil { ...@@ -125,7 +129,7 @@ public class AESUtil {
return new Base64().encodeToString(encrypted); return new Base64().encodeToString(encrypted);
} }
public static void main(String[] args){ public static void main(String[] args) {
System.out.println(encryptAndBase64Encode("45949139", Constants.AES_KEY)); System.out.println(encryptAndBase64Encode("45949139", Constants.AES_KEY));
System.out.println(encryptAndBase64Encode("18611428880", Constants.AES_KEY)); System.out.println(encryptAndBase64Encode("18611428880", Constants.AES_KEY));
System.out.println(encryptAndBase64Encode("15810672369", Constants.AES_KEY)); System.out.println(encryptAndBase64Encode("15810672369", Constants.AES_KEY));
......
...@@ -5,7 +5,6 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; ...@@ -5,7 +5,6 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
......
...@@ -9,6 +9,7 @@ public class DateUtils { ...@@ -9,6 +9,7 @@ public class DateUtils {
/** /**
* 计算当前时间到当天 23:59:59.999 时间差, * 计算当前时间到当天 23:59:59.999 时间差,
* 返回时间差(单位秒) * 返回时间差(单位秒)
*
* @return * @return
*/ */
public static long getSeconds() { public static long getSeconds() {
......
...@@ -4,6 +4,7 @@ import java.util.regex.Pattern; ...@@ -4,6 +4,7 @@ import java.util.regex.Pattern;
/** /**
* 过滤emoji表情 * 过滤emoji表情
*
* @author renwc * @author renwc
* @date 2018-02-26 * @date 2018-02-26
*/ */
...@@ -30,6 +31,7 @@ public class EmojiUtil { ...@@ -30,6 +31,7 @@ public class EmojiUtil {
/** /**
* 替换所有Emoji表情字符 * 替换所有Emoji表情字符
*
* @param text * @param text
* @return * @return
*/ */
...@@ -40,6 +42,7 @@ public class EmojiUtil { ...@@ -40,6 +42,7 @@ public class EmojiUtil {
/** /**
* 替换所有Emoji表情字符 * 替换所有Emoji表情字符
* 条件:UTF-8编码时4字节的 * 条件:UTF-8编码时4字节的
*
* @param text * @param text
* @return * @return
*/ */
......
...@@ -6,7 +6,9 @@ import org.apache.commons.lang3.StringUtils; ...@@ -6,7 +6,9 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.Arrays;
import java.util.Objects;
import java.util.Set;
/** /**
* IP地址工具类 * IP地址工具类
...@@ -17,7 +19,7 @@ import java.util.*; ...@@ -17,7 +19,7 @@ import java.util.*;
public class IPUtil { public class IPUtil {
/** /**
* IP白名单 * IP白名单
* * <p>
* 192.168.3.0/24 - 公有云测试业务 * 192.168.3.0/24 - 公有云测试业务
* 192.168.4.0/24 - 公有云测试业务 * 192.168.4.0/24 - 公有云测试业务
* 172.16.0.0/16 - 公有云正式业务 * 172.16.0.0/16 - 公有云正式业务
...@@ -27,11 +29,12 @@ public class IPUtil { ...@@ -27,11 +29,12 @@ 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";
static { static {
String[] ips = {"172.16.", "172.20.", "172.30.", "172.41.", "192.168.3.", "192.168.4."}; String[] ips = {"172.16.", "172.20.", "172.30.", "172.41.", "192.168.3.", "192.168.4."};
WHITE_ADDRESS.addAll(Arrays.asList(ips)); WHITE_ADDRESS.addAll(Arrays.asList(ips));
//系统环境 //系统环境
if(!TechEnvironment.isPro()){ if (!TechEnvironment.isPro()) {
WHITE_ADDRESS.add("192.168."); WHITE_ADDRESS.add("192.168.");
WHITE_ADDRESS.add("10."); WHITE_ADDRESS.add("10.");
WHITE_ADDRESS.add(LOCAL_ADDRESS); WHITE_ADDRESS.add(LOCAL_ADDRESS);
...@@ -40,13 +43,14 @@ public class IPUtil { ...@@ -40,13 +43,14 @@ public class IPUtil {
/** /**
* 判断是否为白名单IP * 判断是否为白名单IP
*
* @param ipv4 * @param ipv4
* @return * @return
*/ */
public static final boolean whiteOf(String ipv4){ public static final boolean whiteOf(String ipv4) {
if(ValidationUtil.validateIpv4(ipv4)){ if (ValidationUtil.validateIpv4(ipv4)) {
for(String ipField : WHITE_ADDRESS){ for (String ipField : WHITE_ADDRESS) {
if(ipv4.startsWith(ipField)){ if (ipv4.startsWith(ipField)) {
return true; return true;
} }
} }
...@@ -56,11 +60,12 @@ public class IPUtil { ...@@ -56,11 +60,12 @@ public class IPUtil {
/** /**
* 打印IP * 打印IP
*
* @param logger - 日志记录器 * @param logger - 日志记录器
* @param request - 真实HttpServletRequest请求 * @param request - 真实HttpServletRequest请求
*/ */
public static final void logIp(Logger logger, HttpServletRequest request) { public static final void logIp(Logger logger, HttpServletRequest request) {
if(Objects.isNull(request)){ if (Objects.isNull(request)) {
return; return;
} }
String remoteAddr = request.getRemoteAddr(); String remoteAddr = request.getRemoteAddr();
......
...@@ -2,6 +2,20 @@ package cn.quantgroup.xyqb.util; ...@@ -2,6 +2,20 @@ package cn.quantgroup.xyqb.util;
/** /**
* Created by abe on 2017/6/15. * Created by abe on 2017/6/15.
* <p>
* 身份证前6位【ABCDEF】为行政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华人民共和国行政区划代码》):
* 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区)、
* 市(地区,自治州,盟)、县(自治县、县级市、旗、自治旗、市辖区、林区、特区)。
* 数字码码位结构从左至右的含义是:
* 第一层为AB两位代码表示省、自治区、直辖市、特别行政区;
* 第二层为CD两位代码表示市、地区、自治州、盟、直辖市所辖市辖区、县汇总码、省(自治区)直辖县级行政区划汇总码,其中:
* ——01~20、51~70表示市,01、02还用于表示直辖市所辖市辖区、县汇总码;
* ——21~50表示地区、自治州、盟;
* ——90表示省(自治区)直辖县级行政区划汇总码。
* 第三层为EF两位表示县、自治县、县级市、旗、自治旗、市辖区、林区、特区,其中:
* ——01~20表示市辖区、地区(自治州、盟)辖县级市、市辖特区以及省(自治区)直辖县级行政区划中的县级市,01通常表示辖区汇总码;
* ——21~80表示县、自治县、旗、自治旗、林区、地区辖特区;
* ——81~99表示省(自治区)辖县级市。
*/ */
/** /**
* 身份证前6位【ABCDEF】为行政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华人民共和国行政区划代码》): * 身份证前6位【ABCDEF】为行政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华人民共和国行政区划代码》):
...@@ -24,8 +38,6 @@ import java.text.SimpleDateFormat; ...@@ -24,8 +38,6 @@ import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** /**
...@@ -38,7 +50,7 @@ import java.util.regex.Pattern; ...@@ -38,7 +50,7 @@ import java.util.regex.Pattern;
* :第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。 * :第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。
* </p> * </p>
*/ */
@SuppressWarnings({ "unchecked", "unused", "all" }) @SuppressWarnings({"unchecked", "unused", "all"})
public class IdcardValidator { public class IdcardValidator {
/** /**
...@@ -49,28 +61,28 @@ public class IdcardValidator { ...@@ -49,28 +61,28 @@ public class IdcardValidator {
* 51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃", * 51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",
* 63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} * 63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
*/ */
protected final static String codeAndCity[][] = { { "11", "北京" }, { "12", "天津" }, protected final static String codeAndCity[][] = {{"11", "北京"}, {"12", "天津"},
{ "13", "河北" }, { "14", "山西" }, { "15", "内蒙古" }, { "21", "辽宁" }, {"13", "河北"}, {"14", "山西"}, {"15", "内蒙古"}, {"21", "辽宁"},
{ "22", "吉林" }, { "23", "黑龙江" }, { "31", "上海" }, { "32", "江苏" }, {"22", "吉林"}, {"23", "黑龙江"}, {"31", "上海"}, {"32", "江苏"},
{ "33", "浙江" }, { "34", "安徽" }, { "35", "福建" }, { "36", "江西" }, {"33", "浙江"}, {"34", "安徽"}, {"35", "福建"}, {"36", "江西"},
{ "37", "山东" }, { "41", "河南" }, { "42", "湖北" }, { "43", "湖南" }, {"37", "山东"}, {"41", "河南"}, {"42", "湖北"}, {"43", "湖南"},
{ "44", "广东" }, { "45", "广西" }, { "46", "海南" }, { "50", "重庆" }, {"44", "广东"}, {"45", "广西"}, {"46", "海南"}, {"50", "重庆"},
{ "51", "四川" }, { "52", "贵州" }, { "53", "云南" }, { "54", "西藏" }, {"51", "四川"}, {"52", "贵州"}, {"53", "云南"}, {"54", "西藏"},
{ "61", "陕西" }, { "62", "甘肃" }, { "63", "青海" }, { "64", "宁夏" }, {"61", "陕西"}, {"62", "甘肃"}, {"63", "青海"}, {"64", "宁夏"},
{ "65", "新疆" }, { "71", "台湾" }, { "81", "香港" }, { "82", "澳门" }, {"65", "新疆"}, {"71", "台湾"}, {"81", "香港"}, {"82", "澳门"},
{ "91", "国外" } }; {"91", "国外"}};
private final static String cityCode[] = { "11", "12", "13", "14", "15", "21", "22", private final static String cityCode[] = {"11", "12", "13", "14", "15", "21", "22",
"23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43",
"44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63",
"64", "65", "71", "81", "82", "91" }; "64", "65", "71", "81", "82", "91"};
// 每位加权因子 // 每位加权因子
private final static int power[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; private final static int power[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
// 第18位校检码 // 第18位校检码
private final static String verifyCode[] = { "1", "0", "X", "9", "8", "7", "6", "5", private final static String verifyCode[] = {"1", "0", "X", "9", "8", "7", "6", "5",
"4", "3", "2" }; "4", "3", "2"};
/** /**
* 验证所有的身份证的合法性 * 验证所有的身份证的合法性
......
...@@ -13,6 +13,7 @@ public class JsonUtil { ...@@ -13,6 +13,7 @@ public class JsonUtil {
/** /**
* 转换json为对象 * 转换json为对象
*
* @param jsonStr * @param jsonStr
* @param clazz * @param clazz
* @param <T> * @param <T>
...@@ -29,6 +30,7 @@ public class JsonUtil { ...@@ -29,6 +30,7 @@ public class JsonUtil {
/** /**
* 将对象转成json字符串 * 将对象转成json字符串
*
* @param object * @param object
* @return * @return
*/ */
......
...@@ -17,9 +17,10 @@ import org.apache.commons.lang.StringUtils; ...@@ -17,9 +17,10 @@ import org.apache.commons.lang.StringUtils;
public class MqUtils { public class MqUtils {
/** /**
* 发送用户统计信息 * 发送用户统计信息
*
* @param vest * @param vest
*/ */
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);
...@@ -31,9 +32,10 @@ public class MqUtils { ...@@ -31,9 +32,10 @@ public class MqUtils {
/** /**
* 用户注册消息进行广播 * 用户注册消息进行广播
*
* @param message * @param message
*/ */
private static void sendRegisterMessage(UserRegisterMqMessage message){ private static void sendRegisterMessage(UserRegisterMqMessage message) {
try { try {
IRegisterMqService rService = ApplicationContextHolder.getBean("registerMqService"); IRegisterMqService rService = ApplicationContextHolder.getBean("registerMqService");
rService.send(message); rService.send(message);
...@@ -43,24 +45,25 @@ public class MqUtils { ...@@ -43,24 +45,25 @@ public class MqUtils {
} }
} }
public static UserRet sendRegisterMessage(Long registeredFrom,String demension, User user) { public static UserRet sendRegisterMessage(Long registeredFrom, String demension, User user) {
UserRet userRet; UserRet userRet;
UserStatistics statistics=new UserStatistics(user,demension,2,registeredFrom); UserStatistics statistics = new UserStatistics(user, demension, 2, registeredFrom);
MqUtils.sendLoanVest(statistics); MqUtils.sendLoanVest(statistics);
userRet = new UserRet(user); userRet = new UserRet(user);
//增加用户注册广播 //增加用户注册广播
UserRegisterMqMessage registerMqMessage=new UserRegisterMqMessage(user); UserRegisterMqMessage registerMqMessage = new UserRegisterMqMessage(user);
MqUtils.sendRegisterMessage(registerMqMessage); MqUtils.sendRegisterMessage(registerMqMessage);
return userRet; return userRet;
} }
/** /**
* 腾讯广点通转化的用户注册消息推送 * 腾讯广点通转化的用户注册消息推送
*
* @param phoneNo - 转化成功的用户手机号 * @param phoneNo - 转化成功的用户手机号
* @param clickId - 转化成功的点击动作唯一标识 * @param clickId - 转化成功的点击动作唯一标识
*/ */
public static void sendRegisterMessageForGdt(String phoneNo, String clickId){ public static void sendRegisterMessageForGdt(String phoneNo, String clickId) {
if(ValidationUtil.validatePhoneNo(phoneNo) && StringUtils.isNotBlank(clickId)){ if (ValidationUtil.validatePhoneNo(phoneNo) && StringUtils.isNotBlank(clickId)) {
//填充广点通消息 //填充广点通消息
JSONObject message = new JSONObject(); JSONObject message = new JSONObject();
message.put("phoneNo", phoneNo); message.put("phoneNo", phoneNo);
......
...@@ -42,6 +42,7 @@ public class PasswordUtil { ...@@ -42,6 +42,7 @@ public class PasswordUtil {
/** /**
* 生成随机密码 * 生成随机密码
*
* @param pwdLen 密码长度,必须大于0 * @param pwdLen 密码长度,必须大于0
* @return * @return
*/ */
......
...@@ -32,21 +32,21 @@ public class Utils { ...@@ -32,21 +32,21 @@ public class Utils {
return builder.toString(); return builder.toString();
} }
public static String coverPhone(String str){ public static String coverPhone(String str) {
if(str.length()<=0) if (str.length() <= 0)
return ""; return "";
if(str.length()>1024) //长度超过1024的字符串不走正则匹配过滤手机号 if (str.length() > 1024) //长度超过1024的字符串不走正则匹配过滤手机号
return ""; return "";
Matcher matcher = pattern.matcher(str); Matcher matcher = pattern.matcher(str);
Map<String,String> replaceMap = new HashMap<>(); Map<String, String> replaceMap = new HashMap<>();
while (matcher.find()) { while (matcher.find()) {
String group = matcher.group(); String group = matcher.group();
String replace = group.substring(0,3).concat("****").concat(group.substring(7)).concat(" [".concat(PasswordUtil.MD5(group)).concat("]")); String replace = group.substring(0, 3).concat("****").concat(group.substring(7)).concat(" [".concat(PasswordUtil.MD5(group)).concat("]"));
replaceMap.put(group,replace); replaceMap.put(group, replace);
} }
Set<Map.Entry<String, String>> entries = replaceMap.entrySet(); Set<Map.Entry<String, String>> entries = replaceMap.entrySet();
for (Map.Entry<String, String> entry :entries){ for (Map.Entry<String, String> entry : entries) {
str = str.replaceAll(entry.getKey(),entry.getValue()); str = str.replaceAll(entry.getKey(), entry.getValue());
} }
return str; return str;
} }
......
...@@ -33,6 +33,7 @@ public class ValidationUtil { ...@@ -33,6 +33,7 @@ public class ValidationUtil {
/** /**
* 是否是合法的中国大陆手机号 * 是否是合法的中国大陆手机号
*
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
...@@ -47,6 +48,7 @@ public class ValidationUtil { ...@@ -47,6 +48,7 @@ public class ValidationUtil {
/** /**
* 是否是合法的中文姓名 * 是否是合法的中文姓名
*
* @param chinese * @param chinese
* @return * @return
*/ */
...@@ -55,10 +57,10 @@ public class ValidationUtil { ...@@ -55,10 +57,10 @@ public class ValidationUtil {
return false; return false;
} }
boolean valid = chinesePattern.matcher(chinese).find(); boolean valid = chinesePattern.matcher(chinese).find();
if(!valid){ if (!valid) {
StringBuilder uniCodeTemp = new StringBuilder(); StringBuilder uniCodeTemp = new StringBuilder();
for(int i=0;i<chinese.length();i++){ for (int i = 0; i < chinese.length(); i++) {
uniCodeTemp.append("\\u").append(Integer.toHexString((int)chinese.charAt(i))); uniCodeTemp.append("\\u").append(Integer.toHexString((int) chinese.charAt(i)));
} }
log.info("[ValidationUtil][validateChinese]:[chinese][unicode][length]:[{}][{}][{}]", chinese, chinese.length(), uniCodeTemp); log.info("[ValidationUtil][validateChinese]:[chinese][unicode][length]:[{}][{}][{}]", chinese, chinese.length(), uniCodeTemp);
} }
...@@ -69,6 +71,7 @@ public class ValidationUtil { ...@@ -69,6 +71,7 @@ public class ValidationUtil {
/** /**
* 是否是合法的IPV4地址 * 是否是合法的IPV4地址
*
* @param ipv4 * @param ipv4
* @return * @return
*/ */
...@@ -82,6 +85,7 @@ public class ValidationUtil { ...@@ -82,6 +85,7 @@ public class ValidationUtil {
/** /**
* 是否是合法的私有IPV4地址 * 是否是合法的私有IPV4地址
*
* @param localIpv4 * @param localIpv4
* @return * @return
*/ */
...@@ -95,6 +99,7 @@ public class ValidationUtil { ...@@ -95,6 +99,7 @@ public class ValidationUtil {
/** /**
* 是否是合法的用户中心token * 是否是合法的用户中心token
*
* @param token * @param token
* @return * @return
*/ */
...@@ -109,6 +114,7 @@ public class ValidationUtil { ...@@ -109,6 +114,7 @@ public class ValidationUtil {
/** /**
* 验证密令 * 验证密令
* 私钥 + 操作 + 时 * 私钥 + 操作 + 时
*
* @param key - Md5密令 * @param key - Md5密令
* @param lock - true or false * @param lock - true or false
* @return * @return
...@@ -120,6 +126,7 @@ public class ValidationUtil { ...@@ -120,6 +126,7 @@ public class ValidationUtil {
/** /**
* 计算密令 * 计算密令
* 私钥 + 操作 + 时 * 私钥 + 操作 + 时
*
* @param lock - true or false * @param lock - true or false
* @return 加密后的Md5 * @return 加密后的Md5
*/ */
......
...@@ -8,7 +8,7 @@ public class Base64 { ...@@ -8,7 +8,7 @@ public class Base64 {
/** /**
* Chunk size per RFC 2045 section 6.8. * Chunk size per RFC 2045 section 6.8.
* * <p>
* <p>The {@value} character limit does not count the trailing CRLF, but counts * <p>The {@value} character limit does not count the trailing CRLF, but counts
* all other characters, including any equal signs.</p> * all other characters, including any equal signs.</p>
* *
...@@ -395,10 +395,10 @@ public class Base64 { ...@@ -395,10 +395,10 @@ public class Base64 {
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
switch (data[i]) { switch (data[i]) {
case (byte) ' ' : case (byte) ' ':
case (byte) '\n' : case (byte) '\n':
case (byte) '\r' : case (byte) '\r':
case (byte) '\t' : case (byte) '\t':
break; break;
default: default:
groomedData[bytesCopied++] = data[i]; groomedData[bytesCopied++] = data[i];
......
...@@ -9,7 +9,6 @@ import java.security.spec.PKCS8EncodedKeySpec; ...@@ -9,7 +9,6 @@ import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec; import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional;
public class RSA { public class RSA {
/** /**
...@@ -20,12 +19,14 @@ public class RSA { ...@@ -20,12 +19,14 @@ public class RSA {
public static final String CHAR_ENCODING = "UTF-8"; public static final String CHAR_ENCODING = "UTF-8";
public static final String RSA_ALGORITHM = "RSA/ECB/PKCS1Padding"; public static final String RSA_ALGORITHM = "RSA/ECB/PKCS1Padding";
/** *//** /** */
/**
* RSA最大加密明文大小 * RSA最大加密明文大小
*/ */
private static final int MAX_ENCRYPT_BLOCK = 117; private static final int MAX_ENCRYPT_BLOCK = 117;
/** *//** /** */
/**
* RSA最大解密密文大小 * RSA最大解密密文大小
*/ */
private static final int MAX_DECRYPT_BLOCK = 128; private static final int MAX_DECRYPT_BLOCK = 128;
......
...@@ -4,17 +4,11 @@ import ch.qos.logback.classic.Level; ...@@ -4,17 +4,11 @@ import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.IThrowableProxy; import ch.qos.logback.classic.spi.IThrowableProxy;
import ch.qos.logback.classic.spi.LoggerContextVO; import ch.qos.logback.classic.spi.LoggerContextVO;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.Utils; import cn.quantgroup.xyqb.util.Utils;
import org.apache.commons.codec.digest.Md5Crypt;
import org.slf4j.Marker; import org.slf4j.Marker;
import java.util.Map;
/** /**
* Created by ocean on 2017/5/4. * Created by ocean on 2017/5/4.
*/ */
...@@ -24,27 +18,32 @@ public class WithOutPhoneLoggingEvent implements ILoggingEvent { ...@@ -24,27 +18,32 @@ public class WithOutPhoneLoggingEvent implements ILoggingEvent {
transient String withOutPhoneFormattedMessage; transient String withOutPhoneFormattedMessage;
public WithOutPhoneLoggingEvent(ILoggingEvent event){ public WithOutPhoneLoggingEvent(ILoggingEvent event) {
this.event = event; this.event = event;
} }
@Override public String getThreadName() { @Override
public String getThreadName() {
return this.event.getThreadName(); return this.event.getThreadName();
} }
@Override public Level getLevel() { @Override
public Level getLevel() {
return this.event.getLevel(); return this.event.getLevel();
} }
@Override public String getMessage() { @Override
public String getMessage() {
return this.event.getMessage(); return this.event.getMessage();
} }
@Override public Object[] getArgumentArray() { @Override
public Object[] getArgumentArray() {
return this.event.getArgumentArray(); return this.event.getArgumentArray();
} }
@Override public String getFormattedMessage() { @Override
public String getFormattedMessage() {
if (withOutPhoneFormattedMessage != null) { if (withOutPhoneFormattedMessage != null) {
return withOutPhoneFormattedMessage; return withOutPhoneFormattedMessage;
} }
...@@ -53,43 +52,53 @@ public class WithOutPhoneLoggingEvent implements ILoggingEvent { ...@@ -53,43 +52,53 @@ public class WithOutPhoneLoggingEvent implements ILoggingEvent {
return withOutPhoneFormattedMessage; return withOutPhoneFormattedMessage;
} }
@Override public String getLoggerName() { @Override
public String getLoggerName() {
return this.event.getLoggerName(); return this.event.getLoggerName();
} }
@Override public LoggerContextVO getLoggerContextVO() { @Override
public LoggerContextVO getLoggerContextVO() {
return this.event.getLoggerContextVO(); return this.event.getLoggerContextVO();
} }
@Override public IThrowableProxy getThrowableProxy() { @Override
public IThrowableProxy getThrowableProxy() {
return this.event.getThrowableProxy(); return this.event.getThrowableProxy();
} }
@Override public StackTraceElement[] getCallerData() { @Override
public StackTraceElement[] getCallerData() {
return this.event.getCallerData(); return this.event.getCallerData();
} }
@Override public boolean hasCallerData() { @Override
public boolean hasCallerData() {
return this.event.hasCallerData(); return this.event.hasCallerData();
} }
@Override public Marker getMarker() { @Override
public Marker getMarker() {
return this.event.getMarker(); return this.event.getMarker();
} }
@Override public Map<String, String> getMDCPropertyMap() { @Override
public Map<String, String> getMDCPropertyMap() {
return this.event.getMDCPropertyMap(); return this.event.getMDCPropertyMap();
} }
@Override public Map<String, String> getMdc() { @Override
public Map<String, String> getMdc() {
return this.event.getMdc(); return this.event.getMdc();
} }
@Override public long getTimeStamp() { @Override
public long getTimeStamp() {
return this.event.getTimeStamp(); return this.event.getTimeStamp();
} }
@Override public void prepareForDeferredProcessing() { @Override
public void prepareForDeferredProcessing() {
this.getFormattedMessage(); this.getFormattedMessage();
this.getThreadName(); this.getThreadName();
// fixes http://jira.qos.ch/browse/LBCLASSIC-104 // fixes http://jira.qos.ch/browse/LBCLASSIC-104
......
...@@ -10,8 +10,8 @@ public class WithOutPhoneRollingFileAppender<E> extends RollingFileAppender<E> { ...@@ -10,8 +10,8 @@ public class WithOutPhoneRollingFileAppender<E> extends RollingFileAppender<E> {
@Override @Override
public void doAppend(E eventObject) { public void doAppend(E eventObject) {
if(eventObject instanceof ILoggingEvent){ if (eventObject instanceof ILoggingEvent) {
eventObject = (E)new WithOutPhoneLoggingEvent((ILoggingEvent)eventObject); eventObject = (E) new WithOutPhoneLoggingEvent((ILoggingEvent) eventObject);
} }
super.doAppend(eventObject); super.doAppend(eventObject);
} }
......
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