Commit c27c3387 authored by Java—KA—李 青's avatar Java—KA—李 青

merge master

parents efda227c 00a0590f
...@@ -8,10 +8,7 @@ import org.aspectj.lang.annotation.Aspect; ...@@ -8,10 +8,7 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
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;
...@@ -30,14 +27,10 @@ import java.util.Objects; ...@@ -30,14 +27,10 @@ import java.util.Objects;
public class IpValidateAdvisor { public class IpValidateAdvisor {
private static final Logger LOGGER = LoggerFactory.getLogger(IpValidateAdvisor.class); private static final Logger LOGGER = LoggerFactory.getLogger(IpValidateAdvisor.class);
@Autowired
@Qualifier("stringRedisTemplate")
private RedisTemplate<String, String> redisTemplate;
@Value("${configserver.disable}") @Value("${configserver.disable}")
private Integer isDebug; private Integer isDebug;
@Pointcut("execution(public * cn.quantgroup.xyqb.controller.external.user.InnerController.*(..))") @Pointcut("execution(public * cn.quantgroup.xyqb.controller.external.user.InnerController.*(..)) || @annotation(cn.quantgroup.xyqb.aspect.accessable.IpValidator)")
private void whiteIpMatch() { private void whiteIpMatch() {
} }
......
package cn.quantgroup.xyqb.aspect.accessable;
import java.lang.annotation.*;
/**
* Ip白名单检验标记
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface IpValidator {
}
...@@ -37,7 +37,7 @@ public class LockIpv4Controller implements IBaseController { ...@@ -37,7 +37,7 @@ public class LockIpv4Controller implements IBaseController {
/** /**
* 获取操作密令 * 获取操作密令
* @header lock_ipv4 - 获取密令 * @header lock_ipv4 - 获取密令
* @param act - 操作标记,true-lock,false-unlock * @param act - 操作标记,true-锁定/添加,false-解锁/删除
* @param request * @param request
* @return * @return
*/ */
......
...@@ -102,6 +102,8 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -102,6 +102,8 @@ public class MotanUserServiceImpl implements UserMotanService {
@Autowired @Autowired
private IUserRegisterService userRegisterService; private IUserRegisterService userRegisterService;
@Autowired
private IUserBtRegisterService userBtRegisterService;
@Override @Override
public UserSysResult<XUser> saveUserRelatedInfo(UserRelatedBean userRelatedBean) { public UserSysResult<XUser> saveUserRelatedInfo(UserRelatedBean userRelatedBean) {
...@@ -679,77 +681,59 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -679,77 +681,59 @@ public class MotanUserServiceImpl implements UserMotanService {
context.setAppChannel(sessionStruct.getValues().getLoginProperties().getAppChannel()); context.setAppChannel(sessionStruct.getValues().getLoginProperties().getAppChannel());
loginInfo.setLoginContext(context); loginInfo.setLoginContext(context);
return returnSuccessValue(loginInfo); return returnSuccessValue(loginInfo);
}else { }else{
// 函谷关去查token 返回值高仿 // 函谷关去查token 返回值高仿
log.info("去向函谷关查询用户信息"); LoginInfo loginInfo = getLoginInfoFromHanguguan(token);
if(StringUtils.isBlank(token) ||token.length() != 36){ if(Objects.isNull(loginInfo)){
return returnErrorValue("用户未登录"); return returnErrorValue("用户未登录");
} }
String checkUrl = xyqbAuthUrl+"/innerapi/is_login"; return returnSuccessValue(loginInfo.toXLoginInfo());
ImmutableMap<String, String> headMap = ImmutableMap.of(Constants.X_AUTH_TOKEN, token);
String response = httpService.get(checkUrl, headMap, null);
log.info("去向函谷关查询用户信息,response:[{}]",response);
JsonResult result = JSONObject.parseObject(response, JsonResult.class);
if (result == null || !"0000".equals(result.getCode()) || !"0000".equals(result.getBusinessCode())) {
return returnErrorValue("用户未登录");
}
String phoneNo = ((Map<String, String>) result.getData()).get("phoneNo");
User user = userService.findByPhoneWithCache(phoneNo);
XLoginInfo loginInfo = new XLoginInfo();
loginInfo.setUser(sessionStruct.getValues().getUser().toXUser());
loginInfo.setToken(token);
LoginContext context = new LoginContext();
context.setChannelId(null);
context.setCreatedFrom(user.getRegisteredFrom());
context.setAppChannel("");
loginInfo.setLoginContext(context);
return returnSuccessValue(loginInfo);
} }
} }
/**
* 函谷关去查token 返回值高仿
* @param token
* @return
*/
private LoginInfo getLoginInfoFromHanguguan(String token) {
if(StringUtils.isBlank(token) ||token.length() != 36){
return null;
}
log.info("去向函谷关查询用户信息");
String checkUrl = xyqbAuthUrl+"/innerapi/is_login";
ImmutableMap<String, String> headMap = ImmutableMap.of(Constants.X_AUTH_TOKEN, token);
String response = httpService.get(checkUrl, headMap, null);
log.info("去向函谷关查询用户信息,response:[{}]",response);
JsonResult result = JSONObject.parseObject(response, JsonResult.class);
if (result == null || !"0000".equals(result.getCode()) || !"0000".equals(result.getBusinessCode())) {
return null;
}
String phoneNo = ((Map<String, String>) result.getData()).get("phoneNo");
User user = userService.findByPhoneWithCache(phoneNo);
LoginInfo loginInfo = new LoginInfo();
loginInfo.setUser(new UserRet(user));
loginInfo.setToken(token);
LoginInfo.LoginContext context = new LoginInfo.LoginContext();
context.setChannelId(null);
context.setCreatedFrom(user.getRegisteredFrom());
context.setAppChannel("");
if(user.getRegisteredFrom() == 222L) {
UserBtRegister userBtRegister =null;
try{
userBtRegister=userBtRegisterService.findByUserId(user.getId());
}catch(Exception e){
/*@Override
public UserSysResult<XLoginInfo> getLoginInfo(String token) {
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token);
if(null != sessionStruct){
LoginInfo loginInfo = new LoginInfo();
loginInfo.setUser(UserRet.getUserRet(sessionStruct.getValues().getUser()));
loginInfo.setToken(sessionStruct.getSid());
XLoginInfo xLoginInfo = new XLoginInfo();
xLoginInfo.setToken(token);
xLoginInfo.setUser(sessionStruct.getValues().getUser().toXUser());
LoginContext context = new LoginContext();
context.setChannelId(sessionStruct.getValues().getLoginProperties().getChannelId());
context.setCreatedFrom(sessionStruct.getValues().getLoginProperties().getCreatedFrom());
context.setAppChannel(sessionStruct.getValues().getLoginProperties().getAppChannel());
context.setBtMerchantId(sessionStruct.getValues().getLoginProperties().getBtMerchantId());
xLoginInfo.setLoginContext(context);
return returnSuccessValue(xLoginInfo);
}else {
log.info("去向函谷关查询用户信息");
String checkUrl = xyqbAuthUrl+"/innerapi/is_login";
ImmutableMap<String, String> headMap = ImmutableMap.of(Constants.X_AUTH_TOKEN, token);
String response = httpService.get(checkUrl, headMap, null);
log.info("去向函谷关查询用户信息,response:[{}]",response);
JsonResult result = JSONObject.parseObject(response, JsonResult.class);
if (result == null || !"0000".equals(result.getCode()) || !"0000".equals(result.getBusinessCode())) {
return returnErrorValue("用户未登录");
} }
String phoneNo = ((Map<String, String>) result.getData()).get("phoneNo"); if(null != userBtRegister){
User user = userService.findByPhoneWithCache(phoneNo); context.setBtMerchantId(userBtRegister.getRegisterBtMerchantId());
XLoginInfo xLoginInfo = new XLoginInfo(); }else {
xLoginInfo.setToken(token); context.setBtMerchantId(1L);
xLoginInfo.setUser(user.toXUser()); }
LoginContext context = new LoginContext(); }
context.setChannelId(null); loginInfo.setLoginContext(context);
context.setCreatedFrom(user.getRegisteredFrom()); return loginInfo;
context.setAppChannel(""); }
context.setBtMerchantId(null);
xLoginInfo.setLoginContext(context);
return returnSuccessValue(xLoginInfo);
}
}*/
/** /**
* 封装返回结果. * 封装返回结果.
......
package cn.quantgroup.xyqb.controller.external.user; package cn.quantgroup.xyqb.controller.external.user;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.Merchant; import cn.quantgroup.xyqb.entity.Merchant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
...@@ -70,6 +71,7 @@ public class AppController implements IBaseController { ...@@ -70,6 +71,7 @@ public class AppController implements IBaseController {
/** /**
* 第三方用户登录 * 第三方用户登录
*/ */
@IpValidator
@RequestMapping("/login") @RequestMapping("/login")
public JsonResult login( public JsonResult login(
String phoneNo, String phoneNo,
...@@ -80,8 +82,8 @@ public class AppController implements IBaseController { ...@@ -80,8 +82,8 @@ 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);
} }
// Todo -- 截止2017-12-08 13:44:00只有52次调用记录,来自222(白条),最近一次:2017-11-11 12:15:53
LOGGER.info("app/login第三方用户登录, loginFrom:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom,channelId,btRegisterChannelId, IPUtil.getRemoteIP(request),idNo,name); LOGGER.info("第三方用户登录 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 = register(registerFrom, phoneNo, idNo, name, channelId,btRegisterChannelId); TODO // user = register(registerFrom, phoneNo, idNo, name, channelId,btRegisterChannelId); TODO
...@@ -106,7 +108,7 @@ public class AppController implements IBaseController { ...@@ -106,7 +108,7 @@ public class AppController implements IBaseController {
AuthBean bean = new AuthBean(); AuthBean bean = new AuthBean();
bean.setToken(sessionStruct.getSid()); bean.setToken(sessionStruct.getSid());
bean.setPhoneNo(phoneNo); bean.setPhoneNo(phoneNo);
LOGGER.info("第三方用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel); LOGGER.info("第三方用户登录成功 login --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel);
return new JsonResult(bean); return new JsonResult(bean);
} }
...@@ -114,6 +116,7 @@ public class AppController implements IBaseController { ...@@ -114,6 +116,7 @@ public class AppController implements IBaseController {
/** /**
* 给app用 * 给app用
*/ */
@IpValidator
@RequestMapping("/login2") @RequestMapping("/login2")
public JsonResult login2( public JsonResult login2(
String phoneNo, String phoneNo,
...@@ -126,7 +129,7 @@ public class AppController implements IBaseController { ...@@ -126,7 +129,7 @@ public class AppController implements IBaseController {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
LOGGER.info("第三方用户登录, loginFrom:{},channelId:{}, requestIp:{}", registerFrom,channelId, IPUtil.getRemoteIP(request)); LOGGER.info("第三方用户登录 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) {
...@@ -145,7 +148,7 @@ public class AppController implements IBaseController { ...@@ -145,7 +148,7 @@ public class AppController implements IBaseController {
bean.setToken(sessionStruct.getSid()); bean.setToken(sessionStruct.getSid());
bean.setPhoneNo(phoneNo); bean.setPhoneNo(phoneNo);
LOGGER.info("第三方用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel); LOGGER.info("第三方用户登录成功 login2 --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel);
return new JsonResult(bean); return new JsonResult(bean);
} }
...@@ -153,6 +156,7 @@ public class AppController implements IBaseController { ...@@ -153,6 +156,7 @@ public class AppController implements IBaseController {
/** /**
* 第三方用户登录并返回用户信息 * 第三方用户登录并返回用户信息
*/ */
@IpValidator
@RequestMapping("/login_super") @RequestMapping("/login_super")
public JsonResult loginSuper( public JsonResult loginSuper(
String phoneNo, String phoneNo,
...@@ -164,7 +168,7 @@ public class AppController implements IBaseController { ...@@ -164,7 +168,7 @@ public class AppController implements IBaseController {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
LOGGER.info("app/login_super第三方用户登录, loginFrom:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom,channelId,btRegisterChannelId, IPUtil.getRemoteIP(request),idNo,name); LOGGER.info("第三方用户登录 loginSuper --> 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 = register(registerFrom, phoneNo, idNo, name, channelId,btRegisterChannelId); TODO // user = register(registerFrom, phoneNo, idNo, name, channelId,btRegisterChannelId); TODO
...@@ -196,7 +200,7 @@ public class AppController implements IBaseController { ...@@ -196,7 +200,7 @@ public class AppController implements IBaseController {
context.setAppChannel(appChannel); context.setAppChannel(appChannel);
loginInfo.setLoginContext(context); loginInfo.setLoginContext(context);
LOGGER.info("第三方用户获取信息登录成功, loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}", registerFrom, phoneNo, appChannel,channelId); LOGGER.info("第三方用户获取信息登录成功 loginSuper --> loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}", registerFrom, phoneNo, appChannel,channelId);
return JsonResult.buildSuccessResult("", loginInfo); return JsonResult.buildSuccessResult("", loginInfo);
...@@ -239,7 +243,6 @@ public class AppController implements IBaseController { ...@@ -239,7 +243,6 @@ public class AppController implements IBaseController {
} else { } else {
user.setRegisteredFrom(registerFrom); user.setRegisteredFrom(registerFrom);
} }
//user.setRegisteredFrom(registerFrom);
user.setUuid(uuid); user.setUuid(uuid);
user.setEnable(true); user.setEnable(true);
user.setPhoneNo(phoneNo); user.setPhoneNo(phoneNo);
...@@ -248,12 +251,12 @@ public class AppController implements IBaseController { ...@@ -248,12 +251,12 @@ public class AppController implements IBaseController {
user.setCreatedAt(currentTime); user.setCreatedAt(currentTime);
userRepository.saveAndFlush(user); userRepository.saveAndFlush(user);
if (registerFrom != 645L && registerFrom != 900L) { if(registerFrom == 900L){
smsService.sendAfterRegister(phoneNo);
LOGGER.info("第三方登录用户注册成功, registerFrom:{}, phoneNo:{}, 并且已发送短信通知", registerFrom, phoneNo);
}else if(registerFrom == 900L){
smsService.sendAfterRegister(phoneNo,"123"); smsService.sendAfterRegister(phoneNo,"123");
LOGGER.info("第三方(聚美)登录用户注册成功, registerFrom:{}, phoneNo:{},idNo:{},name:{} 并且已发送短信通知", registerFrom, phoneNo, idNo, name); LOGGER.info("第三方(聚美)登录用户注册成功, registerFrom:{}, phoneNo:{},idNo:{},name:{} 并且已发送短信通知", registerFrom, phoneNo, idNo, name);
}else if (registerFrom != 645L) {
smsService.sendAfterRegister(phoneNo);
LOGGER.info("第三方登录用户注册成功, registerFrom:{}, phoneNo:{}, 并且已发送短信通知", registerFrom, phoneNo);
} }
if (StringUtils.isNotBlank(idNo) && StringUtils.isNotBlank(name) && ValidationUtil.validateChinese(name)) { if (StringUtils.isNotBlank(idNo) && StringUtils.isNotBlank(name) && ValidationUtil.validateChinese(name)) {
......
...@@ -592,9 +592,7 @@ public class InnerController implements IBaseController { ...@@ -592,9 +592,7 @@ public class InnerController implements IBaseController {
bean.setName(userDetail.getName()); bean.setName(userDetail.getName());
bean.setIdNo(userDetail.getIdNo()); bean.setIdNo(userDetail.getIdNo());
bean.setQq(userDetail.getQq()); bean.setQq(userDetail.getQq());
if (null != userDetail.getGender()) { bean.setGender(Optional.ofNullable(userDetail.getGender()).orElse(cn.quantgroup.xyqb.model.Gender.UNKNOWN).getName());
bean.setGender(userDetail.getGender().getName());
}
if (null != address) { if (null != address) {
bean.setCity(address.getCity()); bean.setCity(address.getCity());
...@@ -645,9 +643,7 @@ public class InnerController implements IBaseController { ...@@ -645,9 +643,7 @@ public class InnerController implements IBaseController {
bean.setName(userDetail.getName()); bean.setName(userDetail.getName());
bean.setIdNo(userDetail.getIdNo()); bean.setIdNo(userDetail.getIdNo());
bean.setQq(userDetail.getQq()); bean.setQq(userDetail.getQq());
if (null != userDetail.getGender()) { bean.setGender(Optional.ofNullable(userDetail.getGender()).orElse(cn.quantgroup.xyqb.model.Gender.UNKNOWN).getName());
bean.setGender(userDetail.getGender().getName());
}
if (null != address) { if (null != address) {
bean.setCity(address.getCity()); bean.setCity(address.getCity());
......
...@@ -3,16 +3,9 @@ package cn.quantgroup.xyqb.controller.external.user.center; ...@@ -3,16 +3,9 @@ package cn.quantgroup.xyqb.controller.external.user.center;
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.xyqb.entity.enumerate.EducationEnum;
//import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum;
//import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus;
//import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum;
import cn.quantgroup.user.enums.*; import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.model.ContactRet;
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.user.enums.*;
import cn.quantgroup.xyqb.util.ValidationUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -24,10 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -24,10 +17,7 @@ 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.Collections; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* Created by 11 on 2017/3/22. * Created by 11 on 2017/3/22.
...@@ -72,7 +62,7 @@ public class UserCenterController { ...@@ -72,7 +62,7 @@ public class UserCenterController {
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", userDetail.getGender().ordinal() + ""); result.put("sex", Optional.ofNullable(userDetail.getGender()).orElse(cn.quantgroup.xyqb.model.Gender.UNKNOWN).ordinal() + "");
result.put("phoneNo", userDetail.getPhoneNo().substring(0,3)+"****"+userDetail.getPhoneNo().substring(7,11)); result.put("phoneNo", userDetail.getPhoneNo().substring(0,3)+"****"+userDetail.getPhoneNo().substring(7,11));
} }
return JsonResult.buildSuccessResult(null, result); return JsonResult.buildSuccessResult(null, result);
......
...@@ -24,6 +24,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; ...@@ -24,6 +24,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Map; import java.util.Map;
import java.util.Objects;
/** /**
* Created by Miraculous on 2016/12/30. * Created by Miraculous on 2016/12/30.
...@@ -64,46 +65,58 @@ public class AuthInfoController implements IBaseController { ...@@ -64,46 +65,58 @@ public class AuthInfoController implements IBaseController {
return JsonResult.buildSuccessResult("", loginInfo); //有ThreadLocal不释放的问题,不可再使用原来方式了 return JsonResult.buildSuccessResult("", loginInfo); //有ThreadLocal不释放的问题,不可再使用原来方式了
}else { }else {
// 函谷关去查token 返回值高仿 // 函谷关去查token 返回值高仿
log.info("去向函谷关查询用户信息");
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);
if(StringUtils.isBlank(token) ||token.length() != 36){ LoginInfo loginInfo = getLoginInfoFromHanguguan(token);
if(Objects.isNull(loginInfo)){
return JsonResult.buildErrorStateResult("用户未登录",null); return JsonResult.buildErrorStateResult("用户未登录",null);
} }
String checkUrl = xyqbAuthUrl+"/innerapi/is_login"; return JsonResult.buildSuccessResult("", loginInfo);
ImmutableMap<String, String> headMap = ImmutableMap.of(Constants.X_AUTH_TOKEN, token); }
String response = httpService.get(checkUrl, headMap, null); }
log.info("去向函谷关查询用户信息,response:[{}]",response);
JsonResult result = JSONObject.parseObject(response, JsonResult.class); /**
if (result == null || !"0000".equals(result.getCode()) || !"0000".equals(result.getBusinessCode())) { * 函谷关去查token 返回值高仿
return JsonResult.buildErrorStateResult("用户未登录",null); * @param token
} * @return
String phoneNo = ((Map<String, String>) result.getData()).get("phoneNo"); */
User user = userService.findByPhoneWithCache(phoneNo); private LoginInfo getLoginInfoFromHanguguan(String token) {
LoginInfo loginInfo = new LoginInfo(); if(org.apache.commons.lang.StringUtils.isBlank(token) ||token.length() != 36){
loginInfo.setUser(new UserRet(user)); return null;
loginInfo.setToken(token); }
LoginInfo.LoginContext context = new LoginInfo.LoginContext(); log.info("去向函谷关查询用户信息");
context.setChannelId(null); String checkUrl = xyqbAuthUrl+"/innerapi/is_login";
context.setCreatedFrom(user.getRegisteredFrom()); ImmutableMap<String, String> headMap = ImmutableMap.of(Constants.X_AUTH_TOKEN, token);
context.setAppChannel(""); String response = httpService.get(checkUrl, headMap, null);
if(user.getRegisteredFrom() == 222L) { log.info("去向函谷关查询用户信息,response:[{}]",response);
//context.setBtMerchantId(1L); JsonResult result = JSONObject.parseObject(response, JsonResult.class);
UserBtRegister userBtRegister =null; if (result == null || !"0000".equals(result.getCode()) || !"0000".equals(result.getBusinessCode())) {
try{ return null;
userBtRegister=userBtRegisterService.findByUserId(user.getId()); }
}catch(Exception e){ String phoneNo = ((Map<String, String>) result.getData()).get("phoneNo");
User user = userService.findByPhoneWithCache(phoneNo);
LoginInfo loginInfo = new LoginInfo();
loginInfo.setUser(new UserRet(user));
loginInfo.setToken(token);
LoginInfo.LoginContext context = new LoginInfo.LoginContext();
context.setChannelId(null);
context.setCreatedFrom(user.getRegisteredFrom());
context.setAppChannel("");
if(user.getRegisteredFrom() == 222L) {
UserBtRegister userBtRegister =null;
try{
userBtRegister=userBtRegisterService.findByUserId(user.getId());
}catch(Exception e){
}
if(null != userBtRegister){
context.setBtMerchantId(userBtRegister.getRegisterBtMerchantId());
}else {
context.setBtMerchantId(1L);
}
} }
loginInfo.setLoginContext(context); if(null != userBtRegister){
return JsonResult.buildSuccessResult("", loginInfo); context.setBtMerchantId(userBtRegister.getRegisterBtMerchantId());
}else {
context.setBtMerchantId(1L);
}
} }
loginInfo.setLoginContext(context);
return loginInfo;
} }
} }
...@@ -10,6 +10,7 @@ import lombok.ToString; ...@@ -10,6 +10,7 @@ import lombok.ToString;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.Optional;
/** /**
* Created by FrankChow on 15/7/8. * Created by FrankChow on 15/7/8.
...@@ -78,7 +79,7 @@ public class UserDetail implements Serializable { ...@@ -78,7 +79,7 @@ public class UserDetail implements Serializable {
xUserDetail.setIdType(cn.quantgroup.motan.enums.IdType.valueOf(this.getIdType().name())); xUserDetail.setIdType(cn.quantgroup.motan.enums.IdType.valueOf(this.getIdType().name()));
} }
if (this.getGender() != null) { if (this.getGender() != null) {
xUserDetail.setGender(cn.quantgroup.motan.enums.Gender.valueOf(this.getGender().name())); xUserDetail.setGender(cn.quantgroup.motan.enums.Gender.valueOf(Optional.ofNullable(this.getGender()).orElse(Gender.UNKNOWN).name()));
} }
xUserDetail.setEmail(this.getEmail()); xUserDetail.setEmail(this.getEmail());
xUserDetail.setQq(this.getQq()); xUserDetail.setQq(this.getQq());
......
...@@ -26,8 +26,8 @@ import java.io.PrintWriter; ...@@ -26,8 +26,8 @@ import java.io.PrintWriter;
public class RequestFilter implements Filter { public class RequestFilter implements Filter {
private static final String[] ALLOWED_PATTERNS = { private static final String[] ALLOWED_PATTERNS = {
"/wechat/**", "/config/**", "/api/**", "/query/**", "/user_detail/**", "/hello/**", "/innerapi/**", "/motan/**", "/user/**", "/lock/**", "/wechat/**", "/config/**", "/api/**", "/query/**", "/user_detail/**", "/hello/**", "/innerapi/**", "/app/**", "/motan/**", "/user/**", "/lock/**",
"/auth/info/login", "/app/login", "/app/login_super", "/app/login2", "/platform/api/page/return_url", "/MP_verify_AWiagUn4kZiwmTt0.txt" "/auth/info/login", "/platform/api/page/return_url", "/MP_verify_AWiagUn4kZiwmTt0.txt"
}; };
private static final String UNAUTH_RESULT = JSONObject.toJSONString(JsonResult.buildErrorStateResult("登录失败", null)); private static final String UNAUTH_RESULT = JSONObject.toJSONString(JsonResult.buildErrorStateResult("登录失败", null));
@Autowired @Autowired
......
...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.entity.UserDetail; ...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Optional;
/** /**
* user完整数据模型,包括user,user_detail * user完整数据模型,包括user,user_detail
...@@ -47,7 +48,7 @@ public class UserFullInfo implements Serializable { ...@@ -47,7 +48,7 @@ public class UserFullInfo implements Serializable {
if (userDetail != null) { if (userDetail != null) {
this.name = userDetail.getName(); this.name = userDetail.getName();
this.idNo = userDetail.getIdNo(); this.idNo = userDetail.getIdNo();
this.gender = userDetail.getGender().getName(); this.gender = Optional.ofNullable(userDetail.getGender()).orElse(Gender.UNKNOWN).getName();
} }
} }
......
...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.entity.UserDetail; ...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Optional;
/** /**
* Created by Miraculous on 15/12/29. * Created by Miraculous on 15/12/29.
...@@ -43,7 +44,7 @@ public class UserModel implements Serializable { ...@@ -43,7 +44,7 @@ public class UserModel implements Serializable {
if (userDetail != null) { if (userDetail != null) {
this.name = userDetail.getName(); this.name = userDetail.getName();
this.idNo = userDetail.getIdNo(); this.idNo = userDetail.getIdNo();
this.gender = userDetail.getGender().getName(); this.gender = Optional.ofNullable(userDetail.getGender()).orElse(Gender.UNKNOWN).getName();
} }
} }
......
package cn.quantgroup.xyqb.service.auth;
/**
* @author mengfan.feng
* @time 2015-11-13 16:43
*/
public interface IAuthApiService {
String login(String phone, Long loginFrom, String key);
String login(String phone, Long loginFrom, Long channelId, String key);
String login(String phone, Long loginFrom, Long channelId, Long createdFrom, String key);
}
package cn.quantgroup.xyqb.service.auth.impl;
import cn.quantgroup.xyqb.exception.ResponseException;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.auth.IAuthApiService;
import cn.quantgroup.xyqb.service.http.IHttpService;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* han-gu-guan
*
* @author mengfan.feng
* @time 2015-11-13 16:43
*/
@Service
public class AuthApiServiceImpl implements IAuthApiService {
@Autowired
private IHttpService httpService;
@Value("${xyqb.auth.url}")
private String xyqbAuthUrl;
@Override
public String login(String phone, Long loginFrom, String key) {
return this.getToken(phone, loginFrom, 1L, loginFrom, key);
}
@Override
public String login(String phone, Long loginFrom, Long channelId, String key) {
return this.getToken(phone, loginFrom, channelId, loginFrom, key);
}
@Override
public String login(String phone, Long loginFrom, Long channelId, Long createdFrom, String key) {
return this.getToken(phone, loginFrom, channelId, createdFrom, key);
}
/**
* 用户免密登录/注册
*
* @param phone
* @return
*/
private String getToken(String phone, Long loginFrom, Long channelId, Long createdFrom, String key) {
Map<String, String> parameters = ImmutableMap.<String, String>builder()
.put("phoneNo", phone)
.put("registerFrom", loginFrom + "")
.put("channelId", channelId + "")
.put("createdFrom", createdFrom + "")
.put("key", key)
.build();
String response = httpService.post(xyqbAuthUrl + "/app/login", parameters);
//JsonResult result = GSON.fromJson(response, JsonResult.class);
JsonResult result = JSONObject.parseObject(response, JsonResult.class);
if (result == null || !"0000".equals(result.getCode()) || !"0000".equals(result.getBusinessCode())) {
throw new ResponseException("用户免密登录返回结果错误");
}
String token = ((Map<String, String>) result.getData()).get("token");
if (StringUtils.isEmpty(token)) {
throw new ResponseException("用户免密登录失败");
}
return token;
}
}
...@@ -103,7 +103,7 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -103,7 +103,7 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
} }
Long count = stringRedisTemplate.opsForValue().increment(ipv4Key, 1L); Long count = stringRedisTemplate.opsForValue().increment(ipv4Key, 1L);
LOGGER.info("Lock_ipv4: count success ip access: ip={}, count={}", ipv4, count); LOGGER.info("Lock_ipv4: count success ip access: ip={}, count={}", ipv4, count);
lockSuccessIpv4(ipv4, count); // Todo -- 误伤业务方,暂时下线[比如网贷之家:121.40.207.133] -- lockSuccessIpv4(ipv4, count);
} }
} }
......
...@@ -15,6 +15,7 @@ import java.text.ParseException; ...@@ -15,6 +15,7 @@ import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
...@@ -211,7 +212,7 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -211,7 +212,7 @@ public class UserDetailServiceImpl implements IUserDetailService {
if (!StringUtils.isBlank(idNo)) { if (!StringUtils.isBlank(idNo)) {
try { try {
IdCardInfo idCardInfo = idCardService.getIdCardInfo(idNo); IdCardInfo idCardInfo = idCardService.getIdCardInfo(idNo);
return userDetailRepository.updateIdNoByPhoneNo(idCardInfo.getIdNo(), idCardInfo.getGender().ordinal(), phoneNo); return userDetailRepository.updateIdNoByPhoneNo(idCardInfo.getIdNo(), Optional.ofNullable(idCardInfo.getGender()).orElse(Gender.UNKNOWN).ordinal(), phoneNo);
} catch (ParseException e) { } catch (ParseException e) {
LOGGER.error("用户的身份证错误,phoneNo:{},e:{}", phoneNo, e); LOGGER.error("用户的身份证错误,phoneNo:{},e:{}", phoneNo, e);
return 0; return 0;
......
...@@ -8,6 +8,7 @@ import lombok.Data; ...@@ -8,6 +8,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.Optional;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
...@@ -71,7 +72,7 @@ public class UserDetailVO { ...@@ -71,7 +72,7 @@ public class UserDetailVO {
xUserDetail.setIdType(cn.quantgroup.motan.enums.IdType.valueOf(this.getIdType().name())); xUserDetail.setIdType(cn.quantgroup.motan.enums.IdType.valueOf(this.getIdType().name()));
} }
if (this.getGender() != null) { if (this.getGender() != null) {
xUserDetail.setGender(cn.quantgroup.motan.enums.Gender.valueOf(this.getGender().name())); xUserDetail.setGender(cn.quantgroup.motan.enums.Gender.valueOf(Optional.ofNullable(this.getGender()).orElse(Gender.UNKNOWN).name()));
} }
xUserDetail.setEmail(this.getEmail()); xUserDetail.setEmail(this.getEmail());
xUserDetail.setQq(this.getQq()); xUserDetail.setQq(this.getQq());
......
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