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

Merge remote-tracking branch 'origin/master' into wechat-forward

parents 44f8aeee b3d357c3
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
<dependency> <dependency>
<groupId>cn.quantgroup</groupId> <groupId>cn.quantgroup</groupId>
<artifactId>xyqb-user-rpc-commons</artifactId> <artifactId>xyqb-user-rpc-commons</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.1.2-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -6,45 +6,53 @@ import cn.quantgroup.motan.service.UserMotanService; ...@@ -6,45 +6,53 @@ import cn.quantgroup.motan.service.UserMotanService;
import cn.quantgroup.motan.vo.UserSysResult; import cn.quantgroup.motan.vo.UserSysResult;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.*; import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.entity.enumerate.*; //import cn.quantgroup.xyqb.entity.enumerate.*;
import cn.quantgroup.xyqb.model.IdCardInfo; import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.model.IdType; import cn.quantgroup.xyqb.model.IdType;
import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.session.LoginInfo; import cn.quantgroup.xyqb.model.session.LoginInfo;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.repository.IUserRepository; import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.api.IUserApiService;
import cn.quantgroup.xyqb.service.auth.IIdCardService; import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.merchant.IMerchantService; import cn.quantgroup.xyqb.service.merchant.IMerchantService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.sms.ISmsService; import cn.quantgroup.xyqb.service.sms.ISmsService;
import cn.quantgroup.xyqb.service.user.*; import cn.quantgroup.xyqb.service.user.*;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO; import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import cn.quantgroup.xyqb.service.wechat.IWechatService; import cn.quantgroup.xyqb.service.wechat.IWechatService;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
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 com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableMap;
import com.weibo.api.motan.config.springsupport.annotation.MotanService; import com.weibo.api.motan.config.springsupport.annotation.MotanService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.ParseException; import java.text.ParseException;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Random; import java.util.Random;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.quantgroup.xyqb.constant.UserConstant.USER_ERROR_OR_PASSWORD_ERROR;
/** /**
* Created by 11 on 2017/2/27. * Created by 11 on 2017/2/27.
*/ */
@Slf4j @Slf4j
@MotanService(basicService = "baseServiceConfig") @MotanService(basicService = "baseServiceConfig")
public class MotanUserServiceImpl implements UserMotanService { public class MotanUserServiceImpl implements UserMotanService {
private static final ObjectMapper MAPPER = new ObjectMapper(); private static final ObjectMapper MAPPER = new ObjectMapper();
private final static Random random = new Random(); private final static Random random = new Random();
...@@ -52,6 +60,10 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -52,6 +60,10 @@ public class MotanUserServiceImpl implements UserMotanService {
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
} }
@Value("${xyqb.auth.url}")
private String xyqbAuthUrl;
@Autowired @Autowired
private IIdCardService idCardService; private IIdCardService idCardService;
@Autowired @Autowired
...@@ -79,6 +91,16 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -79,6 +91,16 @@ public class MotanUserServiceImpl implements UserMotanService {
@Autowired @Autowired
private IUserSpouseService userSpouseService; private IUserSpouseService userSpouseService;
@Autowired
private IHttpService httpService;
@Autowired
private IUserApiService userApiService;
@Override
public UserSysResult<XUser> saveUserRelatedInfo(UserRelatedBean userRelatedBean) {
return null;
}
@Override @Override
public UserSysResult<XUser> findUserByPhoneNo(String phoneNo) { public UserSysResult<XUser> findUserByPhoneNo(String phoneNo) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
...@@ -257,7 +279,7 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -257,7 +279,7 @@ public class MotanUserServiceImpl implements UserMotanService {
log.info("第三方用户登录, loginFrom:{}, requestIp:{}", appLoginParam.getRegisterFrom(), requestIp); log.info("第三方用户登录, loginFrom:{}, requestIp:{}", appLoginParam.getRegisterFrom(), requestIp);
User user = userService.findByPhoneInDb(appLoginParam.getPhoneNo()); User user = userService.findByPhoneInDb(appLoginParam.getPhoneNo());
if (user == null) { if (user == null) {
user = register(appLoginParam.getRegisterFrom(), appLoginParam.getPhoneNo(), appLoginParam.getIdNo(), appLoginParam.getName()); user = register(appLoginParam.getRegisterFrom(), appLoginParam.getPhoneNo(), appLoginParam.getIdNo(), appLoginParam.getName(),appLoginParam.getChannelId());
} }
if (user == null) { if (user == null) {
return returnErrorValue("账户或者密码错误"); return returnErrorValue("账户或者密码错误");
...@@ -389,11 +411,12 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -389,11 +411,12 @@ public class MotanUserServiceImpl implements UserMotanService {
return returnSuccessValue(xAddress); return returnSuccessValue(xAddress);
} }
@Override @Override
public UserSysResult<XUserExtInfo> updateUserExtInfo( public UserSysResult<XUserExtInfo> updateUserExtInfo(
Long userId, cn.quantgroup.motan.enums.IncomeEnum incomeEnum, cn.quantgroup.motan.enums.IncomeRangeEnum incomeRangeEnum, Long userId, IncomeEnum incomeEnum, IncomeRangeEnum incomeRangeEnum,
cn.quantgroup.motan.enums.OccupationEnum occupationEnum, cn.quantgroup.motan.enums.EducationEnum educationEnum, Boolean hasCar, OccupationEnum occupationEnum, EducationEnum educationEnum, Boolean hasCar,
Boolean hasSocialSecurity, Boolean hasHouse, Boolean hasCreditCard, cn.quantgroup.motan.enums.MaritalStatus maritalStatus) { Boolean hasSocialSecurity, Boolean hasHouse, Boolean hasCreditCard, MaritalStatus maritalStatus) {
UserSysResult<XUserExtInfo> userSysResult = returnValue(null, null); UserSysResult<XUserExtInfo> userSysResult = returnValue(null, null);
if (null == userId || 0L == userId) { if (null == userId || 0L == userId) {
return returnErrorValue("用户id为空"); return returnErrorValue("用户id为空");
...@@ -450,7 +473,21 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -450,7 +473,21 @@ public class MotanUserServiceImpl implements UserMotanService {
@Override @Override
public UserSysResult<Boolean> disableUser(Long userId) { public UserSysResult<Boolean> disableUser(Long userId) {
return null; if (null == userId || 0L == userId) {
throw new RuntimeException("userId不能为空");
}
User user = userService.findById(userId);
if (null == user) {
throw new RuntimeException("未查询到该用户,用户id:"+userId);
}
user.setEnable(false);
user.setUpdatedAt(new Timestamp(System.currentTimeMillis()));
log.info("注销用户的信息,userId={}", userId);
user = userService.saveUser(user);
if (!user.getEnable()) {
sessionService.deleteByUserId(userId);
}
return returnSuccessValue(Boolean.TRUE);
} }
@Override @Override
...@@ -500,7 +537,18 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -500,7 +537,18 @@ public class MotanUserServiceImpl implements UserMotanService {
@Override @Override
public UserSysResult<XUserExtInfo> findUserExtInfoByUserId(Long userId) { public UserSysResult<XUserExtInfo> findUserExtInfoByUserId(Long userId) {
return null; if (userId == null) {
return returnErrorValue("userId不能为空");
}
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
if (userExtInfo == null) {
return returnErrorValue("未找到用户扩展信息");
}
return returnSuccessValue(fromUserExtInfo(userExtInfo));
}
private XUserExtInfo fromUserExtInfo(UserExtInfo userExtInfo) {
return null==userExtInfo?null:userExtInfo.toXUserExtInfo();
} }
@Override @Override
...@@ -515,12 +563,22 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -515,12 +563,22 @@ public class MotanUserServiceImpl implements UserMotanService {
@Override @Override
public UserSysResult<String> loginWithUuid(String uuid) { public UserSysResult<String> loginWithUuid(String uuid) {
return null; return returnErrorValue("MotanUserServiceImpl loginWithUuid(String uuid) need to be finish.");
} }
@Override @Override
public UserSysResult<Boolean> userImportCheck(String phoneNo, String registerFrom) { public UserSysResult<Boolean> userImportCheck(String phoneNo, String registerFrom) {
return null; if ("244".equals(registerFrom)) {
return returnErrorValue("用户导入检查拒绝");
}
if (org.apache.commons.lang3.StringUtils.isEmpty(phoneNo) || org.apache.commons.lang3.StringUtils.isEmpty(registerFrom)) {
return returnErrorValue("检查传入的参数,参数不全。");
}
boolean checkPassed = userApiService.userImportCheck(phoneNo);
if (checkPassed) {
return returnValue(Boolean.TRUE, "success");
}
return returnErrorValue("用户导入检查拒绝");
} }
@Override @Override
...@@ -547,17 +605,135 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -547,17 +605,135 @@ public class MotanUserServiceImpl implements UserMotanService {
} }
userSpouse.setSpouseName(status == cn.quantgroup.user.enums.MaritalStatus.MARRIED ? spouseName : ""); userSpouse.setSpouseName(status == cn.quantgroup.user.enums.MaritalStatus.MARRIED ? spouseName : "");
userSpouse.setSpousePhone(status == cn.quantgroup.user.enums.MaritalStatus.MARRIED ? spousePhone : ""); userSpouse.setSpousePhone(status == cn.quantgroup.user.enums.MaritalStatus.MARRIED ? spousePhone : "");
userSpouse.setStatus(MaritalStatus.valueOf(status.name())); userSpouse.setStatus(cn.quantgroup.user.enums.MaritalStatus.valueOf(status.name()));
userSpouse.setUpdateAt(timestamp); userSpouse.setUpdateAt(timestamp);
userSpouse = userSpouseService.save(userSpouse); userSpouse = userSpouseService.save(userSpouse);
return returnSuccessValue(fromUserSpouse(userSpouse)); return returnSuccessValue(fromUserSpouse(userSpouse));
} }
@Override @Override
public UserSysResult<AppLoginResultBean> appLogin(AppLoginParam param) { public UserSysResult<AppLoginResultBean> appLogin(AppLoginParam appLoginParam) {
return null; if (!ValidationUtil.validatePhoneNo(appLoginParam.getPhoneNo())) {
throw new RuntimeException(USER_ERROR_OR_PASSWORD_ERROR);
}
log.info("第三方用户登录, appLoginParam:{} ", appLoginParam);
User user = userService.findByPhoneInDb(appLoginParam.getPhoneNo());
if (user == null) {
user = register(appLoginParam.getRegisterFrom(), appLoginParam.getPhoneNo(), appLoginParam.getIdNo(), appLoginParam.getName(), appLoginParam.getChannelId());
}
if (user == null) {
throw new RuntimeException(USER_ERROR_OR_PASSWORD_ERROR);
}
if (!user.getEnable()) {
throw new RuntimeException("登录失败");
}
Merchant merchant = merchantService.findMerchantByName(appLoginParam.getKey());
if (merchant == null) {
throw new RuntimeException("无效的商户");
}
LoginProperties loginProperties = new LoginProperties();
loginProperties.setChannelId(appLoginParam.getChannelId());
loginProperties.setMerchantName(merchant.getName());
loginProperties.setCreatedFrom(appLoginParam.getRegisterFrom());
loginProperties.setAppChannel(appLoginParam.getAppChannel());
SessionStruct sessionStruct = sessionService.createSessionAndPersist(user, loginProperties);
AppLoginResultBean appLoginResultBean = new AppLoginResultBean();
appLoginResultBean.setToken(sessionStruct.getSid());
appLoginResultBean.setPhoneNo(appLoginParam.getPhoneNo());
log.info("第三方用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}", appLoginParam.getRegisterFrom(), appLoginParam.getPhoneNo(), appLoginParam.getAppChannel());
return returnSuccessValue(appLoginResultBean);
} }
@Override
public UserSysResult<XLoginInfo> getLoginInfo(String token) {
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSessionFromRedis(token);
if(null != sessionStruct) {
log.info("从用户中心获取到了用户登录信息:phone:[{}]", sessionStruct.getValues().getUser().getPhoneNo());
XLoginInfo loginInfo = new XLoginInfo();
loginInfo.setUser(sessionStruct.getValues().getUser().toXUser());
loginInfo.setToken(sessionStruct.getSid());
LoginContext context = new LoginContext();
context.setChannelId(sessionStruct.getValues().getLoginProperties().getChannelId());
context.setCreatedFrom(sessionStruct.getValues().getLoginProperties().getCreatedFrom());
context.setAppChannel(sessionStruct.getValues().getLoginProperties().getAppChannel());
loginInfo.setLoginContext(context);
return returnSuccessValue(loginInfo);
}else {
// 函谷关去查token 返回值高仿
log.info("去向函谷关查询用户信息");
if(StringUtils.isBlank(token) ||token.length() != 36){
return returnErrorValue("用户未登录");
}
String checkUrl = xyqbAuthUrl+"/innerapi/is_login";
ImmutableMap<String, String> headMap = ImmutableMap.of("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);
}
}
/*@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("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 xLoginInfo = new XLoginInfo();
xLoginInfo.setToken(token);
xLoginInfo.setUser(user.toXUser());
LoginContext context = new LoginContext();
context.setChannelId(null);
context.setCreatedFrom(user.getRegisteredFrom());
context.setAppChannel("");
context.setBtMerchantId(null);
xLoginInfo.setLoginContext(context);
return returnSuccessValue(xLoginInfo);
}
}*/
/** /**
* 封装返回结果. * 封装返回结果.
* *
...@@ -596,7 +772,7 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -596,7 +772,7 @@ public class MotanUserServiceImpl implements UserMotanService {
* *
* @return * @return
*/ */
private User register(Long registerFrom, String phoneNo, String idNo, String name) { private User register(Long registerFrom, String phoneNo, String idNo, String name,Long channelId) {
String randomCode = String.valueOf(random.nextInt(899999) + 100000); String randomCode = String.valueOf(random.nextInt(899999) + 100000);
...@@ -606,6 +782,11 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -606,6 +782,11 @@ public class MotanUserServiceImpl implements UserMotanService {
log.info("第三方登录用户,保存 User"); log.info("第三方登录用户,保存 User");
User user = new User(); User user = new User();
if (channelId == 222L) {
user.setRegisteredFrom(channelId);
} else {
user.setRegisteredFrom(registerFrom);
}
user.setRegisteredFrom(registerFrom); user.setRegisteredFrom(registerFrom);
user.setUuid(uuid); user.setUuid(uuid);
user.setEnable(true); user.setEnable(true);
...@@ -647,4 +828,20 @@ public class MotanUserServiceImpl implements UserMotanService { ...@@ -647,4 +828,20 @@ public class MotanUserServiceImpl implements UserMotanService {
return user; return user;
} }
@Override
public UserSysResult<XUserDetail> modifyUserDetail(UserDetailUpdateBean userDetailUpdateBean) {
return returnErrorValue("MotanUserServiceImpl modifyUserDetail(UserDetailUpdateBean userDetailUpdateBean) need to be finish.");
}
@Override
public UserSysResult<Map<Long, String>> findPhoneByUserIds(List<Long> userIds) {
if(!CollectionUtils.isEmpty(userIds) && userIds.size()<=500) {
Map<Long, String> userIdAndPhoneMap = userService.findPhoneByIdsInDb(userIds);
return returnSuccessValue(userIdAndPhoneMap);
}else {
return returnErrorValue("批量查询每次最多进行500条用户信息的查询");
}
}
} }
...@@ -4,16 +4,20 @@ import cn.quantgroup.xyqb.Constants; ...@@ -4,16 +4,20 @@ import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.Merchant; import cn.quantgroup.xyqb.entity.Merchant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.exception.NullUserException;
import cn.quantgroup.xyqb.model.*; import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.model.session.LoginInfo; import cn.quantgroup.xyqb.model.session.LoginInfo;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.repository.IUserBtRegisterRepository;
import cn.quantgroup.xyqb.repository.IUserRepository; import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.auth.IIdCardService; import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.merchant.IMerchantService; import cn.quantgroup.xyqb.service.merchant.IMerchantService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.sms.ISmsService; import cn.quantgroup.xyqb.service.sms.ISmsService;
import cn.quantgroup.xyqb.service.user.ILkbUserService; import cn.quantgroup.xyqb.service.user.ILkbUserService;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
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 cn.quantgroup.xyqb.util.IPUtil; import cn.quantgroup.xyqb.util.IPUtil;
...@@ -59,7 +63,8 @@ public class AppController implements IBaseController { ...@@ -59,7 +63,8 @@ public class AppController implements IBaseController {
private IIdCardService idCardService; private IIdCardService idCardService;
@Autowired @Autowired
private IMerchantService merchantService; private IMerchantService merchantService;
@Autowired
private IUserBtRegisterService userBtRegisterService;
/** /**
* 第三方用户登录 * 第三方用户登录
*/ */
...@@ -68,7 +73,7 @@ public class AppController implements IBaseController { ...@@ -68,7 +73,7 @@ public class AppController implements IBaseController {
String phoneNo, String phoneNo,
@RequestParam(required = false, defaultValue = "1") Long registerFrom, @RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId, @RequestParam(required = false, defaultValue = "1") Long channelId,
String idNo, String name, String key, @RequestParam(required = false, defaultValue = "") String appChannel, HttpServletRequest request String idNo, String name, String key, @RequestParam(required = false, defaultValue = "") String appChannel,@RequestParam(required = false)Long btRegisterChannelId, HttpServletRequest request
) { ) {
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);
...@@ -78,7 +83,7 @@ public class AppController implements IBaseController { ...@@ -78,7 +83,7 @@ public class AppController implements IBaseController {
LOGGER.info("第三方用户登录, loginFrom:{}, requestIp:{}", registerFrom, requestIp); LOGGER.info("第三方用户登录, loginFrom:{}, requestIp:{}", registerFrom, requestIp);
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo);
if (user == null) { if (user == null) {
user = register(registerFrom, phoneNo, idNo, name, channelId); user = register(registerFrom, phoneNo, idNo, name, channelId,btRegisterChannelId);
} }
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
...@@ -103,6 +108,8 @@ public class AppController implements IBaseController { ...@@ -103,6 +108,8 @@ public class AppController implements IBaseController {
return new JsonResult(bean); return new JsonResult(bean);
} }
/** /**
* 第三方用户登录并返回用户信息 * 第三方用户登录并返回用户信息
*/ */
...@@ -111,7 +118,7 @@ public class AppController implements IBaseController { ...@@ -111,7 +118,7 @@ public class AppController implements IBaseController {
String phoneNo, String phoneNo,
@RequestParam(required = false, defaultValue = "1") Long registerFrom, @RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId, @RequestParam(required = false, defaultValue = "1") Long channelId,
String idNo, String name, String key, @RequestParam(required = false, defaultValue = "") String appChannel, HttpServletRequest request String idNo, String name, String key, @RequestParam(required = false, defaultValue = "") String appChannel, @RequestParam(required = false) Long btRegisterChannelId,HttpServletRequest request
) { ) {
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);
...@@ -121,7 +128,7 @@ public class AppController implements IBaseController { ...@@ -121,7 +128,7 @@ public class AppController implements IBaseController {
LOGGER.info("第三方用户登录, loginFrom:{}, requestIp:{}", registerFrom, requestIp); LOGGER.info("第三方用户登录, loginFrom:{}, requestIp:{}", registerFrom, requestIp);
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo);
if (user == null) { if (user == null) {
user = register(registerFrom, phoneNo, idNo, name, channelId); user = register(registerFrom, phoneNo, idNo, name, channelId,btRegisterChannelId);
} }
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
...@@ -153,6 +160,26 @@ public class AppController implements IBaseController { ...@@ -153,6 +160,26 @@ public class AppController implements IBaseController {
return JsonResult.buildSuccessResult("", loginInfo); return JsonResult.buildSuccessResult("", loginInfo);
} }
/**
* 注册新用户,带白条渠道号
* @param registerFrom
* @param phoneNo
* @param idNo
* @param name
* @param channelId
* @param btRegisterChannelId
* @return
*/
private User register(Long registerFrom, String phoneNo, String idNo, String name, Long channelId, Long btRegisterChannelId) {
User user = register(registerFrom, phoneNo, idNo, name, channelId);
if(null != user && null != btRegisterChannelId && channelId == 222L) {
UserBtRegister userBtRegister = new UserBtRegister();
userBtRegister.setUserId(user.getId());
userBtRegister.setRegisterBtMerchantId(btRegisterChannelId);
userBtRegisterService.save(userBtRegister);
}
return user;
}
/** /**
* 注册新用户 * 注册新用户
......
package cn.quantgroup.xyqb.controller.external.user; package cn.quantgroup.xyqb.controller.external.user;
import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller; import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.entity.enumerate.*;
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.*;
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.Address;
import cn.quantgroup.xyqb.entity.Contact; import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
...@@ -9,12 +22,12 @@ import cn.quantgroup.xyqb.entity.UserDetail; ...@@ -9,12 +22,12 @@ import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserExtInfo; import cn.quantgroup.xyqb.entity.UserExtInfo;
import cn.quantgroup.xyqb.entity.UserSpouse; import cn.quantgroup.xyqb.entity.UserSpouse;
import cn.quantgroup.xyqb.entity.WechatUserInfo; import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.entity.enumerate.EducationEnum; //import cn.quantgroup.xyqb.entity.enumerate.EducationEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeEnum; //import cn.quantgroup.xyqb.entity.enumerate.IncomeEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum; //import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum;
import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus; //import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus;
import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum; //import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum;
import cn.quantgroup.xyqb.entity.enumerate.Relation; //import cn.quantgroup.xyqb.entity.enumerate.Relation;
import cn.quantgroup.xyqb.model.AddressRet; import cn.quantgroup.xyqb.model.AddressRet;
import cn.quantgroup.xyqb.model.ContactRet; import cn.quantgroup.xyqb.model.ContactRet;
import cn.quantgroup.xyqb.model.IdType; import cn.quantgroup.xyqb.model.IdType;
...@@ -26,20 +39,17 @@ import cn.quantgroup.xyqb.model.UserSpouseRet; ...@@ -26,20 +39,17 @@ import cn.quantgroup.xyqb.model.UserSpouseRet;
import cn.quantgroup.xyqb.service.auth.IIdCardService; import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.http.IHttpService; import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.IAddressService; import cn.quantgroup.xyqb.service.user.*;
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.service.wechat.IWechatService;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.google.common.base.MoreObjects;
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializationFeature;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.ParseException; import java.text.ParseException;
...@@ -48,6 +58,7 @@ import java.util.List; ...@@ -48,6 +58,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
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;
...@@ -57,6 +68,14 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -57,6 +68,14 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.stream.Collectors;
/** /**
* Created by Miraculous on 2016/12/19. * Created by Miraculous on 2016/12/19.
*/ */
...@@ -65,6 +84,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -65,6 +84,7 @@ import org.springframework.web.bind.annotation.RestController;
public class InnerController implements IBaseController { public class InnerController implements IBaseController {
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(InnerController.class); private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(InnerController.class);
private final static Random random = new Random();
@Autowired @Autowired
private IUserService userService; private IUserService userService;
...@@ -101,6 +121,11 @@ public class InnerController implements IBaseController { ...@@ -101,6 +121,11 @@ public class InnerController implements IBaseController {
MAPPER.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true); MAPPER.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true);
} }
@Autowired
private ILkbUserService lkbUserService;
private Long BAITIAO_CHANNEL = 222L;
@RequestMapping("/user/search/phoneNo") @RequestMapping("/user/search/phoneNo")
@LogHttpCaller @LogHttpCaller
public JsonResult findByPhoneNo(String phoneNo) { public JsonResult findByPhoneNo(String phoneNo) {
...@@ -323,12 +348,14 @@ public class InnerController implements IBaseController { ...@@ -323,12 +348,14 @@ public class InnerController implements IBaseController {
for (Contact c : contacts) { for (Contact c : contacts) {
c.setId(null); c.setId(null);
c.setUserId(userId); c.setUserId(userId);
c.setRelation(c.getRelation() == null ? Relation.OTHER : c.getRelation()); c.setRelation(c.getRelation() == null ? cn.quantgroup.user.enums.Relation.OTHER: c.getRelation());
c.setCreatedAt(now); c.setCreatedAt(now);
c.setUpdateAt(now); c.setUpdateAt(now);
} }
} }
@RequestMapping("/address/search/user_id") @RequestMapping("/address/search/user_id")
public JsonResult findAddressByUserId(Long userId) { public JsonResult findAddressByUserId(Long userId) {
if (userId == null) { if (userId == null) {
...@@ -386,16 +413,16 @@ public class InnerController implements IBaseController { ...@@ -386,16 +413,16 @@ public class InnerController implements IBaseController {
} }
info.setUpdateAt(now); info.setUpdateAt(now);
if (incomeEnum != null) { if (incomeEnum != null) {
info.setIncomeEnum(incomeEnum); info.setIncomeEnum(cn.quantgroup.user.enums.IncomeEnum.valueOf(incomeEnum.name()));
} }
if (incomeRangeEnum != null) { if (incomeRangeEnum != null) {
info.setIncomeRangeEnum(incomeRangeEnum); info.setIncomeRangeEnum(cn.quantgroup.user.enums.IncomeRangeEnum.valueOf(incomeRangeEnum.name()));
} }
if (occupationEnum != null) { if (occupationEnum != null) {
info.setOccupationEnum(occupationEnum); info.setOccupationEnum(cn.quantgroup.user.enums.OccupationEnum.valueOf(occupationEnum.name()));
} }
if (educationEnum != null) { if (educationEnum != null) {
info.setEducationEnum(educationEnum); info.setEducationEnum(cn.quantgroup.user.enums.EducationEnum.valueOf(educationEnum.name()));
} }
if (hasCar != null) { if (hasCar != null) {
info.setHasCar(hasCar); info.setHasCar(hasCar);
...@@ -407,7 +434,7 @@ public class InnerController implements IBaseController { ...@@ -407,7 +434,7 @@ public class InnerController implements IBaseController {
info.setHasHouse(hasHouse); info.setHasHouse(hasHouse);
} }
if (maritalStatus != null) { if (maritalStatus != null) {
info.setMarryStatus(maritalStatus); info.setMarryStatus(cn.quantgroup.user.enums.MaritalStatus.valueOf(maritalStatus.name()));
} }
info = userExtInfoService.save(info); info = userExtInfoService.save(info);
return JsonResult.buildSuccessResult(null, UserExtInfoRet.getUserExtInfoRet(info)); return JsonResult.buildSuccessResult(null, UserExtInfoRet.getUserExtInfoRet(info));
...@@ -520,7 +547,7 @@ public class InnerController implements IBaseController { ...@@ -520,7 +547,7 @@ public class InnerController implements IBaseController {
} }
userSpouse.setSpouseName(status == MaritalStatus.MARRIED ? spouseName : ""); userSpouse.setSpouseName(status == MaritalStatus.MARRIED ? spouseName : "");
userSpouse.setSpousePhone(status == MaritalStatus.MARRIED ? spousePhone : ""); userSpouse.setSpousePhone(status == MaritalStatus.MARRIED ? spousePhone : "");
userSpouse.setStatus(status); userSpouse.setStatus(cn.quantgroup.user.enums.MaritalStatus.valueOf(status.name()));
userSpouse.setUpdateAt(timestamp); userSpouse.setUpdateAt(timestamp);
userSpouse = userSpouseService.save(userSpouse); userSpouse = userSpouseService.save(userSpouse);
return JsonResult.buildSuccessResult(null, UserSpouseRet.getUserSpouseRet(userSpouse)); return JsonResult.buildSuccessResult(null, UserSpouseRet.getUserSpouseRet(userSpouse));
...@@ -535,7 +562,7 @@ public class InnerController implements IBaseController { ...@@ -535,7 +562,7 @@ public class InnerController implements IBaseController {
UserSpouse userSpouse = userSpouseService.findByUserId(userId); UserSpouse userSpouse = userSpouseService.findByUserId(userId);
if (userSpouse == null) { if (userSpouse == null) {
userSpouse = new UserSpouse(userId); userSpouse = new UserSpouse(userId);
userSpouse.setStatus(MaritalStatus.UNKNOWN); userSpouse.setStatus(cn.quantgroup.user.enums.MaritalStatus.UNKNOWN);
} }
return JsonResult.buildSuccessResult(null, UserSpouseRet.getUserSpouseRet(userSpouse)); return JsonResult.buildSuccessResult(null, UserSpouseRet.getUserSpouseRet(userSpouse));
} }
...@@ -589,6 +616,89 @@ public class InnerController implements IBaseController { ...@@ -589,6 +616,89 @@ public class InnerController implements IBaseController {
} }
/**
* 保存用户信息,地址信息,联系人信息
* @param registeredFrom
* @param channelId
* @param phoneNo
* @param name
* @param idNo
* @param provinceCode
* @param cityCode
* @param districtCode
* @param address
* @param contacts
* @return
*/
@RequestMapping("/user/save_multi")
public JsonResult saveMulti(
String registeredFrom,
String channelId,
String phoneNo,
String name,
String idNo,
String provinceCode,
String province,
String cityCode,
String city,
String districtCode,
String district,
String address,
String contacts) {
LOGGER.info("保存用户、联系人、地址信息:registeredFrom:[{}], phoneNo[{}],name[{}],idNo[{}],provinceCode[{}],cityCode[{}],districtCode[{}]," +
"address[{}],contacts[{}]",registeredFrom,phoneNo,name,idNo,provinceCode,cityCode,districtCode,address,contacts);
if(!NumberUtils.isDigits(registeredFrom)){
return JsonResult.buildErrorStateResult("注册渠道异常.", null);
}
if(!NumberUtils.isDigits(phoneNo)){
return JsonResult.buildErrorStateResult("手机号异常.", null);
}
if(StringUtils.isBlank(name)){
return JsonResult.buildErrorStateResult("用户名异常.", null);
}
if(!NumberUtils.isDigits(idNo)){
return JsonResult.buildErrorStateResult("用户身份证号异常.", null);
}
if(!NumberUtils.isDigits(provinceCode)){
return JsonResult.buildErrorStateResult("省份编号异常.", null);
}
if(StringUtils.isBlank(province)){
return JsonResult.buildErrorStateResult("省份异常.", null);
}
if(!NumberUtils.isDigits(cityCode)){
return JsonResult.buildErrorStateResult("城市编号异常.", null);
}
if(StringUtils.isBlank(city)){
return JsonResult.buildErrorStateResult("城市异常.", null);
}
if(!NumberUtils.isDigits(districtCode)){
return JsonResult.buildErrorStateResult("区县编号异常.", null);
}
if(StringUtils.isBlank(district)){
return JsonResult.buildErrorStateResult("区县异常.", null);
}
if (StringUtils.isBlank(address)) {
return JsonResult.buildErrorStateResult("详细地址异常.", null);
}
channelId = MoreObjects.firstNonNull(channelId, "-1");
// 验证用户是否已存在
User user = userService.findByPhoneInDb(phoneNo);
if(null != user){
return JsonResult.buildErrorStateResult("用户已存在,手机号被占用", null);
}
user = userService.registerAndReturn(Long.valueOf(registeredFrom), Long.valueOf(channelId), phoneNo, name, idNo, provinceCode, province, cityCode, city, districtCode, district, address, contacts);
UserRet userRet = UserRet.getUserRet(user);
return JsonResult.buildSuccessResult(null, userRet);
}
@RequestMapping("/user/register") @RequestMapping("/user/register")
public JsonResult register(String phoneNo, String password, Long channelId) { public JsonResult register(String phoneNo, String password, Long channelId) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
......
...@@ -2,13 +2,15 @@ package cn.quantgroup.xyqb.controller.external.user.center; ...@@ -2,13 +2,15 @@ package cn.quantgroup.xyqb.controller.external.user.center;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.*; import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.entity.enumerate.EducationEnum; //import cn.quantgroup.xyqb.entity.enumerate.EducationEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum; //import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum;
import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus; //import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus;
import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum; //import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum;
import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.model.ContactRet; 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 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;
......
...@@ -2,11 +2,13 @@ package cn.quantgroup.xyqb.controller.internal.login; ...@@ -2,11 +2,13 @@ package cn.quantgroup.xyqb.controller.internal.login;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserRet; import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.session.LoginInfo; import cn.quantgroup.xyqb.model.session.LoginInfo;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.service.http.IHttpService; import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
...@@ -42,12 +44,15 @@ public class AuthInfoController implements IBaseController { ...@@ -42,12 +44,15 @@ public class AuthInfoController implements IBaseController {
@Autowired @Autowired
private IUserService userService; private IUserService userService;
@Autowired
private IUserBtRegisterService userBtRegisterService;
@RequestMapping("/info/login") @RequestMapping("/info/login")
public JsonResult loginInfo() { public JsonResult loginInfo() {
SessionStruct sessionStruct = getCurrentSessionFromRedis(); SessionStruct sessionStruct = getCurrentSessionFromRedis();
if(null != sessionStruct) { if(null != sessionStruct) {
log.info("从用户中心获取到了用户登录信息:phone:[{}]",sessionStruct.getValues().getUser().getPhoneNo()); log.info("从用户中心获取到了用户登录信息:phone:[{}]", sessionStruct.getValues().getUser().getPhoneNo());
LoginInfo loginInfo = new LoginInfo(); LoginInfo loginInfo = new LoginInfo();
loginInfo.setUser(UserRet.getUserRet(sessionStruct.getValues().getUser())); loginInfo.setUser(UserRet.getUserRet(sessionStruct.getValues().getUser()));
loginInfo.setToken(sessionStruct.getSid()); loginInfo.setToken(sessionStruct.getSid());
...@@ -55,6 +60,7 @@ public class AuthInfoController implements IBaseController { ...@@ -55,6 +60,7 @@ public class AuthInfoController implements IBaseController {
context.setChannelId(sessionStruct.getValues().getLoginProperties().getChannelId()); context.setChannelId(sessionStruct.getValues().getLoginProperties().getChannelId());
context.setCreatedFrom(sessionStruct.getValues().getLoginProperties().getCreatedFrom()); context.setCreatedFrom(sessionStruct.getValues().getLoginProperties().getCreatedFrom());
context.setAppChannel(sessionStruct.getValues().getLoginProperties().getAppChannel()); context.setAppChannel(sessionStruct.getValues().getLoginProperties().getAppChannel());
context.setBtMerchantId(sessionStruct.getValues().getLoginProperties().getBtMerchantId());
loginInfo.setLoginContext(context); loginInfo.setLoginContext(context);
return JsonResult.buildSuccessResult("", loginInfo); //有ThreadLocal不释放的问题,不可再使用原来方式了 return JsonResult.buildSuccessResult("", loginInfo); //有ThreadLocal不释放的问题,不可再使用原来方式了
}else { }else {
...@@ -82,6 +88,15 @@ public class AuthInfoController implements IBaseController { ...@@ -82,6 +88,15 @@ public class AuthInfoController implements IBaseController {
context.setChannelId(null); context.setChannelId(null);
context.setCreatedFrom(user.getRegisteredFrom()); context.setCreatedFrom(user.getRegisteredFrom());
context.setAppChannel(""); context.setAppChannel("");
if(user.getRegisteredFrom() == 222L) {
//context.setBtMerchantId(1L);
UserBtRegister userBtRegister = userBtRegisterService.findByUserId(user.getId());
if(null != userBtRegister){
context.setBtMerchantId(userBtRegister.getRegisterBtMerchantId());
}else {
context.setBtMerchantId(1L);
}
}
loginInfo.setLoginContext(context); loginInfo.setLoginContext(context);
return JsonResult.buildSuccessResult("", loginInfo); return JsonResult.buildSuccessResult("", loginInfo);
} }
......
...@@ -94,7 +94,7 @@ public class UserController implements IBaseController { ...@@ -94,7 +94,7 @@ public class UserController implements IBaseController {
@RequestMapping("/login/fast") @RequestMapping("/login/fast")
public JsonResult loginFast( public JsonResult loginFast(
@RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel, @RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel,
@RequestParam(required = false, defaultValue = "1") Long createdFrom, String key, HttpServletRequest request) { @RequestParam(required = false, defaultValue = "1") Long createdFrom, String key,@RequestParam(required = false)Long btRegisterChannelId ,HttpServletRequest request) {
Map<String, JsonResult> validMap = getHeaderParam(request); Map<String, JsonResult> validMap = getHeaderParam(request);
if (null != validMap.get("fail")) { if (null != validMap.get("fail")) {
return validMap.get("fail"); return validMap.get("fail");
...@@ -110,7 +110,7 @@ public class UserController implements IBaseController { ...@@ -110,7 +110,7 @@ public class UserController implements IBaseController {
return JsonResult.buildErrorStateResult("登录失败", null); return JsonResult.buildErrorStateResult("登录失败", null);
} }
if (user == null) { if (user == null) {
user = registerFastWhenLogin(phoneNo, channelId, createdFrom, appChannel); user = registerFastWhenLogin(phoneNo, channelId, createdFrom, appChannel,btRegisterChannelId);
if (user == null) { if (user == null) {
throw new UserNotExistException("用户未找到"); throw new UserNotExistException("用户未找到");
} }
...@@ -119,6 +119,21 @@ public class UserController implements IBaseController { ...@@ -119,6 +119,21 @@ public class UserController implements IBaseController {
// return createSession(channelId, createdFrom, appChannel, user); // return createSession(channelId, createdFrom, appChannel, user);
} }
private User registerFastWhenLogin(String phoneNo, Long channelId, Long registerFrom, String appChannel, Long btRegisterChannelId) {
String password = genRandomPwd();
LOGGER.info("用户快速注册, phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{},appChannel:{},btRegisterChannelId", phoneNo, channelId, registerFrom, appChannel,btRegisterChannelId);
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
LOGGER.info("用户快速注册失败,手机号错误, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
throw new UserNotExistException("手机号错误");
}
if (null == registerFrom) {
registerFrom = 1L;
}
LOGGER.info("用户快速注册成功, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return userService.registerAndReturn(phoneNo, password, registerFrom,btRegisterChannelId);
}
/** /**
* 快速登录验证 * 快速登录验证
* *
...@@ -171,7 +186,8 @@ public class UserController implements IBaseController { ...@@ -171,7 +186,8 @@ public class UserController implements IBaseController {
*/ */
@RequestMapping("/register/fast") @RequestMapping("/register/fast")
public JsonResult registerFast(@RequestParam String phoneNo, @RequestParam String verificationCode, @RequestParam(required = false) Long channelId, public JsonResult registerFast(@RequestParam String phoneNo, @RequestParam String verificationCode, @RequestParam(required = false) Long channelId,
@RequestParam(required = false) Long registerFrom, @RequestParam(required = false, defaultValue = "") String appChannel) { @RequestParam(required = false) Long registerFrom, @RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(required = false)Long btRegisterChannelId) {
String password = genRandomPwd(); String password = genRandomPwd();
LOGGER.info("用户快速注册, phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{},appChannel:{}", phoneNo, verificationCode, channelId, registerFrom, appChannel); LOGGER.info("用户快速注册, phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{},appChannel:{}", phoneNo, verificationCode, channelId, registerFrom, appChannel);
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
...@@ -197,7 +213,7 @@ public class UserController implements IBaseController { ...@@ -197,7 +213,7 @@ public class UserController implements IBaseController {
LOGGER.info("用户快速注册失败,短信验证码错误, registerFrom:{}, phoneNo:{}, verificationCode:{}", registerFrom, phoneNo, verificationCode); LOGGER.info("用户快速注册失败,短信验证码错误, registerFrom:{}, phoneNo:{}, verificationCode:{}", registerFrom, phoneNo, verificationCode);
return JsonResult.buildErrorStateResult("短信验证码错误", null); return JsonResult.buildErrorStateResult("短信验证码错误", null);
} }
if (!userService.register(phoneNo, password, registerFrom, getIp(), channelId)) { if (!userService.register(phoneNo, password, registerFrom, getIp(), channelId,btRegisterChannelId)) {
LOGGER.info("用户快速注册失败,请稍后重试, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo); LOGGER.info("用户快速注册失败,请稍后重试, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("注册失败,请稍后重试", null); return JsonResult.buildErrorStateResult("注册失败,请稍后重试", null);
} }
...@@ -220,8 +236,9 @@ public class UserController implements IBaseController { ...@@ -220,8 +236,9 @@ public class UserController implements IBaseController {
@RequestMapping("/register") @RequestMapping("/register")
public JsonResult register(@RequestParam String phoneNo, @RequestParam String password, public JsonResult register(@RequestParam String phoneNo, @RequestParam String password,
@RequestParam String verificationCode, @RequestParam(required = false) Long channelId, @RequestParam String verificationCode, @RequestParam(required = false) Long channelId,
@RequestParam(required = false) Long registerFrom) { @RequestParam(required = false) Long registerFrom,
LOGGER.info("用户注册, phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{}", phoneNo, verificationCode, channelId, registerFrom); @RequestParam(required = false)Long btRegisterChannelId) {
LOGGER.info("用户注册, phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{},btRegisterChannelId:{}", phoneNo, verificationCode, channelId, registerFrom,btRegisterChannelId);
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
LOGGER.info("用户注册失败,手机号错误, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo); LOGGER.info("用户注册失败,手机号错误, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("手机号错误", null); return JsonResult.buildErrorStateResult("手机号错误", null);
...@@ -245,7 +262,7 @@ public class UserController implements IBaseController { ...@@ -245,7 +262,7 @@ public class UserController implements IBaseController {
LOGGER.info("用户注册失败,短信验证码错误, registerFrom:{}, phoneNo:{}, verificationCode:{}", registerFrom, phoneNo, verificationCode); LOGGER.info("用户注册失败,短信验证码错误, registerFrom:{}, phoneNo:{}, verificationCode:{}", registerFrom, phoneNo, verificationCode);
return JsonResult.buildErrorStateResult("短信验证码错误", null); return JsonResult.buildErrorStateResult("短信验证码错误", null);
} }
if (!userService.register(phoneNo, password, registerFrom, getIp(), channelId)) { if (!userService.register(phoneNo, password, registerFrom, getIp(), channelId,btRegisterChannelId)) {
LOGGER.info("用户快速注册失败,请稍后重试, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo); LOGGER.info("用户快速注册失败,请稍后重试, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("注册失败,请稍后重试", null); return JsonResult.buildErrorStateResult("注册失败,请稍后重试", null);
} }
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.enumerate.Relation; import cn.quantgroup.user.enums.Relation;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
......
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.config.http.Timestamp2LongConverter;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* Created by Administrator on 2017/5/16.
*/
@Getter
@Setter
@ToString
@Entity
@Table(name = "user_bt_register")
public class UserBtRegister implements Serializable {
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_id")
private Long userId;
@Column(name = "register_bt_merchant_id")
private Long registerBtMerchantId;
@Column(name = "is_active")
private Boolean isActive = Boolean.TRUE;
//创建时间
@Column(name = "created_at")
private Timestamp createdAt;
//上一次修改时间
@Column(name = "updated_at")
@JSONField(serializeUsing = Timestamp2LongConverter.class)
private Timestamp updatedAt;
@PrePersist
public void prePersist(){
Timestamp now = new Timestamp(System.currentTimeMillis());
this.createdAt =now;
this.updatedAt =now;
}
@PreUpdate
public void preUpdate(){
Timestamp now = new Timestamp(System.currentTimeMillis());
this.createdAt =now;
this.updatedAt =now;
}
}
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.enumerate.*; import cn.quantgroup.motan.retbean.XUserExtInfo;
//import cn.quantgroup.xyqb.entity.enumerate.*;
import cn.quantgroup.user.enums.*;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
...@@ -45,4 +47,20 @@ public class UserExtInfo implements Serializable { ...@@ -45,4 +47,20 @@ public class UserExtInfo implements Serializable {
@Column(name = "updated_at") @Column(name = "updated_at")
private Timestamp updateAt; private Timestamp updateAt;
public XUserExtInfo toXUserExtInfo(){
XUserExtInfo xUserExtInfo = new XUserExtInfo();
xUserExtInfo.setId(this.id);
xUserExtInfo.setUserId(this.userId);
xUserExtInfo.setEducationEnum(cn.quantgroup.user.enums.EducationEnum.valueOf(this.educationEnum.name()));
xUserExtInfo.setIncomeEnum(cn.quantgroup.user.enums.IncomeEnum.valueOf(this.incomeEnum.name()));
xUserExtInfo.setIncomeRangeEnum(cn.quantgroup.user.enums.IncomeRangeEnum.valueOf(this.incomeRangeEnum.name()));
xUserExtInfo.setOccupationEnum(cn.quantgroup.user.enums.OccupationEnum.valueOf(this.occupationEnum.name()));
xUserExtInfo.setHasCar(this.hasCar);
xUserExtInfo.setHasSocialSecurity(this.hasSocialSecurity);
xUserExtInfo.setHasCreditCard(this.hasCreditCard);
xUserExtInfo.setMarryStatus(cn.quantgroup.user.enums.MaritalStatus.valueOf(this.marryStatus.name()));
xUserExtInfo.setCreatedAt(this.createdAt);
xUserExtInfo.setUpdateAt(this.updateAt);
return xUserExtInfo;
}
} }
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus; import cn.quantgroup.user.enums.MaritalStatus;
import lombok.*; import lombok.*;
import javax.persistence.*; import javax.persistence.*;
......
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.Contact; import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.enumerate.Relation; import cn.quantgroup.user.enums.Relation;
import lombok.Data; import lombok.Data;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
......
...@@ -11,4 +11,5 @@ public class LoginProperties { ...@@ -11,4 +11,5 @@ public class LoginProperties {
private Long createdFrom = 1L; private Long createdFrom = 1L;
private String appChannel = ""; private String appChannel = "";
private String merchantName; private String merchantName;
private Long btMerchantId =1L;
} }
...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.model; ...@@ -3,7 +3,7 @@ package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import cn.quantgroup.xyqb.model.IdType;
import java.io.Serializable; import java.io.Serializable;
/** /**
......
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.UserExtInfo; import cn.quantgroup.xyqb.entity.UserExtInfo;
import cn.quantgroup.xyqb.entity.enumerate.*; import cn.quantgroup.user.enums.*;
import lombok.Data; import lombok.Data;
/** /**
......
package cn.quantgroup.xyqb.model; package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.UserSpouse; import cn.quantgroup.xyqb.entity.UserSpouse;
import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus; import cn.quantgroup.user.enums.MaritalStatus;
import lombok.Data; import lombok.Data;
/** /**
......
...@@ -23,13 +23,21 @@ public class LoginInfo { ...@@ -23,13 +23,21 @@ public class LoginInfo {
return JSON.parseObject(userJson, XLoginInfo.class); return JSON.parseObject(userJson, XLoginInfo.class);
} }
public XLoginInfo toXLoginInfo() {
XLoginInfo xLoginInfo= new XLoginInfo();
// xLoginInfo.setUser();
return xLoginInfo;
}
@Data @Data
public static class LoginContext { public static class LoginContext {
private Long channelId; private Long channelId;
private Long createdFrom; private Long createdFrom;
private String appChannel; private String appChannel;
private Long btMerchantId;
} }
} }
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* Created by Administrator on 2017/5/16.
*/
public interface IUserBtRegisterRepository extends JpaRepository<UserBtRegister, Long>,JpaSpecificationExecutor<UserBtRegister> {
}
package cn.quantgroup.xyqb.service.session.aspect;
import java.lang.annotation.*;
/**
* 用户的白条注册信息填充标记
* Created by ocean on 2017/5/16.
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UserBtRegisterFill {
}
package cn.quantgroup.xyqb.service.session.aspect;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
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.Autowired;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
* Created by Administrator on 2017/5/16.
*/
@Aspect
@Component
@Order(value = Ordered.HIGHEST_PRECEDENCE + 200)
public class UserBtRegisterFillAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(UserBtRegisterFillAspect.class);
@Autowired
private IUserBtRegisterService userBtRegisterService;
@Pointcut("@annotation(cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill)") //生成还款计划的时候,去生成趸交服务费
public void userBtRegisterFillCut() {
}
@Around("userBtRegisterFillCut()")
public Object handleSingleServiceFeeRule(ProceedingJoinPoint pjp) throws Throwable {
Object[] args = pjp.getArgs();
try {
args =fillUserBtRegister(args);
}catch (Exception e){
LOGGER.error("补充用户白条登录渠道信息失败",e);
}
return pjp.proceed(args);
}
private Object[] fillUserBtRegister(Object[] args) {
for (int i = 0;i<args.length;i++){
Object obj = args[i];
if (obj instanceof SessionValue){
SessionValue value =(SessionValue)obj;
UserBtRegister userBtRegister = userBtRegisterService.findByUserId(value.getUser().getId());
if(null != userBtRegister && null != value.getLoginProperties()){
value.getLoginProperties().setBtMerchantId(userBtRegister.getRegisterBtMerchantId());
}
}
}
return args;
}
}
...@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.model.LoginProperties; ...@@ -8,6 +8,7 @@ import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.model.session.SessionValue; import cn.quantgroup.xyqb.model.session.SessionValue;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.session.aspect.UserBtRegisterFill;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -121,6 +122,7 @@ public class SessionServiceImpl implements ISessionService { ...@@ -121,6 +122,7 @@ public class SessionServiceImpl implements ISessionService {
} }
@Override @Override
@UserBtRegisterFill
public void persistSession(String token, SessionValue sessionValue) { public void persistSession(String token, SessionValue sessionValue) {
Timestamp current = new Timestamp(System.currentTimeMillis()); Timestamp current = new Timestamp(System.currentTimeMillis());
sessionValue.setLastAccessTime(current); sessionValue.setLastAccessTime(current);
......
package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.xyqb.entity.UserBtRegister;
/**
* Created by Administrator on 2017/5/16.
*/
public interface IUserBtRegisterService {
UserBtRegister findByUserId(Long userId);
UserBtRegister save(UserBtRegister userBtRegister);
}
...@@ -32,5 +32,39 @@ public interface IUserService { ...@@ -32,5 +32,39 @@ public interface IUserService {
User findById(Long userId); User findById(Long userId);
boolean register(String phoneNo, String password, Long registerFrom, String ip, Long channelId, Long btRegisterChannelId);
List<User> findByPhones(List<String> phones); List<User> findByPhones(List<String> phones);
User registerAndReturn(String phoneNo, String password, Long registerFrom, Long btRegisterChannelId);
/**
* 用户、联系人、地址信息注册
* @param registeredFrom
* @param channelId
* @param phoneNo
* @param name
* @param idNo
* @param provinceCode
* @param province
* @param cityCode
* @param city
* @param districtCode
* @param district
* @param address
* @param contacts
* @return
*/
User registerAndReturn( Long registeredFrom,
Long channelId,
String phoneNo,
String name,
String idNo,
String provinceCode,
String province,
String cityCode,
String city,
String districtCode,
String district,
String address,
String contacts);
} }
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.xyqb.entity.UserBtRegister;
import cn.quantgroup.xyqb.repository.IUserBtRegisterRepository;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/5/16.
*/
@Service
public class UserBtRegisterServiceImpl implements IUserBtRegisterService {
@Autowired
private IUserBtRegisterRepository userBtRegisterRepository;
@Override
@Cacheable(value = "btRegisterCache", key = "'userId' + #userId", unless = "#result == null", cacheManager = "cacheManager")
public UserBtRegister findByUserId(Long userId) {
if(null != userId) {
return userBtRegisterRepository.findOne((root, query, cb) -> {
List<Predicate> list = new ArrayList<>();
list.add(cb.equal(root.get("isActive").as(Boolean.class), Boolean.TRUE));
list.add(cb.equal(root.get("userId").as(Long.class), userId));
Predicate[] p = new Predicate[list.size()];
query.where(cb.and(list.toArray(p)));
return query.getRestriction();
});
}
return null;
}
@Override
public UserBtRegister save(UserBtRegister userBtRegister) {
return userBtRegisterRepository.saveAndFlush(userBtRegister);
}
}
package cn.quantgroup.xyqb.service.user.impl; package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.model.IdCardInfo;
import cn.quantgroup.xyqb.model.IdType;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.repository.IAddressRepository;
import cn.quantgroup.xyqb.repository.IContactRepository;
import cn.quantgroup.xyqb.repository.IUserBtRegisterRepository;
import cn.quantgroup.xyqb.repository.IUserRepository; import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.sms.ISmsService; import cn.quantgroup.xyqb.service.sms.ISmsService;
import cn.quantgroup.xyqb.service.user.ILkbUserService; import cn.quantgroup.xyqb.service.user.ILkbUserService;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
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.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.google.common.collect.Lists; 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;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
...@@ -23,6 +36,7 @@ import javax.transaction.Transactional; ...@@ -23,6 +36,7 @@ import javax.transaction.Transactional;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
...@@ -44,6 +58,28 @@ public class UserServiceImpl implements IUserService { ...@@ -44,6 +58,28 @@ public class UserServiceImpl implements IUserService {
@Autowired @Autowired
private ISmsService smsService; private ISmsService smsService;
@Autowired
private IAddressRepository addressRepository;
@Autowired
private IUserBtRegisterService userBtRegisterService;
@Autowired
private IContactRepository contactRepository;
@Autowired
private IUserBtRegisterRepository userBtRegisterRepository;
@Autowired
private IIdCardService idCardService;
@Autowired
private IUserDetailService userDetailRepository;
private Long BAITIAO_CHANNEL = 222L;
private final static Random random = new Random();
@Override @Override
public User findByPhoneInDb(String phone) { public User findByPhoneInDb(String phone) {
return userRepository.findByPhoneNo(phone); return userRepository.findByPhoneNo(phone);
...@@ -98,6 +134,52 @@ public class UserServiceImpl implements IUserService { ...@@ -98,6 +134,52 @@ public class UserServiceImpl implements IUserService {
}); });
} }
@Override
public User registerAndReturn(String phoneNo, String password, Long registerFrom, Long btRegisterChannelId) {
User user = registerAndReturn(phoneNo, password, registerFrom);
if(null != user && null != btRegisterChannelId){
UserBtRegister userBtRegister = new UserBtRegister();
userBtRegister.setUserId(user.getId());
userBtRegister.setRegisterBtMerchantId(btRegisterChannelId);
userBtRegisterService.save(userBtRegister);
log.info("白条注册渠道信息保存完成,user:[{}],userBtRegister:[{}]",user,userBtRegister);
}
return user;
}
@Override
public boolean register(String phoneNo, String password, Long registerFrom, String ip, Long channelId, Long btRegisterChannelId) {
String uuid = lkbUserService.registerApp(phoneNo, password);
Timestamp currentTime = new Timestamp(System.currentTimeMillis());
User user = new User();
user.setEnable(true);
user.setPhoneNo(phoneNo);
user.setUpdatedAt(currentTime);
user.setCreatedAt(currentTime);
user.setUuid(uuid);
user.setPassword(PasswordUtil.MD5(password.toLowerCase() + Constants.PASSWORD_SALT));
//解决线上白条registerFrom为1的问题
if (channelId == 222L) {
user.setRegisteredFrom(channelId);
} else {
user.setRegisteredFrom(registerFrom);
}
//user.setRegisteredFrom(registerFrom);
user = userRepository.save(user);
if(null != user){
UserBtRegister userBtRegister = new UserBtRegister();
userBtRegister.setUserId(user.getId());
userBtRegister.setRegisterBtMerchantId(btRegisterChannelId);
userBtRegisterService.save(userBtRegister);
log.info("白条注册渠道信息保存完成");
}
smsService.sendAfterRegister(phoneNo);
return user != null;
}
@Override @Override
public User registerAndReturn(String phoneNo, String password, Long registerFrom) { public User registerAndReturn(String phoneNo, String password, Long registerFrom) {
...@@ -130,7 +212,7 @@ public class UserServiceImpl implements IUserService { ...@@ -130,7 +212,7 @@ public class UserServiceImpl implements IUserService {
} }
@Override @Override
@Transactional(value = Transactional.TxType.REQUIRED) @Transactional(value = Transactional.TxType.REQUIRED,rollbackOn = Exception.class)
public boolean register(String phoneNo, String password, Long registerFrom, String userIp, Long channelId) { public boolean register(String phoneNo, String password, Long registerFrom, String userIp, Long channelId) {
String uuid = lkbUserService.registerApp(phoneNo, password); String uuid = lkbUserService.registerApp(phoneNo, password);
Timestamp currentTime = new Timestamp(System.currentTimeMillis()); Timestamp currentTime = new Timestamp(System.currentTimeMillis());
...@@ -183,4 +265,110 @@ public class UserServiceImpl implements IUserService { ...@@ -183,4 +265,110 @@ public class UserServiceImpl implements IUserService {
return StringUtils.equals(PasswordUtil.MD5(password.toLowerCase() + Constants.PASSWORD_SALT), user.getPassword()); return StringUtils.equals(PasswordUtil.MD5(password.toLowerCase() + Constants.PASSWORD_SALT), user.getPassword());
} }
@Override
@Transactional(value = Transactional.TxType.REQUIRED,rollbackOn = Exception.class)
public User registerAndReturn(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo, String provinceCode, String province, String cityCode, String city, String districtCode, String district, String address, String contacts) {
// 用户信息
User user = new User();
user.setPhoneNo(phoneNo);
Timestamp now = new Timestamp(System.currentTimeMillis());
user.setCreatedAt(now);
user.setUpdatedAt(now);
user.setEnable(true);
UserBtRegister userBtRegister = null;
// 白条渠道,需要设置`xyqb_user`.`user_bt_register`
if (BAITIAO_CHANNEL.equals(channelId)) {
user.setRegisteredFrom(channelId);
userBtRegister = new UserBtRegister();
} else {
user.setRegisteredFrom(registeredFrom);
}
String randomCode = String.valueOf(random.nextInt(899999) + 100000);
String uuid = lkbUserService.registerApp(phoneNo, randomCode);
user.setUuid(uuid);
user.setPassword(PasswordUtil.MD5(randomCode + Constants.PASSWORD_SALT));
user = userRepository.save(user);
Long userId = user.getId();
if (null != userBtRegister){
userBtRegister.setUserId(userId);
userBtRegister.setIsActive(true);
userBtRegister.setRegisterBtMerchantId(registeredFrom);
userBtRegister.setCreatedAt(now);
userBtRegister.setUpdatedAt(now);
userBtRegisterRepository.save(userBtRegister);
}
// 地址信息
Address addressObj = new Address();
addressObj.setUserId(userId);
addressObj.setProvinceCode(Long.valueOf(provinceCode));
addressObj.setProvince(province);
addressObj.setCityCode(Long.valueOf(cityCode));
addressObj.setCity(city);
addressObj.setDistrictCode(Long.valueOf(districtCode));
addressObj.setDistrict(district);
addressObj.setAddress(address);
addressObj.setCreatedAt(now);
addressObj.setUpdateAt(now);
addressRepository.save(addressObj);
try{
IdCardInfo idCardInfo = idCardService.getIdCardInfo(idNo);
UserDetail userDetail = new UserDetail();
userDetail.setPhoneNo(phoneNo);
userDetail.setIdNo(idNo);
userDetail.setUserId(userId);
userDetail.setName(name);
userDetail.setGender(idCardInfo.getGender());
userDetail.setIdType(IdType.ID_CARD);
userDetail.setCreatedAt(now);
userDetail.setUpdatedAt(now);
userDetailRepository.saveUserDetail(userDetail);
}catch (Exception e){
throw new RuntimeException("idCardService Exception");
}
// 联系人信息
if (org.apache.commons.lang3.StringUtils.isNotBlank(contacts)) {
List<Contact> contactList = JSONObject.parseObject(contacts, new TypeReference<List<Contact>>() { });
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(contactList)) {
convertContactList(userId, contactList, 2, now);
contactRepository.save(contactList);
}
}
return user;
}
/**
*
* @param userId
* @param contacts
* @param number 联系人最大数量
* @param now
*/
private void convertContactList(Long userId, List<Contact> contacts,int number, Timestamp now) {
int count = 1;
for (Contact c : contacts) {
if (count > number) {
break;
}
c.setId(null);
c.setUserId(userId);
c.setRelation(c.getRelation() == null ? Relation.OTHER : c.getRelation());
c.setCreatedAt(now);
c.setUpdateAt(now);
count++;
}
}
} }
...@@ -82,6 +82,8 @@ public class UserDetailVO { ...@@ -82,6 +82,8 @@ public class UserDetailVO {
if (this.getUpdatedAt() != null) { if (this.getUpdatedAt() != null) {
xUserDetail.setUpdatedAt(new Timestamp(this.getUpdatedAt())); xUserDetail.setUpdatedAt(new Timestamp(this.getUpdatedAt()));
} }
xUserDetail.setIsAuthenticated(this.getIsAuthenticated()); xUserDetail.setIsAuthenticated(this.getIsAuthenticated());
xUserDetail.setEnable(this.getEnable()); xUserDetail.setEnable(this.getEnable());
return xUserDetail; return xUserDetail;
......
...@@ -78,6 +78,30 @@ public class XyqbSessionContextHolder { ...@@ -78,6 +78,30 @@ public class XyqbSessionContextHolder {
} }
} }
public static SessionStruct getXSessionFromRedis(String token){
if (token == null || token.length() != 36) {
return null;
}
String result = redisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + token);
if (StringUtils.isEmpty(result)) {
return null;
}
try {
SessionValue values = JSON.parseObject(result, SessionValue.class);
if (values == null) {
return null;
}
SessionStruct sessionStruct = new SessionStruct();
sessionStruct.setSid(token);
sessionStruct.setValues(values);
return sessionStruct;
}catch (Exception ex){
LOGGER.error("序列化session出错", ex);
return null;
}
}
public static void releaseSession() { public static void releaseSession() {
threadSession.remove(); threadSession.remove();
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<maxHistory>30</maxHistory> <maxHistory>30</maxHistory>
</rollingPolicy>--> </rollingPolicy>-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout"> <layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{ISO8601} [%thread] [%-5level] %logger{36} - %msg%n</pattern> <pattern>%d{ISO8601} [%thread] [%-5level] %logger{36} - %msg%n</pattern>
......
...@@ -2,6 +2,7 @@ config.accessable=false ...@@ -2,6 +2,7 @@ config.accessable=false
configserver.disable=1 configserver.disable=1
configserver.system=xyqb-user configserver.system=xyqb-user
#xyqb.data.mysql.jdbc-url=jdbc:mysql://192.168.4.22:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8
xyqb.data.mysql.jdbc-url=jdbc:mysql://192.168.4.163:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8 xyqb.data.mysql.jdbc-url=jdbc:mysql://192.168.4.163:3306/xyqb_user?useUnicode=true&characterEncoding=UTF8
xyqb.data.mysql.password=qatest xyqb.data.mysql.password=qatest
...@@ -16,7 +17,7 @@ xyqb.filter.allowedHeaders=Origin, No-Cache, x-auth-token, X-Requested-With, If- ...@@ -16,7 +17,7 @@ xyqb.filter.allowedHeaders=Origin, No-Cache, x-auth-token, X-Requested-With, If-
xyqb.data.redis.defaultExpiration=3600 xyqb.data.redis.defaultExpiration=3600
# redis # redis
xyqb.redis.master.host=192.168.4.163 xyqb.redis.master.host=192.168.4.22
xyqb.redis.master.port=6379 xyqb.redis.master.port=6379
xyqb.redis.master.name= xyqb.redis.master.name=
xyqb.redis.sentinel1.host= xyqb.redis.sentinel1.host=
...@@ -30,11 +31,12 @@ xyqb.redis.sentinel3.port=0 ...@@ -30,11 +31,12 @@ xyqb.redis.sentinel3.port=0
sms.is.debug=1 sms.is.debug=1
# LKB client # LKB client
lkb.client.url=http://192.168.192.163:8082/LKBClient/openapi lkb.client.url=http://192.168.4.193:8083/LKBClient/openapi
lkb.client.user.register.app=/new/register/registerApp.json lkb.client.user.register.app=/new/register/registerApp.json
lkb.client.user.register.58jr=/new/register/jr58/saveUserInfo.json lkb.client.user.register.58jr=/new/register/jr58/saveUserInfo.json
lkb.client.user.update=/new/register/updateUser.json lkb.client.user.update=/new/register/updateUser.json
# LKB import # LKB import
lkb.import.url=http://spider.quantgroup.cn lkb.import.url=http://spider.quantgroup.cn
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<maxHistory>30</maxHistory> <maxHistory>30</maxHistory>
</rollingPolicy> </rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout"> <layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{ISO8601} [%-5level] %logger{36} - %msg%n</pattern> <pattern>%d{ISO8601} [%thread] [%-5level] %logger{36} - %msg%n</pattern>
</layout> </layout>
</appender> </appender>
......
...@@ -36,8 +36,8 @@ public class DemoApplicationTests { ...@@ -36,8 +36,8 @@ public class DemoApplicationTests {
@Test @Test
public void registerFast() { public void registerFast() {
JsonResult jsonResult = userController.registerFast("18611428880", "000000", null, null, ""); // JsonResult jsonResult = userController.registerFast("18611428880", "000000", null, null, "");
Assert.assertEquals(jsonResult.getCode(), "0000"); // Assert.assertEquals(jsonResult.getCode(), "0000");
} }
@Test @Test
......
package user; package user;
import cn.quantgroup.xyqb.Bootstrap; import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.external.user.InnerController;
import cn.quantgroup.xyqb.controller.internal.user.UserController; import cn.quantgroup.xyqb.controller.internal.user.UserController;
import cn.quantgroup.xyqb.model.JsonResult;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -23,8 +27,28 @@ public class TestUserLogin { ...@@ -23,8 +27,28 @@ public class TestUserLogin {
@Autowired @Autowired
private UserController userController; private UserController userController;
@Autowired
private InnerController innerController;
@Test
public void testBull() {
String contacts = null;
boolean notBlank = StringUtils.isNotBlank(contacts);
System.out.println("-----------------------------result:"+notBlank);
}
@Test
public void testJson() {
JsonResult addressByUserId = innerController.findAddressByUserId(22L);
// JsonResult userByUserId = innerController.findUserByPhoneNo("17811111122");
System.out.println("-------------result:"+addressByUserId);
}
@Test @Test
public void testUserLogin() { public void testUserLogin() {
Long code = 1L;
String format = String.format(Constants.ZERO_FILL_TEMPLATE, code);
System.out.println("-----------format:"+format);
//访问xyqb-user拿到登录token //访问xyqb-user拿到登录token
/*Long channelId = 1L; /*Long channelId = 1L;
String appChannel = "3"; String appChannel = "3";
......
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