From 7eaf494e16bde1a37d5aa73841b3b489d4f5786a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Sun, 9 Nov 2025 13:58:24 +0800 Subject: [PATCH] =?UTF-8?q?fix=20(farm):=20=20=E5=BE=AE=E4=BF=A1=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F,=E5=9C=B0=E5=9D=97,=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 登录流程 调整 - 地块编号 需要修改 - 首页 在种面积 --- .../controller/admin/home/HomeController.java | 1 + .../service/plotinfo/PlotInfoServiceImpl.java | 1 + .../ProductionPlanServiceImpl.java | 2 +- .../controller/admin/auth/AuthController.java | 28 +++- .../admin/auth/vo/AuthLoginRespVO.java | 2 + .../admin/auth/vo/TenantTokenReqVO.java | 1 + .../admin/auth/vo/TenantTokenRespVO.java | 3 + .../admin/auth/vo/WxLoginReqVO.java | 2 + .../admin/user/UserProfileController.java | 16 ++ .../dal/mysql/user/AdminUserMapper.java | 4 + .../system/service/auth/AdminAuthService.java | 12 +- .../service/auth/AdminAuthServiceImpl.java | 141 +++++++++++++----- .../system/service/user/AdminUserService.java | 2 + .../service/user/AdminUserServiceImpl.java | 14 ++ 14 files changed, 184 insertions(+), 45 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java index da63beed..5e9fb2b1 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java @@ -55,6 +55,7 @@ public class HomeController { return success(homeService.getBaseNameList()); } + @PermitAll @Operation(summary = "农场首页-天气信息-获取天气信息") @GetMapping("/weather/{lng}/{lat}") public CommonResult getBaseNameList(@PathVariable("lng") String lng, diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java index f0a7e874..860c854d 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java @@ -95,6 +95,7 @@ public class PlotInfoServiceImpl implements PlotInfoService { @Transactional @Override public void updatePlotInfo(PlotInfoSaveReqVO updateReqVO) { + updateReqVO.setPlotId(updateReqVO.getCode()); // 校验存在 validatePlotInfoExists(updateReqVO.getId()); // 校验地块面积 diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java index 13200131..cf167216 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java @@ -343,7 +343,7 @@ public class ProductionPlanServiceImpl implements ProductionPlanService { if (plotArea == null) { return String.valueOf(totalArea); } - return totalArea + "/" + plotArea + "亩"; + return plotArea.intValue() + "/" +(int) Math.round(totalArea) + "亩"; } @Override diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java index fa5c80c5..cf8dc452 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java @@ -162,12 +162,32 @@ public class AuthController { } } + @PermitAll + @PostMapping("/login-by-tenant") + @Operation(summary = "登录 (切换租户之后调用)") + public CommonResult getPhoneNumber4Login(@RequestBody @Valid TenantTokenReqVO reqVO) { + AuthLoginRespVO login = authService.getPhoneNumber4Login(reqVO); + if (login != null) { + return success(login); + } else { + return error(405, "该手机号不是平台用户"); + } + } + + @PermitAll @PostMapping("/get-tenant-token") @Operation(summary = "获取租户的令牌列表") - public CommonResult> getTenantTokenList(@RequestHeader("authorization") String authorization, - @RequestBody @Valid TenantTokenReqVO reqVO) { - String token = TokenExtractorUtil.extractToken(authorization); - List res = authService.getTenantTokenList(reqVO.getPhoneNumber(), token); + public CommonResult> getTenantTokenList(@RequestBody @Valid WxLoginReqVO reqVO) { + + List res = authService.getTenantTokenList(reqVO); + return success(res); + } + + @PermitAll + @PostMapping("/get-tenant-token/by-mobile") + @Operation(summary = "获取租户的令牌列表") + public CommonResult> getTenantTokenList4Mobile(@RequestBody @Valid TenantTokenReqVO reqVO) { + List res = authService.getTenantTokenList4Mobile(reqVO); return success(res); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginRespVO.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginRespVO.java index 1815153c..d683418a 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginRespVO.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginRespVO.java @@ -29,4 +29,6 @@ public class AuthLoginRespVO { private Long tenantId; + private String mobile; + } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenReqVO.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenReqVO.java index 7be21490..0f0959c8 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenReqVO.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenReqVO.java @@ -15,6 +15,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class TenantTokenReqVO { + private String tenantId; private String phoneNumber; } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenRespVO.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenRespVO.java index 099fa09e..0dc7da8f 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenRespVO.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenRespVO.java @@ -27,5 +27,8 @@ public class TenantTokenRespVO { private String refreshToken; @Schema(description = "默认展示租户 (1:当前; 0: 非当前)") private Integer defaultStatus; + @Schema(description = "手机号") + private String mobile; + } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/WxLoginReqVO.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/WxLoginReqVO.java index d8938b95..5237230c 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/WxLoginReqVO.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/WxLoginReqVO.java @@ -24,4 +24,6 @@ public class WxLoginReqVO { private String rawData; private String openid; + + private String tenantId; } \ No newline at end of file diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java index d4391e5f..34a37687 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.user; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; +import cn.iocoder.yudao.module.system.controller.admin.auth.vo.TenantTokenReqVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileRespVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; @@ -62,6 +63,21 @@ public class UserProfileController { return success(UserConvert.INSTANCE.convert(user, userRoles, dept, posts)); } + @GetMapping("/get/wx") + @Operation(summary = "获得登录用户信息 (微信端使用)") + @DataPermission(enable = false) // 关闭数据权限,避免只查看自己时,查询不到部门。 + public CommonResult getUserProfile2(TenantTokenReqVO reqVO) { + // 获得用户基本信息 + AdminUserDO user = userService.getUserByMobileAndTenantId2(reqVO.getPhoneNumber(), reqVO.getTenantId()); + // 获得用户角色 + List userRoles = roleService.getRoleListFromCache(permissionService.getUserRoleIdListByUserId(user.getId())); + // 获得部门信息 + DeptDO dept = user.getDeptId() != null ? deptService.getDept(user.getDeptId()) : null; + // 获得岗位信息 + List posts = CollUtil.isNotEmpty(user.getPostIds()) ? postService.getPostList(user.getPostIds()) : null; + return success(UserConvert.INSTANCE.convert(user, userRoles, dept, posts)); + } + @PutMapping("/update") @Operation(summary = "修改用户个人信息") public CommonResult updateUserProfile(@Valid @RequestBody UserProfileUpdateReqVO reqVO) { diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index 74f08f2b..de631978 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java @@ -54,4 +54,8 @@ public interface AdminUserMapper extends BaseMapperX { @InterceptorIgnore(tenantLine = "true") @Select("SELECT * FROM system_users WHERE deleted = 0 AND mobile = #{mobile}") List selectListByMobile(@Param("mobile") String mobile); + + @InterceptorIgnore(tenantLine = "true") + @Select("SELECT * FROM system_users WHERE deleted = 0 AND mobile = #{mobile} AND tenant_id = #{tenantId}") + AdminUserDO selectListByMobileAndTenantId(@Param("mobile") String mobile,@Param("tenantId") String tenantId); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java index 7d1dcbb3..06496e30 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java @@ -105,8 +105,11 @@ public interface AdminAuthService { * @param phoneNumber * @return */ - List getTenantTokenList(String phoneNumber,String accessToken); + List getTenantTokenList(WxLoginReqVO reqVO); + List getTenantTokenList4Mobile(TenantTokenReqVO reqVO); + + List getTenantList(WxLoginReqVO reqVO); /** * 登录前置操作 * 1. 获取用户所拥有的租户列表 @@ -114,4 +117,11 @@ public interface AdminAuthService { * @return */ List loginForTenantList(LoginForTenantReqVO reqVO); + + /** + * 登录 + * @param reqVO + * @return + */ + AuthLoginRespVO getPhoneNumber4Login(TenantTokenReqVO reqVO); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java index 7dc8a05b..aeadbab7 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java @@ -411,35 +411,24 @@ public class AdminAuthServiceImpl implements AdminAuthService { WxUserPhoneRespVO bean = JSONUtil.toBean(decryptedData, WxUserPhoneRespVO.class); // 绑定用户 String phoneNumber = bean.getPhoneNumber(); - AdminUserDO user = userService.getUserByMobile(phoneNumber); - if (user == null) { - return null; - } - - // 检查用户租户ID,如果为空则尝试修复 - if (user.getTenantId() == null) { - Long currentTenantId = TenantContextHolder.getTenantId(); - // 如果TenantContextHolder中没有,尝试从请求头中获取 - if (currentTenantId == null) { - try { - currentTenantId = WebFrameworkUtils.getTenantId(ServletUtils.getRequest()); - } catch (Exception e) { - log.debug("[getPhoneNumber][无法获取当前请求,跳过从请求头提取租户ID]"); - } + AdminUserDO user = userService.getUserByMobileAndTenantId(phoneNumber,reqVO.getTenantId()); +// List mList = userService.getUserByMobileToList(phoneNumber); +// AdminUserDO user = mList.stream().filter(e -> e.getTenantId() == 2) +// AdminUserDO user = null; +// for (AdminUserDO u : mList) { + + if (user == null) { + return null; } - - if (currentTenantId != null) { - log.warn("[getPhoneNumber][用户({}) 租户ID为空,使用当前租户ID: {}]", user.getId(), currentTenantId); - user.setTenantId(currentTenantId); - userService.updateByid(user); - } else { - log.error("[getPhoneNumber][用户({}) 租户ID为空,且无法获取当前租户ID]", user.getId()); - } - } - - user.setOpenid(reqVO.getOpenid()); - userService.updateByid(user); + + this.fixOpenid(user,reqVO.getOpenid()); +// if (u.getTenantId() == 2) { +// user = u; // 同一个手机号 随意给到一个租户 +// } +// } + AuthLoginRespVO tokenAfterLoginSuccess = createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_MOBILE); + tokenAfterLoginSuccess.setMobile(phoneNumber); return tokenAfterLoginSuccess; } catch (Exception e) { log.error("[getPhoneNumber][解密手机号失败,encryptedData: {}, sessionKey: {}, iv: {}]", @@ -448,6 +437,42 @@ public class AdminAuthServiceImpl implements AdminAuthService { } } + @Override + public AuthLoginRespVO getPhoneNumber4Login(TenantTokenReqVO reqVO) { + String phoneNumber = reqVO.getPhoneNumber(); + AdminUserDO user = userService.getUserByMobileAndTenantId2(phoneNumber,reqVO.getTenantId()); + + AuthLoginRespVO tokenAfterLoginSuccess = createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_MOBILE); + tokenAfterLoginSuccess.setMobile(phoneNumber); + return tokenAfterLoginSuccess; + } + + private void fixOpenid(AdminUserDO user, String openid){ + // 检查用户租户ID,如果为空则尝试修复 + if (user.getTenantId() == null) { + Long currentTenantId = TenantContextHolder.getTenantId(); + // 如果TenantContextHolder中没有,尝试从请求头中获取 + if (currentTenantId == null) { + try { + currentTenantId = WebFrameworkUtils.getTenantId(ServletUtils.getRequest()); + } catch (Exception e) { + log.debug("[getPhoneNumber][无法获取当前请求,跳过从请求头提取租户ID]"); + } + } + + if (currentTenantId != null) { + log.warn("[getPhoneNumber][用户({}) 租户ID为空,使用当前租户ID: {}]", user.getId(), currentTenantId); + user.setTenantId(currentTenantId); + userService.updateByid(user); + } else { + log.error("[getPhoneNumber][用户({}) 租户ID为空,且无法获取当前租户ID]", user.getId()); + } + } + + user.setOpenid(openid); + userService.updateByid(user); + } + @Override public Boolean synchronize(UserReqVO reqVO) { AdminUserDO userByMobile = userService.getUserByMobile(reqVO.getPhone()); @@ -501,20 +526,58 @@ public class AdminAuthServiceImpl implements AdminAuthService { } @Override - public List getTenantTokenList(String phoneNumber,String accessToken) { + public List getTenantList(WxLoginReqVO reqVO) { +// log.info("{} ==> {}", "wx登录",reqVO.toString()); +// AuthLoginRespVO login = this.getPhoneNumber(reqVO); +// String mobile = login.getMobile(); +// String token = login.getAccessToken(); +// +// return this.getTenantTokenList(mobile, token); + return null; + } + + @Override + public List getTenantTokenList(WxLoginReqVO reqVO) { List res = new ArrayList<>(); - try { - OAuth2AccessTokenDO currentOAuth = oauth2TokenService.getAccessToken(accessToken); - Long tenantId = currentOAuth.getTenantId(); - TenantDO tenant = tenantService.getTenant(tenantId); + // 解密手机号数据 + String decryptedData = decryptWxData(reqVO.getEncryptedData(), reqVO.getSessionKey(), reqVO.getIv(), wxMiniAppId); + // 解析JSON数据 + WxUserPhoneRespVO bean = JSONUtil.toBean(decryptedData, WxUserPhoneRespVO.class); + // 绑定用户 + String phoneNumber = bean.getPhoneNumber(); - res.add(this.getCurrentTenant(currentOAuth,tenant.getName())); - res.addAll(this.getTenantList(phoneNumber,tenantId)); + try { +// OAuth2AccessTokenDO currentOAuth = oauth2TokenService.getAccessToken(accessToken); +// Long tenantId = currentOAuth.getTenantId(); +// TenantDO tenant = tenantService.getTenant(tenantId); +// Long userId = currentOAuth.getUserId(); + + res.addAll(this.getTenantList(phoneNumber)); +// res.add(this.getCurrentTenant(currentOAuth,tenant.getName())); res.addAll(this.getRemoteTenant(phoneNumber)); } catch (Exception e) { e.printStackTrace(); } + + res.stream().forEach(e -> e.setMobile(phoneNumber)); + + return res; + } + + @Override + public List getTenantTokenList4Mobile(TenantTokenReqVO reqVO) { + List res = new ArrayList<>(); + String phoneNumber = reqVO.getPhoneNumber(); + + try { + res.addAll(this.getTenantList(phoneNumber)); + res.addAll(this.getRemoteTenant(phoneNumber)); + } catch (Exception e) { + e.printStackTrace(); + } + + res.stream().forEach(e -> e.setMobile(phoneNumber)); return res; } @@ -522,14 +585,14 @@ public class AdminAuthServiceImpl implements AdminAuthService { * 获取当前登录租户列表 * @return */ - private List getTenantList(String phoneNumber,Long tenantId) { + private List getTenantList(String phoneNumber) { List tList = tenantService.getTenantListByMobile(phoneNumber); - tList = tList.stream() - .filter(tenant -> ObjectUtils.notEqual(tenantId, tenant.getTenantId())) - .collect(Collectors.toList()); +// tList = tList.stream() +// .filter(tenant -> ObjectUtils.notEqual(tenantId, tenant.getTenantId())) +// .collect(Collectors.toList()); return tList.stream().map(e -> - new TenantTokenRespVO(String.valueOf(e.getTenantId()), e.getTenantName(), "1", "", "", 0) + new TenantTokenRespVO(String.valueOf(e.getTenantId()), e.getTenantName(), "1", "", "", 0,phoneNumber) ).toList(); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index 499019f2..eecc3091 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java @@ -119,6 +119,8 @@ public interface AdminUserService { * @return 用户对象信息 */ AdminUserDO getUserByMobile(String mobile); + AdminUserDO getUserByMobileAndTenantId(String mobile,String tenantId); + AdminUserDO getUserByMobileAndTenantId2(String mobile,String tenantId); List getUserByMobileToList(String mobile); List getUserByMobileToList2(String mobileNumber); diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index a2229434..3ac681dd 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -12,6 +12,7 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthRegisterReqVO; @@ -332,6 +333,19 @@ public class AdminUserServiceImpl implements AdminUserService { return userMapper.selectByMobile(mobile); } + @Override + public AdminUserDO getUserByMobileAndTenantId(String mobile,String tenantId) { + LambdaQueryWrapperX x = new LambdaQueryWrapperX<>(); + x.eq(AdminUserDO::getMobile, mobile); + x.eq(AdminUserDO::getTenantId, tenantId); + return userMapper.selectOne(x); + } + + @Override + public AdminUserDO getUserByMobileAndTenantId2(String mobile, String tenantId) { + return userMapper.selectListByMobileAndTenantId(mobile,tenantId); + } + @Override public List getUserByMobileToList(String mobile) { return userMapper.selectList(AdminUserDO::getMobile,mobile);