修改移动端企业查询政策报错问题

This commit is contained in:
chenshaohua
2026-07-31 19:09:41 +08:00
parent 525b0dfdb6
commit 6c176aeb4a
3 changed files with 73 additions and 17 deletions

View File

@@ -12,8 +12,10 @@ import com.ruoyi.cms.service.IJobService;
import com.ruoyi.cms.service.rc.IPublicJobFairService;
import com.ruoyi.cms.util.RoleUtils;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.core.domain.entity.Company;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
@@ -129,7 +131,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
return Collections.emptyList();
}
boolean enterpriseRole = RoleUtils.isCompanyAdmin();
boolean enterpriseRole = RoleUtils.isCompanyAdminSafe();
boolean cmsAdmin = SecurityUtils.isLogin() && !enterpriseRole;
Company currentCompany = enterpriseRole ? getCurrentCompanyOrNull() : null;
if (enterpriseRole && currentCompany == null) {
@@ -286,7 +288,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult signupCurrentCompany(String jobFairId) {
if (!RoleUtils.isCompanyAdmin()) {
if (!RoleUtils.isCompanyAdminSafe()) {
return AjaxResult.error("仅企业用户可以报名招聘会");
}
if (StringUtils.isBlank(jobFairId)) {
@@ -545,7 +547,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
* 为企业端列表补充报名状态和按钮状态。
*/
private void fillCompanyApplyState(List<PublicJobFair> list) {
if (list == null || list.isEmpty() || !RoleUtils.isCompanyAdmin()) {
if (list == null || list.isEmpty() || !RoleUtils.isCompanyAdminSafe()) {
return;
}
Company company = getCurrentCompanyOrNull();
@@ -588,13 +590,13 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
}
private void ensureCompanyOperation() {
if (!RoleUtils.isCompanyAdmin()) {
if (!RoleUtils.isCompanyAdminSafe()) {
throw new ServiceException("仅企业用户可以维护报名岗位");
}
}
private void ensureAdminOperation() {
if (RoleUtils.isCompanyAdmin()) {
if (RoleUtils.isCompanyAdminSafe()) {
throw new ServiceException("企业用户不能执行管理员操作");
}
}
@@ -647,21 +649,43 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
* 两种方式都保留,和户外招聘会的企业识别规则一致。
*/
private Company getCurrentCompanyOrNull() {
if (!RoleUtils.isCompanyAdmin() || !SecurityUtils.isLogin()) {
if (!RoleUtils.isCompanyAdminSafe()) {
return null;
}
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null || loginUser.getUser() == null) {
String idCard = null;
Long userId = null;
String nickName = null;
String userName = null;
//后台登录用户
LoginUser loginUser = SecurityUtils.getLoginUserSafe();
if (loginUser != null && loginUser.getUser() != null) {
SysUser sysUser = loginUser.getUser();
userId = loginUser.getUserId() == null ? sysUser.getUserId() : loginUser.getUserId();
idCard = sysUser.getIdCard();
nickName = sysUser.getNickName();
userName = sysUser.getUserName();
}
// 移动端登录用户
else if (SiteSecurityUtils.isLogin()) {
LoginSiteUser loginSiteUser = SiteSecurityUtils.getLoginUser();
if (loginSiteUser != null && loginSiteUser.getUser() != null) {
AppUser siteUser = loginSiteUser.getUser();
userId = loginSiteUser.getUserId() == null ? siteUser.getUserId() : loginSiteUser.getUserId();
idCard = siteUser.getIdCard();
nickName = siteUser.getName();
userName = siteUser.getName();
}
} else {
return null;
}
SysUser sysUser = loginUser.getUser();
if (StringUtils.isNotBlank(sysUser.getIdCard())) {
Company company = companyService.queryCodeCompany(sysUser.getIdCard());
if (StringUtils.isNotBlank(idCard)) {
Company company = companyService.queryCodeCompany(idCard);
if (company != null) {
return company;
}
}
Long userId = loginUser.getUserId() == null ? sysUser.getUserId() : loginUser.getUserId();
if (userId != null) {
Company company = companyMapper.selectOne(new LambdaQueryWrapper<Company>()
.eq(Company::getUserId, userId)
@@ -673,11 +697,11 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
}
}
List<String> names = new ArrayList<>();
if (StringUtils.isNotBlank(sysUser.getNickName())) {
names.add(sysUser.getNickName());
if (StringUtils.isNotBlank(nickName)) {
names.add(nickName);
}
if (StringUtils.isNotBlank(sysUser.getUserName()) && !names.contains(sysUser.getUserName())) {
names.add(sysUser.getUserName());
if (StringUtils.isNotBlank(userName) && !names.contains(userName)) {
names.add(userName);
}
if (!names.isEmpty()) {
List<Company> companies = companyMapper.selectList(new LambdaQueryWrapper<Company>()

View File

@@ -1,7 +1,6 @@
package com.ruoyi.cms.util;
import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.core.domain.entity.Company;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.common.core.domain.model.LoginUser;
@@ -31,6 +30,24 @@ public class RoleUtils {
.anyMatch(role -> StringUtil.COMPANY_ADMIN_ROLE_KEY.equals(role.getRoleId()));
}
/**
* 安全获取是否企业账号
* @return
*/
public static boolean isCompanyAdminSafe() {
LoginUser loginUser = SecurityUtils.getLoginUserSafe();
if (loginUser != null && loginUser.getUser() != null && loginUser.getUser().getRoles() != null) {
return loginUser.getUser().getRoles().stream()
.anyMatch(role -> StringUtil.COMPANY_ADMIN_ROLE_KEY.equals(role.getRoleId()));
}
if (SiteSecurityUtils.isLogin()) {
LoginSiteUser loginSiteUser = SiteSecurityUtils.getLoginUser();
return loginSiteUser != null && loginSiteUser.getUser() != null
&& StringUtil.IS_COMPANY_USER.equals(loginSiteUser.getUser().getIsCompanyUser());
}
return false;
}
/**
* 获取身份证或统一信用代码
* @return

View File

@@ -95,6 +95,21 @@ public class SecurityUtils
}
}
/**
* 安全获取后台登录用户,不会抛异常;类型不匹配/未登录返回null
*/
public static LoginUser getLoginUserSafe() {
Authentication authentication = getAuthentication();
if (authentication == null) {
return null;
}
Object principal = authentication.getPrincipal();
if (principal instanceof LoginUser) {
return (LoginUser) principal;
}
return null;
}
/**
* 获取Authentication
*/