Commit 61b0d508 authored by 技术部—现金贷—曾丽宾's avatar 技术部—现金贷—曾丽宾

Merge remote-tracking branch 'origin/master' into baitiao_channel

# Conflicts:
#	src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
#	src/main/resources/config/dev/logback.xml
parents 5dbbf0df dcc59b63
......@@ -58,4 +58,8 @@ public interface Constants {
String SCOPE = "snsapi_userinfo";
}
interface UserAvatar {
String AVATAR_DEFAULT = "https://avatar.xyqb.com/default_avatar.png";
}
}
package cn.quantgroup.xyqb.aspect.accessable;
import java.lang.annotation.*;
/**
* Created by 11 on 2017/3/23.
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface IpValidator {
}
package cn.quantgroup.xyqb.aspect.accessable;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.util.IPUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.xml.crypto.dsig.keyinfo.PGPData;
/**
* Created by 11 on 2017/3/23.
*/
@Aspect
@Component
public class IpValidatorAdvisor {
private static final Logger LOGGER = LoggerFactory.getLogger(IpValidatorAdvisor.class);
/*@Value("${config.accessable}")
private boolean accessable;*/
@Pointcut("@annotation(cn.quantgroup.xyqb.aspect.accessable.IpValidator)")
private void needIpValidate() {
}
@Around("needIpValidate()")
private Object doCapchaValidate(ProceedingJoinPoint pjp) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
String ip = IPUtil.getRemoteIP(request);
LOGGER.info("获取ip地址:" + ip);
/*HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String ip = IPUtil.getRemoteIP(request);
if(accessable) {
return pjp.proceed();
} else {
if(ip.startsWith("172")){
return pjp.proceed();
} else {
LOGGER.error("非法ip:{}", ip);
return JsonResult.buildErrorStateResult("非法ip", null);
}
}*/
return pjp.proceed();
}
}
......@@ -7,21 +7,59 @@ import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.model.IdType;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserExtInfo;
import cn.quantgroup.xyqb.entity.UserSpouse;
import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.entity.enumerate.EducationEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum;
import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus;
import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum;
import cn.quantgroup.xyqb.entity.enumerate.Relation;
import cn.quantgroup.xyqb.model.AddressRet;
import cn.quantgroup.xyqb.model.ContactRet;
import cn.quantgroup.xyqb.model.IdType;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserDetailRet;
import cn.quantgroup.xyqb.model.UserExtInfoRet;
import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.UserSpouseRet;
import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.*;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserExtInfoService;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.service.user.IUserSpouseService;
import cn.quantgroup.xyqb.service.wechat.IWechatService;
import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.ValidationUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.google.common.base.MoreObjects;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.google.common.collect.ImmutableMap;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.joda.time.DateTime;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -66,6 +104,22 @@ public class InnerController implements IBaseController {
@Autowired
private ISessionService sessionService;
@Autowired
private IHttpService httpService;
@Value("${xyqb.user.query.url}")
private String queryUrl;
@Value("${xyqb.auth.url}")
private String hanguguanUrl;
private static final ObjectMapper MAPPER = new ObjectMapper();
static {
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
MAPPER.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true);
}
@Autowired
private ILkbUserService lkbUserService;
......@@ -134,6 +188,8 @@ public class InnerController implements IBaseController {
User user = userService.findByPhoneWithCache(phoneNo);
if (user == null) {
user = new User();
}else if(!user.getEnable()){
return JsonResult.buildErrorStateResult("用户已经注销", null);
}
if (org.apache.commons.lang.StringUtils.isEmpty(user.getUuid())) {
user.setUuid(uuid);
......@@ -391,8 +447,23 @@ public class InnerController implements IBaseController {
if (StringUtils.isBlank(name) && StringUtils.isBlank(phoneNo) && StringUtils.isBlank(idNo)) {
return JsonResult.buildErrorStateResult("至少必须满足一个条件不为空", null);
}
List<UserDetailVO> userDetails = userDetailService.searchUserDetailList(name, phoneNo, idNo);
return JsonResult.buildSuccessResult("success", userDetails);
/*List<UserDetailVO> userDetails = userDetailService.searchUserDetailList(name, phoneNo, idNo);
return JsonResult.buildSuccessResult("success", userDetails);*/
ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
if(StringUtils.isNotBlank(name)){
builder.put("name",name);
}
if(StringUtils.isNotBlank(phoneNo)){
builder.put("phoneNo",phoneNo);
}
if(StringUtils.isNotBlank(idNo)){
builder.put("idNo",idNo);
}
Map<String, String> param =builder.build();
String s = httpService.get(queryUrl.concat("/innerapi/user_detail/search_list"), param);
return JSON.parseObject(s, JsonResult.class);
}
@RequestMapping("/user_ext_info/search/user_id")
......@@ -449,6 +520,8 @@ public class InnerController implements IBaseController {
if (!user.getEnable()) {
sessionService.deleteByUserId(userId);
}
LOGGER.info("去清除函谷关的缓存");
httpService.get(hanguguanUrl.concat("/innerapi/disableUserCache"),ImmutableMap.of("phone",user.getPhoneNo()));
return JsonResult.buildSuccessResult("用户已禁用.", user.getEnable() == false);
}
......@@ -499,19 +572,20 @@ public class InnerController implements IBaseController {
if(StringUtils.isBlank(userPhones)){
return JsonResult.buildErrorStateResult("传入用户手机号不可为空",null);
}
List<String> phones = JSONObject.parseObject(userPhones, new TypeReference<List<String>>() {});
List<String> phones = JSONObject.parseObject(userPhones, new TypeReference<List<String>>() {
});
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(phones)) {
if(!(phones.size()>500)) {
List<User> users = userService.findByPhones(phones);
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(users)) {
return JsonResult.buildSuccessResult(null, users.stream().map(User::getId).collect(Collectors.toList()));
return JsonResult.buildSuccessResult(null, users.stream().collect(Collectors.toMap(User::getPhoneNo,User::getId)));
}else {
return JsonResult.buildSuccessResult(null, null);
}
}
return JsonResult.buildErrorStateResult("单次批量查询不可超过500个手机号",null);
}
return JsonResult.buildErrorStateResult("传入用户手机号不可为空",null);
return JsonResult.buildErrorStateResult("传入用户手机号不可为空", null);
}
......@@ -623,4 +697,20 @@ public class InnerController implements IBaseController {
return JsonResult.buildSuccessResult(null, userRet);
}
@RequestMapping("/user/register")
public JsonResult register(String phoneNo, String password, Long channelId) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号不正确", null);
}
User user = userService.findByPhoneInDb(phoneNo);
if (user == null) {
user = userService.registerAndReturn(phoneNo, StringUtils.defaultString(password, ""), channelId);
}
if (user == null) {
return JsonResult.buildErrorStateResult("注册失败", null);
}
return JsonResult.buildSuccessResult(null, UserRet.getUserRet(user));
}
}
\ No newline at end of file
......@@ -41,4 +41,9 @@ public class Address implements Serializable {
private Timestamp createdAt;
@Column(name = "updated_at")
private Timestamp updateAt;
@PreUpdate
public void preUpdate(){
this.updateAt = new Timestamp(System.currentTimeMillis());
}
}
package cn.quantgroup.xyqb.entity;
import lombok.Data;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* Created by 11 on 2017/3/22.
*/
@Data
@Entity
@Table(name = "user_attached")
public class UserAttached {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column( name = "user_id")
private Long userId;
@Column(name = "avatar")
private String avatar;
@Column(name = "nick")
private String nick;
@Column(name = "created_at")
private Timestamp createdAt;
@Column(name = "updated_at")
private Timestamp updatedAt;
}
......@@ -25,16 +25,9 @@ import java.io.PrintWriter;
@Order(Ordered.HIGHEST_PRECEDENCE + 100)
public class RequestFilter implements Filter {
//private static final String[] ALLOWED_PATTERNS = {
// "/innerapi/**", "/user/exist", "/motan/**", "/user/register", "/user/login", "/user/register/fast","/auth/info/login",
// "/user/login/fast", "/user/reset_password", "/user/exist_check",
// "/jr58/**", "/app/login", "/app/login_super", "/wechat/**", "/config/**", "/api/**", "/user/exists_token",
// "/platform/api/page/return_url", "/MP_" +
// "verify_AWiagUn4kZiwmTt0.txt"
//};
private static final String[] ALLOWED_PATTERNS = {
"/innerapi/**", "/user/exist", "/motan/**", "/user/register", "/user/login", "/user/register/fast","/auth/info/login",
"/user/login/fast", "/user/reset_password", "/user/exist_check",
"/user/login/fast", "/user/reset_password", "/user/exist_check","/user/center/**",
"/jr58/**", "/app/login", "/app/login_super", "/wechat/**", "/config/**", "/api/**", "/user/exists_token",
"/platform/api/page/return_url", "/MP_" +
"verify_AWiagUn4kZiwmTt0.txt"
......
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UserAttached;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* Created by 11 on 2017/3/22.
*/
public interface IUserAttachedRepository extends JpaRepository<UserAttached, Long> {
UserAttached findByUserId(Long userId);
}
package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.xyqb.entity.UserAttached;
/**
* Created by 11 on 2017/3/22.
*/
public interface UserCenterService {
UserAttached searchUserAttachedByUserId(Long userId);
UserAttached saveUserAttached(UserAttached userAttached);
}
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.xyqb.entity.UserAttached;
import cn.quantgroup.xyqb.repository.IUserAttachedRepository;
import cn.quantgroup.xyqb.service.user.UserCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by 11 on 2017/3/22.
*/
@Service
public class UserCenterServiceImpl implements UserCenterService {
@Autowired
private IUserAttachedRepository userAttachedRepository;
@Override
public UserAttached searchUserAttachedByUserId(Long userId) {
return userAttachedRepository.findByUserId(userId);
}
@Override
public UserAttached saveUserAttached(UserAttached userAttached) {
return userAttachedRepository.save(userAttached);
}
}
......@@ -7,6 +7,14 @@ import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
......@@ -14,15 +22,6 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
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.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Created by 11 on 2016/12/29.
*/
......
config.accessable=false
configserver.disable=1
configserver.system=xyqb-user
......@@ -86,4 +87,5 @@ motan.user.module=user-motan-rpc
motan.application=xyqbUserMotan
#xyqb-user-域名
xyqb.user.domain=passport.xyqb.com
\ No newline at end of file
xyqb.user.domain=passport.xyqb.com
xyqb.user.query.url=http://192.168.11.40:8081
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<appender name="FILE" class="cn.quantgroup.xyqb.util.log.WithOutPhoneRollingFileAppender">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<appender name="FILE" class="cn.quantgroup.xyqb.util.log.WithOutPhoneRollingFileAppender">-->
<file>/home/quant_group/logs/xyqb_user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/quant_group/logs/xyqb_user.log.%d{yyyy-MM-dd}</fileNamePattern>
......
......@@ -49,4 +49,6 @@ motan.user.module=user-motan-rpc
motan.application=xyqbUserMotan
#xyqb-user-域名
xyqb.user.domain=passport.xyqb.com
\ No newline at end of file
xyqb.user.domain=passport.xyqb.com
xyqb.user.query.url=http://userqry.xyqb.com
\ No newline at end of file
......@@ -51,4 +51,5 @@ wechat.appid=wxcdf6077af8127559
wechat.secret=16eaec16084d0d9c52d4114f359cc72c
#xyqb-user-域名
xyqb.user.domain=passport.xyqb.com
\ No newline at end of file
xyqb.user.domain=passport.xyqb.com
xyqb.user.query.url=http://userqry.xyqb.com
\ No newline at end of file
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