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

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

View File

@@ -1,7 +1,6 @@
package com.ruoyi.cms.util; package com.ruoyi.cms.util;
import com.ruoyi.common.core.domain.entity.AppUser; 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.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginSiteUser; import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.common.core.domain.model.LoginUser; 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())); .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 * @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 * 获取Authentication
*/ */