fix (farm):

- 修改登录逻辑
- 管理图片验证码
This commit is contained in:
达富斌
2025-10-30 15:26:06 +08:00
parent 68bd754315
commit 7ee2159d81
10 changed files with 116 additions and 1 deletions

View File

@@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.security.config.SecurityProperties;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.LoginForTenantReqVO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.TenantRespVO;
import cn.iocoder.yudao.module.system.convert.auth.AuthConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
@@ -71,6 +73,13 @@ public class AuthController {
return success(authService.login(reqVO));
}
@PostMapping("/login-for-tenant-list")
@PermitAll
@Operation(summary = "使用账号密码登录-前置操作-返回租户列表")
public CommonResult<List<TenantRespVO>> loginForTenantList(@RequestBody @Valid LoginForTenantReqVO reqVO) {
return success(authService.loginForTenantList(reqVO));
}
@PostMapping("/logout")
@PermitAll
@Operation(summary = "登出系统")

View File

@@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @description: TODO
* @author: binda
* @date: 2025/10/30 15:03
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginForTenantReqVO {
private String username;
private String password;
}

View File

@@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @description: 租户列表
* @author: binda
* @date: 2025/10/30 14:53
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TenantRespVO {
@Schema(description = "租户ID")
private Long tenantId;
@Schema(description = "租户名称")
private String tenantName;
@Schema(description = "套餐ID")
private Long packageId;
@Schema(description = "套餐名称")
private String packageName;
}

View File

@@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.system.service.auth;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.LoginForTenantReqVO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.TenantRespVO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import jakarta.validation.Valid;
@@ -104,4 +106,12 @@ public interface AdminAuthService {
* @return
*/
List<TenantTokenRespVO> getTenantTokenList(String phoneNumber,String accessToken);
/**
* 登录前置操作
* 1. 获取用户所拥有的租户列表
* @param reqVO
* @return
*/
List<TenantRespVO> loginForTenantList(LoginForTenantReqVO reqVO);
}

View File

@@ -18,6 +18,8 @@ import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
import cn.iocoder.yudao.module.system.api.social.dto.SocialUserBindReqDTO;
import cn.iocoder.yudao.module.system.api.social.dto.SocialUserRespDTO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.LoginForTenantReqVO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.TenantRespVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
import cn.iocoder.yudao.module.system.convert.auth.AuthConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
@@ -531,6 +533,11 @@ public class AdminAuthServiceImpl implements AdminAuthService {
return res;
}
@Override
public List<TenantRespVO> loginForTenantList(LoginForTenantReqVO reqVO) {
return userService.loginForTenantList(reqVO);
}
/**
* 解密微信小程序数据
* 根据微信官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html

View File

@@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.system.service.tenant;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.LoginForTenantReqVO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.TenantRespVO;
import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
@@ -142,4 +144,5 @@ public interface TenantService {
*/
void validTenant(Long id);
List<TenantRespVO> loginForTenantList(LoginForTenantReqVO reqVO);
}

View File

@@ -13,6 +13,8 @@ import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.framework.tenant.config.TenantProperties;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.LoginForTenantReqVO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.TenantRespVO;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
@@ -39,8 +41,10 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
@@ -95,6 +99,21 @@ public class TenantServiceImpl implements TenantService {
}
}
@Override
public List<TenantRespVO> loginForTenantList(LoginForTenantReqVO reqVO) {
List<TenantPackageDO> pList = tenantPackageService.getTenantPackageListByStatus(0);
Map<Long, String> pMap = pList.stream().collect(Collectors.toMap(TenantPackageDO::getId, TenantPackageDO::getName, (v1, v2) -> v1));
List<TenantDO> tList = tenantMapper.selectList(TenantDO::getContactMobile,reqVO.getUsername());
return tList.stream().map(t ->
new TenantRespVO(
t.getId(),
t.getName(),
t.getPackageId(),
pMap.getOrDefault(t.getPackageId(), ""))).toList();
}
@Override
@DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
@DataPermission(enable = false) // 参见 https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/1154 说明

View File

@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthRegisterReqVO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.LoginForTenantReqVO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.TenantRespVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportExcelVO;
@@ -223,4 +225,12 @@ public interface AdminUserService {
* @return 是否修复成功
*/
Boolean fixUserTenantId(Long userId);
/**
* 登录前置操作
* 1. 获取用户拥有的租户列表
* @param reqVO
* @return
*/
List<TenantRespVO> loginForTenantList(LoginForTenantReqVO reqVO);
}

View File

@@ -15,6 +15,8 @@ import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
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;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.LoginForTenantReqVO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.diy.TenantRespVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportExcelVO;
@@ -23,6 +25,7 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.PersonnelDO;
import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
@@ -624,4 +627,9 @@ public class AdminUserServiceImpl implements AdminUserService {
return true;
}
@Override
public List<TenantRespVO> loginForTenantList(LoginForTenantReqVO reqVO) {
return tenantService.loginForTenantList(reqVO);
}
}

View File

@@ -179,7 +179,8 @@ yudao:
transfer-notify-url: https://yunai.natapp1.cc/admin-api/pay/notify/transfer # 支付渠道的【转账】回调地址
demo: false # 开启演示模式
tencent-lbs-key: TVDBZ-TDILD-4ON4B-PFDZA-RNLKH-VVF6E # QQ 地图的密钥 https://lbs.qq.com/service/staticV2/staticGuide/staticDoc
captcha:
enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试
justauth:
enabled: true
type: