Commit 84c878ed authored by 技术部-任文超's avatar 技术部-任文超

Merge branch 'master' into 20180525-innerApi-update

# Conflicts:
#	src/main/java/cn/quantgroup/xyqb/controller/external/user/center/UserCenterController.java
parents dc0195dd 8c69aa89
...@@ -86,6 +86,16 @@ ...@@ -86,6 +86,16 @@
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
package cn.quantgroup.xyqb; package cn.quantgroup.xyqb;
import cn.quantgroup.tech.db.EnableDynamicDataSource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
...@@ -20,6 +21,7 @@ import org.springframework.scheduling.annotation.EnableAsync; ...@@ -20,6 +21,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
@EnableAsync @EnableAsync
@EnableAspectJAutoProxy @EnableAspectJAutoProxy
@SpringBootApplication @SpringBootApplication
@EnableDynamicDataSource
public class Bootstrap { public class Bootstrap {
public static void main(String[] args) { public static void main(String[] args) {
......
package cn.quantgroup.xyqb.aspect.logcaller; package cn.quantgroup.xyqb.aspect.logcaller;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IPUtil;
import com.google.common.base.Stopwatch;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
...@@ -14,7 +15,7 @@ import org.springframework.web.context.request.RequestContextHolder; ...@@ -14,7 +15,7 @@ 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.Objects; import java.util.concurrent.TimeUnit;
/** /**
* 调用者记录 * 调用者记录
...@@ -34,17 +35,23 @@ public class LogCallHttpAspect { ...@@ -34,17 +35,23 @@ public class LogCallHttpAspect {
@Around("logHttpCaller()") @Around("logHttpCaller()")
public Object record(ProceedingJoinPoint pjp) throws Throwable { public Object record(ProceedingJoinPoint pjp) throws Throwable {
Object result = pjp.proceed(); Stopwatch stopwatch = Stopwatch.createStarted();
ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (Objects.nonNull(attrs)) {
try {
HttpServletRequest request = attrs.getRequest(); HttpServletRequest request = attrs.getRequest();
String remoteIP = IPUtil.getRemoteIP(request); String remoteIP = IPUtil.getRemoteIP(request);
Object[] args = pjp.getArgs(); Object[] args = pjp.getArgs();
LOGGER.info("http api is called,from IP:[{}],args:[{}]", remoteIP, args); boolean hasException = false;
} catch (Exception e) { Object result;
LOGGER.error("打印http请求日志出错", e); try {
} result = pjp.proceed();
} catch (Throwable e) {
hasException = true;
throw e;
} finally {
Stopwatch stop = stopwatch.stop();
long elapsed = stop.elapsed(TimeUnit.MILLISECONDS);
LOGGER.info("[httpRequestLog],url:[{}],remoteIP:[{}],args:[{}],duration:[{}],exception:[{}]",
request.getRequestURL(), remoteIP, args, elapsed, hasException);
} }
return result; return result;
} }
......
...@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -10,6 +10,7 @@ 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.DependsOn; import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.JpaVendorAdapter;
...@@ -54,28 +55,13 @@ public class JpaConfig { ...@@ -54,28 +55,13 @@ public class JpaConfig {
properties.put("hibernate.jdbc.batch_size", 30); properties.put("hibernate.jdbc.batch_size", 30);
properties.put("hibernate.order_inserts", true); properties.put("hibernate.order_inserts", true);
properties.put("hibernate.order_updates", true); properties.put("hibernate.order_updates", true);
entityManager.setJpaProperties(properties); entityManager.setJpaProperties(properties);
entityManager.setJpaVendorAdapter(jpaVendorAdapter()); entityManager.setJpaVendorAdapter(jpaVendorAdapter());
entityManager.afterPropertiesSet(); entityManager.afterPropertiesSet();
return entityManager.getObject(); return entityManager.getObject();
} }
@Bean(name = "dataSource")
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(xyqbJdbcUrl);
config.setPassword(password);
config.setUsername(user);
config.setMaximumPoolSize(maxPoolSize);
config.setMinimumIdle(20);
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
return new HikariDataSource(config);
}
private JpaVendorAdapter jpaVendorAdapter() { private JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter(); HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
hibernateJpaVendorAdapter.setShowSql(false); hibernateJpaVendorAdapter.setShowSql(false);
......
...@@ -134,7 +134,7 @@ public class HttpConfig { ...@@ -134,7 +134,7 @@ public class HttpConfig {
connectionManager.setDefaultMaxPerRoute(2000); connectionManager.setDefaultMaxPerRoute(2000);
// retry handler // retry handler
HttpRequestRetryHandler retryHandler = new StandardHttpRequestRetryHandler(3, false); HttpRequestRetryHandler retryHandler = new StandardHttpRequestRetryHandler();
// keep alive strategy // keep alive strategy
ConnectionKeepAliveStrategy keepAliveStrategy = new DefaultConnectionKeepAliveStrategy(); ConnectionKeepAliveStrategy keepAliveStrategy = new DefaultConnectionKeepAliveStrategy();
......
...@@ -4,6 +4,8 @@ import cn.quantgroup.xyqb.Constants; ...@@ -4,6 +4,8 @@ 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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
...@@ -28,6 +30,7 @@ import java.util.UUID; ...@@ -28,6 +30,7 @@ import java.util.UUID;
*/ */
@RestController @RestController
@RequestMapping("/api") @RequestMapping("/api")
@Api(value = "/api", description = "叫Api, 实际上是图形验证码. 你说神奇不神奇...")
public class ImageCaptchaController { public class ImageCaptchaController {
private static final String IMAGE_FORMAT_PNG = "png"; private static final String IMAGE_FORMAT_PNG = "png";
...@@ -42,6 +45,7 @@ public class ImageCaptchaController { ...@@ -42,6 +45,7 @@ public class ImageCaptchaController {
* 默认匹配 GET /captcha, 提供4位数字和字母混合图片验证码 * 默认匹配 GET /captcha, 提供4位数字和字母混合图片验证码
*/ */
@RequestMapping(value = "/captcha") @RequestMapping(value = "/captcha")
@ApiOperation(value = "获取验证码", notes = "获取图形验证码接口, 会返回一个base64的图形验证码", httpMethod = "GET")
public JsonResult fetchCaptcha(HttpServletRequest request) { public JsonResult fetchCaptcha(HttpServletRequest request) {
String imageId = UUID.randomUUID().toString(); String imageId = UUID.randomUUID().toString();
BufferedImage challenge = imageCaptchaService.getImageChallengeForID(Constants.IMAGE_CAPTCHA_KEY + imageId, request.getLocale()); BufferedImage challenge = imageCaptchaService.getImageChallengeForID(Constants.IMAGE_CAPTCHA_KEY + imageId, request.getLocale());
...@@ -67,6 +71,7 @@ public class ImageCaptchaController { ...@@ -67,6 +71,7 @@ public class ImageCaptchaController {
*/ */
@CaptchaValidator @CaptchaValidator
@RequestMapping("/verification_image_code") @RequestMapping("/verification_image_code")
@ApiOperation(value = "验证图形验证码", notes = "验证图形验证码", httpMethod = "POST")
public JsonResult verificationImageCode() { public JsonResult verificationImageCode() {
return JsonResult.buildSuccessResult("", null); return JsonResult.buildSuccessResult("", null);
} }
......
...@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService; ...@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IPUtil;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -38,6 +39,7 @@ public class NewCaptchaController { ...@@ -38,6 +39,7 @@ public class NewCaptchaController {
@RequestMapping(value = "/captcha/new") @RequestMapping(value = "/captcha/new")
@ApiOperation(value = "获取新图形验证码", notes = "获取新图形验证码", httpMethod = "POST")
public JsonResult getCaptcha(String phoneNo, String clientType, HttpServletRequest request) { public JsonResult getCaptcha(String phoneNo, String clientType, HttpServletRequest request) {
String remoteIp = IPUtil.getRemoteIP(request); String remoteIp = IPUtil.getRemoteIP(request);
log.info("获取验证码, phoneNo:{}, clientType:{}, ip:{}, verifyType-qg:{}", phoneNo, clientType, remoteIp, geetestClose); log.info("获取验证码, phoneNo:{}, clientType:{}, ip:{}, verifyType-qg:{}", phoneNo, clientType, remoteIp, geetestClose);
......
...@@ -16,6 +16,7 @@ import cn.quantgroup.xyqb.util.ValidationUtil; ...@@ -16,6 +16,7 @@ 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.google.gson.*; import com.google.gson.*;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.usermodel.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -65,6 +66,7 @@ public class UserQueryLogController { ...@@ -65,6 +66,7 @@ public class UserQueryLogController {
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")
@ApiOperation(value = "给运营系统提供的查询查询记录的", notes = "给运营系统提供的查询查询记录的", httpMethod = "POST")
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);
...@@ -124,6 +126,7 @@ public class UserQueryLogController { ...@@ -124,6 +126,7 @@ public class UserQueryLogController {
} }
@RequestMapping("/queryUserInfo") @RequestMapping("/queryUserInfo")
@ApiOperation(value = "给运营系统提供的查询用户信息的接口", notes = "给运营系统提供的查询用户信息的接口", httpMethod = "POST")
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);
...@@ -331,6 +334,7 @@ public class UserQueryLogController { ...@@ -331,6 +334,7 @@ public class UserQueryLogController {
} }
@RequestMapping("/exportUserInfo") @RequestMapping("/exportUserInfo")
@ApiOperation(value = "给运营系统提供的导出用户信息的接口", notes = "给运营系统提供的导出用户信息的接口", httpMethod = "POST")
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) {
......
...@@ -14,6 +14,7 @@ import cn.quantgroup.xyqb.service.user.IUserService; ...@@ -14,6 +14,7 @@ import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IPUtil;
import cn.quantgroup.xyqb.util.MqUtils; import cn.quantgroup.xyqb.util.MqUtils;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import io.swagger.annotations.ApiOperation;
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;
...@@ -60,9 +61,9 @@ public class AppController implements IBaseController { ...@@ -60,9 +61,9 @@ public class AppController implements IBaseController {
* @param request * @param request
* @return Token和phoneNo * @return Token和phoneNo
*/ */
@IpValidator @IpValidator
@RequestMapping("/login") @RequestMapping("/login")
@ApiOperation(value = "App登陆", notes = "App登陆", httpMethod = "POST")
public JsonResult login( public JsonResult login(
String phoneNo, String phoneNo,
String idNo, String name, String key, String idNo, String name, String key,
...@@ -74,7 +75,6 @@ public class AppController implements IBaseController { ...@@ -74,7 +75,6 @@ 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("第三方用户登录 [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) {
...@@ -121,6 +121,7 @@ public class AppController implements IBaseController { ...@@ -121,6 +121,7 @@ public class AppController implements IBaseController {
@IpValidator @IpValidator
@RequestMapping("/login_super") @RequestMapping("/login_super")
@ApiOperation(value = "免密登陆, 新手机号还自动注册", notes = "免密登陆, 新手机号还自动注册", httpMethod = "POST")
public JsonResult loginSuper( public JsonResult loginSuper(
String phoneNo, String phoneNo,
String idNo, String name, String key, String idNo, String name, String key,
...@@ -188,6 +189,7 @@ public class AppController implements IBaseController { ...@@ -188,6 +189,7 @@ public class AppController implements IBaseController {
@IpValidator @IpValidator
@RequestMapping("/login2") @RequestMapping("/login2")
@ApiOperation(value = "免密登陆, 新手机号不自动注册", notes = "免密登陆, 新手机号不自动注册", httpMethod = "POST")
public JsonResult login2( public JsonResult login2(
String phoneNo, String phoneNo,
@RequestParam(required = false, defaultValue = "1") Long registerFrom, @RequestParam(required = false, defaultValue = "1") Long registerFrom,
......
...@@ -32,32 +32,11 @@ public class UserApiController { ...@@ -32,32 +32,11 @@ public class UserApiController {
@Resource @Resource
private IUserService userService; private IUserService userService;
@Resource @Resource
private IUserApiService userApiService;
@Resource
private ISessionService sessionService; private ISessionService sessionService;
@Resource @Resource
@Qualifier("stringRedisTemplate") @Qualifier("stringRedisTemplate")
private RedisTemplate<String, String> stringRedisTemplate; private RedisTemplate<String, String> stringRedisTemplate;
@RequestMapping("/user/check")
public JsonResult userImportCheck(String phoneNo, String registerFrom) {
if ("244".equals(registerFrom)) {
log.info("[user_import_check]用户导入检查拒绝。phoneNo=[{}], registerFrom=[{}]", phoneNo, registerFrom);
return JsonResult.buildErrorStateResult("用户导入检查拒绝", false);
}
if (StringUtils.isEmpty(phoneNo) || StringUtils.isEmpty(registerFrom)) {
log.error("[user_import_check]检查传入的参数,参数不全。phoneNo=[{}], registerFrom=[{}]", phoneNo, registerFrom);
return JsonResult.buildErrorStateResult("检查传入的参数,参数不全。", null);
}
boolean checkPassed = userApiService.userImportCheck(phoneNo);
if (checkPassed) {
log.info("[user_import_check]用户可以导入。phoneNo=[{}], registerFrom=[{}]", phoneNo, registerFrom);
return JsonResult.buildSuccessResult("用户可以导入", checkPassed);
}
log.info("[user_import_check]用户导入检查拒绝。phoneNo=[{}], registerFrom=[{}]", phoneNo, registerFrom);
return JsonResult.buildErrorStateResult("用户导入检查拒绝", checkPassed);
}
@RequestMapping("/user/is_passwd_set") @RequestMapping("/user/is_passwd_set")
public JsonResult isPasswordSet(String key, String phoneNo) { public JsonResult isPasswordSet(String key, String phoneNo) {
if (!"abc1234".equals(key) || StringUtils.isEmpty(phoneNo)) { if (!"abc1234".equals(key) || StringUtils.isEmpty(phoneNo)) {
......
...@@ -12,6 +12,7 @@ import cn.quantgroup.xyqb.service.user.*; ...@@ -12,6 +12,7 @@ import cn.quantgroup.xyqb.service.user.*;
import cn.quantgroup.xyqb.util.EmojiUtil; import cn.quantgroup.xyqb.util.EmojiUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -56,6 +57,7 @@ public class UserCenterController { ...@@ -56,6 +57,7 @@ public class UserCenterController {
*/ */
@PasswordFreeAccessValidator @PasswordFreeAccessValidator
@RequestMapping("/index") @RequestMapping("/index")
@ApiOperation(value = "用户中心首页", notes = "用户中心首页显示头像, 昵称, 姓名", httpMethod = "POST")
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) {
...@@ -83,6 +85,7 @@ public class UserCenterController { ...@@ -83,6 +85,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/queryNick") @RequestMapping("/queryNick")
@ApiOperation(value = "查询昵称", notes = "查询用户昵称", httpMethod = "POST")
public JsonResult queryUserNick(String phoneNo) { public JsonResult queryUserNick(String phoneNo) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); LOGGER.error("手机号为空,phoneNo:{}", phoneNo);
...@@ -108,6 +111,7 @@ public class UserCenterController { ...@@ -108,6 +111,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/saveNick") @RequestMapping("/saveNick")
@ApiOperation(value = "保存昵称", notes = "保存用户昵称", httpMethod = "POST")
public JsonResult saveUserNick(String phoneNo, String nick) { public JsonResult saveUserNick(String phoneNo, String nick) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); LOGGER.error("手机号为空,phoneNo:{}", phoneNo);
...@@ -133,6 +137,7 @@ public class UserCenterController { ...@@ -133,6 +137,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/save/avatar") @RequestMapping("/save/avatar")
@ApiOperation(value = "保存头像", notes = "保存用户头像", httpMethod = "POST")
public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl) { public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl) {
if (StringUtils.isBlank(avatarUrl) || StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(avatarUrl) || StringUtils.isBlank(phoneNo)) {
LOGGER.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo); LOGGER.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo);
...@@ -160,6 +165,7 @@ public class UserCenterController { ...@@ -160,6 +165,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/query/verified") @RequestMapping("/query/verified")
@ApiOperation(value = "查询用户是否实名认证", notes = "查询用户是否实名认证", httpMethod = "POST")
public JsonResult queryVerified(String phoneNo) { public JsonResult queryVerified(String phoneNo) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); LOGGER.error("手机号为空,phoneNo:{}", phoneNo);
...@@ -185,6 +191,7 @@ public class UserCenterController { ...@@ -185,6 +191,7 @@ public class UserCenterController {
*/ */
@PasswordFreeAccessValidator @PasswordFreeAccessValidator
@RequestMapping("/personalData") @RequestMapping("/personalData")
@ApiOperation(value = "查询个人资料信息", notes = "查询个人资料信息", httpMethod = "POST")
public JsonResult personalData(String phoneNo) { public JsonResult personalData(String phoneNo) {
if (StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo); LOGGER.error("手机号为空,phoneNo:{}", phoneNo);
...@@ -226,6 +233,7 @@ public class UserCenterController { ...@@ -226,6 +233,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/contacts/save") @RequestMapping("/contacts/save")
@ApiOperation(value = "保存用户联系人", notes = "保存用户联系人", httpMethod = "POST")
public JsonResult saveUserContact(String phoneNo, String contactJson) { public JsonResult saveUserContact(String phoneNo, String contactJson) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
LOGGER.error("保存联系人,参数错误. phoneNo:{}", phoneNo); LOGGER.error("保存联系人,参数错误. phoneNo:{}", phoneNo);
...@@ -267,6 +275,7 @@ public class UserCenterController { ...@@ -267,6 +275,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/address/save") @RequestMapping("/address/save")
@ApiOperation(value = "保存用户地址", notes = "保存用户地址", httpMethod = "POST")
public JsonResult saveUserAddress(String phoneNo, String province, Long provinceCode, String city, Long cityCode, String address, public JsonResult saveUserAddress(String phoneNo, String province, Long provinceCode, String city, Long cityCode, String address,
Long districtCode, String district) { Long districtCode, String district) {
LOGGER.info("保存用户地址信息, phoneNo:{}, province:{}, provinceCode:{}, city:{}, cityCode:{},district:{}, address:{}", phoneNo, province, provinceCode, city, cityCode, district, address); LOGGER.info("保存用户地址信息, phoneNo:{}, province:{}, provinceCode:{}, city:{}, cityCode:{},district:{}, address:{}", phoneNo, province, provinceCode, city, cityCode, district, address);
...@@ -311,6 +320,7 @@ public class UserCenterController { ...@@ -311,6 +320,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/searchAddress/phoneNo") @RequestMapping("/searchAddress/phoneNo")
@ApiOperation(value = "查询用户地址", notes = "查询用户地址", httpMethod = "POST")
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);
...@@ -331,6 +341,7 @@ public class UserCenterController { ...@@ -331,6 +341,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/searchContacts/phoneNo") @RequestMapping("/searchContacts/phoneNo")
@ApiOperation(value = "查询用户联系人", notes = "查询用户联系人", httpMethod = "POST")
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);
...@@ -354,6 +365,7 @@ public class UserCenterController { ...@@ -354,6 +365,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/save/userExtInfo") @RequestMapping("/save/userExtInfo")
@ApiOperation(value = "保存用户经济学历等信息", notes = "保存用户经济学历等信息", httpMethod = "POST")
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);
......
...@@ -78,13 +78,6 @@ public class UserController implements IBaseController { ...@@ -78,13 +78,6 @@ public class UserController implements IBaseController {
@Autowired @Autowired
private IUserRegisterService userRegisterService; private IUserRegisterService userRegisterService;
@RequestMapping("/test")
public JsonResult test() {
HttpServletRequest request = getRequest();
IPUtil.logIp(log, request);
return JsonResult.buildSuccessResult("", getCurrentUserFromRedis());
}
/** /**
* 登录(账号 + 密码) * 登录(账号 + 密码)
* 密码错误达到限定次数时执行图形验证码校验 * 密码错误达到限定次数时执行图形验证码校验
...@@ -190,7 +183,7 @@ public class UserController implements IBaseController { ...@@ -190,7 +183,7 @@ 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.info("用户不存在,或者已经注销,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("登录失败", null); return JsonResult.buildErrorStateResult("登录失败", null);
} }
if (user == null) { if (user == null) {
......
...@@ -23,10 +23,6 @@ public enum MaritalStatus { ...@@ -23,10 +23,6 @@ public enum MaritalStatus {
return description; return description;
} }
public void setDescription(String description) {
this.description = description;
}
@Override @Override
public String toString() { public String toString() {
String sb = "MaritalStatus{" + "description='" + description + '\'' + String sb = "MaritalStatus{" + "description='" + description + '\'' +
......
package cn.quantgroup.xyqb.exception;
/**
* Created by Miraculous on 15/7/29.
*/
public class ResubmissionException extends RuntimeException {
private static final long serialVersionUID = -1L;
public ResubmissionException() {
super("不能重复提交表单");
}
}
...@@ -18,10 +18,6 @@ public enum Gender { ...@@ -18,10 +18,6 @@ public enum Gender {
return name; return name;
} }
public void setName(String name) {
this.name = name;
}
@Override @Override
public String toString() { public String toString() {
return name; return name;
......
...@@ -26,10 +26,6 @@ public enum IdType { ...@@ -26,10 +26,6 @@ public enum IdType {
return name; return name;
} }
public void setName(String name) {
this.name = name;
}
@Override @Override
public String toString() { public String toString() {
return name; return name;
......
...@@ -79,14 +79,4 @@ public enum SmsMerchant { ...@@ -79,14 +79,4 @@ public enum SmsMerchant {
} }
return merchant; return merchant;
} }
/*
public static void main(String[] args){
String name = "FLYING_cow_TO_BORROW";
name = null;
name = Optional.ofNullable(name).orElse("");
System.out.println(SmsMerchant.of(name.toUpperCase()));
System.out.println(SmsMerchant.valueOf(name.toUpperCase()));
}
*/
} }
...@@ -9,8 +9,6 @@ import java.util.Optional; ...@@ -9,8 +9,6 @@ import java.util.Optional;
*/ */
public interface IUserApiService { public interface IUserApiService {
boolean userImportCheck(String phoneNo);
/** /**
* 根据uuid查询用户完整信息 * 根据uuid查询用户完整信息
* *
......
...@@ -3,9 +3,7 @@ package cn.quantgroup.xyqb.service.api.impl; ...@@ -3,9 +3,7 @@ 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.UserFullInfo; import cn.quantgroup.xyqb.model.UserFullInfo;
import cn.quantgroup.xyqb.model.model.BlacklistMatchResult;
import cn.quantgroup.xyqb.service.api.IUserApiService; import cn.quantgroup.xyqb.service.api.IUserApiService;
import cn.quantgroup.xyqb.service.model.IModelService;
import cn.quantgroup.xyqb.service.user.IUserDetailService; import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -19,29 +17,11 @@ import java.util.Optional; ...@@ -19,29 +17,11 @@ import java.util.Optional;
@Service @Service
public class UserApiServiceImpl implements IUserApiService { public class UserApiServiceImpl implements IUserApiService {
@Autowired
private IModelService modelService;
@Autowired @Autowired
private IUserService userService; private IUserService userService;
@Autowired @Autowired
private IUserDetailService userDetailService; private IUserDetailService userDetailService;
@Override
public boolean userImportCheck(String phoneNo) {
User user = userService.findByPhoneWithCache(phoneNo);
if (user != null) {
return false;
}
BlacklistMatchResult blacklistMatchResult = modelService.getBlacklistMatchResult(phoneNo);
if (blacklistMatchResult == null) {
return true;
}
return !blacklistMatchResult.getFlag();
}
@Override @Override
public Optional<UserFullInfo> getUserFullInfoByUuid(String uuid) { public Optional<UserFullInfo> getUserFullInfoByUuid(String uuid) {
User user = userService.findByUuidWithCache(uuid); User user = userService.findByUuidWithCache(uuid);
......
package cn.quantgroup.xyqb.service.model;
import cn.quantgroup.xyqb.model.model.BlacklistMatchResult;
/**
* Created by FrankChow on 15/12/16.
*/
public interface IModelService {
/**
* 验证用户是否在黑名单里
*
* @param phoneNo
* @return
*/
BlacklistMatchResult getBlacklistMatchResult(String phoneNo);
}
package cn.quantgroup.xyqb.service.model.impl;
import cn.quantgroup.xyqb.model.model.BlacklistMatchResult;
import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.model.IModelService;
import cn.quantgroup.xyqb.util.PasswordUtil;
import com.alibaba.fastjson.JSONObject;
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;
/**
* Created by FrankChow on 15/12/16.
*/
@Service
public class ModelServiceImpl implements IModelService {
private static final String BLACKLIST_URL_PATTERN =
"%s/Model/openapi/checkBlack.json?appId=0001&userId=0001_001&timeunit=%s&token=%s&phone=%s";
String TOKEN_PATTERN = "timeunit=%sappkey=wer123!@";
@Value("${model.quantgroup.url}")
private String modelUrlPrefix;
@Autowired
private IHttpService httpService;
@Override
public BlacklistMatchResult getBlacklistMatchResult(String phoneNo) {
if (StringUtils.isEmpty(phoneNo)) {
return null;
}
String url = buildBlacklistMatchUrl(phoneNo);
String result = httpService.get(url);
try {
return JSONObject.parseObject(result, BlacklistMatchResult.class);
} catch (Exception e) {
return null;
}
}
private String buildBlacklistMatchUrl(String phoneNo) {
Long timeUnit = System.currentTimeMillis();
String token = PasswordUtil.MD5(String.format(TOKEN_PATTERN, String.valueOf(timeUnit)));
String url = String.format(BLACKLIST_URL_PATTERN, modelUrlPrefix, timeUnit, token, phoneNo);
return url;
}
}
...@@ -78,7 +78,7 @@ public class SmsServiceImpl implements ISmsService { ...@@ -78,7 +78,7 @@ public class SmsServiceImpl implements ISmsService {
getSmsSender().sendMsg(msgParams); getSmsSender().sendMsg(msgParams);
log.info("注册完成,发送短信, phoneNo:{}", phoneNo); log.info("注册完成,发送短信, phoneNo:{}", phoneNo);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("注册完成短信发送异常", e);
} }
} }
......
...@@ -6,23 +6,6 @@ package cn.quantgroup.xyqb.service.user; ...@@ -6,23 +6,6 @@ package cn.quantgroup.xyqb.service.user;
*/ */
public interface ILkbUserService { public interface ILkbUserService {
/**
* App用户注册
*
* @param phoneNo
* @param password
* @return
*/
String registerApp(String phoneNo, String password);
/**
* 同步用户信息
*
* @param uuid
* @param name
* @param idNo
*/
void userUpdate(String uuid, String name, String idNo);
/** /**
* 同步用戶信息 * 同步用戶信息
......
...@@ -42,4 +42,6 @@ public interface IUserDetailService { ...@@ -42,4 +42,6 @@ public interface IUserDetailService {
* @return 受影响的行数 * @return 受影响的行数
*/ */
int updateIdCard(String name, String idNo, String phoneNo); int updateIdCard(String name, String idNo, String phoneNo);
List<UserDetail> findByPhones(List<String> phoneNos);
} }
package cn.quantgroup.xyqb.service.user; package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.UserInfo;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -39,4 +40,6 @@ public interface IUserService { ...@@ -39,4 +40,6 @@ public interface IUserService {
*/ */
int forbiddenUser(Boolean enable, String phoneNo); int forbiddenUser(Boolean enable, String phoneNo);
List<UserInfo> findUserInfosByPhones(List<String> phones);
} }
...@@ -5,8 +5,6 @@ import cn.quantgroup.xyqb.service.http.IHttpService; ...@@ -5,8 +5,6 @@ import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.user.ILkbUserService; import cn.quantgroup.xyqb.service.user.ILkbUserService;
import cn.quantgroup.xyqb.util.JsonUtil; import cn.quantgroup.xyqb.util.JsonUtil;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -14,7 +12,6 @@ import org.slf4j.Logger; ...@@ -14,7 +12,6 @@ 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;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map; import java.util.Map;
...@@ -39,54 +36,6 @@ public class LkbUserviceImpl implements ILkbUserService { ...@@ -39,54 +36,6 @@ public class LkbUserviceImpl implements ILkbUserService {
@Value("${lkb.client.url}") @Value("${lkb.client.url}")
private String clientUrl; private String clientUrl;
@Value("${lkb.client.user.register.app}")
private String registerApp;
@Value("${lkb.client.user.update}")
private String userUpdate;
@Value("${lkb.client.user.push}")
private String userPushPath;
@Override
public String registerApp(String phoneNo, String password) {
String timeunit = System.currentTimeMillis() + "";
String token = PasswordUtil.MD5(String.format(TOKEN_PATTERN, timeunit));
Map<String, String> parameters = ImmutableMap.<String, String>builder()
.put("appId", Constants.Channel.LKB_CODE)
.put("timeunit", timeunit)
.put("token", token)
.put("userName", phoneNo)
.put("password", password)
.build();
String response = httpService.get(clientUrl + registerApp, parameters);
Map<String, String> result = JSONObject.parseObject(response, Map.class);
if (result == null || "0".equals(result.get("flag"))) {
LOGGER.warn("向LKB注册用户失败, phoneNo:{}, password:{}", phoneNo, password);
return "";
}
return result.get("uid");
}
@Override
@Async
public void userUpdate(String uuid, String name, String idNo) {
Map<String, String> parameters = ImmutableMap.<String, String>builder()
.put("userId", uuid)
.put("realName", name)
.put("idcard", idNo)
.build();
String response = httpService.get(clientUrl + userUpdate, parameters);
//Map<String, String> result = GSON.fromJson(response, Map.class);
Map<String, String> result = JSONObject.parseObject(response, Map.class);
if (result == null || "false".equals(result.get("flag"))) {
LOGGER.warn("向LKB-Client同步用户信息失败, result: {}", result);
}
}
@Override @Override
public boolean pushUser(String uuid, String phoneNo, String name, String idNo) { public boolean pushUser(String uuid, String phoneNo, String name, String idNo) {
String timeunit = System.currentTimeMillis() + ""; String timeunit = System.currentTimeMillis() + "";
...@@ -103,7 +52,7 @@ public class LkbUserviceImpl implements ILkbUserService { ...@@ -103,7 +52,7 @@ public class LkbUserviceImpl implements ILkbUserService {
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 + "/user/push.json", parameters);
Optional<Map> resultOptional = JsonUtil.fromJson(response, Map.class); Optional<Map> resultOptional = JsonUtil.fromJson(response, Map.class);
if (!resultOptional.isPresent() || !"0000".equals(resultOptional.get().get("code"))) { if (!resultOptional.isPresent() || !"0000".equals(resultOptional.get().get("code"))) {
LOGGER.error("[lkb_user_push]向LKB同步用户失败,phoneNo:{},response={}", phoneNo, response); LOGGER.error("[lkb_user_push]向LKB同步用户失败,phoneNo:{},response={}", phoneNo, response);
......
...@@ -64,7 +64,7 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service { ...@@ -64,7 +64,7 @@ public class LockIpv4ServiceImpl implements ILockIpv4Service {
stringRedisTemplate.opsForValue().set(ipv4Key, String.valueOf(0), Constants.IPV4_FAILED_COUNT_MINUTES, TimeUnit.MINUTES); stringRedisTemplate.opsForValue().set(ipv4Key, String.valueOf(0), Constants.IPV4_FAILED_COUNT_MINUTES, TimeUnit.MINUTES);
} }
Long count = stringRedisTemplate.opsForValue().increment(ipv4Key, 1L); Long count = stringRedisTemplate.opsForValue().increment(ipv4Key, 1L);
LOGGER.info("Lock_ipv4: count error ip access: ip={}, count={}", ipv4, count); LOGGER.info("Lock_ipv4: count deny ip access: ip={}, count={}", ipv4, count);
lockErrorIpv4(ipv4, count); lockErrorIpv4(ipv4, count);
} }
} }
......
...@@ -197,4 +197,13 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -197,4 +197,13 @@ public class UserDetailServiceImpl implements IUserDetailService {
} }
return 0; return 0;
} }
@Override
public List<UserDetail> findByPhones(List<String> phoneNos) {
List<UserDetail> userDetails = userDetailRepository.findAll((root, query, cb) -> {
query.where(root.get("phoneNo").as(String.class).in(phoneNos));
return query.getRestriction();
});
return userDetails;
}
} }
...@@ -2,9 +2,13 @@ package cn.quantgroup.xyqb.service.user.impl; ...@@ -2,9 +2,13 @@ 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.entity.UserDetail;
import cn.quantgroup.xyqb.model.UserInfo;
import cn.quantgroup.xyqb.repository.IUserRepository; import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -16,6 +20,7 @@ import org.springframework.stereotype.Service; ...@@ -16,6 +20,7 @@ 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.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -31,6 +36,9 @@ public class UserServiceImpl implements IUserService { ...@@ -31,6 +36,9 @@ public class UserServiceImpl implements IUserService {
RedisTemplate<String, String> stringRedisTemplate; RedisTemplate<String, String> stringRedisTemplate;
@Autowired @Autowired
private IUserRepository userRepository; private IUserRepository userRepository;
@Autowired
private IUserDetailService userDetailService;
@Override @Override
@Cacheable(value = "usercache", key = "'xyqbuser' + #phone", unless = "#result == null", cacheManager = "cacheManager") @Cacheable(value = "usercache", key = "'xyqbuser' + #phone", unless = "#result == null", cacheManager = "cacheManager")
...@@ -137,4 +145,34 @@ public class UserServiceImpl implements IUserService { ...@@ -137,4 +145,34 @@ public class UserServiceImpl implements IUserService {
return userRepository.forbiddenUser(enable, phoneNo); return userRepository.forbiddenUser(enable, phoneNo);
} }
@Override
public List<UserInfo> findUserInfosByPhones(List<String> phones) {
List<User> users = findByPhones(phones);
if(CollectionUtils.isEmpty(phones)){
return Collections.emptyList();
}
List<UserDetail> userDetails= userDetailService.findByPhones(phones);
if (!CollectionUtils.isEmpty(users)) {
Map<Long, User> userMap = Maps.newHashMapWithExpectedSize(users.size());
users.forEach(user -> {
userMap.put(user.getId(), user);
});
if (!CollectionUtils.isEmpty(userDetails)) {
List<UserInfo> userInfos = Lists.newArrayListWithExpectedSize(userDetails.size());
userDetails.forEach(userDetail -> {
UserInfo userInfo = new UserInfo(userMap.get(userDetail.getUserId()), userDetail);
userInfos.add(userInfo);
});
return userInfos;
}
}
return Collections.emptyList();
}
} }
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<configuration> <configuration>
<springProperty name="spring.application.name" source="spring.application.name"/> <springProperty name="spring.application.name" source="spring.application.name"/>
<property name="LOG_LEVEL_PATTERN" value="%5p [${spring.application.name:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]"/> <property name="LOG_LEVEL_PATTERN" value="%5p [${spring.application.name:-}-%X{X-B3-TraceId:-}-%X{X-B3-SpanId:-}-%X{X-Span-Export:-}]"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} --- [%thread] [%file:%line] %logger - %msg%n}"/> <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} --- [%thread] [%file:%line] %logger - %msg%n}"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
......
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