Commit b356d7ca authored by 王亮's avatar 王亮

temp commit(wechat_userinfo)

parent 5702f70c
......@@ -26,7 +26,7 @@ CREATE TABLE `xyqb_user`.`user_info` (
INDEX `idx_user_phone` (`phone_no` ASC)
);
---微信用户登录表
---微信用户登录表,app_id可能需要跟app_name进行洗
ALTER TABLE `xyqb_user`.`wechat_userinfo`
ADD COLUMN `session_key` VARCHAR(255) NULL COMMENT '第三方sessionkey' AFTER `encrypted_phone_no`,
ADD COLUMN `tenant_id` INT NULL COMMENT '租户id' AFTER `session_key`,
......
......@@ -7,6 +7,8 @@ public class UserConstant {
public static final String USER_FREEZE_ERROR = "账号异常,已冻结。";
public static final Integer defaultTenantId = 1028;
public static final String defaultTenantIdString = "1028";
public static final Integer defaultTenantId = 560761;
public static final String defaultTenantIdString = "560761";
public static final String defaultAppId = "560761";
}
package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.constant.enums.LoginType;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.controller.IBaseController;
......@@ -71,7 +72,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false) Long registerFrom,
@RequestParam(required = true) Long channelId,
@RequestParam(required = true) String appChannel,
@RequestParam(required = false) Integer tenantId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
......@@ -84,7 +85,7 @@ public class AppController implements IBaseController {
if (!ValidationUtil.validatePhoneNo(phoneNumber)) {
result = JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
}else{
User user = userService.findByPhoneInDb(phoneNumber);
User user = userService.findByPhoneInDb(phoneNumber,tenantId);
// 默认为已注册
Boolean isRegister = false;
if (user == null) {
......@@ -104,7 +105,7 @@ public class AppController implements IBaseController {
result = JsonResult.buildErrorStateResult("无效的商户", null);
}else{
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();
context.setChannelId(channelId);
context.setCreatedFrom(registerFrom);
......@@ -152,12 +153,13 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId,
@RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
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);
User user = userService.findByPhoneInDb(phoneNo);
User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (user == null) {
user = userRegisterService.register(registerFrom, phoneNo, name, channelId, btRegisterChannelId);
}
......@@ -173,7 +175,7 @@ public class AppController implements IBaseController {
}
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);
return JsonResult.buildSuccessResult("登录成功", bean);
}
......@@ -206,7 +208,8 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId,
@RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(required = false) Integer tenantId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
tenantId = TenantUtil.TENANT_DEFAULT;
......@@ -215,14 +218,14 @@ public class AppController implements IBaseController {
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);
User user = userService.findByPhoneInDb(phoneNo);
User user = userService.findByPhoneInDb(phoneNo,tenantId);
boolean isRegister=false;
if (user == null) {
try {
user = userRegisterService.register(registerFrom, phoneNo, name, channelId, btRegisterChannelId);
isRegister=true;
} catch (PersistenceException e) {
user = userService.findByPhoneInDb(phoneNo);
user = userService.findByPhoneInDb(phoneNo,tenantId);
}
}
if (user == null) {
......@@ -238,7 +241,7 @@ public class AppController implements IBaseController {
log.info("=addLoginInfo end");
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");
LoginInfo loginInfo = new LoginInfo();
loginInfo.setUser(new UserRet(user));
......@@ -316,7 +319,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId,
@RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(required = false) Integer tenantId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) {
//默认羊小咩租户
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
......@@ -326,7 +329,7 @@ public class AppController implements IBaseController {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
}
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) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
}
......@@ -335,9 +338,9 @@ public class AppController implements IBaseController {
}
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);
return JsonResult.buildSuccessResult("登录成功", bean);
}
......
......@@ -55,7 +55,7 @@ public class SyncUserController {
return JsonResult.buildErrorStateResult("姓名错误", name);
}
User user = userService.findByPhoneWithCache(phoneNo);
User user = userService.findByPhoneWithCache(phoneNo,tenantId);
if (Objects.isNull(user)) {
log.error("用户不存在,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("用户不存在", phoneNo);
......@@ -95,7 +95,7 @@ public class SyncUserController {
if (!Objects.equals(KEY, key) || !ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null);
}
User user = userService.findByPhoneInDb(phoneNo);
User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (Objects.isNull(user)) {
return JsonResult.buildErrorStateResult(null, null);
}
......@@ -112,7 +112,7 @@ public class SyncUserController {
if (StringUtils.isEmpty(uuid)) {
return JsonResult.buildErrorStateResult(null, null);
}
User user = userService.findByUuidWithCache(uuid);
User user = userService.findByUuidWithCache(uuid,tenantId);
if (null == user) {
return JsonResult.buildErrorStateResult(null, null);
}
......
......@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.exception.VerificationCodeErrorException;
import cn.quantgroup.xyqb.model.JsonResult;
......@@ -39,11 +40,11 @@ public class UserApiController {
private ISmsService smsService;
@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)) {
return JsonResult.buildErrorStateResult(null, null);
}
User user = userService.findByPhoneWithCache(phoneNo);
User user = userService.findByPhoneWithCache(phoneNo,tenantId);
if (null == user) {
return JsonResult.buildErrorStateResult(null, null);
}
......@@ -66,7 +67,7 @@ public class UserApiController {
public JsonResult checkToken(
@PathVariable("token") String token,
@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)) {
return JsonResult.buildErrorStateResult("token regular invalid ", token);
}
......@@ -86,7 +87,7 @@ public class UserApiController {
} else {
/* 延续session生命期 */
try {
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(), prolongTime);
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(), prolongTime,tenantId);
log.info("延续token:[{}]生命期,result:[{}]", token, true);
} finally {
XyqbSessionContextHolder.releaseSession();
......
......@@ -82,12 +82,12 @@ public class UserCenterController {
* @return
*/
@RequestMapping("/queryNick")
public JsonResult queryUserNick(String phoneNo) {
public JsonResult queryUserNick(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
......@@ -107,12 +107,12 @@ public class UserCenterController {
* @return
*/
@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)) {
log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
......@@ -154,12 +154,12 @@ public class UserCenterController {
* @return
*/
@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)) {
log.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
......@@ -186,7 +186,7 @@ public class UserCenterController {
log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
......@@ -207,12 +207,12 @@ public class UserCenterController {
@AccessForbiddenValidator
@PasswordFreeAccessValidator
@RequestMapping("/personalData")
public JsonResult personalData(String phoneNo) {
public JsonResult personalData(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
Long userId = queryUserId(phoneNo,tenantId);
if (null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
......@@ -229,8 +229,8 @@ public class UserCenterController {
* @param phoneNo
* @return
*/
private Long queryUserId(String phoneNo) {
User user = userService.findByPhoneInDb(phoneNo);
private Long queryUserId(String phoneNo,Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo,tenantId);
return null == user ? null : user.getId();
}
......
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.LoginVo;
import cn.quantgroup.xyqb.entity.middleoffice.AppletParamEntry;
......@@ -64,12 +65,12 @@ public class AppletController {
*/
@Validated
@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)) {
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);
}
......
......@@ -7,9 +7,9 @@ public interface ILoginModule {
LoginVo login(VerifyTypeEnum type, Boolean reg,
Long channelId, String appChannel,
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);
}
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.model.JsonResult;
import lombok.extern.slf4j.Slf4j;
......@@ -26,21 +27,21 @@ public class LoginController {
@RequestParam(required = false) String appChannel,
@RequestParam(required = false) String wechatOpenId,
@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);
}
@PatchMapping("/modify/pwd")
public JsonResult modifyByPwd(String phoneNo, String password, String passwordNew) {
loginModule.modifyPwd(VerifyTypeEnum.pwd, phoneNo, password, 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,tenantId);
return JsonResult.buildSuccessResult();
}
@PatchMapping("/modify/sms")
public JsonResult modifyBySms(String phoneNo, String password, String verificationCode) {
loginModule.modifyPwd(VerifyTypeEnum.sms, phoneNo, password, 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,tenantId);
return JsonResult.buildSuccessResult();
}
......
......@@ -35,8 +35,8 @@ public class LoginModule implements ILoginModule {
private ISessionService sessionService;
@Override
public LoginVo login(VerifyTypeEnum type, Boolean reg, Long channelId, String appChannel, String wechatOpenId, String phoneNo, String verify) {
User user = userService.findByPhoneInDb(phoneNo);
public LoginVo login(VerifyTypeEnum type, Boolean reg, Long channelId, String appChannel, String wechatOpenId, String phoneNo, String verify,Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo,tenantId);
boolean autoReg = reg && type != VerifyTypeEnum.pwd;
//auto reg
if (user == null) {
......@@ -64,7 +64,7 @@ public class LoginModule implements ILoginModule {
.channelId(channelId)
.merchantName("xyqb")
.build();
AuthBean session = sessionService.createSession(user, loginProperties, LoginType.ACCOUNTPASSWORD.ordinal());
AuthBean session = sessionService.createSession(user, loginProperties, LoginType.ACCOUNTPASSWORD.ordinal(),tenantId);
return LoginVo.builder()
.hasPassword(user.getHasPassword())
.phoneNo(phoneNo)
......@@ -74,20 +74,20 @@ public class LoginModule implements ILoginModule {
}
@Override
public Boolean modifyPwd(VerifyTypeEnum type, String phoneNo, String password, String verify) {
User user = userService.findByPhoneInDb(phoneNo);
public Boolean modifyPwd(VerifyTypeEnum type, String phoneNo, String password, String verify,Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (user == null) {
//todo 自定义异常
throw new DataException("用户不存在");
}
VerifyStrategyFactory.get(type).verify(user, verify);
userService.resetPassword(phoneNo, password);
userService.resetPassword(phoneNo, password,tenantId);
return true;
}
@Override
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){
throw new DataException("未找到此用户");
}
......@@ -97,7 +97,7 @@ public class LoginModule implements ILoginModule {
.channelId(channelId)
.tenantId(tenantId)
.build();
AuthBean session = sessionService.createSession(user, loginProperties, LoginType.APPLETLOGIN.ordinal());
AuthBean session = sessionService.createSession(user, loginProperties, LoginType.APPLETLOGIN.ordinal(),tenantId);
return LoginVo.builder()
.hasPassword(user.getHasPassword())
.phoneNo(user.getPhoneNo())
......
package cn.quantgroup.xyqb.controller.middleoffice.user;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.event.DisableActiveEvent;
import cn.quantgroup.xyqb.model.JsonResult;
......@@ -34,8 +35,8 @@ public class UserController {
private ISessionService sessionService;
@PutMapping("/enable/{userId}")
public JsonResult enable(@PathVariable Long userId) {
User user = userService.findById(userId);
public JsonResult enable(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId,tenantId);
if (user == null) {
//todo 用户不存在,怎么处理
return JsonResult.buildSuccessResult();
......@@ -48,8 +49,8 @@ public class UserController {
}
@PutMapping("/disable/{userId}")
public JsonResult disable(@PathVariable Long userId) {
User user = userService.findById(userId);
public JsonResult disable(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId,tenantId);
if (user == null) {
//todo 用户不存在,怎么处理
return JsonResult.buildSuccessResult();
......@@ -59,7 +60,7 @@ public class UserController {
userService.saveUser(user);
// 清除token缓存
/* 清空session */
sessionService.deleteByUserId(user.getId());
sessionService.deleteByUserId(user.getId(),tenantId);
//通知消息中心
applicationEventPublisher.publishEvent(new DisableActiveEvent(this, user));
......@@ -67,23 +68,23 @@ public class UserController {
}
@GetMapping("/userId/{userId}")
public JsonResult user(@PathVariable Long userId) {
User user = userService.findById(userId);
public JsonResult user(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId,tenantId);
//TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user);
}
@GetMapping("/phoneNo/{phoneNo}")
public JsonResult user(@PathVariable String phoneNo) {
User user = userService.findByPhoneInDb(phoneNo);
public JsonResult user(@PathVariable String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo,tenantId);
//TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user);
}
@GetMapping("/uuid/{uuid}")
public JsonResult uuid(@PathVariable String uuid) {
User user = userService.findByUuidWithCache(uuid);
public JsonResult uuid(@PathVariable String uuid , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findByUuidWithCache(uuid,tenantId);
//TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user);
}
......
......@@ -63,7 +63,7 @@ public class UserDetailController {
if (userDetail != null) {
return JsonResult.buildSuccessResultGeneric(userDetail);
}
User user = userService.findById(userId);
User user = userService.findById(userId,tenantId);
userDetail = new UserInfoEntity();
userDetail.setUserId(userId);
......
package cn.quantgroup.xyqb.controller.middleoffice.wx;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.user.IUserService;
......@@ -36,7 +37,7 @@ public class WxController {
@GetMapping("/userId/{userId}")
public JsonResult openId(@PathVariable Long userId, @RequestParam(required = false) Integer tenantId) {
String openId = null;
WechatUserInfo wechatUserInfo = wechatService.queryByUserId(userId);
WechatUserInfo wechatUserInfo = wechatService.queryByUserId(userId,tenantId);
if (wechatUserInfo != null) {
openId = wechatUserInfo.getOpenId();
}
......@@ -52,7 +53,7 @@ public class WxController {
*/
@GetMapping("/userId/{userId}/{appName}")
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) {
return JsonResult.buildSuccessResult();
}
......@@ -67,7 +68,7 @@ public class WxController {
*/
@GetMapping("/phoneNo/{phoneNo}")
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) {
return JsonResult.buildSuccessResult();
}
......@@ -81,8 +82,8 @@ public class WxController {
}
@PatchMapping("/forbidden/{userId}")
public JsonResult forbidden(@PathVariable Long userId, String reason) {
int res = wechatService.forbiddenUserWeChat(userId);
public JsonResult forbidden(@PathVariable Long userId, String reason,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
int res = wechatService.forbiddenUserWeChat(userId,tenantId);
log.info("取消微信关联 userId:{},reason:{},结果:{}", userId, reason, res);
return JsonResult.buildSuccessResultGeneric(res);
}
......@@ -91,7 +92,7 @@ public class WxController {
*
*/
@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);
List<Integer> userIds = (List<Integer>) params.get("userIds");
if (userIds.isEmpty()) {
......@@ -102,7 +103,7 @@ public class WxController {
}
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()) {
return JsonResult.buildSuccessResult();
}
......
package cn.quantgroup.xyqb.controller.modifyphoneno;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.controller.modifyphoneno.req.*;
import cn.quantgroup.xyqb.controller.modifyphoneno.req.ModifyPhoneRecord.UserClient;
......@@ -51,12 +52,12 @@ public class ModifyPhoneNoController implements IBaseController {
* @return
*/
@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();
if (user == 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 {
* 后台客服处理功能 - 人工审核
*/
@PostMapping("/audit")
public JsonResult audit(@Valid @RequestBody AuditReq auditReq) {
modifyPhoneNoService.audit(auditReq);
public JsonResult audit(@Valid @RequestBody AuditReq auditReq,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
modifyPhoneNoService.audit(auditReq,tenantId);
return JsonResult.buildSuccessResult();
}
......@@ -161,8 +162,8 @@ public class ModifyPhoneNoController implements IBaseController {
}
@PostMapping("/rejectReason/save")
public JsonResult saveRejectReason(@Valid @RequestBody ModifyRejectRecord modifyRejectRecord){
modifyPhoneNoService.saveRejectReason(modifyRejectRecord);
public JsonResult saveRejectReason(@Valid @RequestBody ModifyRejectRecord modifyRejectRecord,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId){
modifyPhoneNoService.saveRejectReason(modifyRejectRecord,tenantId);
return JsonResult.buildSuccessResult("保存手机号修改失败原因成功");
}
......
......@@ -39,6 +39,8 @@ public class ModifyPhoneRecord implements Serializable {
*/
private ApplySource applySource;
private Integer tenantId;
public interface Background{}
public interface UserClient{}
public interface Finance{}
......
......@@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import javax.persistence.*;
import java.io.Serializable;
......@@ -48,6 +49,10 @@ public class User extends BaseEntity implements Serializable {
@Column(name = "cipher_password")
private String cipherPassword;
@Column(name = "password_type")
private Integer passwordType;
@Column(name = "tenant_id")
private Integer tenantId;
......
......@@ -53,6 +53,19 @@ public class WechatUserInfo extends BaseEntity implements Serializable {
@Convert(converter = EncryptConverter.class)
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() {
return StringUtils.isBlank(encryptedPhoneNo) ? phoneNo : encryptedPhoneNo;
}
......
......@@ -76,6 +76,8 @@ public class AppletParamEntry {
*/
private String utmSource;
private String appId;
/**
* 租户ID
*/
......
......@@ -61,6 +61,6 @@ public class BlackHoleRegisteredEventListener implements ApplicationListener<Reg
array.toString());
});
// 不同渠道签署不同的合同模板
userService.channelUserSignContract(user, null);
userService.channelUserSignContract(user, null, user.getTenantId());
}
}
......@@ -30,9 +30,9 @@ public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener
String oldPhoneNo = event.getOldPhoneNo();
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());
......@@ -50,7 +50,7 @@ public class CacheEvictPhoneNoUpdateEventListener implements ApplicationListener
}
values.setUser(sessionUser);
}
sessionService.persistSession(sessionStructList);
sessionService.persistSession(sessionStructList,user.getTenantId());
}
}
......@@ -30,7 +30,7 @@ public class NotifyWechatBindEventListener implements ApplicationListener<Wechat
log.info("微信绑定数据,没有用户 ID 信息,openId:{}", wechatEventMsg.getOpenId());
return;
}
User user = userRepository.findById(wechatEventMsg.getUserId());
User user = userRepository.findByIdAndTenantId(wechatEventMsg.getUserId(),wechatEventMsg.getTenantId());
if (user == null) {
log.info("微信绑定数据,没有用户信息,openId:{},userId:{}", wechatEventMsg.getOpenId(), wechatEventMsg.getUserId());
return;
......
......@@ -21,7 +21,7 @@ public class WechatPhoneNoUpdateEventListener implements ApplicationListener<Pho
public void onApplicationEvent(PhoneNoUpdateEvent event) {
String oldPhoneNo = event.getOldPhoneNo();
User user = event.getUser();
WechatUserInfo userInfo = wechatService.findWechatUserInfoByPhoneNo(oldPhoneNo);
WechatUserInfo userInfo = wechatService.findWechatUserInfoByPhoneNo(oldPhoneNo, user.getTenantId());
if (Objects.isNull(userInfo)) {
return;
}
......
......@@ -59,7 +59,7 @@ public class RequestFilter implements Filter {
} else {
/* 延续session生命期 */
try {
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues());
sessionService.persistSession(sessionStruct.getSid(), sessionStruct.getValues(),sessionStruct.getTenantId());
} finally {
XyqbSessionContextHolder.releaseSession();
}
......
......@@ -17,6 +17,7 @@ public class SessionStruct implements Serializable {
private String sid;
private SessionValue values;
private long expire;
private Integer tenantId;
public void setAttribute(String key, String value) {
if (value == null) {
......
......@@ -3,9 +3,12 @@ package cn.quantgroup.xyqb.model.webchat;
import lombok.Builder;
import lombok.Data;
import javax.persistence.criteria.CriteriaBuilder;
@Data
@Builder
public class WechatEventMsg {
private Long userId;
private String openId;
private Integer tenantId;
}
......@@ -15,11 +15,11 @@ import java.util.List;
*/
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
......@@ -27,39 +27,31 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica
* @param phoneNo - 手机号
* @return user表的uuid
*/
@Query(value = "select uuid from user where phone_no=?1", nativeQuery = true)
String findUuidByPhoneNo(String phoneNo);
@Query(value = "select uuid from user where phone_no=?1 and tenant_id=?2", nativeQuery = true)
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)
List<User> findRegisterUserByTime(String beginTime, String endTime);
@Query(value = "select * from user where created_at>=?1 and created_at<?2 and tenant_id=?3 ", nativeQuery = true)
List<User> findRegisterUserByTimeAndTenantId(String beginTime, String endTime,Integer tenantId);
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query(value = "update user set enable=?1 where phone_no=?2", nativeQuery = true)
int forbiddenUser(Boolean enable, String phoneNo);
@Query(value = "update user set enable=?1 where phone_no=?2 and tenant_id=?3", nativeQuery = true)
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删除用户
*
* @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;
* modify by djh 20200527 http://confluence.quantgroup.cn/pages/viewpage.action?pageId=30657427
*/
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
*/
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1 and app_name=?2", nativeQuery = true)
int dissociateByUserIdAndAppName(Long userId, String appName);
@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 dissociateByUserIdAndAppNameAndTenantId(Long userId, String appName, Integer tenantId);
/**
* 解除商城用户与小程序和公众号关联关系
......@@ -48,8 +48,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query(value = "update wechat_userinfo set user_id=null,phone_no='*' where user_id=?1 and app_name in ('xyqb', 'wuxi')", nativeQuery = true)
int forbiddenXyqbAndWuxiUserByUserId(Long userId);
@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 forbiddenXyqbAndWuxiUserByUserIdAndAppIdAndTenantId(Long userId, Integer tenantId);
/**
* 关联用户
......@@ -61,8 +61,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/
@Transactional(rollbackFor = Exception.class)
@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)
int relateUser(Long userId, String phoneNo, String openId, String appName);
@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,String appId,Integer tenantId);
/**
* 解除关联关系 -- 包括:1、当前微信旧的关联用户;2、当前用户旧的关联微信
......@@ -74,8 +74,8 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/
@Transactional(propagation = MANDATORY, rollbackFor = Exception.class)
@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)
int dissociateUser(String openId, Long userId, String appName);
@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,String appId,Integer tenantId);
/**
......@@ -87,23 +87,23 @@ public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Lon
*/
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query(value = "update wechat_userinfo set union_id=?3 where user_id=?1 and app_name=?2", nativeQuery = true)
int updateUserUnionId(Long userId, String appName, String unionId);
@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,String appId,Integer tenantId);
@Transactional
void deleteByUserId(Long userId);
void deleteByUserIdAndAppIdAndTenantId(Long userId,Integer tenantId);
/**
* 通过userId查询相关绑定微信记录
*/
List<WechatUserInfo> findByUserId(Long userId);
List<WechatUserInfo> findByUserIdAndTenantId(Long userId,Integer tenantId);
/**
* 通过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 {
* @param uuid
* @return
*/
Optional<UserFullInfo> getUserFullInfoByUuid(String uuid);
Optional<UserFullInfo> getUserFullInfoByUuid(String uuid,Integer tenantId);
/**
* 根据phone查询完整信息
......@@ -23,5 +23,5 @@ public interface IUserApiService {
* @param phoneNo
* @return
*/
Optional<UserFullInfo> getUserFullInfoByPhone(String phoneNo);
Optional<UserFullInfo> getUserFullInfoByPhone(String phoneNo,Integer tenantId);
}
......@@ -24,8 +24,8 @@ public class UserApiServiceImpl implements IUserApiService {
private IUserInfoRepository userInfoRepository;
@Override
public Optional<UserFullInfo> getUserFullInfoByUuid(String uuid) {
User user = userService.findByUuidWithCache(uuid);
public Optional<UserFullInfo> getUserFullInfoByUuid(String uuid,Integer tenantId) {
User user = userService.findByUuidWithCache(uuid,tenantId);
if (null == user) {
return Optional.empty();
}
......@@ -35,8 +35,8 @@ public class UserApiServiceImpl implements IUserApiService {
}
@Override
public Optional<UserFullInfo> getUserFullInfoByPhone(String phoneNo) {
User user = userService.findByPhoneInDb(phoneNo);
public Optional<UserFullInfo> getUserFullInfoByPhone(String phoneNo,Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo,tenantId);
if (null == user) {
return Optional.empty();
}
......
......@@ -12,5 +12,5 @@ import cn.quantgroup.xyqb.entity.middleoffice.AppletParamEntry;
*/
public interface IAppletService {
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 {
@Override
@Transactional(rollbackFor = Exception.class)
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);
......@@ -69,7 +69,7 @@ public class AppletServiceImpl implements IAppletService {
wechatUserInfo.setEncryptedPhoneNo(appletParamEntry.getMobile());
wechatUserInfo.setUtmSource(appletParamEntry.getUtmSource());
if (null == wechatUserInfo.getUserId()) {//只要存在userid 就说明已经在用户表里了 不考虑小程序这边换手机号了
User user = userService.findByPhoneInDb(appletParamEntry.getMobile());
User user = userService.findByPhoneInDb(appletParamEntry.getMobile(), appletParamEntry.getTenantId());
//如果不存在就去注册一下
if (null == user) {
user = iUserRegisterService.register(appletParamEntry.getChannelId(), appletParamEntry.getMobile());
......@@ -88,9 +88,9 @@ public class AppletServiceImpl implements IAppletService {
@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) {
log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId);
throw new AppletException("未找到此用户", "0401");
......@@ -99,7 +99,7 @@ public class AppletServiceImpl implements IAppletService {
log.warn("用户未绑定到xyqb,appName:{} ,openId:{}", appName, openId);
throw new AppletException("未找到此用户绑定信息", "0401");
}
User user = userService.findById(wechatUserInfo.getUserId());
User user = userService.findById(wechatUserInfo.getUserId(), wechatUserInfo.getTenantId());
if (null == user) {
log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId);
throw new AppletException("未找到此用户", "0401");
......@@ -111,7 +111,7 @@ public class AppletServiceImpl implements IAppletService {
}
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(),
......
......@@ -14,27 +14,27 @@ import java.util.List;
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,Long time);
void persistSession(String token, SessionValue sessionValue,Integer tenantId);
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
......@@ -46,5 +46,5 @@ public interface ISessionService {
* @param ordinal - 登录方式
* @return
*/
AuthBean createSession(User user, LoginProperties loginProperties, int ordinal);
AuthBean createSession(User user, LoginProperties loginProperties, int ordinal,Integer tenantId);
}
......@@ -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 {
void feedback(Long id);
void audit(AuditReq auditReq);
void audit(AuditReq auditReq,Integer tenantId);
void submitModify(ModifyPhoneRecord modifyPhoneRecord);
......@@ -43,7 +43,7 @@ public interface IModifyPhoneNoService {
UserModifyPhoneRecordResp getLastRecord(Long userId);
void saveRejectReason(ModifyRejectRecord modifyRejectRecord);
void saveRejectReason(ModifyRejectRecord modifyRejectRecord,Integer tenantId);
UserModifyPhoneRecordResp modifyRecord(String prevPhoneNo);
}
......@@ -16,45 +16,44 @@ import java.util.Map;
*/
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
*
* @param phoneNo - 手机号
* @param idNo - 身份证号
* @return user表的uuid
*/
String findUuid(String phoneNo, String idNo);
String findUuid(String phoneNo,Integer tenantId);
Map<Long, String> findPhoneByIdsInDb(List<Long> userIds, Integer tenantId);
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 电话号码
*/
int forbiddenUser(Boolean enable, String phoneNo);
int forbiddenUser(Boolean enable, String phoneNo,Integer tenantId);
List<UserInfo> findUserInfosByPhones(List<String> phones, Integer tenantId);
......@@ -73,11 +72,11 @@ public interface IUserService {
* @param uuid 根据 uuid
* @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,
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 {
/**
* 登出
*/
void logout(String token);
void logout(String token,Integer tenantId);
void kdspLogout(Long userId, LoginProperties loginProperties);
List<User> findAll();
void kdspLogout(Long userId, LoginProperties loginProperties,Integer tenantId);
/**
* 通过userId销户
*
* @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);
}
......@@ -9,13 +9,13 @@ import java.util.List;
* Created by Miraculous on 2017/1/19.
*/
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);
......@@ -27,7 +27,7 @@ public interface IWechatService {
* @param openId - 微信标识
* @return
*/
int relateUser(Long userId, String phoneNo, String openId);
int relateUser(Long userId, String phoneNo, String openId,String appId,Integer tenantId);
/**
* 按userId查微信信息
......@@ -36,25 +36,18 @@ public interface IWechatService {
* @param userId - 用户标识
* @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 {
}
@Override
public AccessTokenResponse getToken(String code) {
public AccessTokenResponse getToken(String code,String appId,Integer tenantId) {
if (StringUtils.isEmpty(code)) {
return null;
}
......@@ -101,7 +101,7 @@ public class WechatServiceImpl implements IWechatService {
}
@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)) {
return null;
}
......@@ -112,8 +112,8 @@ public class WechatServiceImpl implements IWechatService {
}
@Override
public WechatUserInfo findWechatUserInfoFromDb(String openId) {
return weChatUserRepository.findByOpenIdAndAppName(openId, "xyqb");
public WechatUserInfo findWechatUserInfoFromDb(String openId,String appId,Integer tenantId) {
return weChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(openId, "xyqb",appId,tenantId);
}
@Override
......@@ -123,10 +123,10 @@ public class WechatServiceImpl implements IWechatService {
if (Objects.isNull(userInfo) || Objects.isNull(userInfo.getOpenId())) {
return null;
}
long count = weChatUserRepository.countByOpenIdAndAppName(userInfo.getOpenId(), "xyqb");
long count = weChatUserRepository.countByOpenIdAndAppNameAndAppIdAndTenantId(userInfo.getOpenId(), "xyqb",userInfo.getAppId(),userInfo.getTenantId());
if (count > 0) {
//注意,这里会抛异常(5000/total),WeChatController中已捕获处理
return weChatUserRepository.findByOpenIdAndAppName(userInfo.getOpenId(), "xyqb");
return weChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(userInfo.getOpenId(), "xyqb",userInfo.getAppId(),userInfo.getTenantId());
}
if (null == userInfo.getPhoneNo()) {
userInfo.setPhoneNo("");
......@@ -156,24 +156,24 @@ public class WechatServiceImpl implements IWechatService {
@Override
@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)) {
log.error("微信关联失败:非法入参:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
return 0;
}
// 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())) {
log.info("微信关联成功:重复关联:跳过:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
return 1;
}
// 强制解除关联
int dissociate = weChatUserRepository.dissociateUser(openId, userId, "xyqb");
int dissociate = weChatUserRepository.dissociateUser(openId, userId, "xyqb",appId,tenantId);
if (dissociate < 1) {
log.error("微信关联失败:解绑条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
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) {
log.error("微信关联失败:绑定条数<1:[service]:userId:{},phoneNo:{},openId:{}", userId, phoneNo, openId);
throw new WechatRelateUserException("微信关联失败");
......@@ -189,13 +189,13 @@ public class WechatServiceImpl implements IWechatService {
}
@Override
public WechatUserInfo findWechatUserInfoByPhoneNo(String phoneNo) {
public WechatUserInfo findWechatUserInfoByPhoneNo(String phoneNo, Integer tenantId) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return null;
}
WechatUserInfo userInfo = weChatUserRepository.findByEncryptedPhoneNoAndAppName(phoneNo, "xyqb");
WechatUserInfo userInfo = weChatUserRepository.findByEncryptedPhoneNoAndAppNameAndTenantId(phoneNo, "xyqb", tenantId);
if (userInfo == null) {
userInfo = weChatUserRepository.findByPhoneNoAndAppName(phoneNo, "xyqb");
userInfo = weChatUserRepository.findByPhoneNoAndAppNameAndTenantId(phoneNo, "xyqb", tenantId);
}
return userInfo;
}
......@@ -224,8 +224,8 @@ public class WechatServiceImpl implements IWechatService {
* @TODO 2021-10-14 修改 findByUserIdAndAppName 为 findFirstByUserIdAndAppNameOrderByCreatedAtDesc, 原因是存在有多个数据情况
*/
@Override
public WechatUserInfo queryByUserId(Long userId) {
return weChatUserRepository.findFirstByUserIdAndAppNameOrderByCreatedAtDesc(userId, "xyqb");
public WechatUserInfo queryByUserId(Long userId,Integer tenantId) {
return weChatUserRepository.findFirstByUserIdAndAppNameAndTenantIdOrderByCreatedAtDesc(userId, "xyqb",tenantId);
}
/**
......@@ -234,41 +234,37 @@ public class WechatServiceImpl implements IWechatService {
* @return
* @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())) {
appName = "xyqb";
}
return weChatUserRepository.findFirstByUserIdAndAppNameOrderByCreatedAtDesc(userId, appName);
return weChatUserRepository.findFirstByUserIdAndAppNameAndTenantIdOrderByCreatedAtDesc(userId, appName, tenantId);
}
@Override
public int forbiddenUserWeChat(Long userId) {
return weChatUserRepository.dissociateByUserIdAndAppName(userId, "xyqb");
public int forbiddenUserWeChat(Long userId, Integer tenantId) {
return weChatUserRepository.dissociateByUserIdAndAppNameAndTenantId(userId, "xyqb",tenantId);
}
@Override
public int forbiddenXyqbAndWuxiUserByUserId(Long userId) {
return weChatUserRepository.forbiddenXyqbAndWuxiUserByUserId(userId);
}
@Override
public List<WechatUserInfo> queryListByUserId(Long userId) {
return weChatUserRepository.findByUserId(userId);
public List<WechatUserInfo> queryListByUserId(Long userId,Integer tenantId) {
return weChatUserRepository.findByUserIdAndTenantId(userId,tenantId);
}
@Override
public List<WechatUserInfo> queryListByUnionId(String unionId) {
return weChatUserRepository.findByUnionId(unionId);
public List<WechatUserInfo> queryListByUnionId(String unionId,Integer tenantId) {
return weChatUserRepository.findByUnionIdAndAppIdAndTenantId(unionId,tenantId);
}
@Override
public List<WechatUserInfo> queryListByUnionIds(List<String> unionIds) {
return weChatUserRepository.findByUnionIdIn(unionIds);
public List<WechatUserInfo> queryListByUnionIds(List<String> unionIds,Integer tenantId) {
return weChatUserRepository.findByUnionIdInAndTenantId(unionIds,tenantId);
}
@Override
public List<WechatUserInfo> queryByUserIdsAndAppName(List<Long> userIds, String appName) {
return weChatUserRepository.findByUserIdInAndAppName(userIds, appName);
public List<WechatUserInfo> queryByUserIdsAndAppName(List<Long> userIds, String appName,Integer tenantId) {
return weChatUserRepository.findByUserIdInAndAppNameAndTenantId(userIds, appName,tenantId);
}
}
......@@ -3,6 +3,7 @@ package demo;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.config.data.JpaConfig;
import cn.quantgroup.xyqb.config.data.RedisConfig;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.external.UserController;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.service.user.IUserService;
......@@ -68,7 +69,7 @@ public class MockMvcTest {
String phone = "13461067662";
User user = new User();
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))
.andExpect(status().isOk()).andExpect(content().string("Honda Civic"));
}
......
......@@ -2,6 +2,7 @@ package demo;
import cn.quantgroup.xyqb.config.data.JpaConfig;
import cn.quantgroup.xyqb.config.data.RedisConfig;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.repository.IUserRepository;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
......@@ -43,7 +44,7 @@ public class RepsitoryJpaTest {
String phone = "13461067662";
User user = new User();
user = userRepository.save(user);
User userRep = userRepository.findByPhoneNo(phone);
User userRep = userRepository.findByPhoneNoAndTenantId(phone, UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep);
}
......@@ -57,7 +58,7 @@ public class RepsitoryJpaTest {
user.setCreatedAt(LocalDateTime.now());
user.setUpdatedAt(user.getCreatedAt());
user = userRepository.save(user);
User userRep = userRepository.findByPhoneNo(phone);
User userRep = userRepository.findByPhoneNoAndTenantId(phone, UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep);
}
......
package demo;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.repository.IUserRepository;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
......@@ -38,7 +39,7 @@ public class RepsitoryTest extends AbstractTransactionalJUnit4SpringContextTests
String phone = "13461067662";
User user = new User();
user = userRepository.save(user);
User userRep = userRepository.findByPhoneNo(phone);
User userRep = userRepository.findByPhoneNoAndTenantId(phone,UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep);
}
......@@ -52,7 +53,7 @@ public class RepsitoryTest extends AbstractTransactionalJUnit4SpringContextTests
user.setCreatedAt(LocalDateTime.now());
user.setUpdatedAt(LocalDateTime.now());
user = userRepository.save(user);
User userRep = userRepository.findByPhoneNo(phone);
User userRep = userRepository.findByPhoneNoAndTenantId(phone,UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep);
}
......
package demo;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.service.user.IUserService;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
......@@ -37,7 +38,7 @@ public class ServiceTest extends AbstractTransactionalJUnit4SpringContextTests {
String phone = "13461067662";
User user = new User();
user = userService.saveUser(user);
User userRep = userService.findByPhoneInDb(phone);
User userRep = userService.findByPhoneInDb(phone, UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep);
}
......@@ -51,7 +52,7 @@ public class ServiceTest extends AbstractTransactionalJUnit4SpringContextTests {
user.setCreatedAt(LocalDateTime.now());
user.setUpdatedAt(user.getCreatedAt());
user = userService.saveUser(user);
User userRep = userService.findByPhoneInDb(phone);
User userRep = userService.findByPhoneInDb(phone, UserConstant.defaultTenantId);
Assert.assertEquals(user, userRep);
}
......
......@@ -3,6 +3,7 @@ package login;
import cn.quantgroup.tool.monitor.metric.api.TechHttpClient;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.external.UserController;
import cn.quantgroup.xyqb.controller.internal.user.InnerController;
import cn.quantgroup.xyqb.model.AuthBean;
......@@ -74,7 +75,7 @@ public class UserLoginTest {
String ip = "172.16.0.1";
request.addHeader("x-original-client-ip", ip);
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();
String token = authBean.getToken();
System.out.println("user token:" + token);
......
......@@ -31,19 +31,6 @@ public class WechatTest {
@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