Commit b356d7ca authored by 王亮's avatar 王亮

temp commit(wechat_userinfo)

parent 5702f70c
...@@ -26,7 +26,7 @@ CREATE TABLE `xyqb_user`.`user_info` ( ...@@ -26,7 +26,7 @@ CREATE TABLE `xyqb_user`.`user_info` (
INDEX `idx_user_phone` (`phone_no` ASC) INDEX `idx_user_phone` (`phone_no` ASC)
); );
---微信用户登录表 ---微信用户登录表,app_id可能需要跟app_name进行洗
ALTER TABLE `xyqb_user`.`wechat_userinfo` ALTER TABLE `xyqb_user`.`wechat_userinfo`
ADD COLUMN `session_key` VARCHAR(255) NULL COMMENT '第三方sessionkey' AFTER `encrypted_phone_no`, ADD COLUMN `session_key` VARCHAR(255) NULL COMMENT '第三方sessionkey' AFTER `encrypted_phone_no`,
ADD COLUMN `tenant_id` INT NULL COMMENT '租户id' AFTER `session_key`, ADD COLUMN `tenant_id` INT NULL COMMENT '租户id' AFTER `session_key`,
......
...@@ -7,6 +7,8 @@ public class UserConstant { ...@@ -7,6 +7,8 @@ public class UserConstant {
public static final String USER_FREEZE_ERROR = "账号异常,已冻结。"; public static final String USER_FREEZE_ERROR = "账号异常,已冻结。";
public static final Integer defaultTenantId = 1028; public static final Integer defaultTenantId = 560761;
public static final String defaultTenantIdString = "1028"; public static final String defaultTenantIdString = "560761";
public static final String defaultAppId = "560761";
} }
...@@ -125,9 +125,12 @@ public class UserController implements IBaseController { ...@@ -125,9 +125,12 @@ public class UserController implements IBaseController {
@RequestParam(required = false, defaultValue = "") String userId, @RequestParam(required = false, defaultValue = "") String userId,
@RequestParam(required = false, defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false) String dimension, @RequestParam(required = false) String dimension,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId,
@RequestParam(value = "tenantId", defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
,
HttpServletRequest request) { HttpServletRequest request) {
log.info("loginV1 -> channelId:{},appChennel:{},createdFrom:{},userId:{},key:{},dimension:{}", channelId, appChannel, createdFrom, userId, key, dimension); log.info("loginV1 -> channelId:{},appChennel:{},createdFrom:{},userId:{},key:{},dimension:{}", channelId, appChannel, createdFrom, userId, key, dimension);
return login(channelId, appChannel, createdFrom, userId, key, dimension, null, request); return login(channelId, appChannel, createdFrom, userId, key, dimension, null, request, appId,tenantId);
} }
...@@ -156,9 +159,12 @@ public class UserController implements IBaseController { ...@@ -156,9 +159,12 @@ public class UserController implements IBaseController {
@RequestParam(required = false, defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false) String dimension, @RequestParam(required = false) String dimension,
@RequestParam Long geetestlog_id, @RequestParam Long geetestlog_id,
HttpServletRequest request) { HttpServletRequest request,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
log.info("loginV2 -> channelId:{},appChennel:{},createdFrom:{},userId:{},key:{},dimension:{}", channelId, appChannel, createdFrom, userId, key, dimension); log.info("loginV2 -> channelId:{},appChennel:{},createdFrom:{},userId:{},key:{},dimension:{}", channelId, appChannel, createdFrom, userId, key, dimension);
return login(channelId, appChannel, createdFrom, userId, key, dimension, geetestlog_id, request); return login(channelId, appChannel, createdFrom, userId, key, dimension, geetestlog_id, request,appId,tenantId);
} }
...@@ -176,16 +182,19 @@ public class UserController implements IBaseController { ...@@ -176,16 +182,19 @@ public class UserController implements IBaseController {
@RequestParam(required = false, defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false) String dimension, @RequestParam(required = false) String dimension,
@RequestParam(required = false) Long geetestLogId, @RequestParam(required = false) Long geetestLogId,
HttpServletRequest request) { HttpServletRequest request,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId,
@RequestParam(value = "tenantId", defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
log.info("login -> channelId:{},appChannel:{},createdFrom:{},userId:{},key:{},dimension:{}", channelId, appChannel, createdFrom, userId, key, dimension); log.info("login -> channelId:{},appChannel:{},createdFrom:{},userId:{},key:{},dimension:{}", channelId, appChannel, createdFrom, userId, key, dimension);
Merchant merchant = merchantService.findMerchantByName(key); Merchant merchant = merchantService.findMerchantByName(key);
if (merchant == null) { if (merchant == null) {
return JsonResult.buildErrorStateResult("未知的连接", null); return JsonResult.buildErrorStateResult("未知的连接", null);
} }
if (StringUtils.length(userId) > Constants.UUID_MIN_LENGTH) { if (StringUtils.length(userId) > Constants.UUID_MIN_LENGTH) {
return loginWithUserId(channelId, appChannel, createdFrom, userId, merchant, geetestLogId, request); return loginWithUserId(channelId, appChannel, createdFrom, userId, merchant, geetestLogId, request, appId,tenantId);
} else { } else {
return loginWithHttpBasic(channelId, appChannel, createdFrom, merchant, dimension, geetestLogId, request); return loginWithHttpBasic(channelId, appChannel, createdFrom, merchant, dimension, geetestLogId, request,appId,tenantId);
} }
} }
...@@ -213,9 +222,10 @@ public class UserController implements IBaseController { ...@@ -213,9 +222,10 @@ public class UserController implements IBaseController {
@RequestParam(required = false) String dimension, @RequestParam(required = false) String dimension,
@RequestParam(name = "click_id", required = false) String clickId, @RequestParam(name = "click_id", required = false) String clickId,
@RequestParam(required = false) Integer tenantId, @RequestParam(required = false) Integer tenantId,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId,
HttpServletRequest request) { HttpServletRequest request) {
log.info("login/fastV1 -> channelId:{},ZappChennel:{},createdFrom:{},key:{},btRegisterChannelId:{},dimension:{},clickId:{}", channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId); log.info("login/fastV1 -> channelId:{},ZappChennel:{},createdFrom:{},key:{},btRegisterChannelId:{},dimension:{},clickId:{}", channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId);
return loginFast(channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId, tenantId, null, request); return loginFast(channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId, tenantId, null,appId, request);
} }
/** /**
...@@ -233,6 +243,7 @@ public class UserController implements IBaseController { ...@@ -233,6 +243,7 @@ public class UserController implements IBaseController {
@RequestParam(name = "click_id", required = false) String clickId, @RequestParam(name = "click_id", required = false) String clickId,
@RequestParam(required = false) Integer tenantId, @RequestParam(required = false) Integer tenantId,
@RequestParam(required = false) Long geetestLogId, @RequestParam(required = false) Long geetestLogId,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId,
HttpServletRequest request) { HttpServletRequest request) {
Map<String, JsonResult> validMap = getHeaderParam(request); Map<String, JsonResult> validMap = getHeaderParam(request);
log.info("login/fast -> channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{},clickId:{}", channelId, appChannel, createdFrom, btRegisterChannelId, key, dimension, clickId); log.info("login/fast -> channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{},clickId:{}", channelId, appChannel, createdFrom, btRegisterChannelId, key, dimension, clickId);
...@@ -257,7 +268,7 @@ public class UserController implements IBaseController { ...@@ -257,7 +268,7 @@ public class UserController implements IBaseController {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) { if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
tenantId = TenantUtil.TENANT_DEFAULT; tenantId = TenantUtil.TENANT_DEFAULT;
} }
return userService.loginFast(channelId, appChannel, createdFrom, btRegisterChannelId, dimension, clickId, request, merchant, phoneNo, tenantId, geetestLogId); return userService.loginFast(channelId, appChannel, createdFrom, btRegisterChannelId, dimension, clickId, request, merchant, phoneNo, tenantId, geetestLogId,appId);
} }
/** /**
...@@ -311,7 +322,9 @@ public class UserController implements IBaseController { ...@@ -311,7 +322,9 @@ public class UserController implements IBaseController {
public JsonResult register(@RequestParam String phoneNo, @RequestParam String password, public JsonResult register(@RequestParam String phoneNo, @RequestParam String password,
@RequestParam String verificationCode, @RequestParam(required = false) Long channelId, @RequestParam String verificationCode, @RequestParam(required = false) Long channelId,
@RequestParam(required = false) Long registerFrom, @RequestParam(required = false) Long registerFrom,
@RequestParam(required = false) Long btRegisterChannelId, @RequestParam(required = false) String dimension) { @RequestParam(required = false) Long btRegisterChannelId, @RequestParam(required = false) String dimension,
@RequestParam(value = "tenantId", defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
log.info("用户注册:register -> phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{},btRegisterChannelId:{},dimension:{}", phoneNo, verificationCode, channelId, registerFrom, btRegisterChannelId, dimension); log.info("用户注册:register -> phoneNo:{}, verificationCode:{}, channelId:{}, registerFrom:{},btRegisterChannelId:{},dimension:{}", phoneNo, verificationCode, channelId, registerFrom, btRegisterChannelId, dimension);
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
log.info("用户注册失败,手机号错误:register -> registerFrom:{}, phoneNo:{}", registerFrom, phoneNo); log.info("用户注册失败,手机号错误:register -> registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
...@@ -329,7 +342,7 @@ public class UserController implements IBaseController { ...@@ -329,7 +342,7 @@ public class UserController implements IBaseController {
registerFrom = 1L; registerFrom = 1L;
} }
verifyPhoneAndCode(phoneNo, verificationCode); verifyPhoneAndCode(phoneNo, verificationCode);
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo, tenantId);
if (user != null) { if (user != null) {
// 用户注册使用新加密方式 // 用户注册使用新加密方式
// user.setPassword(PasswordUtil.MD5WithSalt(password)); // user.setPassword(PasswordUtil.MD5WithSalt(password));
...@@ -358,9 +371,10 @@ public class UserController implements IBaseController { ...@@ -358,9 +371,10 @@ public class UserController implements IBaseController {
@IpValidator @IpValidator
@RequestMapping("/exist") @RequestMapping("/exist")
@Deprecated @Deprecated
public JsonResult exist(@RequestParam String phoneNo) { public JsonResult exist(@RequestParam String phoneNo, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
log.info("检查用户是否存在, phoneNo:{}", phoneNo); log.info("检查用户是否存在, phoneNo:{}", phoneNo);
if (userService.exist(phoneNo)) { if (userService.exist(phoneNo,tenantId)) {
log.info("该手机号已经注册, phoneNo:{},remoteIp:{}", phoneNo, getIp()); log.info("该手机号已经注册, phoneNo:{},remoteIp:{}", phoneNo, getIp());
return JsonResult.buildErrorStateResult("该手机号已经注册", null); return JsonResult.buildErrorStateResult("该手机号已经注册", null);
} }
...@@ -378,9 +392,10 @@ public class UserController implements IBaseController { ...@@ -378,9 +392,10 @@ public class UserController implements IBaseController {
@IpValidator @IpValidator
@RequestMapping("/exist_check") @RequestMapping("/exist_check")
@Deprecated @Deprecated
public JsonResult existForResetPwd(@RequestParam String phoneNo) { public JsonResult existForResetPwd(@RequestParam String phoneNo, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
log.info("检查用户是否存在, phoneNo:{},remoteIp:{}", phoneNo, getIp()); log.info("检查用户是否存在, phoneNo:{},remoteIp:{}", phoneNo, getIp());
return JsonResult.buildSuccessResult(null, userService.exist(phoneNo)); return JsonResult.buildSuccessResult(null, userService.exist(phoneNo,tenantId));
} }
/** /**
...@@ -396,7 +411,8 @@ public class UserController implements IBaseController { ...@@ -396,7 +411,8 @@ public class UserController implements IBaseController {
public JsonResult resetPassword(@RequestParam String phoneNo, public JsonResult resetPassword(@RequestParam String phoneNo,
@RequestParam String password, @RequestParam String password,
@RequestParam(required = false) String registerFrom, @RequestParam(required = false) String registerFrom,
@RequestParam String verificationCode) { @RequestParam String verificationCode, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号错误", null); return JsonResult.buildErrorStateResult("手机号错误", null);
} }
...@@ -407,11 +423,11 @@ public class UserController implements IBaseController { ...@@ -407,11 +423,11 @@ public class UserController implements IBaseController {
return JsonResult.buildErrorStateResult(PasswordUtil.TOAST_MSG, null); return JsonResult.buildErrorStateResult(PasswordUtil.TOAST_MSG, null);
} }
verifyPhoneAndCode(phoneNo, verificationCode); verifyPhoneAndCode(phoneNo, verificationCode);
if (!userService.exist(phoneNo)) { if (!userService.exist(phoneNo,tenantId)) {
log.info("修改密码失败,该手机号尚未注册, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo); log.info("修改密码失败,该手机号尚未注册, registerFrom:{}, phoneNo:{}", registerFrom, phoneNo);
return JsonResult.buildErrorStateResult("修改密码失败", null); return JsonResult.buildErrorStateResult("修改密码失败", null);
} }
if (!userService.resetPassword(phoneNo, password)) { if (!userService.resetPassword(phoneNo, password,tenantId)) {
return JsonResult.buildErrorStateResult("修改密码失败", null); return JsonResult.buildErrorStateResult("修改密码失败", null);
} }
...@@ -431,7 +447,8 @@ public class UserController implements IBaseController { ...@@ -431,7 +447,8 @@ public class UserController implements IBaseController {
@Deprecated @Deprecated
@PasswordFreeAccessValidator @PasswordFreeAccessValidator
@RequestMapping(path = "/resetPassword", method = RequestMethod.POST) @RequestMapping(path = "/resetPassword", method = RequestMethod.POST)
public JsonResult resetPassword(@RequestParam String phoneNo, @RequestParam String password, @RequestParam(required = false) String passwordNew) { public JsonResult resetPassword(@RequestParam String phoneNo, @RequestParam String password, @RequestParam(required = false) String passwordNew, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号错误", null); return JsonResult.buildErrorStateResult("手机号错误", null);
} }
...@@ -441,7 +458,7 @@ public class UserController implements IBaseController { ...@@ -441,7 +458,7 @@ public class UserController implements IBaseController {
if (!ValidationUtil.validatePassword(password)) { if (!ValidationUtil.validatePassword(password)) {
return JsonResult.buildErrorStateResult(PasswordUtil.TOAST_MSG, null); return JsonResult.buildErrorStateResult(PasswordUtil.TOAST_MSG, null);
} }
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo,tenantId);
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
log.info("修改密码失败,该手机号尚未注册, phoneNo:{}", phoneNo); log.info("修改密码失败,该手机号尚未注册, phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("修改密码失败", null); return JsonResult.buildErrorStateResult("修改密码失败", null);
...@@ -465,7 +482,7 @@ public class UserController implements IBaseController { ...@@ -465,7 +482,7 @@ public class UserController implements IBaseController {
} }
} }
if (!userService.resetPassword(phoneNo, passwordNew)) { if (!userService.resetPassword(phoneNo, passwordNew,tenantId)) {
return JsonResult.buildErrorStateResult("修改密码失败", null); return JsonResult.buildErrorStateResult("修改密码失败", null);
} }
return JsonResult.buildSuccessResult("修改密码成功"); return JsonResult.buildSuccessResult("修改密码成功");
...@@ -591,14 +608,14 @@ public class UserController implements IBaseController { ...@@ -591,14 +608,14 @@ public class UserController implements IBaseController {
TokenExchange tokenExchange = tokenExchangeResult.getData(); TokenExchange tokenExchange = tokenExchangeResult.getData();
if (tokenExchange != null) { if (tokenExchange != null) {
SessionValue sessionValue = new SessionValue(); SessionValue sessionValue = new SessionValue();
User user = userService.findById(tokenExchange.getUserId()); User user = userService.findById(tokenExchange.getUserId(),tenantId);
if (user != null) { if (user != null) {
LoginProperties loginProperties = JSONObject.parseObject(tokenExchange.getLoginProperties(), LoginProperties.class); LoginProperties loginProperties = JSONObject.parseObject(tokenExchange.getLoginProperties(), LoginProperties.class);
// 根据返回值生成token, 返回值包含user:session:token的值 // 根据返回值生成token, 返回值包含user:session:token的值
sessionValue.setUser(user); sessionValue.setUser(user);
sessionValue.setLoginProperties(loginProperties); sessionValue.setLoginProperties(loginProperties);
sessionService.persistSessionExchange(token, sessionValue, tokenExchange.getExpire()); sessionService.persistSessionExchange(token, sessionValue, tokenExchange.getExpire(),tenantId);
} }
} }
...@@ -661,7 +678,8 @@ public class UserController implements IBaseController { ...@@ -661,7 +678,8 @@ public class UserController implements IBaseController {
* @yapi http://yapi.quantgroups.com/project/17/interface/api/23661 * @yapi http://yapi.quantgroups.com/project/17/interface/api/23661
*/ */
@RequestMapping(value = "/logout", method = RequestMethod.GET) @RequestMapping(value = "/logout", method = RequestMethod.GET)
public JsonResult logout(HttpServletRequest request) { public JsonResult logout(HttpServletRequest request, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
String token = request.getHeader("x-auth-token"); String token = request.getHeader("x-auth-token");
...@@ -670,7 +688,7 @@ public class UserController implements IBaseController { ...@@ -670,7 +688,7 @@ public class UserController implements IBaseController {
} }
try { try {
userService.logout(token); userService.logout(token,tenantId);
} catch (Exception e) { } catch (Exception e) {
log.error("登出接口系统异常token:{}", token); log.error("登出接口系统异常token:{}", token);
return JsonResult.buildErrorStateResult("服务器异常,请稍后再试", null); return JsonResult.buildErrorStateResult("服务器异常,请稍后再试", null);
...@@ -679,17 +697,17 @@ public class UserController implements IBaseController { ...@@ -679,17 +697,17 @@ public class UserController implements IBaseController {
return JsonResult.buildSuccessResult("登出成功"); return JsonResult.buildSuccessResult("登出成功");
} }
private JsonResult loginWithHttpBasic(Long channelId, String appChannel, Long createdFrom, Merchant merchant, String dimension, Long geetestLogId, HttpServletRequest request) { private JsonResult loginWithHttpBasic(Long channelId, String appChannel, Long createdFrom, Merchant merchant, String dimension, Long geetestLogId, HttpServletRequest request,String appId,Integer tenantId) {
User user = verificateUserNameAndPassword(request); User user = verificateUserNameAndPassword(request,tenantId);
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult("用户名或密码不正确", null); return JsonResult.buildErrorStateResult("用户名或密码不正确", null);
} else if (!user.getEnable()) { } else if (!user.getEnable()) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_ENABLE_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_ENABLE_ERROR, null);
} else if (!wechatRelateUserIfNecessary(user, request)) { } else if (!wechatRelateUserIfNecessary(user, request,appId,tenantId)) {
return JsonResult.buildErrorStateResult("登录时微信关联失败", null); return JsonResult.buildErrorStateResult("登录时微信关联失败", null);
} }
LoginProperties loginProperties = new LoginProperties("", 1, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName(), null); LoginProperties loginProperties = new LoginProperties("", 1, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName(), null);
AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.ACCOUNTPASSWORD.ordinal()); AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.ACCOUNTPASSWORD.ordinal(),tenantId);
if (authBean != null) { if (authBean != null) {
authBean.setRegister(false); authBean.setRegister(false);
} }
...@@ -700,7 +718,8 @@ public class UserController implements IBaseController { ...@@ -700,7 +718,8 @@ public class UserController implements IBaseController {
return new JsonResult(authBean); return new JsonResult(authBean);
} }
private User verificateUserNameAndPassword(HttpServletRequest request) { private User verificateUserNameAndPassword(HttpServletRequest request,Integer tenantId
) {
String credential = request.getHeader("authorization"); String credential = request.getHeader("authorization");
if (StringUtils.isBlank(credential) || !credential.startsWith(Constants.PASSWORD_HEADER)) { if (StringUtils.isBlank(credential) || !credential.startsWith(Constants.PASSWORD_HEADER)) {
return null; return null;
...@@ -723,7 +742,7 @@ public class UserController implements IBaseController { ...@@ -723,7 +742,7 @@ public class UserController implements IBaseController {
} }
String phoneNo = credentialArr[0]; String phoneNo = credentialArr[0];
String pass = credentialArr[1]; String pass = credentialArr[1];
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo,tenantId);
if (user == null) { if (user == null) {
// 向该ipv4添加错误计数器 // 向该ipv4添加错误计数器
lockIpv4Service.countErrorByIpv4(clientIp); lockIpv4Service.countErrorByIpv4(clientIp);
...@@ -763,13 +782,14 @@ public class UserController implements IBaseController { ...@@ -763,13 +782,14 @@ public class UserController implements IBaseController {
return user; return user;
} }
private JsonResult loginWithUserId(Long channelId, String appChannel, Long createdFrom, String userId, Merchant merchant, Long geetestLogId, HttpServletRequest request) { private JsonResult loginWithUserId(Long channelId, String appChannel, Long createdFrom, String userId, Merchant merchant, Long geetestLogId, HttpServletRequest request, String appId, Integer tenantId
) {
//查询用户 //查询用户
User user = userService.findByUuidInDb(userId); User user = userService.findByUuidInDb(userId, tenantId);
if (Objects.isNull(user) || !user.getEnable()) { if (Objects.isNull(user) || !user.getEnable()) {
log.error("用户不存在,或者已经注销,userId:{}", userId); log.error("用户不存在,或者已经注销,userId:{}", userId);
return JsonResult.buildErrorStateResult(USER_ERROR_OR_ENABLE_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_ENABLE_ERROR, null);
} else if (!wechatRelateUserIfNecessary(user, request)) { } else if (!wechatRelateUserIfNecessary(user, request,appId,tenantId)) {
return JsonResult.buildErrorStateResult("登录时微信关联失败", null); return JsonResult.buildErrorStateResult("登录时微信关联失败", null);
} }
LoginProperties loginProperties = new LoginProperties("", 4, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName(), null); LoginProperties loginProperties = new LoginProperties("", 4, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName(), null);
...@@ -781,7 +801,7 @@ public class UserController implements IBaseController { ...@@ -781,7 +801,7 @@ public class UserController implements IBaseController {
geetestLogService.updateByUidGeetestLog(geetestLogId, user.getId()); geetestLogService.updateByUidGeetestLog(geetestLogId, user.getId());
} }
//更新session //更新session
return new JsonResult(sessionService.createSession(user, loginProperties, LoginType.ACCOUNTPASSWORD.ordinal())); return new JsonResult(sessionService.createSession(user, loginProperties, LoginType.ACCOUNTPASSWORD.ordinal(),tenantId));
} }
/** /**
...@@ -791,7 +811,7 @@ public class UserController implements IBaseController { ...@@ -791,7 +811,7 @@ public class UserController implements IBaseController {
* @param request - 当前请求 * @param request - 当前请求
* @return true - 继续登录,false - 微信关联失败,重新登录 * @return true - 继续登录,false - 微信关联失败,重新登录
*/ */
private boolean wechatRelateUserIfNecessary(User user, HttpServletRequest request) { private boolean wechatRelateUserIfNecessary(User user, HttpServletRequest request,String appId,Integer tenantId) {
Objects.requireNonNull(request, "无效请求"); Objects.requireNonNull(request, "无效请求");
String clientIp = IpUtil.getRemoteIP(request); String clientIp = IpUtil.getRemoteIP(request);
Set<String> paramKeys = request.getParameterMap().keySet(); Set<String> paramKeys = request.getParameterMap().keySet();
...@@ -805,7 +825,7 @@ public class UserController implements IBaseController { ...@@ -805,7 +825,7 @@ public class UserController implements IBaseController {
Long userId = user.getId(); Long userId = user.getId();
String phoneNo = user.getEncryptedPhoneNo(); String phoneNo = user.getEncryptedPhoneNo();
try { try {
int rows = wechatService.relateUser(userId, phoneNo, request.getParameter(Constants.WECHAT_OPEN_ID)); int rows = wechatService.relateUser(userId, phoneNo, request.getParameter(Constants.WECHAT_OPEN_ID),appId,tenantId);
return rows > 0; return rows > 0;
} catch (Exception e) { } catch (Exception e) {
log.error("微信关联失败,user:{}, request-Header:{}", user, JSON.toJSONString(getRequestHeaderMap(request)), e); log.error("微信关联失败,user:{}, request-Header:{}", user, JSON.toJSONString(getRequestHeaderMap(request)), e);
...@@ -864,9 +884,11 @@ public class UserController implements IBaseController { ...@@ -864,9 +884,11 @@ public class UserController implements IBaseController {
@RequestParam(required = false, defaultValue = "") Long userId, @RequestParam(required = false, defaultValue = "") Long userId,
@RequestParam(required = false, defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false) String dimension @RequestParam(required = false) String dimension
, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) { ) {
//查询用户 //查询用户
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
if (Objects.isNull(user) || !user.getEnable()) { if (Objects.isNull(user) || !user.getEnable()) {
log.error("用户不存在,或者已经注销,userId:{}", userId); log.error("用户不存在,或者已经注销,userId:{}", userId);
return JsonResult.buildErrorStateResult(USER_ERROR_OR_ENABLE_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_ENABLE_ERROR, null);
...@@ -879,7 +901,7 @@ public class UserController implements IBaseController { ...@@ -879,7 +901,7 @@ public class UserController implements IBaseController {
LoginProperties loginProperties = new LoginProperties("", 4, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName(), null); LoginProperties loginProperties = new LoginProperties("", 4, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName(), null);
try { try {
userService.kdspLogout(userId, loginProperties); userService.kdspLogout(userId, loginProperties,tenantId);
} catch (Exception e) { } catch (Exception e) {
return JsonResult.buildErrorStateResult("服务器异常,请稍后再试", null); return JsonResult.buildErrorStateResult("服务器异常,请稍后再试", null);
} }
......
package cn.quantgroup.xyqb.controller.external; package cn.quantgroup.xyqb.controller.external;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.constant.enums.LoginType; import cn.quantgroup.xyqb.constant.enums.LoginType;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
...@@ -181,7 +182,9 @@ public class WeChatController implements IBaseController { ...@@ -181,7 +182,9 @@ public class WeChatController implements IBaseController {
*/ */
@RequestMapping("/receiveCode/extdata/{key}/{extdata}") @RequestMapping("/receiveCode/extdata/{key}/{extdata}")
public void receiveCodeWithExtData(String code, @PathVariable(value = "key") String systemKey, public void receiveCodeWithExtData(String code, @PathVariable(value = "key") String systemKey,
@PathVariable(value = "extdata") String extData, HttpServletResponse response) { @PathVariable(value = "extdata") String extData, HttpServletResponse response,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId
,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId ) {
Long registerFrom = null; Long registerFrom = null;
String redirect = null; String redirect = null;
String schema = null; String schema = null;
...@@ -192,7 +195,7 @@ public class WeChatController implements IBaseController { ...@@ -192,7 +195,7 @@ public class WeChatController implements IBaseController {
extData = ""; extData = "";
} }
if (StringUtils.isBlank(extData)) { if (StringUtils.isBlank(extData)) {
receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, customRedirect, response); receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, customRedirect, response,appId,tenantId);
return; return;
} }
log.info("从微信extdata版本接口进入:{}, extData:{}", schema, extData); log.info("从微信extdata版本接口进入:{}, extData:{}", schema, extData);
...@@ -202,7 +205,7 @@ public class WeChatController implements IBaseController { ...@@ -202,7 +205,7 @@ public class WeChatController implements IBaseController {
}); });
} catch (Exception ex) { } catch (Exception ex) {
log.error("解析extData发生错误", ex); log.error("解析extData发生错误", ex);
receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, customRedirect, response); receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, customRedirect, response,appId,tenantId);
return; return;
} }
schema = extDataObj.getOrDefault("protocol", Constants.PROTOCOL_HEAD_HTTP).toString(); schema = extDataObj.getOrDefault("protocol", Constants.PROTOCOL_HEAD_HTTP).toString();
...@@ -211,7 +214,7 @@ public class WeChatController implements IBaseController { ...@@ -211,7 +214,7 @@ public class WeChatController implements IBaseController {
redirect = (String) extDataObj.getOrDefault(Constants.REDIRECT, Constants.REDIRECT); redirect = (String) extDataObj.getOrDefault(Constants.REDIRECT, Constants.REDIRECT);
customRedirect = (String) extDataObj.getOrDefault(Constants.CUSTOMREDIRECT, null); customRedirect = (String) extDataObj.getOrDefault(Constants.CUSTOMREDIRECT, null);
log.info("从微信登录,registerFrom:{}, redirect:{}", registerFrom, redirect); log.info("从微信登录,registerFrom:{}, redirect:{}", registerFrom, redirect);
receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, customRedirect, response); receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, customRedirect, response,appId,tenantId);
} }
/** /**
...@@ -224,7 +227,7 @@ public class WeChatController implements IBaseController { ...@@ -224,7 +227,7 @@ public class WeChatController implements IBaseController {
* @param redirect * @param redirect
* @param response * @param response
*/ */
private void receiveCodeWithDefault(String code, String systemKey, String schema, Long registerFrom, String redirect, String customRedirect, HttpServletResponse response) { private void receiveCodeWithDefault(String code, String systemKey, String schema, Long registerFrom, String redirect, String customRedirect, HttpServletResponse response,String appId,Integer tenantId) {
// 微信跳转请求入参监控 // 微信跳转请求入参监控
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
log.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:code:{},systemKey:{},schema:{},registerFrom:{},redirect:{},request:{}", code, systemKey, schema, registerFrom, redirect, JSON.toJSONString(getRequestHeaderMap(request))); log.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:code:{},systemKey:{},schema:{},registerFrom:{},redirect:{},request:{}", code, systemKey, schema, registerFrom, redirect, JSON.toJSONString(getRequestHeaderMap(request)));
...@@ -240,7 +243,7 @@ public class WeChatController implements IBaseController { ...@@ -240,7 +243,7 @@ public class WeChatController implements IBaseController {
} }
// 从code获取token // 从code获取token
Merchant merchant = merchantService.findMerchantByName(systemKey); Merchant merchant = merchantService.findMerchantByName(systemKey);
AccessTokenResponse token = wechatService.getToken(code); AccessTokenResponse token = wechatService.getToken(code,appId,tenantId);
log.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:merchant:{},token:{}", merchant, token); log.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:merchant:{},token:{}", merchant, token);
if (Objects.isNull(token) || StringUtils.isBlank(token.getOpenId())) { if (Objects.isNull(token) || StringUtils.isBlank(token.getOpenId())) {
// 让用户登录,不关联微信, 构造不关联微信的url // 让用户登录,不关联微信, 构造不关联微信的url
...@@ -248,11 +251,11 @@ public class WeChatController implements IBaseController { ...@@ -248,11 +251,11 @@ public class WeChatController implements IBaseController {
return; return;
} }
// 获取已授权信息 - db // 获取已授权信息 - db
WechatUserInfo userInfoInDb = wechatService.findWechatUserInfoFromDb(token.getOpenId()); WechatUserInfo userInfoInDb = wechatService.findWechatUserInfoFromDb(token.getOpenId(),appId,tenantId);
log.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:WechatUserInfo - from DB:{}", userInfoInDb); log.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:WechatUserInfo - from DB:{}", userInfoInDb);
// welcome 首次登录 // welcome 首次登录
if (Objects.isNull(userInfoInDb)) { if (Objects.isNull(userInfoInDb)) {
WechatUserInfo userInfo = wechatService.getWechatUserInfoFromWechatServer(token.getAccessToken(), token.getOpenId()); WechatUserInfo userInfo = wechatService.getWechatUserInfoFromWechatServer(token.getAccessToken(), token.getOpenId(),appId,tenantId);
log.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:WechatUserInfo - from wechat api:{}", userInfo); log.info("[WeChatController][receiveCodeWithDefault]微信授权及跳转:WechatUserInfo - from wechat api:{}", userInfo);
if (Objects.isNull(userInfo) || StringUtils.isBlank(userInfo.getOpenId())) { if (Objects.isNull(userInfo) || StringUtils.isBlank(userInfo.getOpenId())) {
// 让用户登录,不关联微信, 构造不关联微信的url // 让用户登录,不关联微信, 构造不关联微信的url
...@@ -283,7 +286,7 @@ public class WeChatController implements IBaseController { ...@@ -283,7 +286,7 @@ public class WeChatController implements IBaseController {
} }
return; return;
} }
User user = userService.findById(userInfoInDb.getUserId()); User user = userService.findById(userInfoInDb.getUserId(),tenantId);
// 用户不存在或已注销 // 用户不存在或已注销
if (Objects.isNull(user) || !user.getEnable()) { if (Objects.isNull(user) || !user.getEnable()) {
// 用户已经微信登录了,但是关联信用钱包用户信息无效,跳转到注册页面 // 用户已经微信登录了,但是关联信用钱包用户信息无效,跳转到注册页面
...@@ -344,14 +347,16 @@ public class WeChatController implements IBaseController { ...@@ -344,14 +347,16 @@ public class WeChatController implements IBaseController {
* @yapi unknown * @yapi unknown
*/ */
@RequestMapping("/receiveCode/{key}") @RequestMapping("/receiveCode/{key}")
public void receiveCodeNoRedirect(String code, @PathVariable(value = "key") String systemKey, HttpServletRequest request, HttpServletResponse response) { public void receiveCodeNoRedirect(String code, @PathVariable(value = "key") String systemKey, HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
Long registerFrom = null; Long registerFrom = null;
String redirect = null; String redirect = null;
String schema = Constants.PROTOCOL_HEAD_HTTP; String schema = Constants.PROTOCOL_HEAD_HTTP;
if (Objects.equals(Constants.PROTOCOL_HEAD_HTTPS, request.getScheme())) { if (Objects.equals(Constants.PROTOCOL_HEAD_HTTPS, request.getScheme())) {
schema = Constants.PROTOCOL_HEAD_HTTPS; schema = Constants.PROTOCOL_HEAD_HTTPS;
} }
receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, redirect, response); receiveCodeWithDefault(code, systemKey, schema, registerFrom, redirect, redirect, response,appId,tenantId);
} }
private String createUserSession(User user, Merchant merchant, String redirect, String domain, Long registerFrom) { private String createUserSession(User user, Merchant merchant, String redirect, String domain, Long registerFrom) {
...@@ -362,14 +367,14 @@ public class WeChatController implements IBaseController { ...@@ -362,14 +367,14 @@ public class WeChatController implements IBaseController {
if (Constants.MERCHANT_BAITIAO.equals(merchant.getName())) { if (Constants.MERCHANT_BAITIAO.equals(merchant.getName())) {
return loginInWechatWithSessionCreated(user, merchant, "cashTarget5", Constants.Channel.BAITIAO, domain, Constants.Channel.WECHAT); return loginInWechatWithSessionCreated(user, merchant, "cashTarget5", Constants.Channel.BAITIAO, domain, Constants.Channel.WECHAT);
} else if (Constants.MERCHANT_WECHAT_PAY.equals(merchant.getName())) { } else if (Constants.MERCHANT_WECHAT_PAY.equals(merchant.getName())) {
AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.WECHATLOGIN.ordinal()); AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.WECHATLOGIN.ordinal(),user.getTenantId());
return domain + "/landing?token=" + authBean.getToken() + "&registerFrom=" + registerFrom + "&channelId=" + Constants.Channel.WECHAT + "&key=" + merchant.getName() + "&target=cashTarget5"; return domain + "/landing?token=" + authBean.getToken() + "&registerFrom=" + registerFrom + "&channelId=" + Constants.Channel.WECHAT + "&key=" + merchant.getName() + "&target=cashTarget5";
} else { } else {
return loginInWechatWithSessionCreated(user, merchant, "cashTarget4", 1L, domain, registerFrom); return loginInWechatWithSessionCreated(user, merchant, "cashTarget4", 1L, domain, registerFrom);
} }
} else if (Constants.LOCAL.equals(redirect)) { } else if (Constants.LOCAL.equals(redirect)) {
log.info("微信登录:redirect不为null,创建session跳到指定前端页面."); log.info("微信登录:redirect不为null,创建session跳到指定前端页面.");
AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.WECHATLOGIN.ordinal()); AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.WECHATLOGIN.ordinal(),user.getTenantId());
log.info("微信登录:跳转地址{}", domain + "/weixin/callback?phoneNo=" + user.getPhoneNo() + "&token=" + authBean.getToken()); log.info("微信登录:跳转地址{}", domain + "/weixin/callback?phoneNo=" + user.getPhoneNo() + "&token=" + authBean.getToken());
Long channelId = Constants.MERCHANT_BAITIAO.equals(merchant.getName()) ? Constants.Channel.BAITIAO : 1L; Long channelId = Constants.MERCHANT_BAITIAO.equals(merchant.getName()) ? Constants.Channel.BAITIAO : 1L;
String target = Constants.MERCHANT_BAITIAO.equals(merchant.getName()) ? "cashTarget5" : "cashTarget4"; String target = Constants.MERCHANT_BAITIAO.equals(merchant.getName()) ? "cashTarget5" : "cashTarget4";
...@@ -377,7 +382,7 @@ public class WeChatController implements IBaseController { ...@@ -377,7 +382,7 @@ public class WeChatController implements IBaseController {
"&channelId=" + channelId + "&key=" + merchant.getName() + "&target=" + target + "&isWechat=true"; "&channelId=" + channelId + "&key=" + merchant.getName() + "&target=" + target + "&isWechat=true";
} else if(Constants.REDIRECT_ORDER.equals(redirect)){ } else if(Constants.REDIRECT_ORDER.equals(redirect)){
log.info("微信登录:redirect为orders,创建session跳到指定前端页面.(兼容多订单页面)"); log.info("微信登录:redirect为orders,创建session跳到指定前端页面.(兼容多订单页面)");
AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.WECHATLOGIN.ordinal()); AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.WECHATLOGIN.ordinal(),user.getTenantId());
return String.format("%s/loan-list?token=%s&registerFrom=%s&key=%s", xjdDomain, authBean.getToken(), registerFrom, merchant.getName()); return String.format("%s/loan-list?token=%s&registerFrom=%s&key=%s", xjdDomain, authBean.getToken(), registerFrom, merchant.getName());
} }
return null; return null;
...@@ -385,7 +390,7 @@ public class WeChatController implements IBaseController { ...@@ -385,7 +390,7 @@ public class WeChatController implements IBaseController {
private String loginInWechatWithSessionCreated(User user, Merchant merchant, String target, Long channelId, String domain, Long registerFrom) { private String loginInWechatWithSessionCreated(User user, Merchant merchant, String target, Long channelId, String domain, Long registerFrom) {
LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, String.valueOf(Constants.Channel.WECHAT), merchant.getId(), merchant.getName(), null); LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, String.valueOf(Constants.Channel.WECHAT), merchant.getId(), merchant.getName(), null);
AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.WECHATLOGIN.ordinal()); AuthBean authBean = sessionService.createSession(user, loginProperties, LoginType.WECHATLOGIN.ordinal(),user.getTenantId());
log.info("[WeChatController][loginInWechatWithSessionCreated]微信授权及跳转:user:{},merchant:{},target:{},channelId:{},domain:{},registerFrom:{}", user, merchant, target, channelId, domain, registerFrom); log.info("[WeChatController][loginInWechatWithSessionCreated]微信授权及跳转:user:{},merchant:{},target:{},channelId:{},domain:{},registerFrom:{}", user, merchant, target, channelId, domain, registerFrom);
return domain + "/landing?token=" + authBean.getToken() + "&registerFrom=" + registerFrom + "&channelId=" + channelId + "&key=" + merchant.getName() + "&target=" + target; return domain + "/landing?token=" + authBean.getToken() + "&registerFrom=" + registerFrom + "&channelId=" + channelId + "&key=" + merchant.getName() + "&target=" + target;
} }
...@@ -456,25 +461,26 @@ public class WeChatController implements IBaseController { ...@@ -456,25 +461,26 @@ public class WeChatController implements IBaseController {
@RequestMapping("/userIdToUnionId") @RequestMapping("/userIdToUnionId")
public JsonResult userIdToUnionId(@RequestParam Long userId) { public JsonResult userIdToUnionId(@RequestParam Long userId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
List<WechatUserInfo> wechatUserInfoList = null; List<WechatUserInfo> wechatUserInfoList = null;
if (userId != null && userId > 0) { if (userId != null && userId > 0) {
wechatUserInfoList = wechatService.queryListByUserId(userId); wechatUserInfoList = wechatService.queryListByUserId(userId,tenantId);
} }
return JsonResult.buildSuccessResult("通过用户ID查询的绑定微信相关信息", wechatUserInfoList); return JsonResult.buildSuccessResult("通过用户ID查询的绑定微信相关信息", wechatUserInfoList);
} }
@RequestMapping("/unionIdToUserId") @RequestMapping("/unionIdToUserId")
public JsonResult unionIdToUserId(@RequestParam String unionId) { public JsonResult unionIdToUserId(@RequestParam String unionId,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
List<WechatUserInfo> wechatUserInfoList = null; List<WechatUserInfo> wechatUserInfoList = null;
if (unionId != null && !"".equals(unionId)) { if (unionId != null && !"".equals(unionId)) {
wechatUserInfoList = wechatService.queryListByUnionId(unionId); wechatUserInfoList = wechatService.queryListByUnionId(unionId,tenantId);
} }
return JsonResult.buildSuccessResult("通过unionId查询的绑定微信相关信息", wechatUserInfoList); return JsonResult.buildSuccessResult("通过unionId查询的绑定微信相关信息", wechatUserInfoList);
} }
@PostMapping("/unionIdToUserIds") @PostMapping("/unionIdToUserIds")
public JsonResult unionIdToUserIds(@RequestBody Map<String, Object> params) { public JsonResult unionIdToUserIds(@RequestBody Map<String, Object> params, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
List<WechatUserInfo> wechatUserInfoList = null; List<WechatUserInfo> wechatUserInfoList = null;
if (MapUtils.isNotEmpty(params)) { if (MapUtils.isNotEmpty(params)) {
List<String> unionIds = (List<String>) params.get("unionIds"); List<String> unionIds = (List<String>) params.get("unionIds");
...@@ -482,7 +488,7 @@ public class WeChatController implements IBaseController { ...@@ -482,7 +488,7 @@ public class WeChatController implements IBaseController {
if (unionIds.size() > 500) { if (unionIds.size() > 500) {
unionIds = unionIds.subList(0,500); unionIds = unionIds.subList(0,500);
} }
wechatUserInfoList = wechatService.queryListByUnionIds(unionIds); wechatUserInfoList = wechatService.queryListByUnionIds(unionIds,tenantId);
} }
} }
......
package cn.quantgroup.xyqb.controller.internal.user; package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.constant.enums.LoginType; import cn.quantgroup.xyqb.constant.enums.LoginType;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator; import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
...@@ -71,7 +72,7 @@ public class AppController implements IBaseController { ...@@ -71,7 +72,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false) Long registerFrom, @RequestParam(required = false) Long registerFrom,
@RequestParam(required = true) Long channelId, @RequestParam(required = true) Long channelId,
@RequestParam(required = true) String appChannel, @RequestParam(required = true) String appChannel,
@RequestParam(required = false) Integer tenantId, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) { HttpServletRequest request) {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) { if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
...@@ -84,7 +85,7 @@ public class AppController implements IBaseController { ...@@ -84,7 +85,7 @@ public class AppController implements IBaseController {
if (!ValidationUtil.validatePhoneNo(phoneNumber)) { if (!ValidationUtil.validatePhoneNo(phoneNumber)) {
result = JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); result = JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
}else{ }else{
User user = userService.findByPhoneInDb(phoneNumber); User user = userService.findByPhoneInDb(phoneNumber,tenantId);
// 默认为已注册 // 默认为已注册
Boolean isRegister = false; Boolean isRegister = false;
if (user == null) { if (user == null) {
...@@ -104,7 +105,7 @@ public class AppController implements IBaseController { ...@@ -104,7 +105,7 @@ public class AppController implements IBaseController {
result = JsonResult.buildErrorStateResult("无效的商户", null); result = JsonResult.buildErrorStateResult("无效的商户", null);
}else{ }else{
LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, merchant.getId(), merchant.getName(), null); LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, merchant.getId(), merchant.getName(), null);
AuthBean bean = sessionService.createSession(user, loginProperties, LoginType.AUTHLOGIN.ordinal()); AuthBean bean = sessionService.createSession(user, loginProperties, LoginType.AUTHLOGIN.ordinal(),tenantId);
LoginInfo.LoginContext context = new LoginInfo.LoginContext(); LoginInfo.LoginContext context = new LoginInfo.LoginContext();
context.setChannelId(channelId); context.setChannelId(channelId);
context.setCreatedFrom(registerFrom); context.setCreatedFrom(registerFrom);
...@@ -152,12 +153,13 @@ public class AppController implements IBaseController { ...@@ -152,12 +153,13 @@ public class AppController implements IBaseController {
@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,
@RequestParam(required = false, defaultValue = "") String appChannel, @RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) { 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);
} }
log.info("第三方用户登录 [AppController] login --> loginFrom:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom, channelId, btRegisterChannelId, IpUtil.getRemoteIP(request), idNo, name); log.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,tenantId);
if (user == null) { if (user == null) {
user = userRegisterService.register(registerFrom, phoneNo, name, channelId, btRegisterChannelId); user = userRegisterService.register(registerFrom, phoneNo, name, channelId, btRegisterChannelId);
} }
...@@ -173,7 +175,7 @@ public class AppController implements IBaseController { ...@@ -173,7 +175,7 @@ public class AppController implements IBaseController {
} }
LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, merchant.getId(), merchant.getName(), null); LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, merchant.getId(), merchant.getName(), null);
AuthBean bean = sessionService.createSession(user, loginProperties, LoginType.SUPERLOGIN.ordinal()); AuthBean bean = sessionService.createSession(user, loginProperties, LoginType.SUPERLOGIN.ordinal(),tenantId);
log.info("第三方用户登录成功 [AppController] login --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel); log.info("第三方用户登录成功 [AppController] login --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel);
return JsonResult.buildSuccessResult("登录成功", bean); return JsonResult.buildSuccessResult("登录成功", bean);
} }
...@@ -206,7 +208,8 @@ public class AppController implements IBaseController { ...@@ -206,7 +208,8 @@ public class AppController implements IBaseController {
@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,
@RequestParam(required = false, defaultValue = "") String appChannel, @RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(required = false) Integer tenantId, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) { HttpServletRequest request) {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) { if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
tenantId = TenantUtil.TENANT_DEFAULT; tenantId = TenantUtil.TENANT_DEFAULT;
...@@ -215,14 +218,14 @@ public class AppController implements IBaseController { ...@@ -215,14 +218,14 @@ public class AppController implements IBaseController {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
log.info("第三方用户登录 [AppController] loginSuper --> loginFrom:{},phoneNo:{},appChannel:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom, phoneNo, appChannel, channelId, btRegisterChannelId, IpUtil.getRemoteIP(request), idNo, name); log.info("第三方用户登录 [AppController] loginSuper --> loginFrom:{},phoneNo:{},appChannel:{},channelId:{},btRegisterChannelId:{} requestIp:{},idNo:{},name:{}", registerFrom, phoneNo, appChannel, channelId, btRegisterChannelId, IpUtil.getRemoteIP(request), idNo, name);
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
boolean isRegister=false; boolean isRegister=false;
if (user == null) { if (user == null) {
try { try {
user = userRegisterService.register(registerFrom, phoneNo, name, channelId, btRegisterChannelId); user = userRegisterService.register(registerFrom, phoneNo, name, channelId, btRegisterChannelId);
isRegister=true; isRegister=true;
} catch (PersistenceException e) { } catch (PersistenceException e) {
user = userService.findByPhoneInDb(phoneNo); user = userService.findByPhoneInDb(phoneNo,tenantId);
} }
} }
if (user == null) { if (user == null) {
...@@ -238,7 +241,7 @@ public class AppController implements IBaseController { ...@@ -238,7 +241,7 @@ public class AppController implements IBaseController {
log.info("=addLoginInfo end"); log.info("=addLoginInfo end");
LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, merchant.getId(), merchant.getName(), tenantId); LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, merchant.getId(), merchant.getName(), tenantId);
AuthBean bean = sessionService.createSession(user, loginProperties, LoginType.SUPERLOGIN.ordinal()); AuthBean bean = sessionService.createSession(user, loginProperties, LoginType.SUPERLOGIN.ordinal(),tenantId);
log.info("=createSession end"); log.info("=createSession end");
LoginInfo loginInfo = new LoginInfo(); LoginInfo loginInfo = new LoginInfo();
loginInfo.setUser(new UserRet(user)); loginInfo.setUser(new UserRet(user));
...@@ -316,7 +319,7 @@ public class AppController implements IBaseController { ...@@ -316,7 +319,7 @@ public class AppController implements IBaseController {
@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,
@RequestParam(required = false, defaultValue = "") String appChannel, @RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(required = false) Integer tenantId, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) { HttpServletRequest request) {
//默认羊小咩租户 //默认羊小咩租户
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) { if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
...@@ -326,7 +329,7 @@ public class AppController implements IBaseController { ...@@ -326,7 +329,7 @@ public class AppController implements IBaseController {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
log.info("第三方用户登录 [AppController] login2 --> loginFrom:{},channelId:{}, requestIp:{}", registerFrom, channelId, IpUtil.getRemoteIP(request)); log.info("第三方用户登录 [AppController] login2 --> loginFrom:{},channelId:{}, requestIp:{}", registerFrom, channelId, IpUtil.getRemoteIP(request));
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
} }
...@@ -335,9 +338,9 @@ public class AppController implements IBaseController { ...@@ -335,9 +338,9 @@ public class AppController implements IBaseController {
} }
LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, null, "", tenantId); LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, null, "", tenantId);
AuthBean bean = sessionService.createSession(user, loginProperties, LoginType.SUPERLOGINTWO.ordinal()); AuthBean bean = sessionService.createSession(user, loginProperties, LoginType.SUPERLOGINTWO.ordinal(),tenantId);
// 不同渠道用户补签不同模板合同 // 不同渠道用户补签不同模板合同
userService.channelUserSignContract(user, registerFrom); userService.channelUserSignContract(user, registerFrom,tenantId);
log.info("第三方用户登录成功 [AppController] login2 --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel); log.info("第三方用户登录成功 [AppController] login2 --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel);
return JsonResult.buildSuccessResult("登录成功", bean); return JsonResult.buildSuccessResult("登录成功", bean);
} }
......
...@@ -100,7 +100,6 @@ public class InnerController implements IBaseController { ...@@ -100,7 +100,6 @@ public class InnerController implements IBaseController {
* 根据手机号或身份证号查询用户UUID * 根据手机号或身份证号查询用户UUID
* *
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @param idNo - 身份证号
* @return user表的uuid * @return user表的uuid
* @yapi http://yapi.quantgroups.com/project/17/interface/api/187 * @yapi http://yapi.quantgroups.com/project/17/interface/api/187
* @Deprecated 20210318 * @Deprecated 20210318
...@@ -108,9 +107,10 @@ public class InnerController implements IBaseController { ...@@ -108,9 +107,10 @@ public class InnerController implements IBaseController {
@Deprecated @Deprecated
@IpValidator @IpValidator
@RequestMapping("/fetchUuid") @RequestMapping("/fetchUuid")
public JsonResult fetchUuid(String phoneNo, String idNo) { public JsonResult fetchUuid(String phoneNo,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
String uuid = userService.findUuid(phoneNo, idNo); ) {
log.info("根据手机号或身份证号查询用户UUID,phoneNo:{},idNo:{},uuid:{}", phoneNo, idNo, uuid); String uuid = userService.findUuid(phoneNo,tenantId);
log.info("根据手机号或身份证号查询用户UUID,phoneNo:{},uuid:{}", phoneNo, uuid);
if (org.apache.commons.lang.StringUtils.isBlank(uuid)) { if (org.apache.commons.lang.StringUtils.isBlank(uuid)) {
return JsonResult.buildErrorStateResult("未找到该用户", null); return JsonResult.buildErrorStateResult("未找到该用户", null);
} }
...@@ -122,7 +122,7 @@ public class InnerController implements IBaseController { ...@@ -122,7 +122,7 @@ public class InnerController implements IBaseController {
*/ */
@RequestMapping("/user/search/phoneNo") @RequestMapping("/user/search/phoneNo")
public JsonResult findByPhoneNo(String phoneNo, Integer tenantId) { public JsonResult findByPhoneNo(String phoneNo, Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult("查无此人", null, 4L); return JsonResult.buildErrorStateResult("查无此人", null, 4L);
} }
...@@ -135,7 +135,7 @@ public class InnerController implements IBaseController { ...@@ -135,7 +135,7 @@ public class InnerController implements IBaseController {
*/ */
@RequestMapping("/user/search/uuid") @RequestMapping("/user/search/uuid")
public JsonResult findByUuidInfo(String uuid, Integer tenantId) { public JsonResult findByUuidInfo(String uuid, Integer tenantId) {
User user = userService.findByUuidWithCache(uuid); User user = userService.findByUuidWithCache(uuid,tenantId);
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult("查无此人", null); return JsonResult.buildErrorStateResult("查无此人", null);
} }
...@@ -153,7 +153,7 @@ public class InnerController implements IBaseController { ...@@ -153,7 +153,7 @@ public class InnerController implements IBaseController {
if (StringUtils.isBlank(uuid)) { if (StringUtils.isBlank(uuid)) {
return JsonResult.buildSuccessResult(null, null); return JsonResult.buildSuccessResult(null, null);
} }
User user = userService.findByUuidWithCache(uuid); User user = userService.findByUuidWithCache(uuid,tenantId);
if (null != user) { if (null != user) {
if (!user.getEnable()) { if (!user.getEnable()) {
return JsonResult.buildSuccessResult(USER_ERROR_OR_ENABLE_ERROR, null); return JsonResult.buildSuccessResult(USER_ERROR_OR_ENABLE_ERROR, null);
...@@ -176,7 +176,7 @@ public class InnerController implements IBaseController { ...@@ -176,7 +176,7 @@ public class InnerController implements IBaseController {
if (StringUtils.isBlank(phone)) { if (StringUtils.isBlank(phone)) {
return JsonResult.buildSuccessResult(null, null); return JsonResult.buildSuccessResult(null, null);
} }
User user = userService.findByPhoneInDb(phone); User user = userService.findByPhoneInDb(phone,tenantId);
if (null != user) { if (null != user) {
if (!user.getEnable()) { if (!user.getEnable()) {
return JsonResult.buildSuccessResult(USER_ERROR_OR_ENABLE_ERROR, null); return JsonResult.buildSuccessResult(USER_ERROR_OR_ENABLE_ERROR, null);
...@@ -227,7 +227,7 @@ public class InnerController implements IBaseController { ...@@ -227,7 +227,7 @@ public class InnerController implements IBaseController {
if (tenantId == null) { if (tenantId == null) {
tenantId = TenantUtil.TENANT_DEFAULT; tenantId = TenantUtil.TENANT_DEFAULT;
} }
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo,tenantId);
if (user != null) { if (user != null) {
//存在已注销 //存在已注销
...@@ -280,7 +280,7 @@ public class InnerController implements IBaseController { ...@@ -280,7 +280,7 @@ public class InnerController implements IBaseController {
return JsonResult.buildErrorStateResult("用户姓名错误.", null); return JsonResult.buildErrorStateResult("用户姓名错误.", null);
} }
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
return JsonResult.buildErrorStateResult("用户不存在", null); return JsonResult.buildErrorStateResult("用户不存在", null);
} else if (!Objects.equals(user.getPhoneNo(), phoneNo)) { } else if (!Objects.equals(user.getPhoneNo(), phoneNo)) {
...@@ -339,7 +339,7 @@ public class InnerController implements IBaseController { ...@@ -339,7 +339,7 @@ public class InnerController implements IBaseController {
*/ */
@RequestMapping("/user/search/userId") @RequestMapping("/user/search/userId")
public JsonResult findUserByUserId(Long userId, Integer tenantId) { public JsonResult findUserByUserId(Long userId, Integer tenantId) {
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
if (user != null) { if (user != null) {
return JsonResult.buildSuccessResult(null, new UserRet(user)); return JsonResult.buildSuccessResult(null, new UserRet(user));
} }
...@@ -368,12 +368,12 @@ public class InnerController implements IBaseController { ...@@ -368,12 +368,12 @@ public class InnerController implements IBaseController {
* @return * @return
*/ */
@RequestMapping("/user_full_info/search/phone") @RequestMapping("/user_full_info/search/phone")
public JsonResult findUserFullInfoByPhone(String phoneNo) { public JsonResult findUserFullInfoByPhone(String phoneNo,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(phoneNo)) {
log.warn("[findUserFullInfoByPhone]phoneNo为空"); log.warn("[findUserFullInfoByPhone]phoneNo为空");
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
Optional<UserFullInfo> userFullInfoOptional = userApiService.getUserFullInfoByPhone(phoneNo); Optional<UserFullInfo> userFullInfoOptional = userApiService.getUserFullInfoByPhone(phoneNo,tenantId);
if (!userFullInfoOptional.isPresent()) { if (!userFullInfoOptional.isPresent()) {
log.warn("[findUserFullInfoByPhone]没有用户信息,phoneNo={}", Md5Util.build(phoneNo)); log.warn("[findUserFullInfoByPhone]没有用户信息,phoneNo={}", Md5Util.build(phoneNo));
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
...@@ -388,12 +388,12 @@ public class InnerController implements IBaseController { ...@@ -388,12 +388,12 @@ public class InnerController implements IBaseController {
* @return * @return
*/ */
@RequestMapping("/user_full_info/search/uuid") @RequestMapping("/user_full_info/search/uuid")
public JsonResult findUserFullInfoByUUuid(String uuid) { public JsonResult findUserFullInfoByUUuid(String uuid,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(uuid)) { if (StringUtils.isBlank(uuid)) {
log.warn("[findUserFullInfoByUUuid]uuid为空"); log.warn("[findUserFullInfoByUUuid]uuid为空");
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
Optional<UserFullInfo> userFullInfoOptional = userApiService.getUserFullInfoByUuid(uuid); Optional<UserFullInfo> userFullInfoOptional = userApiService.getUserFullInfoByUuid(uuid,tenantId);
if (!userFullInfoOptional.isPresent()) { if (!userFullInfoOptional.isPresent()) {
log.warn("[findUserFullInfoByUUuid]没有用户信息,uuid={}", uuid); log.warn("[findUserFullInfoByUUuid]没有用户信息,uuid={}", uuid);
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
...@@ -434,11 +434,11 @@ public class InnerController implements IBaseController { ...@@ -434,11 +434,11 @@ public class InnerController implements IBaseController {
} }
@RequestMapping("/user/query/openId") @RequestMapping("/user/query/openId")
public JsonResult queryOpenIdByUserId(Long userId) { public JsonResult queryOpenIdByUserId(Long userId,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (userId == null) { if (userId == null) {
return JsonResult.buildErrorStateResult("userId不能为空", null); return JsonResult.buildErrorStateResult("userId不能为空", null);
} }
WechatUserInfo wechatUserInfo = wechatService.queryByUserId(userId); WechatUserInfo wechatUserInfo = wechatService.queryByUserId(userId,tenantId);
log.info("根据用户userId查询:微信关联:userId:{},WechatUserInfo:{}", userId, wechatUserInfo); log.info("根据用户userId查询:微信关联:userId:{},WechatUserInfo:{}", userId, wechatUserInfo);
if (wechatUserInfo == null) { if (wechatUserInfo == null) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
...@@ -458,11 +458,11 @@ public class InnerController implements IBaseController { ...@@ -458,11 +458,11 @@ public class InnerController implements IBaseController {
public JsonResult findUserAssociationModel(Long id, String phoneNo, String uuid,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult findUserAssociationModel(Long id, String phoneNo, String uuid,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = null; User user = null;
if (!Objects.isNull(id) && id > 0) { if (!Objects.isNull(id) && id > 0) {
user = userService.findById(id); user = userService.findById(id,tenantId);
} else if (ValidationUtil.validatePhoneNo(phoneNo)) { } else if (ValidationUtil.validatePhoneNo(phoneNo)) {
user = userService.findByPhoneWithCache(phoneNo); user = userService.findByPhoneWithCache(phoneNo,tenantId);
} else if (StringUtils.isNotBlank(uuid)) { } else if (StringUtils.isNotBlank(uuid)) {
user = userService.findByUuidWithCache(uuid); user = userService.findByUuidWithCache(uuid,tenantId);
} }
UserInfoEntity userDetail = null; UserInfoEntity userDetail = null;
if (Objects.nonNull(user) && Objects.nonNull(user.getId()) && user.getId() > 0) { if (Objects.nonNull(user) && Objects.nonNull(user.getId()) && user.getId() > 0) {
...@@ -517,7 +517,7 @@ public class InnerController implements IBaseController { ...@@ -517,7 +517,7 @@ public class InnerController implements IBaseController {
String.valueOf(userId).concat(":").concat(phoneNo)); String.valueOf(userId).concat(":").concat(phoneNo));
} }
UserAssociationModel bean = null; UserAssociationModel bean = null;
User user = userIdOk ? userService.findById(userId) : userService.findByPhoneWithCache(phoneNo); User user = userIdOk ? userService.findById(userId,tenantId) : userService.findByPhoneWithCache(phoneNo,tenantId);
if (!Objects.isNull(user)) { if (!Objects.isNull(user)) {
bean = findUserAssociationModelByUser(user,tenantId); bean = findUserAssociationModelByUser(user,tenantId);
} }
...@@ -569,12 +569,13 @@ public class InnerController implements IBaseController { ...@@ -569,12 +569,13 @@ public class InnerController implements IBaseController {
@RequestMapping("/user/wechat/phone_no") @RequestMapping("/user/wechat/phone_no")
public JsonResult queryOpenIdByPhoneNo(String phoneNo) { public JsonResult queryOpenIdByPhoneNo(String phoneNo,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
,@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号格式错误", null); return JsonResult.buildErrorStateResult("手机号格式错误", null);
} }
WechatUserInfo wechatUserInfo = wechatService.findWechatUserInfoByPhoneNo(phoneNo); WechatUserInfo wechatUserInfo = wechatService.findWechatUserInfoByPhoneNo(phoneNo, tenantId);
return JsonResult.buildSuccessResult(null, return JsonResult.buildSuccessResult(null,
null == wechatUserInfo ? null : wechatUserInfo.getOpenId()); null == wechatUserInfo ? null : wechatUserInfo.getOpenId());
} }
...@@ -586,12 +587,12 @@ public class InnerController implements IBaseController { ...@@ -586,12 +587,12 @@ public class InnerController implements IBaseController {
* @param enable - 用户激活状态 * @param enable - 用户激活状态
* @return * @return
*/ */
private boolean flushUserStatus(Long userId, boolean enable) { private boolean flushUserStatus(Long userId, boolean enable,Integer tenantId) {
if (null == userId || 0L == userId) { if (null == userId || 0L == userId) {
log.info("刷新用户激活状态失败:userId:{},enable:{}", userId, enable); log.info("刷新用户激活状态失败:userId:{},enable:{}", userId, enable);
return false; return false;
} }
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
if (null == user) { if (null == user) {
log.info("刷新用户激活状态失败:userId:{},enable:{},user:{}", userId, enable, user); log.info("刷新用户激活状态失败:userId:{},enable:{},user:{}", userId, enable, user);
return false; return false;
...@@ -600,17 +601,17 @@ public class InnerController implements IBaseController { ...@@ -600,17 +601,17 @@ public class InnerController implements IBaseController {
log.info("刷新用户激活状态失败:userId:{},enable:{},user:{}", userId, enable, user); log.info("刷新用户激活状态失败:userId:{},enable:{},user:{}", userId, enable, user);
user = userService.saveUser(user); user = userService.saveUser(user);
if (!user.getEnable()) { if (!user.getEnable()) {
sessionService.deleteByUserId(userId); sessionService.deleteByUserId(userId,tenantId);
sessionService.deleteUserCatch(user); sessionService.deleteUserCatch(user,tenantId);
// 禁用微信 // 禁用微信
wechatService.forbiddenUserWeChat(userId); wechatService.forbiddenUserWeChat(userId,tenantId);
} }
applicationEventPublisher.publishEvent(new DisableActiveEvent(this, user)); applicationEventPublisher.publishEvent(new DisableActiveEvent(this, user));
return Objects.equals(enable, user.getEnable()); return Objects.equals(enable, user.getEnable());
} }
@RequestMapping("/user/findByPhones") @RequestMapping("/user/findByPhones")
public JsonResult getUserIdByPhones(@RequestParam("userPhones") String userPhones) { public JsonResult getUserIdByPhones(@RequestParam("userPhones") String userPhones, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(userPhones)) { if (StringUtils.isBlank(userPhones)) {
return JsonResult.buildErrorStateResult("传入用户手机号不可为空", null); return JsonResult.buildErrorStateResult("传入用户手机号不可为空", null);
} }
...@@ -619,7 +620,7 @@ public class InnerController implements IBaseController { ...@@ -619,7 +620,7 @@ public class InnerController implements IBaseController {
if (!CollectionUtils.isEmpty(phones)) { if (!CollectionUtils.isEmpty(phones)) {
phones = phones.stream().filter(s -> StringUtils.isNotBlank(s)).collect(Collectors.toList()); phones = phones.stream().filter(s -> StringUtils.isNotBlank(s)).collect(Collectors.toList());
if (phones.size() <= MAX_SIZE) { if (phones.size() <= MAX_SIZE) {
List<User> users = userService.findByPhones(phones); List<User> users = userService.findByPhones(phones,tenantId);
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(users)) { if (org.apache.commons.collections.CollectionUtils.isNotEmpty(users)) {
return JsonResult.buildSuccessResult(null, return JsonResult.buildSuccessResult(null,
users.stream().collect(Collectors.toMap(User::getPhoneNo, User::getId))); users.stream().collect(Collectors.toMap(User::getPhoneNo, User::getId)));
...@@ -677,7 +678,8 @@ public class InnerController implements IBaseController { ...@@ -677,7 +678,8 @@ public class InnerController implements IBaseController {
public JsonResult saveMulti(String registeredFrom, String channelId, String phoneNo, String name, public JsonResult saveMulti(String registeredFrom, String channelId, String phoneNo, String name,
String idNo, String provinceCode, String province, String cityCode, String city, String idNo, String provinceCode, String province, String cityCode, String city,
String districtCode, String district, String address, String contacts, String districtCode, String district, String address, String contacts,
@RequestParam(defaultValue = "0", required = false) Long btRegisterChannelId) { @RequestParam(defaultValue = "0", required = false) Long btRegisterChannelId
, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (!NumberUtils.isDigits(registeredFrom)) { if (!NumberUtils.isDigits(registeredFrom)) {
return JsonResult.buildErrorStateResult("注册渠道异常.", null); return JsonResult.buildErrorStateResult("注册渠道异常.", null);
} }
...@@ -714,7 +716,7 @@ public class InnerController implements IBaseController { ...@@ -714,7 +716,7 @@ public class InnerController implements IBaseController {
} }
channelId = MoreObjects.firstNonNull(channelId, "-1"); channelId = MoreObjects.firstNonNull(channelId, "-1");
// 验证用户是否已存在 // 验证用户是否已存在
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (null != user) { if (null != user) {
return JsonResult.buildErrorStateResult("用户已存在,手机号被占用", null); return JsonResult.buildErrorStateResult("用户已存在,手机号被占用", null);
} }
...@@ -727,11 +729,11 @@ public class InnerController implements IBaseController { ...@@ -727,11 +729,11 @@ public class InnerController implements IBaseController {
//根据日期时间段查询新注册用户信息并返回 //根据日期时间段查询新注册用户信息并返回
@RequestMapping("/contract/queryRegisterUsers") @RequestMapping("/contract/queryRegisterUsers")
public JsonResult findRegisterUserByTime(String beginTime, String endTime) { public JsonResult findRegisterUserByTime(String beginTime, String endTime, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (null == beginTime || endTime == null) { if (null == beginTime || endTime == null) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
List<User> userList = userService.findRegisterUserByTime(beginTime, endTime); List<User> userList = userService.findRegisterUserByTime(beginTime, endTime,tenantId);
return JsonResult.buildSuccessResult(null, userList); return JsonResult.buildSuccessResult(null, userList);
} }
...@@ -750,7 +752,8 @@ public class InnerController implements IBaseController { ...@@ -750,7 +752,8 @@ public class InnerController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long createdFrom, @RequestParam(required = false, defaultValue = "1") Long createdFrom,
@RequestParam(required = false, defaultValue = "xyqb") String key, @RequestParam(required = false, defaultValue = "xyqb") String key,
@RequestParam(required = false) Long btRegisterChannelId, @RequestParam(required = false) Long btRegisterChannelId,
@RequestParam(required = false) String dimension) { @RequestParam(required = false) String dimension , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) {
log.info( log.info(
"/innerapi/verifyPhoneAndCode -> phoneNo:{},verificationCode:{},channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{}", "/innerapi/verifyPhoneAndCode -> phoneNo:{},verificationCode:{},channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{}",
phoneNo, verificationCode, channelId, appChannel, createdFrom, btRegisterChannelId, key, phoneNo, verificationCode, channelId, appChannel, createdFrom, btRegisterChannelId, key,
...@@ -774,7 +777,7 @@ public class InnerController implements IBaseController { ...@@ -774,7 +777,7 @@ public class InnerController implements IBaseController {
log.info("验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode); log.info("验证码校验失败,phoneNo:{} , verificationCode:{}", phoneNo, verificationCode);
return JsonResult.buildErrorStateResult("短信验证码错误", ""); return JsonResult.buildErrorStateResult("短信验证码错误", "");
} }
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo,tenantId);
// 检查用户有效性 // 检查用户有效性
if (user != null && !user.getEnable()) { if (user != null && !user.getEnable()) {
log.error("用户不存在,或者已经注销,phoneNo:{}", phoneNo); log.error("用户不存在,或者已经注销,phoneNo:{}", phoneNo);
...@@ -796,8 +799,8 @@ public class InnerController implements IBaseController { ...@@ -796,8 +799,8 @@ public class InnerController implements IBaseController {
} }
@RequestMapping("/login") @RequestMapping("/login")
public JsonResult login(@RequestParam String phoneNo, @RequestParam String password) { public JsonResult login(@RequestParam String phoneNo, @RequestParam String password , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = checkPhoneNoAndPassword(phoneNo, password); User user = checkPhoneNoAndPassword(phoneNo, password,tenantId);
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult("用户名或密码不正确", null); return JsonResult.buildErrorStateResult("用户名或密码不正确", null);
} }
...@@ -805,7 +808,7 @@ public class InnerController implements IBaseController { ...@@ -805,7 +808,7 @@ public class InnerController implements IBaseController {
return JsonResult.buildSuccessResult("校验成功", model); return JsonResult.buildSuccessResult("校验成功", model);
} }
private User checkPhoneNoAndPassword(String phoneNo, String password) { private User checkPhoneNoAndPassword(String phoneNo, String password,Integer tenantId) {
byte[] byPhoneNo = Base64.decodeBase64(phoneNo); byte[] byPhoneNo = Base64.decodeBase64(phoneNo);
String bufPhoneNo = ""; String bufPhoneNo = "";
try { try {
...@@ -824,7 +827,7 @@ public class InnerController implements IBaseController { ...@@ -824,7 +827,7 @@ public class InnerController implements IBaseController {
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
log.error("不支持的编码: ", e); log.error("不支持的编码: ", e);
} }
User user = userService.findByPhoneWithCache(bufPhoneNo); User user = userService.findByPhoneWithCache(bufPhoneNo,tenantId);
if (Objects.isNull(user) || Objects.equals(Boolean.FALSE, user.getEnable())) { if (Objects.isNull(user) || Objects.equals(Boolean.FALSE, user.getEnable())) {
return null; return null;
} }
...@@ -853,11 +856,11 @@ public class InnerController implements IBaseController { ...@@ -853,11 +856,11 @@ public class InnerController implements IBaseController {
* @return * @return
*/ */
@RequestMapping("/user/enable") @RequestMapping("/user/enable")
public JsonResult isEnable(String phoneNo) { public JsonResult isEnable(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
boolean flag = false; boolean flag = false;
Map validMap = Maps.newHashMap(); Map validMap = Maps.newHashMap();
validMap.put("valid", flag); validMap.put("valid", flag);
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (user != null && user.getEnable()) { if (user != null && user.getEnable()) {
validMap.put("valid", true); validMap.put("valid", true);
validMap.put("id", user.getId()); validMap.put("id", user.getId());
...@@ -874,9 +877,10 @@ public class InnerController implements IBaseController { ...@@ -874,9 +877,10 @@ public class InnerController implements IBaseController {
* @return * @return
*/ */
@RequestMapping(path = "/user/active", method = RequestMethod.POST) @RequestMapping(path = "/user/active", method = RequestMethod.POST)
public JsonResult activeUser(Long userId, public JsonResult activeUser(Long userId
, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
@RequestHeader(value = "Access-Token", required = false) String accessToken) { @RequestHeader(value = "Access-Token", required = false) String accessToken) {
boolean flushed = flushUserStatus(userId, true); boolean flushed = flushUserStatus(userId, true,tenantId);
UserDisableRecord userDisableRecord = new UserDisableRecord(); UserDisableRecord userDisableRecord = new UserDisableRecord();
userDisableRecord.setUserId(userId); userDisableRecord.setUserId(userId);
if (StringUtils.isNotEmpty(accessToken)) { if (StringUtils.isNotEmpty(accessToken)) {
...@@ -898,9 +902,10 @@ public class InnerController implements IBaseController { ...@@ -898,9 +902,10 @@ public class InnerController implements IBaseController {
*/ */
@RequestMapping(path = "/user/disable", method = RequestMethod.POST) @RequestMapping(path = "/user/disable", method = RequestMethod.POST)
public JsonResult forbiddenUser(Long userId, public JsonResult forbiddenUser(Long userId,
@Length(max = 10, message = "原因不能大于10个字符") String reason, @Length(max = 10, message = "原因不能大于10个字符") String reason
, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
@RequestHeader(value = "Access-Token", required = false) String accessToken) { @RequestHeader(value = "Access-Token", required = false) String accessToken) {
boolean flushed = flushUserStatus(userId, false); boolean flushed = flushUserStatus(userId, false,tenantId);
UserDisableRecord userDisableRecord = new UserDisableRecord(); UserDisableRecord userDisableRecord = new UserDisableRecord();
userDisableRecord.setUserId(userId); userDisableRecord.setUserId(userId);
if (StringUtils.isNotEmpty(accessToken)) { if (StringUtils.isNotEmpty(accessToken)) {
...@@ -950,7 +955,7 @@ public class InnerController implements IBaseController { ...@@ -950,7 +955,7 @@ public class InnerController implements IBaseController {
*/ */
@RequestMapping(path = "/user/password/reset", method = RequestMethod.POST) @RequestMapping(path = "/user/password/reset", method = RequestMethod.POST)
public JsonResult resetPassword(@RequestParam("phone") String phone, public JsonResult resetPassword(@RequestParam("phone") String phone,
@RequestParam(required = false) String password) { @RequestParam(required = false) String password , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (ValidationUtil.validatePhoneNo(phone)) { if (ValidationUtil.validatePhoneNo(phone)) {
// 默认重置的密码是123456 // 默认重置的密码是123456
if (StringUtils.isBlank(password)) { if (StringUtils.isBlank(password)) {
...@@ -959,7 +964,7 @@ public class InnerController implements IBaseController { ...@@ -959,7 +964,7 @@ public class InnerController implements IBaseController {
return JsonResult.buildErrorStateResult(PasswordUtil.TOAST_MSG, null); return JsonResult.buildErrorStateResult(PasswordUtil.TOAST_MSG, null);
} }
try { try {
boolean result = userService.resetPassword(phone, password); boolean result = userService.resetPassword(phone, password,tenantId);
log.info("重置用户密码,phoneNo:[{}],password:[{}],result:[{}]", phone, password, result); log.info("重置用户密码,phoneNo:[{}],password:[{}],result:[{}]", phone, password, result);
if (result) { if (result) {
return JsonResult.buildSuccessResult("用户密码已重置.", password); return JsonResult.buildSuccessResult("用户密码已重置.", password);
...@@ -976,13 +981,13 @@ public class InnerController implements IBaseController { ...@@ -976,13 +981,13 @@ public class InnerController implements IBaseController {
*/ */
@RequestMapping("/user/password/reset/{key}/{phone}") @RequestMapping("/user/password/reset/{key}/{phone}")
public JsonResult resetPasswordByKey(@PathVariable("key") String key, public JsonResult resetPasswordByKey(@PathVariable("key") String key,
@PathVariable("phone") String phone) { @PathVariable("phone") String phone , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
log.info("密码重置请求,phone:[{}]", phone); log.info("密码重置请求,phone:[{}]", phone);
if (!RESET_PWD_TOKEN.equalsIgnoreCase(key)) { if (!RESET_PWD_TOKEN.equalsIgnoreCase(key)) {
log.error("密码重置失败,key错误!@!,phone:[{}]", phone); log.error("密码重置失败,key错误!@!,phone:[{}]", phone);
return JsonResult.buildErrorStateResult("用户密码重置失败.", HttpStatus.SC_UNAUTHORIZED); return JsonResult.buildErrorStateResult("用户密码重置失败.", HttpStatus.SC_UNAUTHORIZED);
} }
return resetPassword(phone, null); return resetPassword(phone, null,tenantId);
} }
/** /**
...@@ -996,7 +1001,7 @@ public class InnerController implements IBaseController { ...@@ -996,7 +1001,7 @@ public class InnerController implements IBaseController {
*/ */
@RequestMapping("/forbiddenUserOrNot") @RequestMapping("/forbiddenUserOrNot")
public JsonResult forbiddenUserOrNot(@RequestParam String phoneNo, @RequestParam Boolean enable, public JsonResult forbiddenUserOrNot(@RequestParam String phoneNo, @RequestParam Boolean enable,
@RequestParam String reason, @RequestParam String content) { @RequestParam String reason, @RequestParam String content , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(phoneNo) || StringUtils.isBlank(reason)) { if (StringUtils.isBlank(phoneNo) || StringUtils.isBlank(reason)) {
return JsonResult.buildErrorStateResult("参数有误", null); return JsonResult.buildErrorStateResult("参数有误", null);
} }
...@@ -1014,14 +1019,14 @@ public class InnerController implements IBaseController { ...@@ -1014,14 +1019,14 @@ public class InnerController implements IBaseController {
log.info("[forbiddenUserOrNot][禁用或激活用户]:用户手机号错误, phoneNo:{}", phoneNo); log.info("[forbiddenUserOrNot][禁用或激活用户]:用户手机号错误, phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("用户手机号错误", null); return JsonResult.buildErrorStateResult("用户手机号错误", null);
} }
int affectedRows = userService.forbiddenUser(enable, phoneNo); int affectedRows = userService.forbiddenUser(enable, phoneNo,tenantId);
// 清除缓存,解除微信关联 // 清除缓存,解除微信关联
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (null != user && !user.getEnable()) { if (null != user && !user.getEnable()) {
sessionService.deleteByUserId(user.getId()); sessionService.deleteByUserId(user.getId(),tenantId);
sessionService.deleteUserCatch(user); sessionService.deleteUserCatch(user,tenantId);
// 禁用微信 // 禁用微信
wechatService.forbiddenUserWeChat(user.getId()); wechatService.forbiddenUserWeChat(user.getId(),tenantId);
} }
log.info( log.info(
"[forbiddenUserOrNot][禁用或激活用户]:理由:reason:{},手机号phoneNo:{},受影响的行数affectedRows:{}", "[forbiddenUserOrNot][禁用或激活用户]:理由:reason:{},手机号phoneNo:{},受影响的行数affectedRows:{}",
...@@ -1039,7 +1044,7 @@ public class InnerController implements IBaseController { ...@@ -1039,7 +1044,7 @@ public class InnerController implements IBaseController {
*/ */
@RequestMapping("/forbiddenUserWeChat") @RequestMapping("/forbiddenUserWeChat")
public JsonResult forbiddenUserWeChat(@RequestParam Long userId, @RequestParam String reason, public JsonResult forbiddenUserWeChat(@RequestParam Long userId, @RequestParam String reason,
@RequestParam String content) { @RequestParam String content,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(reason) || null == userId || userId <= 0) { if (StringUtils.isBlank(reason) || null == userId || userId <= 0) {
return JsonResult.buildErrorStateResult("参数有误", null); return JsonResult.buildErrorStateResult("参数有误", null);
} }
...@@ -1051,7 +1056,7 @@ public class InnerController implements IBaseController { ...@@ -1051,7 +1056,7 @@ public class InnerController implements IBaseController {
if (null == str || !str.equals(userId.toString())) { if (null == str || !str.equals(userId.toString())) {
return JsonResult.buildErrorStateResult("解密有误", null); return JsonResult.buildErrorStateResult("解密有误", null);
} }
int affectedRows = wechatService.forbiddenUserWeChat(userId); int affectedRows = wechatService.forbiddenUserWeChat(userId,tenantId);
log.info("用户微信禁用,userId:{},禁用的原因reason:{},受影响的行数affectedRows:{}", userId, log.info("用户微信禁用,userId:{},禁用的原因reason:{},受影响的行数affectedRows:{}", userId,
reason, affectedRows); reason, affectedRows);
return JsonResult.buildSuccessResult("用户禁用微信成功", affectedRows); return JsonResult.buildSuccessResult("用户禁用微信成功", affectedRows);
...@@ -1063,8 +1068,8 @@ public class InnerController implements IBaseController { ...@@ -1063,8 +1068,8 @@ public class InnerController implements IBaseController {
} }
@RequestMapping("/delete/session") @RequestMapping("/delete/session")
public JsonResult deleteSession(Long userId) { public JsonResult deleteSession(Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
sessionService.deleteByUserId(userId); sessionService.deleteByUserId(userId,tenantId);
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
...@@ -1075,12 +1080,12 @@ public class InnerController implements IBaseController { ...@@ -1075,12 +1080,12 @@ public class InnerController implements IBaseController {
* @return 销户结果 * @return 销户结果
*/ */
@GetMapping("/user/delete/{userId}") @GetMapping("/user/delete/{userId}")
public JsonResult<?> deregister(@NotNull @PathVariable("userId") Long userId) { public JsonResult<?> deregister(@NotNull @PathVariable("userId") Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
log.info("用户id[{}], 销户开始", userId); log.info("用户id[{}], 销户开始", userId);
/* 执行销户 */ /* 执行销户 */
userService.deregister(userId); userService.deregister(userId,tenantId);
log.info("用户id[{}], 销户成功", userId); log.info("用户id[{}], 销户成功", userId);
return JsonResult.buildSuccessResult("用户销户成功", true); return JsonResult.buildSuccessResult("用户销户成功", true);
......
...@@ -55,7 +55,7 @@ public class SyncUserController { ...@@ -55,7 +55,7 @@ public class SyncUserController {
return JsonResult.buildErrorStateResult("姓名错误", name); return JsonResult.buildErrorStateResult("姓名错误", name);
} }
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo,tenantId);
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
log.error("用户不存在,phoneNo:{}", phoneNo); log.error("用户不存在,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("用户不存在", phoneNo); return JsonResult.buildErrorStateResult("用户不存在", phoneNo);
...@@ -95,7 +95,7 @@ public class SyncUserController { ...@@ -95,7 +95,7 @@ public class SyncUserController {
if (!Objects.equals(KEY, key) || !ValidationUtil.validatePhoneNo(phoneNo)) { if (!Objects.equals(KEY, key) || !ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
...@@ -112,7 +112,7 @@ public class SyncUserController { ...@@ -112,7 +112,7 @@ public class SyncUserController {
if (StringUtils.isEmpty(uuid)) { if (StringUtils.isEmpty(uuid)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
User user = userService.findByUuidWithCache(uuid); User user = userService.findByUuidWithCache(uuid,tenantId);
if (null == user) { if (null == user) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
......
...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.controller.internal.user; ...@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator; import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.exception.VerificationCodeErrorException; import cn.quantgroup.xyqb.exception.VerificationCodeErrorException;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -39,11 +40,11 @@ public class UserApiController { ...@@ -39,11 +40,11 @@ public class UserApiController {
private ISmsService smsService; private ISmsService smsService;
@RequestMapping("/user/is_passwd_set") @RequestMapping("/user/is_passwd_set")
public JsonResult isPasswordSet(String phoneNo) { public JsonResult isPasswordSet(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo,tenantId);
if (null == user) { if (null == user) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
...@@ -66,7 +67,7 @@ public class UserApiController { ...@@ -66,7 +67,7 @@ public class UserApiController {
public JsonResult checkToken( public JsonResult checkToken(
@PathVariable("token") String token, @PathVariable("token") String token,
@RequestParam(name = "prolong", required = false, defaultValue = "false") Boolean prolong, @RequestParam(name = "prolong", required = false, defaultValue = "false") Boolean prolong,
@RequestParam(name = "prolongTime", required = false, defaultValue = "86400") Long prolongTime) { @RequestParam(name = "prolongTime", required = false, defaultValue = "86400") Long prolongTime , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (Objects.isNull(token) || !ValidationUtil.validateToken(token)) { if (Objects.isNull(token) || !ValidationUtil.validateToken(token)) {
return JsonResult.buildErrorStateResult("token regular invalid ", token); return JsonResult.buildErrorStateResult("token regular invalid ", token);
} }
...@@ -86,7 +87,7 @@ public class UserApiController { ...@@ -86,7 +87,7 @@ public class UserApiController {
} else { } else {
/* 延续session生命期 */ /* 延续session生命期 */
try { try {
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(), prolongTime); sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(), prolongTime,tenantId);
log.info("延续token:[{}]生命期,result:[{}]", token, true); log.info("延续token:[{}]生命期,result:[{}]", token, true);
} finally { } finally {
XyqbSessionContextHolder.releaseSession(); XyqbSessionContextHolder.releaseSession();
......
...@@ -82,12 +82,12 @@ public class UserCenterController { ...@@ -82,12 +82,12 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/queryNick") @RequestMapping("/queryNick")
public JsonResult queryUserNick(String phoneNo) { public JsonResult queryUserNick(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
...@@ -107,12 +107,12 @@ public class UserCenterController { ...@@ -107,12 +107,12 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/saveNick") @RequestMapping("/saveNick")
public JsonResult saveUserNick(String phoneNo, String nick) { public JsonResult saveUserNick(String phoneNo, String nick , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
...@@ -154,12 +154,12 @@ public class UserCenterController { ...@@ -154,12 +154,12 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/save/avatar") @RequestMapping("/save/avatar")
public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl) { public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(avatarUrl) || StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(avatarUrl) || StringUtils.isBlank(phoneNo)) {
log.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo); log.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
...@@ -186,7 +186,7 @@ public class UserCenterController { ...@@ -186,7 +186,7 @@ public class UserCenterController {
log.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
...@@ -207,12 +207,12 @@ public class UserCenterController { ...@@ -207,12 +207,12 @@ public class UserCenterController {
@AccessForbiddenValidator @AccessForbiddenValidator
@PasswordFreeAccessValidator @PasswordFreeAccessValidator
@RequestMapping("/personalData") @RequestMapping("/personalData")
public JsonResult personalData(String phoneNo) { public JsonResult personalData(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
} }
Long userId = queryUserId(phoneNo); Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) { if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null); return JsonResult.buildErrorStateResult("该用户不存在", null);
} }
...@@ -229,8 +229,8 @@ public class UserCenterController { ...@@ -229,8 +229,8 @@ public class UserCenterController {
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
private Long queryUserId(String phoneNo) { private Long queryUserId(String phoneNo,Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
return null == user ? null : user.getId(); return null == user ? null : user.getId();
} }
......
package cn.quantgroup.xyqb.controller.middleoffice.applet; package cn.quantgroup.xyqb.controller.middleoffice.applet;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.login.ILoginModule; import cn.quantgroup.xyqb.controller.middleoffice.login.ILoginModule;
import cn.quantgroup.xyqb.controller.middleoffice.login.LoginVo; import cn.quantgroup.xyqb.controller.middleoffice.login.LoginVo;
import cn.quantgroup.xyqb.entity.middleoffice.AppletParamEntry; import cn.quantgroup.xyqb.entity.middleoffice.AppletParamEntry;
...@@ -64,12 +65,12 @@ public class AppletController { ...@@ -64,12 +65,12 @@ public class AppletController {
*/ */
@Validated @Validated
@PostMapping("/login") @PostMapping("/login")
public JsonResult login(@RequestParam String appName, @RequestParam String openId, @RequestParam(required = false) Integer tenantId, String utmSource, @RequestParam(required = false) Integer appNo, @RequestParam(required = false) String unionId) { public JsonResult login(@RequestParam String appName, @RequestParam String openId, @RequestParam(required = false) Integer tenantId, String utmSource, @RequestParam(required = false) Integer appNo, @RequestParam(required = false) String unionId, @RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId) {
if (!containsAppName(appName)) { if (!containsAppName(appName)) {
throw new DataException("appName不合法"); throw new DataException("appName不合法");
} }
LoginVo login = iAppletService.login(appName, openId, tenantId, utmSource, unionId); LoginVo login = iAppletService.login(appName, openId, tenantId, utmSource, unionId,appId);
return JsonResult.buildSuccessResultGeneric(login); return JsonResult.buildSuccessResultGeneric(login);
} }
......
...@@ -7,9 +7,9 @@ public interface ILoginModule { ...@@ -7,9 +7,9 @@ public interface ILoginModule {
LoginVo login(VerifyTypeEnum type, Boolean reg, LoginVo login(VerifyTypeEnum type, Boolean reg,
Long channelId, String appChannel, Long channelId, String appChannel,
String wechatOpenId, String phoneNo, String wechatOpenId, String phoneNo,
String verify); String verify,Integer tenantId);
Boolean modifyPwd(VerifyTypeEnum type, String phoneNo, String password, String verify); Boolean modifyPwd(VerifyTypeEnum type, String phoneNo, String password, String verify,Integer tenantId);
LoginVo loginByUserId(Long channelId, String appChannel, Long userId, Integer tenantId); LoginVo loginByUserId(Long channelId, String appChannel, Long userId, Integer tenantId);
} }
package cn.quantgroup.xyqb.controller.middleoffice.login; package cn.quantgroup.xyqb.controller.middleoffice.login;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum; import cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -26,21 +27,21 @@ public class LoginController { ...@@ -26,21 +27,21 @@ public class LoginController {
@RequestParam(required = false) String appChannel, @RequestParam(required = false) String appChannel,
@RequestParam(required = false) String wechatOpenId, @RequestParam(required = false) String wechatOpenId,
@RequestParam String phoneNo, @RequestParam String phoneNo,
@RequestParam(required = false) String verify @RequestParam(required = false) String verify,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) { ) {
LoginVo login = loginModule.login(type, autoReg, channelId, appChannel, wechatOpenId, phoneNo, verify); LoginVo login = loginModule.login(type, autoReg, channelId, appChannel, wechatOpenId, phoneNo, verify,tenantId);
return JsonResult.buildSuccessResultGeneric(login); return JsonResult.buildSuccessResultGeneric(login);
} }
@PatchMapping("/modify/pwd") @PatchMapping("/modify/pwd")
public JsonResult modifyByPwd(String phoneNo, String password, String passwordNew) { public JsonResult modifyByPwd(String phoneNo, String password, String passwordNew,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
loginModule.modifyPwd(VerifyTypeEnum.pwd, phoneNo, password, passwordNew); loginModule.modifyPwd(VerifyTypeEnum.pwd, phoneNo, password, passwordNew,tenantId);
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
@PatchMapping("/modify/sms") @PatchMapping("/modify/sms")
public JsonResult modifyBySms(String phoneNo, String password, String verificationCode) { public JsonResult modifyBySms(String phoneNo, String password, String verificationCode,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
loginModule.modifyPwd(VerifyTypeEnum.sms, phoneNo, password, verificationCode); loginModule.modifyPwd(VerifyTypeEnum.sms, phoneNo, password, verificationCode,tenantId);
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
......
...@@ -35,8 +35,8 @@ public class LoginModule implements ILoginModule { ...@@ -35,8 +35,8 @@ public class LoginModule implements ILoginModule {
private ISessionService sessionService; private ISessionService sessionService;
@Override @Override
public LoginVo login(VerifyTypeEnum type, Boolean reg, Long channelId, String appChannel, String wechatOpenId, String phoneNo, String verify) { public LoginVo login(VerifyTypeEnum type, Boolean reg, Long channelId, String appChannel, String wechatOpenId, String phoneNo, String verify,Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
boolean autoReg = reg && type != VerifyTypeEnum.pwd; boolean autoReg = reg && type != VerifyTypeEnum.pwd;
//auto reg //auto reg
if (user == null) { if (user == null) {
...@@ -64,7 +64,7 @@ public class LoginModule implements ILoginModule { ...@@ -64,7 +64,7 @@ public class LoginModule implements ILoginModule {
.channelId(channelId) .channelId(channelId)
.merchantName("xyqb") .merchantName("xyqb")
.build(); .build();
AuthBean session = sessionService.createSession(user, loginProperties, LoginType.ACCOUNTPASSWORD.ordinal()); AuthBean session = sessionService.createSession(user, loginProperties, LoginType.ACCOUNTPASSWORD.ordinal(),tenantId);
return LoginVo.builder() return LoginVo.builder()
.hasPassword(user.getHasPassword()) .hasPassword(user.getHasPassword())
.phoneNo(phoneNo) .phoneNo(phoneNo)
...@@ -74,20 +74,20 @@ public class LoginModule implements ILoginModule { ...@@ -74,20 +74,20 @@ public class LoginModule implements ILoginModule {
} }
@Override @Override
public Boolean modifyPwd(VerifyTypeEnum type, String phoneNo, String password, String verify) { public Boolean modifyPwd(VerifyTypeEnum type, String phoneNo, String password, String verify,Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (user == null) { if (user == null) {
//todo 自定义异常 //todo 自定义异常
throw new DataException("用户不存在"); throw new DataException("用户不存在");
} }
VerifyStrategyFactory.get(type).verify(user, verify); VerifyStrategyFactory.get(type).verify(user, verify);
userService.resetPassword(phoneNo, password); userService.resetPassword(phoneNo, password,tenantId);
return true; return true;
} }
@Override @Override
public LoginVo loginByUserId(Long channelId, String appChannel, Long userId, Integer tenantId) { public LoginVo loginByUserId(Long channelId, String appChannel, Long userId, Integer tenantId) {
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
if(null == user){ if(null == user){
throw new DataException("未找到此用户"); throw new DataException("未找到此用户");
} }
...@@ -97,7 +97,7 @@ public class LoginModule implements ILoginModule { ...@@ -97,7 +97,7 @@ public class LoginModule implements ILoginModule {
.channelId(channelId) .channelId(channelId)
.tenantId(tenantId) .tenantId(tenantId)
.build(); .build();
AuthBean session = sessionService.createSession(user, loginProperties, LoginType.APPLETLOGIN.ordinal()); AuthBean session = sessionService.createSession(user, loginProperties, LoginType.APPLETLOGIN.ordinal(),tenantId);
return LoginVo.builder() return LoginVo.builder()
.hasPassword(user.getHasPassword()) .hasPassword(user.getHasPassword())
.phoneNo(user.getPhoneNo()) .phoneNo(user.getPhoneNo())
......
package cn.quantgroup.xyqb.controller.middleoffice.user; package cn.quantgroup.xyqb.controller.middleoffice.user;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.event.DisableActiveEvent; import cn.quantgroup.xyqb.event.DisableActiveEvent;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -34,8 +35,8 @@ public class UserController { ...@@ -34,8 +35,8 @@ public class UserController {
private ISessionService sessionService; private ISessionService sessionService;
@PutMapping("/enable/{userId}") @PutMapping("/enable/{userId}")
public JsonResult enable(@PathVariable Long userId) { public JsonResult enable(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
if (user == null) { if (user == null) {
//todo 用户不存在,怎么处理 //todo 用户不存在,怎么处理
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
...@@ -48,8 +49,8 @@ public class UserController { ...@@ -48,8 +49,8 @@ public class UserController {
} }
@PutMapping("/disable/{userId}") @PutMapping("/disable/{userId}")
public JsonResult disable(@PathVariable Long userId) { public JsonResult disable(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
if (user == null) { if (user == null) {
//todo 用户不存在,怎么处理 //todo 用户不存在,怎么处理
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
...@@ -59,7 +60,7 @@ public class UserController { ...@@ -59,7 +60,7 @@ public class UserController {
userService.saveUser(user); userService.saveUser(user);
// 清除token缓存 // 清除token缓存
/* 清空session */ /* 清空session */
sessionService.deleteByUserId(user.getId()); sessionService.deleteByUserId(user.getId(),tenantId);
//通知消息中心 //通知消息中心
applicationEventPublisher.publishEvent(new DisableActiveEvent(this, user)); applicationEventPublisher.publishEvent(new DisableActiveEvent(this, user));
...@@ -67,23 +68,23 @@ public class UserController { ...@@ -67,23 +68,23 @@ public class UserController {
} }
@GetMapping("/userId/{userId}") @GetMapping("/userId/{userId}")
public JsonResult user(@PathVariable Long userId) { public JsonResult user(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
//TODO convert to userVO //TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user); return JsonResult.buildSuccessResultGeneric(user);
} }
@GetMapping("/phoneNo/{phoneNo}") @GetMapping("/phoneNo/{phoneNo}")
public JsonResult user(@PathVariable String phoneNo) { public JsonResult user(@PathVariable String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
//TODO convert to userVO //TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user); return JsonResult.buildSuccessResultGeneric(user);
} }
@GetMapping("/uuid/{uuid}") @GetMapping("/uuid/{uuid}")
public JsonResult uuid(@PathVariable String uuid) { public JsonResult uuid(@PathVariable String uuid , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findByUuidWithCache(uuid); User user = userService.findByUuidWithCache(uuid,tenantId);
//TODO convert to userVO //TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user); return JsonResult.buildSuccessResultGeneric(user);
} }
......
...@@ -63,7 +63,7 @@ public class UserDetailController { ...@@ -63,7 +63,7 @@ public class UserDetailController {
if (userDetail != null) { if (userDetail != null) {
return JsonResult.buildSuccessResultGeneric(userDetail); return JsonResult.buildSuccessResultGeneric(userDetail);
} }
User user = userService.findById(userId); User user = userService.findById(userId,tenantId);
userDetail = new UserInfoEntity(); userDetail = new UserInfoEntity();
userDetail.setUserId(userId); userDetail.setUserId(userId);
......
package cn.quantgroup.xyqb.controller.middleoffice.wx; package cn.quantgroup.xyqb.controller.middleoffice.wx;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.WechatUserInfo; import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
...@@ -36,7 +37,7 @@ public class WxController { ...@@ -36,7 +37,7 @@ public class WxController {
@GetMapping("/userId/{userId}") @GetMapping("/userId/{userId}")
public JsonResult openId(@PathVariable Long userId, @RequestParam(required = false) Integer tenantId) { public JsonResult openId(@PathVariable Long userId, @RequestParam(required = false) Integer tenantId) {
String openId = null; String openId = null;
WechatUserInfo wechatUserInfo = wechatService.queryByUserId(userId); WechatUserInfo wechatUserInfo = wechatService.queryByUserId(userId,tenantId);
if (wechatUserInfo != null) { if (wechatUserInfo != null) {
openId = wechatUserInfo.getOpenId(); openId = wechatUserInfo.getOpenId();
} }
...@@ -52,7 +53,7 @@ public class WxController { ...@@ -52,7 +53,7 @@ public class WxController {
*/ */
@GetMapping("/userId/{userId}/{appName}") @GetMapping("/userId/{userId}/{appName}")
public JsonResult openId(@PathVariable Long userId, @PathVariable String appName, @RequestParam(required = false) Integer tenantId) { public JsonResult openId(@PathVariable Long userId, @PathVariable String appName, @RequestParam(required = false) Integer tenantId) {
WechatUserInfo wechatUserInfo = wechatService.queryByUserId(userId, appName); WechatUserInfo wechatUserInfo = wechatService.queryByUserId(userId, tenantId);
if (wechatUserInfo == null) { if (wechatUserInfo == null) {
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
...@@ -67,7 +68,7 @@ public class WxController { ...@@ -67,7 +68,7 @@ public class WxController {
*/ */
@GetMapping("/phoneNo/{phoneNo}") @GetMapping("/phoneNo/{phoneNo}")
public JsonResult openId(@PathVariable String phoneNo, @RequestParam(required = false) Integer tenantId) { public JsonResult openId(@PathVariable String phoneNo, @RequestParam(required = false) Integer tenantId) {
WechatUserInfo wechatUserInfo = wechatService.findWechatUserInfoByPhoneNo(phoneNo); WechatUserInfo wechatUserInfo = wechatService.findWechatUserInfoByPhoneNo(phoneNo,tenantId);
if (wechatUserInfo == null) { if (wechatUserInfo == null) {
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
...@@ -81,8 +82,8 @@ public class WxController { ...@@ -81,8 +82,8 @@ public class WxController {
} }
@PatchMapping("/forbidden/{userId}") @PatchMapping("/forbidden/{userId}")
public JsonResult forbidden(@PathVariable Long userId, String reason) { public JsonResult forbidden(@PathVariable Long userId, String reason,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
int res = wechatService.forbiddenUserWeChat(userId); int res = wechatService.forbiddenUserWeChat(userId,tenantId);
log.info("取消微信关联 userId:{},reason:{},结果:{}", userId, reason, res); log.info("取消微信关联 userId:{},reason:{},结果:{}", userId, reason, res);
return JsonResult.buildSuccessResultGeneric(res); return JsonResult.buildSuccessResultGeneric(res);
} }
...@@ -91,7 +92,7 @@ public class WxController { ...@@ -91,7 +92,7 @@ public class WxController {
* *
*/ */
@PostMapping("/v1/getByOpenIdToUserIds") @PostMapping("/v1/getByOpenIdToUserIds")
public JsonResult getByOpenIdToUserIds(@RequestBody Map<String, Object> params, @RequestParam(required = false, defaultValue = "wuxi") String appName) { public JsonResult getByOpenIdToUserIds(@RequestBody Map<String, Object> params, @RequestParam(required = false, defaultValue = "wuxi") String appName,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
log.info("根据userIds获取用户的openId {}, appName:{}", params, appName); log.info("根据userIds获取用户的openId {}, appName:{}", params, appName);
List<Integer> userIds = (List<Integer>) params.get("userIds"); List<Integer> userIds = (List<Integer>) params.get("userIds");
if (userIds.isEmpty()) { if (userIds.isEmpty()) {
...@@ -102,7 +103,7 @@ public class WxController { ...@@ -102,7 +103,7 @@ public class WxController {
} }
List<Long> userIdList = userIds.stream().map(userId -> Long.parseLong(userId.toString())).collect(Collectors.toList()); List<Long> userIdList = userIds.stream().map(userId -> Long.parseLong(userId.toString())).collect(Collectors.toList());
List<WechatUserInfo> wechatUserInfoList = wechatService.queryByUserIdsAndAppName(userIdList, appName); List<WechatUserInfo> wechatUserInfoList = wechatService.queryByUserIdsAndAppName(userIdList, appName,tenantId);
if (wechatUserInfoList.isEmpty()) { if (wechatUserInfoList.isEmpty()) {
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
......
package cn.quantgroup.xyqb.controller.modifyphoneno; package cn.quantgroup.xyqb.controller.modifyphoneno;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.controller.modifyphoneno.req.*; import cn.quantgroup.xyqb.controller.modifyphoneno.req.*;
import cn.quantgroup.xyqb.controller.modifyphoneno.req.ModifyPhoneRecord.UserClient; import cn.quantgroup.xyqb.controller.modifyphoneno.req.ModifyPhoneRecord.UserClient;
...@@ -51,12 +52,12 @@ public class ModifyPhoneNoController implements IBaseController { ...@@ -51,12 +52,12 @@ public class ModifyPhoneNoController implements IBaseController {
* @return * @return
*/ */
@PostMapping("/step_1") @PostMapping("/step_1")
public JsonResult step1(@Valid @RequestBody Step1Req step1Req) { public JsonResult step1(@Valid @RequestBody Step1Req step1Req,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = getCurrentUserFromRedis(); User user = getCurrentUserFromRedis();
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult("系统错误", null); return JsonResult.buildErrorStateResult("系统错误", null);
} }
return JsonResult.buildSuccessResultGeneric(modifyPhoneNoService.saveStep1(user.getId(), step1Req)); return JsonResult.buildSuccessResultGeneric(modifyPhoneNoService.saveStep1(user.getId(), step1Req,tenantId));
} }
/** /**
...@@ -91,8 +92,8 @@ public class ModifyPhoneNoController implements IBaseController { ...@@ -91,8 +92,8 @@ public class ModifyPhoneNoController implements IBaseController {
* 后台客服处理功能 - 人工审核 * 后台客服处理功能 - 人工审核
*/ */
@PostMapping("/audit") @PostMapping("/audit")
public JsonResult audit(@Valid @RequestBody AuditReq auditReq) { public JsonResult audit(@Valid @RequestBody AuditReq auditReq,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
modifyPhoneNoService.audit(auditReq); modifyPhoneNoService.audit(auditReq,tenantId);
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
...@@ -161,8 +162,8 @@ public class ModifyPhoneNoController implements IBaseController { ...@@ -161,8 +162,8 @@ public class ModifyPhoneNoController implements IBaseController {
} }
@PostMapping("/rejectReason/save") @PostMapping("/rejectReason/save")
public JsonResult saveRejectReason(@Valid @RequestBody ModifyRejectRecord modifyRejectRecord){ public JsonResult saveRejectReason(@Valid @RequestBody ModifyRejectRecord modifyRejectRecord,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId){
modifyPhoneNoService.saveRejectReason(modifyRejectRecord); modifyPhoneNoService.saveRejectReason(modifyRejectRecord,tenantId);
return JsonResult.buildSuccessResult("保存手机号修改失败原因成功"); return JsonResult.buildSuccessResult("保存手机号修改失败原因成功");
} }
......
...@@ -39,6 +39,8 @@ public class ModifyPhoneRecord implements Serializable { ...@@ -39,6 +39,8 @@ public class ModifyPhoneRecord implements Serializable {
*/ */
private ApplySource applySource; private ApplySource applySource;
private Integer tenantId;
public interface Background{} public interface Background{}
public interface UserClient{} public interface UserClient{}
public interface Finance{} public interface Finance{}
......
...@@ -5,6 +5,7 @@ import lombok.Getter; ...@@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
...@@ -48,6 +49,10 @@ public class User extends BaseEntity implements Serializable { ...@@ -48,6 +49,10 @@ public class User extends BaseEntity implements Serializable {
@Column(name = "cipher_password") @Column(name = "cipher_password")
private String cipherPassword; private String cipherPassword;
@Column(name = "password_type")
private Integer passwordType;
@Column(name = "tenant_id") @Column(name = "tenant_id")
private Integer tenantId; private Integer tenantId;
......
...@@ -53,6 +53,19 @@ public class WechatUserInfo extends BaseEntity implements Serializable { ...@@ -53,6 +53,19 @@ public class WechatUserInfo extends BaseEntity implements Serializable {
@Convert(converter = EncryptConverter.class) @Convert(converter = EncryptConverter.class)
private String encryptedPhoneNo; private String encryptedPhoneNo;
@Column(name = "session_key")
private String sessionKey;
@Column(name = "app_id")
private String appId;
@Column(name = "tenant_id")
private Integer tenantId;
//第一次用户来源 channel_id
@Column(name = "registered_from")
private Long registeredFrom;
public String getEncryptedPhoneNo() { public String getEncryptedPhoneNo() {
return StringUtils.isBlank(encryptedPhoneNo) ? phoneNo : encryptedPhoneNo; return StringUtils.isBlank(encryptedPhoneNo) ? phoneNo : encryptedPhoneNo;
} }
......
...@@ -76,6 +76,8 @@ public class AppletParamEntry { ...@@ -76,6 +76,8 @@ public class AppletParamEntry {
*/ */
private String utmSource; private String utmSource;
private String appId;
/** /**
* 租户ID * 租户ID
*/ */
......
...@@ -61,6 +61,6 @@ public class BlackHoleRegisteredEventListener implements ApplicationListener<Reg ...@@ -61,6 +61,6 @@ public class BlackHoleRegisteredEventListener implements ApplicationListener<Reg
array.toString()); array.toString());
}); });
// 不同渠道签署不同的合同模板 // 不同渠道签署不同的合同模板
userService.channelUserSignContract(user, null); userService.channelUserSignContract(user, null, user.getTenantId());
} }
} }
...@@ -30,9 +30,9 @@ public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener ...@@ -30,9 +30,9 @@ public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener
String oldPhoneNo = event.getOldPhoneNo(); String oldPhoneNo = event.getOldPhoneNo();
User user = event.getUser(); User user = event.getUser();
userService.userCacheEvict(user.getUuid(), oldPhoneNo); userService.userCacheEvict(user.getUuid(), oldPhoneNo,user.getTenantId());
List<SessionStruct> sessionStructList = sessionService.findByUserId(user.getId()); List<SessionStruct> sessionStructList = sessionService.findByUserId(user.getId(),user.getTenantId());
sessionStructList = sessionStructList.stream().filter(Objects::nonNull).collect(Collectors.toList()); sessionStructList = sessionStructList.stream().filter(Objects::nonNull).collect(Collectors.toList());
...@@ -50,7 +50,7 @@ public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener ...@@ -50,7 +50,7 @@ public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener
} }
values.setUser(sessionUser); values.setUser(sessionUser);
} }
sessionService.persistSession(sessionStructList); sessionService.persistSession(sessionStructList,user.getTenantId());
} }
} }
...@@ -30,7 +30,7 @@ public class NotifyWechatBindEventListener implements ApplicationListener<Wechat ...@@ -30,7 +30,7 @@ public class NotifyWechatBindEventListener implements ApplicationListener<Wechat
log.info("微信绑定数据,没有用户 ID 信息,openId:{}", wechatEventMsg.getOpenId()); log.info("微信绑定数据,没有用户 ID 信息,openId:{}", wechatEventMsg.getOpenId());
return; return;
} }
User user = userRepository.findById(wechatEventMsg.getUserId()); User user = userRepository.findByIdAndTenantId(wechatEventMsg.getUserId(),wechatEventMsg.getTenantId());
if (user == null) { if (user == null) {
log.info("微信绑定数据,没有用户信息,openId:{},userId:{}", wechatEventMsg.getOpenId(), wechatEventMsg.getUserId()); log.info("微信绑定数据,没有用户信息,openId:{},userId:{}", wechatEventMsg.getOpenId(), wechatEventMsg.getUserId());
return; return;
......
...@@ -21,7 +21,7 @@ public class WechatPhoneNoUpdateEventListener implements ApplicationListener<Pho ...@@ -21,7 +21,7 @@ public class WechatPhoneNoUpdateEventListener implements ApplicationListener<Pho
public void onApplicationEvent(PhoneNoUpdateEvent event) { public void onApplicationEvent(PhoneNoUpdateEvent event) {
String oldPhoneNo = event.getOldPhoneNo(); String oldPhoneNo = event.getOldPhoneNo();
User user = event.getUser(); User user = event.getUser();
WechatUserInfo userInfo = wechatService.findWechatUserInfoByPhoneNo(oldPhoneNo); WechatUserInfo userInfo = wechatService.findWechatUserInfoByPhoneNo(oldPhoneNo, user.getTenantId());
if (Objects.isNull(userInfo)) { if (Objects.isNull(userInfo)) {
return; return;
} }
......
...@@ -59,7 +59,7 @@ public class RequestFilter implements Filter { ...@@ -59,7 +59,7 @@ public class RequestFilter implements Filter {
} else { } else {
/* 延续session生命期 */ /* 延续session生命期 */
try { try {
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues()); sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(),sessionStruct.getTenantId());
} finally { } finally {
XyqbSessionContextHolder.releaseSession(); XyqbSessionContextHolder.releaseSession();
} }
......
...@@ -17,6 +17,7 @@ public class SessionStruct implements Serializable { ...@@ -17,6 +17,7 @@ public class SessionStruct implements Serializable {
private String sid; private String sid;
private SessionValue values; private SessionValue values;
private long expire; private long expire;
private Integer tenantId;
public void setAttribute(String key, String value) { public void setAttribute(String key, String value) {
if (value == null) { if (value == null) {
......
...@@ -3,9 +3,12 @@ package cn.quantgroup.xyqb.model.webchat; ...@@ -3,9 +3,12 @@ package cn.quantgroup.xyqb.model.webchat;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import javax.persistence.criteria.CriteriaBuilder;
@Data @Data
@Builder @Builder
public class WechatEventMsg { public class WechatEventMsg {
private Long userId; private Long userId;
private String openId; private String openId;
private Integer tenantId;
} }
...@@ -15,11 +15,11 @@ import java.util.List; ...@@ -15,11 +15,11 @@ import java.util.List;
*/ */
public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> { public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {
User findByPhoneNo(String phoneNo); User findByPhoneNoAndTenantId(String phoneNo,Integer tenantId);
User findByEncryptedPhoneNo(String phoneNo); User findByEncryptedPhoneNoAndTenantId(String phoneNo,Integer tenantId);
User findByUuid(String uuid); User findByUuidAndTenantId(String uuid,Integer tenantId);
/** /**
* 根据手机号查询用户UUID * 根据手机号查询用户UUID
...@@ -27,39 +27,31 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica ...@@ -27,39 +27,31 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @return user表的uuid * @return user表的uuid
*/ */
@Query(value = "select uuid from user where phone_no=?1", nativeQuery = true) @Query(value = "select uuid from user where phone_no=?1 and tenant_id=?2", nativeQuery = true)
String findUuidByPhoneNo(String phoneNo); String findUuidByPhoneNoAndTenantId(String phoneNo,Integer tenantId);
/**
* 根据身份证号查询用户UUID
*
* @param idNo - 身份证号
* @return user表的uuid
*/
@Query(value = "select uuid from user where id=(select user_id from user_detail where id_no=?1) ", nativeQuery = true)
String findUuidByIdNo(String idNo);
List<User> findByIdIn(List<Long> ids); List<User> findByIdInAndTenantId(List<Long> ids,Integer tenantId);
User findById(Long id); User findByIdAndTenantId(Long id,Integer tenantId);
@Query(value = "select * from user where created_at>=?1 and created_at<?2 ", nativeQuery = true) @Query(value = "select * from user where created_at>=?1 and created_at<?2 and tenant_id=?3 ", nativeQuery = true)
List<User> findRegisterUserByTime(String beginTime, String endTime); List<User> findRegisterUserByTimeAndTenantId(String beginTime, String endTime,Integer tenantId);
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update user set enable=?1 where phone_no=?2", nativeQuery = true) @Query(value = "update user set enable=?1 where phone_no=?2 and tenant_id=?3", nativeQuery = true)
int forbiddenUser(Boolean enable, String phoneNo); int forbiddenUserAndTenantId(Boolean enable, String phoneNo,Integer tenantId);
List<User> findByIdBetween(Long id, Long endId); List<User> findByIdBetweenAndTenantId(Long id, Long endId,Integer tenantId);
List<User> findByUuidIn(List<String> uuids); List<User> findByUuidInAndTenantId(List<String> uuids,Integer tenantId);
/** /**
* 根据userId删除用户 * 根据userId删除用户
* *
* @param userId 用户id * @param userId 用户id
*/ */
void deleteById(Long userId); void deleteByIdAndTenantId(Long userId,Integer tenantId);
} }
...@@ -16,17 +16,17 @@ import static org.springframework.transaction.annotation.Propagation.MANDATORY; ...@@ -16,17 +16,17 @@ import static org.springframework.transaction.annotation.Propagation.MANDATORY;
* modify by djh 20200527 http://confluence.quantgroup.cn/pages/viewpage.action?pageId=30657427 * modify by djh 20200527 http://confluence.quantgroup.cn/pages/viewpage.action?pageId=30657427
*/ */
public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Long> { public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Long> {
WechatUserInfo findByOpenIdAndAppName(String openId, String appName); WechatUserInfo findByOpenIdAndAppNameAndAppIdAndTenantId(String openId, String appName,String appId,Integer tenantId);
WechatUserInfo findByPhoneNoAndAppName(String phoneNo, String appName); WechatUserInfo findByPhoneNoAndAppNameAndTenantId(String phoneNo, String appName, Integer tenantId);
WechatUserInfo findByEncryptedPhoneNoAndAppName(String phoneNo, String appName); WechatUserInfo findByEncryptedPhoneNoAndAppNameAndTenantId(String phoneNo, String appName, Integer tenantId);
WechatUserInfo findByUserIdAndAppName(Long userId, String appName); WechatUserInfo findByUserIdAndAppNameAndAppIdAndTenantId(Long userId, String appName,String appId,Integer tenantId);
WechatUserInfo findFirstByUserIdAndAppNameOrderByCreatedAtDesc(Long userId, String appName); WechatUserInfo findFirstByUserIdAndAppNameAndTenantIdOrderByCreatedAtDesc(Long userId, String appName, Integer tenantId);
long countByOpenIdAndAppName(String openId, String appName); long countByOpenIdAndAppNameAndAppIdAndTenantId(String openId, String appName,String appId,Integer tenantId);
/** /**
* 解除关联关系 -- 当前用户的已关联微信 * 解除关联关系 -- 当前用户的已关联微信
...@@ -37,8 +37,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -37,8 +37,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1 and app_name=?2", nativeQuery = true) @Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1 and app_name=?2 and tenant_id=?3", nativeQuery = true)
int dissociateByUserIdAndAppName(Long userId, String appName); int dissociateByUserIdAndAppNameAndTenantId(Long userId, String appName, Integer tenantId);
/** /**
* 解除商城用户与小程序和公众号关联关系 * 解除商城用户与小程序和公众号关联关系
...@@ -48,8 +48,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -48,8 +48,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1 and app_name in ('xyqb', 'wuxi')", nativeQuery = true) @Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1 and app_name in ('xyqb', 'wuxi') and tenant_id=?2", nativeQuery = true)
int forbiddenXyqbAndWuxiUserByUserId(Long userId); int forbiddenXyqbAndWuxiUserByUserIdAndAppIdAndTenantId(Long userId, Integer tenantId);
/** /**
* 关联用户 * 关联用户
...@@ -61,8 +61,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -61,8 +61,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update wechat_userinfo set user_id=?1,phone_no=?2 where open_id=?3 and user_id is null and app_name=?4", nativeQuery = true) @Query(value = "update wechat_userinfo set user_id=?1,phone_no=?2 where open_id=?3 and user_id is null and app_name=?4 and app_id=?5 and tenant_id=?6", nativeQuery = true)
int relateUser(Long userId, String phoneNo, String openId, String appName); int relateUser(Long userId, String phoneNo, String openId, String appName,String appId,Integer tenantId);
/** /**
* 解除关联关系 -- 包括:1、当前微信旧的关联用户;2、当前用户旧的关联微信 * 解除关联关系 -- 包括:1、当前微信旧的关联用户;2、当前用户旧的关联微信
...@@ -74,8 +74,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -74,8 +74,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/ */
@Transactional(propagation = MANDATORY, rollbackFor = Exception.class) @Transactional(propagation = MANDATORY, rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where (open_id=?1 or user_id=?2) and app_name=?3", nativeQuery = true) @Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where (open_id=?1 or user_id=?2) and app_name=?3 and app_id=?4 and tenant_id=?5", nativeQuery = true)
int dissociateUser(String openId, Long userId, String appName); int dissociateUser(String openId, Long userId, String appName,String appId,Integer tenantId);
/** /**
...@@ -87,23 +87,23 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon ...@@ -87,23 +87,23 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "update wechat_userinfo set union_id=?3 where user_id=?1 and app_name=?2", nativeQuery = true) @Query(value = "update wechat_userinfo set union_id=?3 where user_id=?1 and app_name=?2 and app_id=?3 and tenant_id=?4", nativeQuery = true)
int updateUserUnionId(Long userId, String appName, String unionId); int updateUserUnionId(Long userId, String appName, String unionId,String appId,Integer tenantId);
@Transactional @Transactional
void deleteByUserId(Long userId); void deleteByUserIdAndAppIdAndTenantId(Long userId,Integer tenantId);
/** /**
* 通过userId查询相关绑定微信记录 * 通过userId查询相关绑定微信记录
*/ */
List<WechatUserInfo> findByUserId(Long userId); List<WechatUserInfo> findByUserIdAndTenantId(Long userId,Integer tenantId);
/** /**
* 通过unionId查询相关绑定微信记录 * 通过unionId查询相关绑定微信记录
*/ */
List<WechatUserInfo> findByUnionId(String unionId); List<WechatUserInfo> findByUnionIdAndAppIdAndTenantId(String unionId, Integer tenantId);
List<WechatUserInfo> findByUnionIdIn(List<String> unionIds); List<WechatUserInfo> findByUnionIdInAndTenantId(List<String> unionIds, Integer tenantId);
List<WechatUserInfo> findByUserIdInAndAppName(List<Long> userIds, String appName); List<WechatUserInfo> findByUserIdInAndAppNameAndTenantId(List<Long> userIds, String appName, Integer tenantId);
} }
...@@ -15,7 +15,7 @@ public interface IUserApiService { ...@@ -15,7 +15,7 @@ public interface IUserApiService {
* @param uuid * @param uuid
* @return * @return
*/ */
Optional<UserFullInfo> getUserFullInfoByUuid(String uuid); Optional<UserFullInfo> getUserFullInfoByUuid(String uuid,Integer tenantId);
/** /**
* 根据phone查询完整信息 * 根据phone查询完整信息
...@@ -23,5 +23,5 @@ public interface IUserApiService { ...@@ -23,5 +23,5 @@ public interface IUserApiService {
* @param phoneNo * @param phoneNo
* @return * @return
*/ */
Optional<UserFullInfo> getUserFullInfoByPhone(String phoneNo); Optional<UserFullInfo> getUserFullInfoByPhone(String phoneNo,Integer tenantId);
} }
...@@ -24,8 +24,8 @@ public class UserApiServiceImpl implements IUserApiService { ...@@ -24,8 +24,8 @@ public class UserApiServiceImpl implements IUserApiService {
private IUserInfoRepository userInfoRepository; private IUserInfoRepository userInfoRepository;
@Override @Override
public Optional<UserFullInfo> getUserFullInfoByUuid(String uuid) { public Optional<UserFullInfo> getUserFullInfoByUuid(String uuid,Integer tenantId) {
User user = userService.findByUuidWithCache(uuid); User user = userService.findByUuidWithCache(uuid,tenantId);
if (null == user) { if (null == user) {
return Optional.empty(); return Optional.empty();
} }
...@@ -35,8 +35,8 @@ public class UserApiServiceImpl implements IUserApiService { ...@@ -35,8 +35,8 @@ public class UserApiServiceImpl implements IUserApiService {
} }
@Override @Override
public Optional<UserFullInfo> getUserFullInfoByPhone(String phoneNo) { public Optional<UserFullInfo> getUserFullInfoByPhone(String phoneNo,Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo); User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (null == user) { if (null == user) {
return Optional.empty(); return Optional.empty();
} }
......
...@@ -12,5 +12,5 @@ import cn.quantgroup.xyqb.entity.middleoffice.AppletParamEntry; ...@@ -12,5 +12,5 @@ import cn.quantgroup.xyqb.entity.middleoffice.AppletParamEntry;
*/ */
public interface IAppletService { public interface IAppletService {
Long relevance(AppletParamEntry appletParamEntry); Long relevance(AppletParamEntry appletParamEntry);
LoginVo login(String appName, String openId, Integer tenantId, String utmSource, String unionId); LoginVo login(String appName, String openId, Integer tenantId, String utmSource, String unionId,String appId);
} }
...@@ -51,7 +51,7 @@ public class AppletServiceImpl implements IAppletService { ...@@ -51,7 +51,7 @@ public class AppletServiceImpl implements IAppletService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long relevance(AppletParamEntry appletParamEntry) { public Long relevance(AppletParamEntry appletParamEntry) {
WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppName(appletParamEntry.getOpenId(), appletParamEntry.getAppName()); WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(appletParamEntry.getOpenId(), appletParamEntry.getAppName(),appletParamEntry.getAppId(),appletParamEntry.getTenantId());
//这个接口先不考虑更换手机号的情况 //这个接口先不考虑更换手机号的情况
wechatUserInfo = (wechatUserInfo == null ? new WechatUserInfo() : wechatUserInfo); wechatUserInfo = (wechatUserInfo == null ? new WechatUserInfo() : wechatUserInfo);
...@@ -69,7 +69,7 @@ public class AppletServiceImpl implements IAppletService { ...@@ -69,7 +69,7 @@ public class AppletServiceImpl implements IAppletService {
wechatUserInfo.setEncryptedPhoneNo(appletParamEntry.getMobile()); wechatUserInfo.setEncryptedPhoneNo(appletParamEntry.getMobile());
wechatUserInfo.setUtmSource(appletParamEntry.getUtmSource()); wechatUserInfo.setUtmSource(appletParamEntry.getUtmSource());
if (null == wechatUserInfo.getUserId()) {//只要存在userid 就说明已经在用户表里了 不考虑小程序这边换手机号了 if (null == wechatUserInfo.getUserId()) {//只要存在userid 就说明已经在用户表里了 不考虑小程序这边换手机号了
User user = userService.findByPhoneInDb(appletParamEntry.getMobile()); User user = userService.findByPhoneInDb(appletParamEntry.getMobile(), appletParamEntry.getTenantId());
//如果不存在就去注册一下 //如果不存在就去注册一下
if (null == user) { if (null == user) {
user = iUserRegisterService.register(appletParamEntry.getChannelId(), appletParamEntry.getMobile()); user = iUserRegisterService.register(appletParamEntry.getChannelId(), appletParamEntry.getMobile());
...@@ -88,9 +88,9 @@ public class AppletServiceImpl implements IAppletService { ...@@ -88,9 +88,9 @@ public class AppletServiceImpl implements IAppletService {
@Override @Override
public LoginVo login(String appName, String openId, Integer tenantId, String utmSource, String unionId) { public LoginVo login(String appName, String openId, Integer tenantId, String utmSource, String unionId,String appId) {
WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppName(openId, appName); WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(openId, appName,appId,tenantId);
if (null == wechatUserInfo) { if (null == wechatUserInfo) {
log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId); log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId);
throw new AppletException("未找到此用户", "0401"); throw new AppletException("未找到此用户", "0401");
...@@ -99,7 +99,7 @@ public class AppletServiceImpl implements IAppletService { ...@@ -99,7 +99,7 @@ public class AppletServiceImpl implements IAppletService {
log.warn("用户未绑定到xyqb,appName:{} ,openId:{}", appName, openId); log.warn("用户未绑定到xyqb,appName:{} ,openId:{}", appName, openId);
throw new AppletException("未找到此用户绑定信息", "0401"); throw new AppletException("未找到此用户绑定信息", "0401");
} }
User user = userService.findById(wechatUserInfo.getUserId()); User user = userService.findById(wechatUserInfo.getUserId(), wechatUserInfo.getTenantId());
if (null == user) { if (null == user) {
log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId); log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId);
throw new AppletException("未找到此用户", "0401"); throw new AppletException("未找到此用户", "0401");
...@@ -111,7 +111,7 @@ public class AppletServiceImpl implements IAppletService { ...@@ -111,7 +111,7 @@ public class AppletServiceImpl implements IAppletService {
} }
if (unionId != null && !unionId.equals(wechatUserInfo.getUnionId())) { if (unionId != null && !unionId.equals(wechatUserInfo.getUnionId())) {
iWeChatUserRepository.updateUserUnionId(wechatUserInfo.getUserId(), appName, unionId); iWeChatUserRepository.updateUserUnionId(wechatUserInfo.getUserId(), appName, unionId,appId,tenantId);
} }
return loginModule.loginByUserId(user.getRegisteredFrom(), return loginModule.loginByUserId(user.getRegisteredFrom(),
......
...@@ -14,27 +14,27 @@ import java.util.List; ...@@ -14,27 +14,27 @@ import java.util.List;
public interface ISessionService { public interface ISessionService {
SessionStruct createSessionAndPersist(User user, LoginProperties loginProperties); SessionStruct createSessionAndPersist(User user, LoginProperties loginProperties,Integer tenantId);
void persistSession(String token, SessionValue sessionValue); void persistSession(String token, SessionValue sessionValue,Integer tenantId);
void persistSession(String token, SessionValue sessionValue,Long time); void persistSession(String token, SessionValue sessionValue,Long time,Integer tenantId);
void deleteByUserId(long userId); void deleteByUserId(long userId,Integer tenantId);
void deleteUserCatch(User user); void deleteUserCatch(User user,Integer tenantId);
List<SessionStruct> findByUserId(long userId); List<SessionStruct> findByUserId(long userId,Integer tenantId);
void persistSession(List<SessionStruct> sessionStructList); void persistSession(List<SessionStruct> sessionStructList,Integer tenantId);
/** /**
* 删除会话 * 删除会话
*/ */
void deleteSession(String token); void deleteSession(String token,Integer tenantId);
void persistSessionExchange(String token, SessionValue sessionValue, long expire); void persistSessionExchange(String token, SessionValue sessionValue, long expire,Integer tenantId);
void kdspDeleteSession(Long userId, LoginProperties loginProperties); void kdspDeleteSession(Long userId, LoginProperties loginProperties,Integer tenantId);
/** /**
* 更新session * 更新session
...@@ -46,5 +46,5 @@ public interface ISessionService { ...@@ -46,5 +46,5 @@ public interface ISessionService {
* @param ordinal - 登录方式 * @param ordinal - 登录方式
* @return * @return
*/ */
AuthBean createSession(User user, LoginProperties loginProperties, int ordinal); AuthBean createSession(User user, LoginProperties loginProperties, int ordinal,Integer tenantId);
} }
...@@ -57,22 +57,22 @@ public class SessionServiceImpl implements ISessionService { ...@@ -57,22 +57,22 @@ public class SessionServiceImpl implements ISessionService {
* @return * @return
*/ */
@Override @Override
public AuthBean createSession(User user, LoginProperties properties, int loginType) { public AuthBean createSession(User user, LoginProperties properties, int loginType,Integer tenantId) {
//找到用户 //找到用户
//TODO: 使用userId //TODO: 使用userId
String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties); String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties,tenantId);
SessionStruct sessionStruct = null; SessionStruct sessionStruct = null;
if (StringUtils.isNotEmpty(sessionId)) { if (StringUtils.isNotEmpty(sessionId)) {
sessionStruct = findSessionBySessionId(sessionId); sessionStruct = findSessionBySessionId(sessionId,tenantId);
} }
if (Objects.nonNull(sessionStruct) && Objects.nonNull(properties)) { if (Objects.nonNull(sessionStruct) && Objects.nonNull(properties)) {
sessionStruct.setAttribute("channelId", String.valueOf(properties.getChannelId())); sessionStruct.setAttribute("channelId", String.valueOf(properties.getChannelId()));
sessionStruct.setAttribute("createdFrom", String.valueOf(properties.getCreatedFrom())); sessionStruct.setAttribute("createdFrom", String.valueOf(properties.getCreatedFrom()));
sessionStruct.setAttribute("appChannel", String.valueOf(properties.getAppChannel())); sessionStruct.setAttribute("appChannel", String.valueOf(properties.getAppChannel()));
sessionStruct.getValues().setLoginProperties(properties); sessionStruct.getValues().setLoginProperties(properties);
persistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues(),tenantId);
} else { } else {
sessionStruct = createSessionAndPersist(user, properties); sessionStruct = createSessionAndPersist(user, properties,tenantId);
} }
String uuid = user.getUuid(); String uuid = user.getUuid();
AuthBean authBean = new AuthBean(); AuthBean authBean = new AuthBean();
...@@ -89,27 +89,27 @@ public class SessionServiceImpl implements ISessionService { ...@@ -89,27 +89,27 @@ public class SessionServiceImpl implements ISessionService {
} }
@Override @Override
public SessionStruct createSessionAndPersist(User user, LoginProperties properties) { public SessionStruct createSessionAndPersist(User user, LoginProperties properties,Integer tenantId) {
SessionStruct sessionStruct; SessionStruct sessionStruct;
//获取sessionid //获取sessionid
String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties); String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties,tenantId);
if (StringUtils.length(sessionId) > 0) { if (StringUtils.length(sessionId) > 0) {
sessionStruct = findSessionBySessionId(sessionId); sessionStruct = findSessionBySessionId(sessionId,tenantId);
if (sessionStruct == null) { if (sessionStruct == null) {
sessionStruct = newSession(user, properties); sessionStruct = newSession(user, properties);
} else { } else {
sessionStruct.getValues().setLoginProperties(properties); sessionStruct.getValues().setLoginProperties(properties);
} }
persistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues(),tenantId);
} else { } else {
sessionStruct = newSession(user, properties); sessionStruct = newSession(user, properties);
persistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues(),tenantId);
} }
return sessionStruct; return sessionStruct;
} }
private String findSessionIdByUserIdLoginProperties(Long userId, LoginProperties properties) { private String findSessionIdByUserIdLoginProperties(Long userId, LoginProperties properties,Integer tenantId) {
return stringRedisTemplate.opsForValue().get(generateLoginPropertiesKey(userId, properties)); return stringRedisTemplate.opsForValue().get(generateLoginPropertiesKey(userId, properties,tenantId));
} }
/** /**
...@@ -119,7 +119,7 @@ public class SessionServiceImpl implements ISessionService { ...@@ -119,7 +119,7 @@ public class SessionServiceImpl implements ISessionService {
* @param properties baitiao/xyqb/vcc ... + 用户注册来源 * @param properties baitiao/xyqb/vcc ... + 用户注册来源
* @return redisKey. 用来标识这个渠道的用户 Session 是否存在 * @return redisKey. 用来标识这个渠道的用户 Session 是否存在
*/ */
private String generateLoginPropertiesKey(Long userId, LoginProperties properties) { private String generateLoginPropertiesKey(Long userId, LoginProperties properties,Integer tenantId) {
if (ObjectUtils.isEmpty(properties.getTenantId())) { if (ObjectUtils.isEmpty(properties.getTenantId())) {
return Constants.Session.USER_SESSION_ID_CACHE + ":" + userId + ":" + properties.getMerchantName() + ":" + properties.getCreatedFrom(); return Constants.Session.USER_SESSION_ID_CACHE + ":" + userId + ":" + properties.getMerchantName() + ":" + properties.getCreatedFrom();
}else if (properties.getTenantId().equals(0) || TenantUtil.TENANT_DEFAULT.equals(properties.getTenantId())) { }else if (properties.getTenantId().equals(0) || TenantUtil.TENANT_DEFAULT.equals(properties.getTenantId())) {
...@@ -129,7 +129,7 @@ public class SessionServiceImpl implements ISessionService { ...@@ -129,7 +129,7 @@ public class SessionServiceImpl implements ISessionService {
} }
} }
private String findSessionValueBySessionId(String sessionId) { private String findSessionValueBySessionId(String sessionId,Integer tenantId) {
String result = stringRedisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + sessionId); String result = stringRedisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + sessionId);
return StringUtils.defaultString(result, ""); return StringUtils.defaultString(result, "");
} }
...@@ -162,21 +162,21 @@ public class SessionServiceImpl implements ISessionService { ...@@ -162,21 +162,21 @@ public class SessionServiceImpl implements ISessionService {
@Override @Override
@UserBtRegisterFill @UserBtRegisterFill
public void persistSession(String token, SessionValue sessionValue) { public void persistSession(String token, SessionValue sessionValue,Integer tenantId) {
persistSession(token, sessionValue, Constants.Session.SESSION_VALID_TIME); persistSession(token, sessionValue, Constants.Session.SESSION_VALID_TIME,tenantId);
} }
@Override @Override
public void persistSession(String token, SessionValue sessionValue, Long time) { public void persistSession(String token, SessionValue sessionValue, Long time,Integer tenantId) {
Timestamp current = new Timestamp(System.currentTimeMillis()); Timestamp current = new Timestamp(System.currentTimeMillis());
sessionValue.setLastAccessTime(current); sessionValue.setLastAccessTime(current);
String json = JSON.toJSONString(sessionValue); String json = JSON.toJSONString(sessionValue);
stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json, stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json,
time, TimeUnit.SECONDS); time, TimeUnit.SECONDS);
String key = generateLoginPropertiesKey(sessionValue.getUser().getId(), sessionValue.getLoginProperties()); String key = generateLoginPropertiesKey(sessionValue.getUser().getId(), sessionValue.getLoginProperties(),tenantId);
stringRedisTemplate.opsForValue().set(key, token, time, TimeUnit.SECONDS); stringRedisTemplate.opsForValue().set(key, token, time, TimeUnit.SECONDS);
log.info("[Session生命期延续],token:{},有效期:[24Hour]", token); log.info("[Session生命期延续],token:{},有效期:[24Hour]", token);
setUserIdTokenKeys(sessionValue.getUser().getId(), key); setUserIdTokenKeys(sessionValue.getUser().getId(), key,tenantId);
} }
/** /**
...@@ -185,9 +185,9 @@ public class SessionServiceImpl implements ISessionService { ...@@ -185,9 +185,9 @@ public class SessionServiceImpl implements ISessionService {
* @param userId * @param userId
* @param key * @param key
*/ */
private void setUserIdTokenKeys(long userId, String key) { private void setUserIdTokenKeys(long userId, String key,Integer tenantId) {
if (0L != userId) { if (0L != userId) {
String setKey = getUserSessionSetKey(userId); String setKey = getUserSessionSetKey(userId,tenantId);
try { try {
stringRedisTemplate.opsForSet().add(setKey, key); stringRedisTemplate.opsForSet().add(setKey, key);
stringRedisTemplate.expire(setKey, Constants.Session.SESSION_VALID_TIME, TimeUnit.SECONDS); stringRedisTemplate.expire(setKey, Constants.Session.SESSION_VALID_TIME, TimeUnit.SECONDS);
...@@ -198,8 +198,8 @@ public class SessionServiceImpl implements ISessionService { ...@@ -198,8 +198,8 @@ public class SessionServiceImpl implements ISessionService {
} }
} }
private SessionStruct findSessionBySessionId(String sessionId) { private SessionStruct findSessionBySessionId(String sessionId,Integer tenantId) {
String sessionValue = findSessionValueBySessionId(sessionId); String sessionValue = findSessionValueBySessionId(sessionId,tenantId);
if (StringUtils.isEmpty(sessionValue)) { if (StringUtils.isEmpty(sessionValue)) {
log.warn("[SessionServiceImpl][findSessionBySessionId] session data 未找到:sid:{}", sessionId); log.warn("[SessionServiceImpl][findSessionBySessionId] session data 未找到:sid:{}", sessionId);
return null; return null;
...@@ -223,15 +223,15 @@ public class SessionServiceImpl implements ISessionService { ...@@ -223,15 +223,15 @@ public class SessionServiceImpl implements ISessionService {
@Override @Override
@CacheEvict(value = "userextinfocache", key = "'extinfo' + #userId", cacheManager = "cacheManager") @CacheEvict(value = "userextinfocache", key = "'extinfo' + #userId", cacheManager = "cacheManager")
public void deleteByUserId(long userId) { public void deleteByUserId(long userId,Integer tenantId) {
//1.删除session关联 //1.删除session关联
String setKey = getUserSessionSetKey(userId); String setKey = getUserSessionSetKey(userId,tenantId);
Set useIdKeys = stringRedisTemplate.opsForSet().members(setKey); Set useIdKeys = stringRedisTemplate.opsForSet().members(setKey);
if (!CollectionUtils.isEmpty(useIdKeys)) { if (!CollectionUtils.isEmpty(useIdKeys)) {
useIdKeys.forEach(key -> { useIdKeys.forEach(key -> {
log.info("删除用户userId={}的缓存信息", userId); log.info("删除用户userId={}的缓存信息", userId);
String token = stringRedisTemplate.opsForValue().get(String.valueOf(key)); String token = stringRedisTemplate.opsForValue().get(String.valueOf(key));
stringRedisTemplate.delete(getUserTokenKey(token)); stringRedisTemplate.delete(getUserTokenKey(token,tenantId));
stringRedisTemplate.delete(String.valueOf(key)); stringRedisTemplate.delete(String.valueOf(key));
}); });
//2.删除session缓存健 //2.删除session缓存健
...@@ -239,7 +239,7 @@ public class SessionServiceImpl implements ISessionService { ...@@ -239,7 +239,7 @@ public class SessionServiceImpl implements ISessionService {
} }
} }
private String getUserTokenKey(String token) { private String getUserTokenKey(String token,Integer tenantId) {
return Constants.Session.USER_SESSION_CACHE + token; return Constants.Session.USER_SESSION_CACHE + token;
} }
...@@ -255,39 +255,39 @@ public class SessionServiceImpl implements ISessionService { ...@@ -255,39 +255,39 @@ public class SessionServiceImpl implements ISessionService {
@CacheEvict(value = "userSpouseCache", key = "'spouse' + #user.id", cacheManager = "cacheManager"), @CacheEvict(value = "userSpouseCache", key = "'spouse' + #user.id", cacheManager = "cacheManager"),
@CacheEvict(value = "btRegisterCache", key = "'userId' + #user.id", cacheManager = "cacheManager")}) @CacheEvict(value = "btRegisterCache", key = "'userId' + #user.id", cacheManager = "cacheManager")})
@Override @Override
public void deleteUserCatch(User user) { public void deleteUserCatch(User user,Integer tenantId) {
} }
@Override @Override
public List<SessionStruct> findByUserId(long userId) { public List<SessionStruct> findByUserId(long userId,Integer tenantId) {
List<SessionStruct> sessionStructList = new ArrayList<>(); List<SessionStruct> sessionStructList = new ArrayList<>();
String setKey = getUserSessionSetKey(userId); String setKey = getUserSessionSetKey(userId,tenantId);
Set<String> userIdKeys = stringRedisTemplate.opsForSet().members(setKey); Set<String> userIdKeys = stringRedisTemplate.opsForSet().members(setKey);
if (CollectionUtils.isEmpty(userIdKeys)) { if (CollectionUtils.isEmpty(userIdKeys)) {
return sessionStructList; return sessionStructList;
} }
for (String userIdKey : userIdKeys) { for (String userIdKey : userIdKeys) {
String sessionId = stringRedisTemplate.opsForValue().get(userIdKey); String sessionId = stringRedisTemplate.opsForValue().get(userIdKey);
SessionStruct sessionStruct = findSessionBySessionId(sessionId); SessionStruct sessionStruct = findSessionBySessionId(sessionId,tenantId);
sessionStructList.add(sessionStruct); sessionStructList.add(sessionStruct);
} }
return sessionStructList; return sessionStructList;
} }
@Override @Override
public void persistSession(List<SessionStruct> sessionStructList) { public void persistSession(List<SessionStruct> sessionStructList,Integer tenantId) {
for (SessionStruct sessionStruct : sessionStructList) { for (SessionStruct sessionStruct : sessionStructList) {
String sid = sessionStruct.getSid(); String sid = sessionStruct.getSid();
SessionValue values = sessionStruct.getValues(); SessionValue values = sessionStruct.getValues();
persistSession(sid, values); persistSession(sid, values,tenantId);
} }
} }
@Override @Override
public void deleteSession(String token) { public void deleteSession(String token,Integer tenantId) {
SessionStruct sessionStruct = findSessionBySessionId(token); SessionStruct sessionStruct = findSessionBySessionId(token,tenantId);
if (null != sessionStruct) { if (null != sessionStruct) {
...@@ -297,7 +297,7 @@ public class SessionServiceImpl implements ISessionService { ...@@ -297,7 +297,7 @@ public class SessionServiceImpl implements ISessionService {
User user = values.getUser(); User user = values.getUser();
String key = generateLoginPropertiesKey(user.getId(), values.getLoginProperties()); String key = generateLoginPropertiesKey(user.getId(), values.getLoginProperties(),tenantId);
stringRedisTemplate.delete(key); stringRedisTemplate.delete(key);
...@@ -306,25 +306,25 @@ public class SessionServiceImpl implements ISessionService { ...@@ -306,25 +306,25 @@ public class SessionServiceImpl implements ISessionService {
} }
@Override @Override
public void persistSessionExchange(String token, SessionValue sessionValue, long expire) { public void persistSessionExchange(String token, SessionValue sessionValue, long expire,Integer tenantId) {
Timestamp current = new Timestamp(System.currentTimeMillis()); Timestamp current = new Timestamp(System.currentTimeMillis());
sessionValue.setLastAccessTime(current); sessionValue.setLastAccessTime(current);
String json = JSON.toJSONString(sessionValue); String json = JSON.toJSONString(sessionValue);
stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json, stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json,
Constants.Session.SESSION_VALID_TIME, TimeUnit.SECONDS); Constants.Session.SESSION_VALID_TIME, TimeUnit.SECONDS);
String key = generateLoginPropertiesKey(sessionValue.getUser().getId(), sessionValue.getLoginProperties()); String key = generateLoginPropertiesKey(sessionValue.getUser().getId(), sessionValue.getLoginProperties(),tenantId);
stringRedisTemplate.opsForValue().set(key, token, expire, TimeUnit.SECONDS); stringRedisTemplate.opsForValue().set(key, token, expire, TimeUnit.SECONDS);
setUserIdTokenKeys(sessionValue.getUser().getId(), key); setUserIdTokenKeys(sessionValue.getUser().getId(), key,tenantId);
} }
public void kdspDeleteSession(Long userId, LoginProperties loginProperties) { public void kdspDeleteSession(Long userId, LoginProperties loginProperties,Integer tenantId) {
List<Long> createFromList = Arrays.asList(214L, 217L); List<Long> createFromList = Arrays.asList(214L, 217L);
for (Long createFrom : createFromList) { for (Long createFrom : createFromList) {
loginProperties.setCreatedFrom(createFrom); loginProperties.setCreatedFrom(createFrom);
String key = generateLoginPropertiesKey(userId, loginProperties); String key = generateLoginPropertiesKey(userId, loginProperties,tenantId);
String token = stringRedisTemplate.opsForValue().get(key); String token = stringRedisTemplate.opsForValue().get(key);
deleteSession(token); deleteSession(token,tenantId);
} }
} }
...@@ -336,7 +336,7 @@ public class SessionServiceImpl implements ISessionService { ...@@ -336,7 +336,7 @@ public class SessionServiceImpl implements ISessionService {
* @param userId - 用户主键 * @param userId - 用户主键
* @return * @return
*/ */
private String getUserSessionSetKey(long userId) { private String getUserSessionSetKey(long userId,Integer tenantId) {
return Constants.Session.USER_SESSION_KEY_SET + userId; return Constants.Session.USER_SESSION_KEY_SET + userId;
} }
} }
...@@ -18,7 +18,7 @@ public interface IModifyPhoneNoService { ...@@ -18,7 +18,7 @@ public interface IModifyPhoneNoService {
/** /**
* *
*/ */
Long saveStep1(Long id, Step1Req step1Req); Long saveStep1(Long id, Step1Req step1Req,Integer tenantId);
/** /**
* *
...@@ -31,7 +31,7 @@ public interface IModifyPhoneNoService { ...@@ -31,7 +31,7 @@ public interface IModifyPhoneNoService {
void feedback(Long id); void feedback(Long id);
void audit(AuditReq auditReq); void audit(AuditReq auditReq,Integer tenantId);
void submitModify(ModifyPhoneRecord modifyPhoneRecord); void submitModify(ModifyPhoneRecord modifyPhoneRecord);
...@@ -43,7 +43,7 @@ public interface IModifyPhoneNoService { ...@@ -43,7 +43,7 @@ public interface IModifyPhoneNoService {
UserModifyPhoneRecordResp getLastRecord(Long userId); UserModifyPhoneRecordResp getLastRecord(Long userId);
void saveRejectReason(ModifyRejectRecord modifyRejectRecord); void saveRejectReason(ModifyRejectRecord modifyRejectRecord,Integer tenantId);
UserModifyPhoneRecordResp modifyRecord(String prevPhoneNo); UserModifyPhoneRecordResp modifyRecord(String prevPhoneNo);
} }
...@@ -16,45 +16,44 @@ import java.util.Map; ...@@ -16,45 +16,44 @@ import java.util.Map;
*/ */
public interface IUserService { public interface IUserService {
User findByPhoneWithCache(String phone); User findByPhoneWithCache(String phone,Integer tenantId);
User findByUuidWithCache(String uuid); User findByUuidWithCache(String uuid,Integer tenantId);
boolean exist(String phoneNo); boolean exist(String phoneNo,Integer tenantId);
boolean resetPassword(String phoneNo, String password); boolean resetPassword(String phoneNo, String password,Integer tenantId);
User findByPhoneInDb(String phone); User findByPhoneInDb(String phone,Integer tenantId);
User findSlaveByPhoneInDb(String phone); User findSlaveByPhoneInDb(String phone,Integer tenantId);
User findByUuidInDb(String uuid); User findByUuidInDb(String uuid,Integer tenantId);
/** /**
* 根据手机号或身份证号查询用户UUID * 根据手机号或身份证号查询用户UUID
* *
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @param idNo - 身份证号
* @return user表的uuid * @return user表的uuid
*/ */
String findUuid(String phoneNo, String idNo); String findUuid(String phoneNo,Integer tenantId);
Map<Long, String> findPhoneByIdsInDb(List<Long> userIds, Integer tenantId); Map<Long, String> findPhoneByIdsInDb(List<Long> userIds, Integer tenantId);
User saveUser(User user); User saveUser(User user);
User findById(Long userId); User findById(Long userId,Integer tenantId);
List<User> findByPhones(List<String> phones); List<User> findByPhones(List<String> phones,Integer tenantId);
List<User> findRegisterUserByTime(String beginTime, String endTime); List<User> findRegisterUserByTime(String beginTime, String endTime,Integer tenantId);
/** /**
* 禁用用户 * 禁用用户
* *
* @param phoneNo 电话号码 * @param phoneNo 电话号码
*/ */
int forbiddenUser(Boolean enable, String phoneNo); int forbiddenUser(Boolean enable, String phoneNo,Integer tenantId);
List<UserInfo> findUserInfosByPhones(List<String> phones, Integer tenantId); List<UserInfo> findUserInfosByPhones(List<String> phones, Integer tenantId);
...@@ -73,11 +72,11 @@ public interface IUserService { ...@@ -73,11 +72,11 @@ public interface IUserService {
* @param uuid 根据 uuid * @param uuid 根据 uuid
* @param phoneNo 根据手机号 * @param phoneNo 根据手机号
*/ */
void userCacheEvict(String uuid, String phoneNo); void userCacheEvict(String uuid, String phoneNo,Integer tenantId);
JsonResult loginFast(Long channelId, String appChannel, Long createdFrom, Long btRegisterChannelId, JsonResult loginFast(Long channelId, String appChannel, Long createdFrom, Long btRegisterChannelId,
String dimension, String clickId, HttpServletRequest request, Merchant merchant, String dimension, String clickId, HttpServletRequest request, Merchant merchant,
String phoneNo, Integer tenantId, Long geetestLogId); String phoneNo, Integer tenantId, Long geetestLogId,String appId);
/** /**
* 查询用户全量信息 * 查询用户全量信息
...@@ -99,23 +98,21 @@ public interface IUserService { ...@@ -99,23 +98,21 @@ public interface IUserService {
/** /**
* 登出 * 登出
*/ */
void logout(String token); void logout(String token,Integer tenantId);
void kdspLogout(Long userId, LoginProperties loginProperties); void kdspLogout(Long userId, LoginProperties loginProperties,Integer tenantId);
List<User> findAll();
/** /**
* 通过userId销户 * 通过userId销户
* *
* @param userId 用户id * @param userId 用户id
*/ */
void deregister(Long userId); void deregister(Long userId,Integer tenantId);
User submitModifyPhone(String prevPhoneNo, String curPhoneNo); User submitModifyPhone(String prevPhoneNo, String curPhoneNo,Integer tenantId);
/** /**
* 渠道用户签署合同 * 渠道用户签署合同
*/ */
void channelUserSignContract(User user, Long loginFrom); void channelUserSignContract(User user, Long loginFrom,Integer tenantId);
} }
...@@ -111,9 +111,9 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -111,9 +111,9 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
@Override @Override
@AccessLimit(redisKey = "saveStep1") @AccessLimit(redisKey = "saveStep1")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long saveStep1(Long userId, Step1Req step1Req) { public Long saveStep1(Long userId, Step1Req step1Req,Integer tenantId) {
allowModify4Step1(userId, step1Req.getName(), step1Req.getIdCard(), step1Req.getPrevPhoneNo(), step1Req.getCurPhoneNo(), allowModify4Step1(userId, step1Req.getName(), step1Req.getIdCard(), step1Req.getPrevPhoneNo(), step1Req.getCurPhoneNo(),
step1Req.getSmsCode()); step1Req.getSmsCode(),tenantId);
ModifyPhoneNo modifyPhoneNo = Step1Req.adapt(step1Req); ModifyPhoneNo modifyPhoneNo = Step1Req.adapt(step1Req);
modifyPhoneNo.setUserId(userId); modifyPhoneNo.setUserId(userId);
modifyPhoneNoRepository.saveAndFlush(modifyPhoneNo); modifyPhoneNoRepository.saveAndFlush(modifyPhoneNo);
...@@ -229,7 +229,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -229,7 +229,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void audit(AuditReq auditReq) { public void audit(AuditReq auditReq,Integer tenantId) {
ModifyPhoneNo modifyPhoneNo = modifyPhoneNoRepository.findOne(auditReq.getId()); ModifyPhoneNo modifyPhoneNo = modifyPhoneNoRepository.findOne(auditReq.getId());
if (modifyPhoneNo == null) { if (modifyPhoneNo == null) {
throw new DataException("数据不存在。"); throw new DataException("数据不存在。");
...@@ -242,7 +242,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -242,7 +242,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
if (ModifyPhoneNoApplyStatusEnum.DONE == auditReq.getApplyStatus()) { if (ModifyPhoneNoApplyStatusEnum.DONE == auditReq.getApplyStatus()) {
log.info("audit userId = 【{}】, name = 【{}】, idCard = 【{}】, prevPhoneNo = 【{}】, " + log.info("audit userId = 【{}】, name = 【{}】, idCard = 【{}】, prevPhoneNo = 【{}】, " +
"curPhoneNo = 【{}】", modifyPhoneNo.getUserId(), modifyPhoneNo.getName(), modifyPhoneNo.getIdCard(), modifyPhoneNo.getPrevPhoneNo(), modifyPhoneNo.getCurPhoneNo()); "curPhoneNo = 【{}】", modifyPhoneNo.getUserId(), modifyPhoneNo.getName(), modifyPhoneNo.getIdCard(), modifyPhoneNo.getPrevPhoneNo(), modifyPhoneNo.getCurPhoneNo());
if (userRepository.findByPhoneNo(modifyPhoneNo.getCurPhoneNo()) != null) { if (userRepository.findByPhoneNoAndTenantId(modifyPhoneNo.getCurPhoneNo(),tenantId) != null) {
throw new DataException("新手机号已存在,不支持更换。"); throw new DataException("新手机号已存在,不支持更换。");
} }
// 请求其他系统信息 // 请求其他系统信息
...@@ -259,7 +259,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -259,7 +259,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
// 如果有返回值 // 如果有返回值
if ("0000".equals(resultStrJson.getBusinessCode()) || "4014".equals(resultStrJson.getBusinessCode())) { if ("0000".equals(resultStrJson.getBusinessCode()) || "4014".equals(resultStrJson.getBusinessCode())) {
// 同步金融修改电商 // 同步金融修改电商
User user = userService.findById(modifyPhoneNo.getUserId()); User user = userService.findById(modifyPhoneNo.getUserId(),tenantId);
userService.modifyPhoneNo(modifyPhoneNo.getPrevPhoneNo(), modifyPhoneNo.getCurPhoneNo(),user.getTenantId()); userService.modifyPhoneNo(modifyPhoneNo.getPrevPhoneNo(), modifyPhoneNo.getCurPhoneNo(),user.getTenantId());
modifyPhoneNo.setApplyStatus(ModifyPhoneNoApplyStatusEnum.DONE.ordinal()); modifyPhoneNo.setApplyStatus(ModifyPhoneNoApplyStatusEnum.DONE.ordinal());
modifyPhoneNo.setProcessingStatus(ModifyPhoneNoProcessingStatusEnum.WAIT_4_USER_FEEDBACK.ordinal()); modifyPhoneNo.setProcessingStatus(ModifyPhoneNoProcessingStatusEnum.WAIT_4_USER_FEEDBACK.ordinal());
...@@ -283,7 +283,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -283,7 +283,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
if (Objects.isNull(modifyPhoneRecord.getUserId())){ if (Objects.isNull(modifyPhoneRecord.getUserId())){
throw new DataException("用户ID不能为空"); throw new DataException("用户ID不能为空");
} }
User user = userService.findById(modifyPhoneRecord.getUserId()); User user = userService.findById(modifyPhoneRecord.getUserId(),modifyPhoneRecord.getTenantId());
if (user == null) { if (user == null) {
throw new DataException("用户不存在"); throw new DataException("用户不存在");
} }
...@@ -310,12 +310,12 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -310,12 +310,12 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
// 如果有返回值 // 如果有返回值
if ("0000".equals(resultStrJson.getBusinessCode()) || "4014".equals(resultStrJson.getBusinessCode())) { if ("0000".equals(resultStrJson.getBusinessCode()) || "4014".equals(resultStrJson.getBusinessCode())) {
// 同步金融修改电商 // 同步金融修改电商
userService.submitModifyPhone(modifyPhoneRecord.getPrevPhoneNo(), modifyPhoneRecord.getCurPhoneNo()); userService.submitModifyPhone(modifyPhoneRecord.getPrevPhoneNo(), modifyPhoneRecord.getCurPhoneNo(),modifyPhoneRecord.getTenantId());
record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.DONE.ordinal()); record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.DONE.ordinal());
record.setFinancialResponse(JSONObject.toJSONString(resultStrJson)); record.setFinancialResponse(JSONObject.toJSONString(resultStrJson));
modifyPhoneRecordRepository.saveAndFlush(record); modifyPhoneRecordRepository.saveAndFlush(record);
//登出此用户 //登出此用户
sessionService.deleteByUserId(user.getId()); sessionService.deleteByUserId(user.getId(),modifyPhoneRecord.getTenantId());
} else { } else {
String msg = "金融返回失败" + (StringUtils.isNotBlank(resultStrJson.getMsg()) ? ":" + resultStrJson.getMsg() : ""); String msg = "金融返回失败" + (StringUtils.isNotBlank(resultStrJson.getMsg()) ? ":" + resultStrJson.getMsg() : "");
record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.NO_ALLOW.ordinal()); record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.NO_ALLOW.ordinal());
...@@ -345,7 +345,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -345,7 +345,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
if (modifyPhoneRecord.getCurPhoneNo().equals(modifyPhoneRecord.getPrevPhoneNo())) { if (modifyPhoneRecord.getCurPhoneNo().equals(modifyPhoneRecord.getPrevPhoneNo())) {
throw new DataException("新手机号已存在,不支持更换"); throw new DataException("新手机号已存在,不支持更换");
} }
User user = userService.findByPhoneInDb(modifyPhoneRecord.getPrevPhoneNo()); User user = userService.findByPhoneInDb(modifyPhoneRecord.getPrevPhoneNo(),modifyPhoneRecord.getTenantId());
if (user == null) { if (user == null) {
throw new AppletException("用户不存在", "1001"); throw new AppletException("用户不存在", "1001");
} }
...@@ -355,14 +355,14 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -355,14 +355,14 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
throw new DataException("原手机号填写不符"); throw new DataException("原手机号填写不符");
} }
userService.submitModifyPhone(modifyPhoneRecord.getPrevPhoneNo(), modifyPhoneRecord.getCurPhoneNo()); userService.submitModifyPhone(modifyPhoneRecord.getPrevPhoneNo(), modifyPhoneRecord.getCurPhoneNo(),modifyPhoneRecord.getTenantId());
UserModifyPhoneRecord record = new UserModifyPhoneRecord(); UserModifyPhoneRecord record = new UserModifyPhoneRecord();
BeanUtils.copyProperties(modifyPhoneRecord, record); BeanUtils.copyProperties(modifyPhoneRecord, record);
record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.DONE.ordinal()); record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.DONE.ordinal());
record.setUserId(user.getId()); record.setUserId(user.getId());
modifyPhoneRecordRepository.saveAndFlush(record); modifyPhoneRecordRepository.saveAndFlush(record);
//登出此用户 //登出此用户
sessionService.deleteByUserId(user.getId()); sessionService.deleteByUserId(user.getId(),modifyPhoneRecord.getTenantId());
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -397,11 +397,11 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -397,11 +397,11 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
if (modifyPhoneRecord.getCurPhoneNo().equals(modifyPhoneRecord.getPrevPhoneNo())) { if (modifyPhoneRecord.getCurPhoneNo().equals(modifyPhoneRecord.getPrevPhoneNo())) {
throw new DataException("新手机号与原手机号相同"); throw new DataException("新手机号与原手机号相同");
} }
User userByCurPhoneNo = userService.findByPhoneInDb(modifyPhoneRecord.getCurPhoneNo()); User userByCurPhoneNo = userService.findByPhoneInDb(modifyPhoneRecord.getCurPhoneNo(),modifyPhoneRecord.getTenantId());
if (Objects.nonNull(userByCurPhoneNo)){ if (Objects.nonNull(userByCurPhoneNo)){
throw new DataException("新手机号已存在,不支持更换"); throw new DataException("新手机号已存在,不支持更换");
} }
User user = userService.findByPhoneInDb(modifyPhoneRecord.getPrevPhoneNo()); User user = userService.findByPhoneInDb(modifyPhoneRecord.getPrevPhoneNo(),modifyPhoneRecord.getTenantId());
if (user == null) { if (user == null) {
throw new AppletException("用户不存在", "1001"); throw new AppletException("用户不存在", "1001");
} }
...@@ -428,12 +428,12 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -428,12 +428,12 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
// 如果有返回值 // 如果有返回值
if ("0000".equals(resultStrJson.getBusinessCode()) || "4014".equals(resultStrJson.getBusinessCode())) { if ("0000".equals(resultStrJson.getBusinessCode()) || "4014".equals(resultStrJson.getBusinessCode())) {
// 同步金融修改电商 // 同步金融修改电商
userService.submitModifyPhone(modifyPhoneRecord.getPrevPhoneNo(), modifyPhoneRecord.getCurPhoneNo()); userService.submitModifyPhone(modifyPhoneRecord.getPrevPhoneNo(), modifyPhoneRecord.getCurPhoneNo(),modifyPhoneRecord.getTenantId());
record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.DONE.ordinal()); record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.DONE.ordinal());
record.setFinancialResponse(JSONObject.toJSONString(resultStrJson)); record.setFinancialResponse(JSONObject.toJSONString(resultStrJson));
modifyPhoneRecordRepository.saveAndFlush(record); modifyPhoneRecordRepository.saveAndFlush(record);
//登出此用户 //登出此用户
sessionService.deleteByUserId(user.getId()); sessionService.deleteByUserId(user.getId(),modifyPhoneRecord.getTenantId());
} else { } else {
String msg = "金融返回失败" + (StringUtils.isNotBlank(resultStrJson.getMsg()) ? ":" + resultStrJson.getMsg() : ""); String msg = "金融返回失败" + (StringUtils.isNotBlank(resultStrJson.getMsg()) ? ":" + resultStrJson.getMsg() : "");
record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.NO_ALLOW.ordinal()); record.setApplyStatus(ModifyPhoneNoApplyStatusEnum.NO_ALLOW.ordinal());
...@@ -472,8 +472,8 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -472,8 +472,8 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
} }
@Override @Override
public void saveRejectReason(ModifyRejectRecord modifyRejectRecord) { public void saveRejectReason(ModifyRejectRecord modifyRejectRecord,Integer tenantId) {
User user = userService.findById(modifyRejectRecord.getUserId()); User user = userService.findById(modifyRejectRecord.getUserId(),tenantId);
if (user == null) { if (user == null) {
throw new AppletException("用户不存在", "1001"); throw new AppletException("用户不存在", "1001");
} }
...@@ -536,7 +536,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -536,7 +536,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
* @param smsCode 新手机号码短信验证码 * @param smsCode 新手机号码短信验证码
* @return * @return
*/ */
public void allowModify4Step1(Long userId, String name, String idCard, String prevPhoneNo, String curPhoneNo, String smsCode) { public void allowModify4Step1(Long userId, String name, String idCard, String prevPhoneNo, String curPhoneNo, String smsCode,Integer tenantId) {
log.info("allowModify4Step1 userId = 【{}】, name = 【{}】, idCard = 【{}】, prevPhoneNo = 【{}】, " + log.info("allowModify4Step1 userId = 【{}】, name = 【{}】, idCard = 【{}】, prevPhoneNo = 【{}】, " +
"curPhoneNo = 【{}】, smsCode = 【{}】", userId, name, idCard, prevPhoneNo, curPhoneNo, smsCode); "curPhoneNo = 【{}】, smsCode = 【{}】", userId, name, idCard, prevPhoneNo, curPhoneNo, smsCode);
if (modifyPhoneNoRepository.findFirstByUserIdAndApplyStatus(userId, ModifyPhoneNoProcessingStatusEnum.INIT.ordinal()) != null) { if (modifyPhoneNoRepository.findFirstByUserIdAndApplyStatus(userId, ModifyPhoneNoProcessingStatusEnum.INIT.ordinal()) != null) {
...@@ -546,7 +546,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -546,7 +546,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
throw new DataException("验证码不正确。"); throw new DataException("验证码不正确。");
} }
if (userService.findByPhoneInDb(curPhoneNo) != null) { if (userService.findByPhoneInDb(curPhoneNo,tenantId) != null) {
throw new DataException("填写信息有误,新手机号已注册。"); throw new DataException("填写信息有误,新手机号已注册。");
} }
// checkLoanStatus(userId); 调用金融接口方式是错误的,改为同步金融一起修改手机号 // checkLoanStatus(userId); 调用金融接口方式是错误的,改为同步金融一起修改手机号
......
...@@ -19,9 +19,13 @@ import cn.quantgroup.xyqb.service.captcha.IGeetestLogService; ...@@ -19,9 +19,13 @@ import cn.quantgroup.xyqb.service.captcha.IGeetestLogService;
import cn.quantgroup.xyqb.service.register.IUserDeregisterService; import cn.quantgroup.xyqb.service.register.IUserDeregisterService;
import cn.quantgroup.xyqb.service.register.IUserRegisterService; import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.*; import cn.quantgroup.xyqb.service.user.ILockIpv4Service;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.service.wechat.IWechatService; import cn.quantgroup.xyqb.service.wechat.IWechatService;
import cn.quantgroup.xyqb.util.*; import cn.quantgroup.xyqb.util.BctyptPasswordUtil;
import cn.quantgroup.xyqb.util.IpUtil;
import cn.quantgroup.xyqb.util.MqUtils;
import cn.quantgroup.xyqb.util.ValidationUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -119,21 +123,20 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -119,21 +123,20 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Override @Override
// @Cacheable(value = "usercache", key = "'xyqbuser' + #phone", unless = "#result == null", cacheManager = "cacheManager") // @Cacheable(value = "usercache", key = "'xyqbuser' + #phone", unless = "#result == null", cacheManager = "cacheManager")
public User findByPhoneInDb(String phone) { public User findByPhoneInDb(String phone, Integer tenantId) {
if (StringUtils.isBlank(phone)) { if (StringUtils.isBlank(phone)) {
return null; return null;
} }
User user = userRepository.findByEncryptedPhoneNo(phone); User user = userRepository.findByEncryptedPhoneNoAndTenantId(phone, tenantId);
if (user == null) { if (user == null) {
user = userRepository.findByPhoneNo(phone); user = userRepository.findByPhoneNoAndTenantId(phone, tenantId);
} }
return user; return user;
} }
@Override @Override
// @Cacheable(value = "usercache", key = "'xyqbuser' + #phone", unless = "#result == null", cacheManager = "cacheManager") public User findSlaveByPhoneInDb(String phone, Integer tenantId) {
public User findSlaveByPhoneInDb(String phone) { return userRepository.findByPhoneNoAndTenantId(phone, tenantId);
return userRepository.findByPhoneNo(phone);
} }
@Override @Override
...@@ -141,24 +144,20 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -141,24 +144,20 @@ public class UserServiceImpl implements IUserService, IBaseController {
if (CollectionUtils.isEmpty(userIds)) { if (CollectionUtils.isEmpty(userIds)) {
return Maps.newHashMap(); return Maps.newHashMap();
} }
List<User> users = userRepository.findByIdIn(userIds); List<User> users = userRepository.findByIdInAndTenantId(userIds, tenantId);
return users.stream().collect(Collectors.toMap(User::getId, User::getPhoneNo)); return users.stream().collect(Collectors.toMap(User::getId, User::getPhoneNo));
} }
@Override @Override
public User findByUuidInDb(String uuid) { public User findByUuidInDb(String uuid, Integer tenantId) {
return userRepository.findByUuid(uuid); return userRepository.findByUuidAndTenantId(uuid, tenantId);
} }
@Override @Override
public String findUuid(String phoneNo, String idNo) { public String findUuid(String phoneNo, Integer tenantId) {
// 优先按手机号查 // 优先按手机号查
if (ValidationUtil.validatePhoneNo(phoneNo)) { if (ValidationUtil.validatePhoneNo(phoneNo)) {
return userRepository.findUuidByPhoneNo(phoneNo); return userRepository.findUuidByPhoneNoAndTenantId(phoneNo, tenantId);
}
// 按身份证号查
if (StringUtils.isNotBlank(idNo)) {
return userRepository.findUuidByIdNo(idNo);
} }
return null; return null;
} }
...@@ -170,21 +169,23 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -170,21 +169,23 @@ public class UserServiceImpl implements IUserService, IBaseController {
} }
@Override @Override
public User findById(Long userId) { public User findById(Long userId, Integer tenantId) {
return userRepository.findById(userId); return userRepository.findByIdAndTenantId(userId, tenantId);
} }
@Override @Override
public List<User> findByPhones(List<String> phones) { public List<User> findByPhones(List<String> phones, Integer tenantId) {
Pageable pageable = new PageRequest(0, 500, new Sort(Sort.Direction.DESC, "id")); Pageable pageable = new PageRequest(0, 500, new Sort(Sort.Direction.DESC, "id"));
Page<User> userPageList = userRepository.findAll((root, query, cb) -> { Page<User> userPageList = userRepository.findAll((root, query, cb) -> {
query.where(root.get(Constants.ENCRYPTED_PHONE_NO).as(String.class).in(phones)); query.where(root.get(Constants.ENCRYPTED_PHONE_NO).as(String.class).in(phones)
, root.get("tenant_id").as(Integer.class).in(tenantId))
;
return query.getRestriction(); return query.getRestriction();
}, pageable); }, pageable);
List<User> userList = userPageList.getContent(); List<User> userList = userPageList.getContent();
if (userList.isEmpty()) { if (userList.isEmpty()) {
userList = userRepository.findAll((root, query, cb) -> { userList = userRepository.findAll((root, query, cb) -> {
query.where(root.get(Constants.PHONE_NO).as(String.class).in(phones)); query.where(root.get(Constants.PHONE_NO).as(String.class).in(phones), root.get("tenant_id").as(Integer.class).in(tenantId));
return query.getRestriction(); return query.getRestriction();
}); });
} }
...@@ -192,26 +193,26 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -192,26 +193,26 @@ public class UserServiceImpl implements IUserService, IBaseController {
} }
@Override @Override
public User findByPhoneWithCache(String phone) { public User findByPhoneWithCache(String phone, Integer tenantId) {
if (StringUtils.isBlank(phone)) { if (StringUtils.isBlank(phone)) {
return null; return null;
} }
User user = userRepository.findByEncryptedPhoneNo(phone); User user = userRepository.findByEncryptedPhoneNoAndTenantId(phone,tenantId);
if (user == null) { if (user == null) {
user = userRepository.findByPhoneNo(phone); user = userRepository.findByPhoneNoAndTenantId(phone,tenantId);
} }
return user; return user;
} }
@Override @Override
// @Cacheable(value = "usercache", key = "'xyqbuser' + #uuid", unless = "#result == null", cacheManager = "cacheManager") // @Cacheable(value = "usercache", key = "'xyqbuser' + #uuid", unless = "#result == null", cacheManager = "cacheManager")
public User findByUuidWithCache(String uuid) { public User findByUuidWithCache(String uuid, Integer tenantId) {
return userRepository.findByUuid(uuid); return userRepository.findByUuidAndTenantId(uuid,tenantId);
} }
@Override @Override
public boolean exist(String phoneNo) { public boolean exist(String phoneNo, Integer tenantId) {
return userRepository.findByPhoneNo(phoneNo) != null; return userRepository.findByPhoneNoAndTenantId(phoneNo,tenantId) != null;
} }
/** /**
...@@ -223,9 +224,9 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -223,9 +224,9 @@ public class UserServiceImpl implements IUserService, IBaseController {
* @date 2017-02-15 修改用户修改密码时,更新updatedAt时间 * @date 2017-02-15 修改用户修改密码时,更新updatedAt时间
*/ */
@Override @Override
@CacheEvict(value = "usercache", key = "'xyqbuser' + #phoneNo", cacheManager = "cacheManager") @CacheEvict(value = "usercache", key = "'xyqbuser' + #phoneNo + #tenantId", cacheManager = "cacheManager")
public boolean resetPassword(String phoneNo, String password) { public boolean resetPassword(String phoneNo, String password, Integer tenantId) {
User user = findByPhoneInDb(phoneNo); User user = findByPhoneInDb(phoneNo, tenantId);
if (user == null) { if (user == null) {
throw new RuntimeException("用户[" + phoneNo + "]不存在"); throw new RuntimeException("用户[" + phoneNo + "]不存在");
} }
...@@ -234,31 +235,31 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -234,31 +235,31 @@ public class UserServiceImpl implements IUserService, IBaseController {
user.setCipherPassword(BctyptPasswordUtil.BCryptWithSalt(password)); user.setCipherPassword(BctyptPasswordUtil.BCryptWithSalt(password));
user = userRepository.save(user); user = userRepository.save(user);
stringRedisTemplate.expire("usercache:xyqbuser" + phoneNo, 1L, TimeUnit.MILLISECONDS); stringRedisTemplate.expire("usercache:xyqbuser" + phoneNo, 1L, TimeUnit.MILLISECONDS);
sessionService.deleteByUserId(user.getId()); sessionService.deleteByUserId(user.getId(),tenantId);
return BctyptPasswordUtil.BCryptCheckPw(password, user.getCipherPassword()); return BctyptPasswordUtil.BCryptCheckPw(password, user.getCipherPassword());
} }
@Override @Override
public List<User> findRegisterUserByTime(String beginTime, String endTime) { public List<User> findRegisterUserByTime(String beginTime, String endTime, Integer tenantId) {
return userRepository.findRegisterUserByTime(beginTime, endTime); return userRepository.findRegisterUserByTimeAndTenantId(beginTime, endTime,tenantId);
} }
@Override @Override
@CacheEvict(value = "usercache", key = "'xyqbuser' + #phoneNo", cacheManager = "cacheManager") @CacheEvict(value = "usercache", key = "'xyqbuser' + #phoneNo", cacheManager = "cacheManager")
public int forbiddenUser(Boolean enable, String phoneNo) { public int forbiddenUser(Boolean enable, String phoneNo, Integer tenantId) {
return userRepository.forbiddenUser(enable, phoneNo); return userRepository.forbiddenUserAndTenantId(enable, phoneNo,tenantId);
} }
@Override @Override
public List<UserInfo> findUserInfosByPhones(List<String> phones, Integer tenantId) { public List<UserInfo> findUserInfosByPhones(List<String> phones, Integer tenantId) {
List<User> users = findByPhones(phones); List<User> users = findByPhones(phones,tenantId);
if (CollectionUtils.isEmpty(phones)) { if (CollectionUtils.isEmpty(phones)) {
return Collections.emptyList(); return Collections.emptyList();
} }
List<UserInfoEntity> userDetails = userInfoRepository.findByTenantIdAndPhoneNoIn(tenantId,phones); List<UserInfoEntity> userDetails = userInfoRepository.findByTenantIdAndPhoneNoIn(tenantId, phones);
if (!CollectionUtils.isEmpty(users)) { if (!CollectionUtils.isEmpty(users)) {
Map<Long, User> userMap = Maps.newHashMapWithExpectedSize(users.size()); Map<Long, User> userMap = Maps.newHashMapWithExpectedSize(users.size());
...@@ -281,15 +282,15 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -281,15 +282,15 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public User modifyPhoneNo(String oldPhoneNo, String newPhoneNo,Integer tenantId) { public User modifyPhoneNo(String oldPhoneNo, String newPhoneNo, Integer tenantId) {
//1. 判断新手机号是否存在 //1. 判断新手机号是否存在
User newPhoneUser = userRepository.findByPhoneNo(newPhoneNo); User newPhoneUser = userRepository.findByPhoneNoAndTenantId(newPhoneNo,tenantId);
UserInfoEntity newPhoneUserDetail = userInfoRepository.findByPhoneNoAndTenantId(newPhoneNo,tenantId); UserInfoEntity newPhoneUserDetail = userInfoRepository.findByPhoneNoAndTenantId(newPhoneNo, tenantId);
if (Objects.nonNull(newPhoneUser) || Objects.nonNull(newPhoneUserDetail)) { if (Objects.nonNull(newPhoneUser) || Objects.nonNull(newPhoneUserDetail)) {
//新手机号已存在 //新手机号已存在
throw new DataException("新手机号存在, 用户修改手机号后新手机号注册了。"); throw new DataException("新手机号存在, 用户修改手机号后新手机号注册了。");
} }
User oldPhoneUser = userRepository.findByPhoneNo(oldPhoneNo); User oldPhoneUser = userRepository.findByPhoneNoAndTenantId(oldPhoneNo,tenantId);
if (Objects.isNull(oldPhoneUser)) { if (Objects.isNull(oldPhoneUser)) {
//这不是扯了.旧手机号不存在. //这不是扯了.旧手机号不存在.
throw new DataException("旧手机号不存在, 可能已经修改成功了。"); throw new DataException("旧手机号不存在, 可能已经修改成功了。");
...@@ -301,7 +302,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -301,7 +302,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
User user = userRepository.saveAndFlush(oldPhoneUser); User user = userRepository.saveAndFlush(oldPhoneUser);
//2.2 修改 user_detail 表 //2.2 修改 user_detail 表
UserInfoEntity oldPhoneUserDetail = userInfoRepository.findByPhoneNoAndTenantId(oldPhoneNo,tenantId); UserInfoEntity oldPhoneUserDetail = userInfoRepository.findByPhoneNoAndTenantId(oldPhoneNo, tenantId);
oldPhoneUserDetail.setPhoneNo(newPhoneNo); oldPhoneUserDetail.setPhoneNo(newPhoneNo);
userInfoRepository.save(oldPhoneUserDetail); userInfoRepository.save(oldPhoneUserDetail);
...@@ -316,7 +317,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -316,7 +317,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
@CacheEvict(value = "usercache", key = "'xyqbuser' + #phoneNo", cacheManager = "cacheManager"), @CacheEvict(value = "usercache", key = "'xyqbuser' + #phoneNo", cacheManager = "cacheManager"),
@CacheEvict(value = "usercache", key = "'xyqbuser' + #uuid", cacheManager = "cacheManager") @CacheEvict(value = "usercache", key = "'xyqbuser' + #uuid", cacheManager = "cacheManager")
}) })
public void userCacheEvict(String uuid, String phoneNo) { public void userCacheEvict(String uuid, String phoneNo, Integer tenantId) {
log.info("清理用户缓存成功,uuid:{},phoneNo:{}", uuid, phoneNo); log.info("清理用户缓存成功,uuid:{},phoneNo:{}", uuid, phoneNo);
} }
...@@ -326,9 +327,9 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -326,9 +327,9 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Override @Override
@RedisLock(prefix = "lock:login:fast:", key = "#this[8]") @RedisLock(prefix = "lock:login:fast:", key = "#this[8]")
public JsonResult loginFast(Long channelId, String appChannel, Long createdFrom, Long btRegisterChannelId, public JsonResult loginFast(Long channelId, String appChannel, Long createdFrom, Long btRegisterChannelId,
String dimension, String clickId, HttpServletRequest request, Merchant merchant, String phoneNo, Integer tenantId, Long geetestLogId) { String dimension, String clickId, HttpServletRequest request, Merchant merchant, String phoneNo, Integer tenantId, Long geetestLogId,String appId) {
Boolean register = false; Boolean register = false;
User user = findByPhoneWithCache(phoneNo); User user = findByPhoneWithCache(phoneNo,tenantId);
if (user != null && !user.getEnable()) { if (user != null && !user.getEnable()) {
log.info("用户不存在,或者已经注销,phoneNo:{}", phoneNo); log.info("用户不存在,或者已经注销,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult(USER_ERROR_OR_ENABLE_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_ENABLE_ERROR, null);
...@@ -343,7 +344,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -343,7 +344,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
MqUtils.sendRegisterMessageForGdt(phoneNo, clickId); MqUtils.sendRegisterMessageForGdt(phoneNo, clickId);
register = true; register = true;
} }
if (!wechatRelateUserIfNecessary(user, request)) { if (!wechatRelateUserIfNecessary(user, request,appId,tenantId)) {
return JsonResult.buildErrorStateResult("登录时微信关联失败", null); return JsonResult.buildErrorStateResult("登录时微信关联失败", null);
} }
...@@ -390,7 +391,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -390,7 +391,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
geetestLogService.updateByUidGeetestLog(geetestLogId, user.getId()); geetestLogService.updateByUidGeetestLog(geetestLogId, user.getId());
} }
LoginProperties loginProperties = new LoginProperties("", 3, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName(), tenantId); LoginProperties loginProperties = new LoginProperties("", 3, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName(), tenantId);
AuthBean session = sessionService.createSession(user, loginProperties, LoginType.VERIFICATIONCODE.ordinal()); AuthBean session = sessionService.createSession(user, loginProperties, LoginType.VERIFICATIONCODE.ordinal(),tenantId);
session.setRegister(register); session.setRegister(register);
lockIpv4Service.unLockPhone(phoneNo); lockIpv4Service.unLockPhone(phoneNo);
return new JsonResult(session); return new JsonResult(session);
...@@ -403,7 +404,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -403,7 +404,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
* @param request - 当前请求 * @param request - 当前请求
* @return true - 继续登录,false - 微信关联失败,重新登录 * @return true - 继续登录,false - 微信关联失败,重新登录
*/ */
private boolean wechatRelateUserIfNecessary(User user, HttpServletRequest request) { private boolean wechatRelateUserIfNecessary(User user, HttpServletRequest request,String appId ,Integer tenantId) {
Objects.requireNonNull(request, "无效请求"); Objects.requireNonNull(request, "无效请求");
String clientIp = IpUtil.getRemoteIP(request); String clientIp = IpUtil.getRemoteIP(request);
Set<String> paramKeys = request.getParameterMap().keySet(); Set<String> paramKeys = request.getParameterMap().keySet();
...@@ -417,7 +418,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -417,7 +418,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
Long userId = user.getId(); Long userId = user.getId();
String phoneNo = user.getPhoneNo(); String phoneNo = user.getPhoneNo();
try { try {
int rows = wechatService.relateUser(userId, phoneNo, request.getParameter(Constants.WECHAT_OPEN_ID)); int rows = wechatService.relateUser(userId, phoneNo, request.getParameter(Constants.WECHAT_OPEN_ID),appId,tenantId);
return rows > 0; return rows > 0;
} catch (Exception e) { } catch (Exception e) {
log.error("微信关联失败,user:{}, request-Header:{}", user, JSON.toJSONString(getRequestHeaderMap(request)), e); log.error("微信关联失败,user:{}, request-Header:{}", user, JSON.toJSONString(getRequestHeaderMap(request)), e);
...@@ -432,9 +433,9 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -432,9 +433,9 @@ public class UserServiceImpl implements IUserService, IBaseController {
* @return * @return
*/ */
@Override @Override
public UserFullResp findUserFullSearchByUserId(Long userId,Integer tenantId) { public UserFullResp findUserFullSearchByUserId(Long userId, Integer tenantId) {
User user = userRepository.findById(userId); User user = userRepository.findByIdAndTenantId(userId,tenantId);
UserInfoEntity userDetail = userInfoRepository.findByUserIdAndTenantId(userId,tenantId); UserInfoEntity userDetail = userInfoRepository.findByUserIdAndTenantId(userId, tenantId);
UserFullResp userFullResp = UserFullResp.builder().userId(userId).build(); UserFullResp userFullResp = UserFullResp.builder().userId(userId).build();
if (user != null) { if (user != null) {
...@@ -461,35 +462,30 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -461,35 +462,30 @@ public class UserServiceImpl implements IUserService, IBaseController {
List<Long> collect = vals.stream() List<Long> collect = vals.stream()
.map(Long::valueOf) .map(Long::valueOf)
.collect(Collectors.toList()); .collect(Collectors.toList());
users = userRepository.findByIdIn(collect); users = userRepository.findByIdInAndTenantId(collect,tenantId);
} else { //不是1 就是 uuids } else { //不是1 就是 uuids
users = userRepository.findByUuidIn(vals); users = userRepository.findByUuidInAndTenantId(vals,tenantId);
} }
return users; return users;
} }
@Override @Override
public void logout(String token) { public void logout(String token,Integer tenantId) {
sessionService.deleteSession(token); sessionService.deleteSession(token,tenantId);
}
@Override
public void kdspLogout(Long userId, LoginProperties loginProperties) {
sessionService.kdspDeleteSession(userId, loginProperties);
} }
@Override @Override
public List<User> findAll() { public void kdspLogout(Long userId, LoginProperties loginProperties, Integer tenantId) {
return userRepository.findAll(); sessionService.kdspDeleteSession(userId, loginProperties,tenantId);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void deregister(Long userId) { public void deregister(Long userId, Integer tenantId) {
User user = userRepository.findById(userId); User user = userRepository.findByIdAndTenantId(userId,tenantId);
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
throw new UserRegisterLoginException("用户不存在"); throw new UserRegisterLoginException("用户不存在");
...@@ -498,7 +494,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -498,7 +494,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
/* 保存用户销户记录 */ /* 保存用户销户记录 */
userDeregisterService.save(user); userDeregisterService.save(user);
/* 删除用户 */ /* 删除用户 */
userRepository.deleteById(userId); userRepository.deleteByIdAndTenantId(userId,tenantId);
/* 删除用户附加信息 */ /* 删除用户附加信息 */
userAttachedRepository.deleteByUserId(userId); userAttachedRepository.deleteByUserId(userId);
...@@ -506,24 +502,24 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -506,24 +502,24 @@ public class UserServiceImpl implements IUserService, IBaseController {
userBtRegisterRepository.deleteByUserId(userId); userBtRegisterRepository.deleteByUserId(userId);
/* 清空session */ /* 清空session */
sessionService.deleteByUserId(user.getId()); sessionService.deleteByUserId(user.getId(),tenantId);
/* 清空缓存 */ /* 清空缓存 */
sessionService.deleteUserCatch(user); sessionService.deleteUserCatch(user,tenantId);
/* 禁用微信 Or 删除?*/ /* 禁用微信 Or 删除?*/
// wechatService.forbiddenXyqbAndWuxiUserByUserId(user.getId()); // wechatService.forbiddenXyqbAndWuxiUserByUserId(user.getId());
weChatUserRepository.deleteByUserId(userId); weChatUserRepository.deleteByUserIdAndAppIdAndTenantId(userId,tenantId);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public User submitModifyPhone(String prevPhoneNo, String curPhoneNo) { public User submitModifyPhone(String prevPhoneNo, String curPhoneNo, Integer tenantId) {
//1. 判断新手机号是否存在 //1. 判断新手机号是否存在
User newPhoneUser = findByPhoneInDb(curPhoneNo); User newPhoneUser = findByPhoneInDb(curPhoneNo,tenantId);
if (Objects.nonNull(newPhoneUser)) { if (Objects.nonNull(newPhoneUser)) {
//新手机号已存在 //新手机号已存在
throw new DataException("新手机号存在, 用户修改手机号后新手机号注册了。"); throw new DataException("新手机号存在, 用户修改手机号后新手机号注册了。");
} }
User oldPhoneUser = findByPhoneInDb(prevPhoneNo); User oldPhoneUser = findByPhoneInDb(prevPhoneNo,tenantId);
if (Objects.isNull(oldPhoneUser)) { if (Objects.isNull(oldPhoneUser)) {
throw new DataException("旧手机号不存在, 可能已经修改成功了。"); throw new DataException("旧手机号不存在, 可能已经修改成功了。");
} }
...@@ -545,7 +541,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -545,7 +541,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
* @param user * @param user
* @param loginFrom * @param loginFrom
*/ */
public void channelUserSignContract(User user, Long loginFrom) { public void channelUserSignContract(User user, Long loginFrom,Integer tenantId) {
if (Objects.isNull(user) || StringUtils.isBlank(channelTemplate)) { if (Objects.isNull(user) || StringUtils.isBlank(channelTemplate)) {
return; return;
} }
......
...@@ -9,13 +9,13 @@ import java.util.List; ...@@ -9,13 +9,13 @@ import java.util.List;
* Created by Miraculous on 2017/1/19. * Created by Miraculous on 2017/1/19.
*/ */
public interface IWechatService { public interface IWechatService {
AccessTokenResponse getToken(String code); AccessTokenResponse getToken(String code,String appId,Integer tenantId);
WechatUserInfo getWechatUserInfoFromWechatServer(String token, String openId); WechatUserInfo getWechatUserInfoFromWechatServer(String token, String openId,String appId,Integer tenantId);
WechatUserInfo findWechatUserInfoFromDb(String openId); WechatUserInfo findWechatUserInfoFromDb(String openId,String appId,Integer tenantId);
WechatUserInfo findWechatUserInfoByPhoneNo(String phoneNo); WechatUserInfo findWechatUserInfoByPhoneNo(String phoneNo, Integer tenantId);
WechatUserInfo saveWechatUserInfo(WechatUserInfo userInfo); WechatUserInfo saveWechatUserInfo(WechatUserInfo userInfo);
...@@ -27,7 +27,7 @@ public interface IWechatService { ...@@ -27,7 +27,7 @@ public interface IWechatService {
* @param openId - 微信标识 * @param openId - 微信标识
* @return * @return
*/ */
int relateUser(Long userId, String phoneNo, String openId); int relateUser(Long userId, String phoneNo, String openId,String appId,Integer tenantId);
/** /**
* 按userId查微信信息 * 按userId查微信信息
...@@ -36,25 +36,18 @@ public interface IWechatService { ...@@ -36,25 +36,18 @@ public interface IWechatService {
* @param userId - 用户标识 * @param userId - 用户标识
* @return * @return
*/ */
WechatUserInfo queryByUserId(Long userId); WechatUserInfo queryByUserId(Long userId,Integer tenantId);
WechatUserInfo queryByUserId(Long userId, String appName); WechatUserInfo queryByUserId(Long userId, String appName,String appId,Integer tenantId);
int forbiddenUserWeChat(Long userId); int forbiddenUserWeChat(Long userId, Integer tenantId);
/**
* 通过userId解除商城用户与小程序和公众号关联关系
*
* @param userId 用户id
* @return 禁用结果
*/
int forbiddenXyqbAndWuxiUserByUserId(Long userId);
List<WechatUserInfo> queryListByUserId(Long userId); List<WechatUserInfo> queryListByUserId(Long userId,Integer tenantId);
List<WechatUserInfo> queryListByUnionId(String unionId); List<WechatUserInfo> queryListByUnionId(String unionId,Integer tenantId);
List<WechatUserInfo> queryListByUnionIds(List<String> unionIds); List<WechatUserInfo> queryListByUnionIds(List<String> unionIds,Integer tenantId);
List<WechatUserInfo> queryByUserIdsAndAppName(List<Long> userIds, String appName); List<WechatUserInfo> queryByUserIdsAndAppName(List<Long> userIds, String appName,Integer tenantId);
} }
...@@ -56,7 +56,7 @@ public class WechatServiceImpl implements IWechatService { ...@@ -56,7 +56,7 @@ public class WechatServiceImpl implements IWechatService {
} }
@Override @Override
public AccessTokenResponse getToken(String code) { public AccessTokenResponse getToken(String code,String appId,Integer tenantId) {
if (StringUtils.isEmpty(code)) { if (StringUtils.isEmpty(code)) {
return null; return null;
} }
...@@ -101,7 +101,7 @@ public class WechatServiceImpl implements IWechatService { ...@@ -101,7 +101,7 @@ public class WechatServiceImpl implements IWechatService {
} }
@Override @Override
public WechatUserInfo getWechatUserInfoFromWechatServer(String token, String openId) { public WechatUserInfo getWechatUserInfoFromWechatServer(String token, String openId,String appId,Integer tenantId) {
if (StringUtils.isEmpty(token) || StringUtils.isEmpty(openId)) { if (StringUtils.isEmpty(token) || StringUtils.isEmpty(openId)) {
return null; return null;
} }
...@@ -112,8 +112,8 @@ public class WechatServiceImpl implements IWechatService { ...@@ -112,8 +112,8 @@ public class WechatServiceImpl implements IWechatService {
} }
@Override @Override
public WechatUserInfo findWechatUserInfoFromDb(String openId) { public WechatUserInfo findWechatUserInfoFromDb(String openId,String appId,Integer tenantId) {
return weChatUserRepository.findByOpenIdAndAppName(openId, "xyqb"); return weChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(openId, "xyqb",appId,tenantId);
} }
@Override @Override
...@@ -123,10 +123,10 @@ public class WechatServiceImpl implements IWechatService { ...@@ -123,10 +123,10 @@ public class WechatServiceImpl implements IWechatService {
if (Objects.isNull(userInfo) || Objects.isNull(userInfo.getOpenId())) { if (Objects.isNull(userInfo) || Objects.isNull(userInfo.getOpenId())) {
return null; return null;
} }
long count = weChatUserRepository.countByOpenIdAndAppName(userInfo.getOpenId(), "xyqb"); long count = weChatUserRepository.countByOpenIdAndAppNameAndAppIdAndTenantId(userInfo.getOpenId(), "xyqb",userInfo.getAppId(),userInfo.getTenantId());
if (count > 0) { if (count > 0) {
//注意,这里会抛异常(5000/total),WeChatController中已捕获处理 //注意,这里会抛异常(5000/total),WeChatController中已捕获处理
return weChatUserRepository.findByOpenIdAndAppName(userInfo.getOpenId(), "xyqb"); return weChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(userInfo.getOpenId(), "xyqb",userInfo.getAppId(),userInfo.getTenantId());
} }
if (null == userInfo.getPhoneNo()) { if (null == userInfo.getPhoneNo()) {
userInfo.setPhoneNo(""); userInfo.setPhoneNo("");
...@@ -156,24 +156,24 @@ public class WechatServiceImpl implements IWechatService { ...@@ -156,24 +156,24 @@ public class WechatServiceImpl implements IWechatService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int relateUser(Long userId, String phoneNo, String openId) { public int relateUser(Long userId, String phoneNo, String openId,String appId,Integer tenantId) {
if (Objects.isNull(userId) || Objects.isNull(openId) || StringUtils.isBlank(openId)) { if (Objects.isNull(userId) || Objects.isNull(openId) || StringUtils.isBlank(openId)) {
log.error("微信关联失败:非法入参:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId); log.error("微信关联失败:非法入参:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
return 0; return 0;
} }
// Old - 当前openId的WechatUserInfo // Old - 当前openId的WechatUserInfo
WechatUserInfo wechatUserInfo = weChatUserRepository.findByOpenIdAndAppName(openId, "xyqb"); WechatUserInfo wechatUserInfo = weChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(openId, "xyqb",appId,tenantId);
if (Objects.nonNull(wechatUserInfo) && Objects.equals(userId, wechatUserInfo.getUserId()) && Objects.equals(openId, wechatUserInfo.getOpenId())) { if (Objects.nonNull(wechatUserInfo) && Objects.equals(userId, wechatUserInfo.getUserId()) && Objects.equals(openId, wechatUserInfo.getOpenId())) {
log.info("微信关联成功:重复关联:跳过:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId); log.info("微信关联成功:重复关联:跳过:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
return 1; return 1;
} }
// 强制解除关联 // 强制解除关联
int dissociate = weChatUserRepository.dissociateUser(openId, userId, "xyqb"); int dissociate = weChatUserRepository.dissociateUser(openId, userId, "xyqb",appId,tenantId);
if (dissociate < 1) { if (dissociate < 1) {
log.error("微信关联失败:解绑条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId); log.error("微信关联失败:解绑条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
throw new WechatRelateUserException("微信关联失败"); throw new WechatRelateUserException("微信关联失败");
} }
int relate = weChatUserRepository.relateUser(userId, Optional.ofNullable(phoneNo).orElse(""), openId, "xyqb"); int relate = weChatUserRepository.relateUser(userId, Optional.ofNullable(phoneNo).orElse(""), openId, "xyqb",appId,tenantId);
if (relate < 1) { if (relate < 1) {
log.error("微信关联失败:绑定条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId); log.error("微信关联失败:绑定条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
throw new WechatRelateUserException("微信关联失败"); throw new WechatRelateUserException("微信关联失败");
...@@ -189,13 +189,13 @@ public class WechatServiceImpl implements IWechatService { ...@@ -189,13 +189,13 @@ public class WechatServiceImpl implements IWechatService {
} }
@Override @Override
public WechatUserInfo findWechatUserInfoByPhoneNo(String phoneNo) { public WechatUserInfo findWechatUserInfoByPhoneNo(String phoneNo, Integer tenantId) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return null; return null;
} }
WechatUserInfo userInfo = weChatUserRepository.findByEncryptedPhoneNoAndAppName(phoneNo, "xyqb"); WechatUserInfo userInfo = weChatUserRepository.findByEncryptedPhoneNoAndAppNameAndTenantId(phoneNo, "xyqb", tenantId);
if (userInfo == null) { if (userInfo == null) {
userInfo = weChatUserRepository.findByPhoneNoAndAppName(phoneNo, "xyqb"); userInfo = weChatUserRepository.findByPhoneNoAndAppNameAndTenantId(phoneNo, "xyqb", tenantId);
} }
return userInfo; return userInfo;
} }
...@@ -224,8 +224,8 @@ public class WechatServiceImpl implements IWechatService { ...@@ -224,8 +224,8 @@ public class WechatServiceImpl implements IWechatService {
* @TODO 2021-10-14 修改 findByUserIdAndAppName 为 findFirstByUserIdAndAppNameOrderByCreatedAtDesc, 原因是存在有多个数据情况 * @TODO 2021-10-14 修改 findByUserIdAndAppName 为 findFirstByUserIdAndAppNameOrderByCreatedAtDesc, 原因是存在有多个数据情况
*/ */
@Override @Override
public WechatUserInfo queryByUserId(Long userId) { public WechatUserInfo queryByUserId(Long userId,Integer tenantId) {
return weChatUserRepository.findFirstByUserIdAndAppNameOrderByCreatedAtDesc(userId, "xyqb"); return weChatUserRepository.findFirstByUserIdAndAppNameAndTenantIdOrderByCreatedAtDesc(userId, "xyqb",tenantId);
} }
/** /**
...@@ -234,41 +234,37 @@ public class WechatServiceImpl implements IWechatService { ...@@ -234,41 +234,37 @@ public class WechatServiceImpl implements IWechatService {
* @return * @return
* @TODO 2021-10-14 修改 findByUserIdAndAppName 为 findFirstByUserIdAndAppNameOrderByCreatedAtDesc, 原因是存在有多个数据情况 * @TODO 2021-10-14 修改 findByUserIdAndAppName 为 findFirstByUserIdAndAppNameOrderByCreatedAtDesc, 原因是存在有多个数据情况
*/ */
public WechatUserInfo queryByUserId(Long userId, String appName) { public WechatUserInfo queryByUserId(Long userId, String appName,String appId,Integer tenantId) {
if (appName == null || "".equals(appName.trim())) { if (appName == null || "".equals(appName.trim())) {
appName = "xyqb"; appName = "xyqb";
} }
return weChatUserRepository.findFirstByUserIdAndAppNameOrderByCreatedAtDesc(userId, appName); return weChatUserRepository.findFirstByUserIdAndAppNameAndTenantIdOrderByCreatedAtDesc(userId, appName, tenantId);
} }
@Override @Override
public int forbiddenUserWeChat(Long userId) { public int forbiddenUserWeChat(Long userId, Integer tenantId) {
return weChatUserRepository.dissociateByUserIdAndAppName(userId, "xyqb"); return weChatUserRepository.dissociateByUserIdAndAppNameAndTenantId(userId, "xyqb",tenantId);
} }
@Override
public int forbiddenXyqbAndWuxiUserByUserId(Long userId) {
return weChatUserRepository.forbiddenXyqbAndWuxiUserByUserId(userId);
}
@Override @Override
public List<WechatUserInfo> queryListByUserId(Long userId) { public List<WechatUserInfo> queryListByUserId(Long userId,Integer tenantId) {
return weChatUserRepository.findByUserId(userId); return weChatUserRepository.findByUserIdAndTenantId(userId,tenantId);
} }
@Override @Override
public List<WechatUserInfo> queryListByUnionId(String unionId) { public List<WechatUserInfo> queryListByUnionId(String unionId,Integer tenantId) {
return weChatUserRepository.findByUnionId(unionId); return weChatUserRepository.findByUnionIdAndAppIdAndTenantId(unionId,tenantId);
} }
@Override @Override
public List<WechatUserInfo> queryListByUnionIds(List<String> unionIds) { public List<WechatUserInfo> queryListByUnionIds(List<String> unionIds,Integer tenantId) {
return weChatUserRepository.findByUnionIdIn(unionIds); return weChatUserRepository.findByUnionIdInAndTenantId(unionIds,tenantId);
} }
@Override @Override
public List<WechatUserInfo> queryByUserIdsAndAppName(List<Long> userIds, String appName) { public List<WechatUserInfo> queryByUserIdsAndAppName(List<Long> userIds, String appName,Integer tenantId) {
return weChatUserRepository.findByUserIdInAndAppName(userIds, appName); return weChatUserRepository.findByUserIdInAndAppNameAndTenantId(userIds, appName,tenantId);
} }
} }
...@@ -3,6 +3,7 @@ package demo; ...@@ -3,6 +3,7 @@ package demo;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.config.data.JpaConfig; import cn.quantgroup.xyqb.config.data.JpaConfig;
import cn.quantgroup.xyqb.config.data.RedisConfig; import cn.quantgroup.xyqb.config.data.RedisConfig;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.external.UserController; import cn.quantgroup.xyqb.controller.external.UserController;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
...@@ -68,7 +69,7 @@ public class MockMvcTest { ...@@ -68,7 +69,7 @@ public class MockMvcTest {
String phone = "13461067662"; String phone = "13461067662";
User user = new User(); User user = new User();
user.setPhoneNo(phone); user.setPhoneNo(phone);
given(userService.findByPhoneInDb(phone)).willReturn(user); given(userService.findByPhoneInDb(phone, UserConstant.defaultTenantId)).willReturn(user);
mvc.perform(get("/log/list").accept(MediaType.TEXT_PLAIN)) mvc.perform(get("/log/list").accept(MediaType.TEXT_PLAIN))
.andExpect(status().isOk()).andExpect(content().string("Honda Civic")); .andExpect(status().isOk()).andExpect(content().string("Honda Civic"));
} }
......
...@@ -2,6 +2,7 @@ package demo; ...@@ -2,6 +2,7 @@ package demo;
import cn.quantgroup.xyqb.config.data.JpaConfig; import cn.quantgroup.xyqb.config.data.JpaConfig;
import cn.quantgroup.xyqb.config.data.RedisConfig; import cn.quantgroup.xyqb.config.data.RedisConfig;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.repository.IUserRepository; import cn.quantgroup.xyqb.repository.IUserRepository;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
...@@ -43,7 +44,7 @@ public class RepsitoryJpaTest { ...@@ -43,7 +44,7 @@ public class RepsitoryJpaTest {
String phone = "13461067662"; String phone = "13461067662";
User user = new User(); User user = new User();
user = userRepository.save(user); user = userRepository.save(user);
User userRep = userRepository.findByPhoneNo(phone); User userRep = userRepository.findByPhoneNoAndTenantId(phone, UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep); Assert.assertEquals(user, userRep);
} }
...@@ -57,7 +58,7 @@ public class RepsitoryJpaTest { ...@@ -57,7 +58,7 @@ public class RepsitoryJpaTest {
user.setCreatedAt(LocalDateTime.now()); user.setCreatedAt(LocalDateTime.now());
user.setUpdatedAt(user.getCreatedAt()); user.setUpdatedAt(user.getCreatedAt());
user = userRepository.save(user); user = userRepository.save(user);
User userRep = userRepository.findByPhoneNo(phone); User userRep = userRepository.findByPhoneNoAndTenantId(phone, UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep); Assert.assertEquals(user, userRep);
} }
......
package demo; package demo;
import cn.quantgroup.xyqb.Bootstrap; import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.repository.IUserRepository; import cn.quantgroup.xyqb.repository.IUserRepository;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
...@@ -38,7 +39,7 @@ public class RepsitoryTest extends AbstractTransactionalJUnit4SpringContextTests ...@@ -38,7 +39,7 @@ public class RepsitoryTest extends AbstractTransactionalJUnit4SpringContextTests
String phone = "13461067662"; String phone = "13461067662";
User user = new User(); User user = new User();
user = userRepository.save(user); user = userRepository.save(user);
User userRep = userRepository.findByPhoneNo(phone); User userRep = userRepository.findByPhoneNoAndTenantId(phone,UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep); Assert.assertEquals(user, userRep);
} }
...@@ -52,7 +53,7 @@ public class RepsitoryTest extends AbstractTransactionalJUnit4SpringContextTests ...@@ -52,7 +53,7 @@ public class RepsitoryTest extends AbstractTransactionalJUnit4SpringContextTests
user.setCreatedAt(LocalDateTime.now()); user.setCreatedAt(LocalDateTime.now());
user.setUpdatedAt(LocalDateTime.now()); user.setUpdatedAt(LocalDateTime.now());
user = userRepository.save(user); user = userRepository.save(user);
User userRep = userRepository.findByPhoneNo(phone); User userRep = userRepository.findByPhoneNoAndTenantId(phone,UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep); Assert.assertEquals(user, userRep);
} }
......
package demo; package demo;
import cn.quantgroup.xyqb.Bootstrap; import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
...@@ -37,7 +38,7 @@ public class ServiceTest extends AbstractTransactionalJUnit4SpringContextTests { ...@@ -37,7 +38,7 @@ public class ServiceTest extends AbstractTransactionalJUnit4SpringContextTests {
String phone = "13461067662"; String phone = "13461067662";
User user = new User(); User user = new User();
user = userService.saveUser(user); user = userService.saveUser(user);
User userRep = userService.findByPhoneInDb(phone); User userRep = userService.findByPhoneInDb(phone, UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep); Assert.assertEquals(user, userRep);
} }
...@@ -51,7 +52,7 @@ public class ServiceTest extends AbstractTransactionalJUnit4SpringContextTests { ...@@ -51,7 +52,7 @@ public class ServiceTest extends AbstractTransactionalJUnit4SpringContextTests {
user.setCreatedAt(LocalDateTime.now()); user.setCreatedAt(LocalDateTime.now());
user.setUpdatedAt(user.getCreatedAt()); user.setUpdatedAt(user.getCreatedAt());
user = userService.saveUser(user); user = userService.saveUser(user);
User userRep = userService.findByPhoneInDb(phone); User userRep = userService.findByPhoneInDb(phone, UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep); Assert.assertEquals(user, userRep);
} }
......
...@@ -3,6 +3,7 @@ package login; ...@@ -3,6 +3,7 @@ package login;
import cn.quantgroup.tool.monitor.metric.api.TechHttpClient; import cn.quantgroup.tool.monitor.metric.api.TechHttpClient;
import cn.quantgroup.xyqb.Bootstrap; import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.external.UserController; import cn.quantgroup.xyqb.controller.external.UserController;
import cn.quantgroup.xyqb.controller.internal.user.InnerController; import cn.quantgroup.xyqb.controller.internal.user.InnerController;
import cn.quantgroup.xyqb.model.AuthBean; import cn.quantgroup.xyqb.model.AuthBean;
...@@ -74,7 +75,7 @@ public class UserLoginTest { ...@@ -74,7 +75,7 @@ public class UserLoginTest {
String ip = "172.16.0.1"; String ip = "172.16.0.1";
request.addHeader("x-original-client-ip", ip); request.addHeader("x-original-client-ip", ip);
request.addHeader("authorization", "Basic MTg1MTMzNDE4MDg6MTIzNDU2"); request.addHeader("authorization", "Basic MTg1MTMzNDE4MDg6MTIzNDU2");
JsonResult jsonResult = userController.login(channelId, appChannel, createFrom, userId, "xyqb", "xyqb", null, request); JsonResult jsonResult = userController.login(channelId, appChannel, createFrom, userId, "xyqb", "xyqb", null, request, "",UserConstant.defaultTenantId);
AuthBean authBean = (AuthBean) jsonResult.getData(); AuthBean authBean = (AuthBean) jsonResult.getData();
String token = authBean.getToken(); String token = authBean.getToken();
System.out.println("user token:" + token); System.out.println("user token:" + token);
......
...@@ -31,19 +31,6 @@ public class WechatTest { ...@@ -31,19 +31,6 @@ public class WechatTest {
@Test @Test
public void test(){ public void test(){
WechatUserInfo xyqb = weChatUserRepository.findByOpenIdAndAppName("ou5l71eY3oO0oM88I-fp3pfC9sQg", "xyqb");
log.info("xyqb:{} ",xyqb);
WechatUserInfo xyqb1 = weChatUserRepository.findByUserIdAndAppName(58847276L, "xyqb");
log.info("xyqb1:{} ",xyqb1);
WechatUserInfo xyqb2 = weChatUserRepository.findByPhoneNoAndAppName("13718195234", "xyqb");
log.info("xyqb2:{} ",xyqb2);
long xyqb3 = weChatUserRepository.countByOpenIdAndAppName("ou5l71eY3oO0oM88I-fp3pfC9sQg", "xyqb");
log.info("xyqb3:{} ",xyqb3);
// int xyqb4 = weChatUserRepository.dissociateByUserIdAndAppName(58847276L, "xyqb");
// log.info("xyqb4:{} ",xyqb4);
int i = weChatUserRepository.dissociateUser("ou5l71UOXLkIXNz0dtW1znJSTwR0", 58847276L, "xyqb");
log.info("xyqb5:{} ",i);
} }
......
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