Преглед изворни кода

修复岗位对应的公司及负责人的图像展示问题

jialuyu пре 2 недеља
родитељ
комит
7236a18c04

+ 2 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/vo/MainPositionVo.java

@@ -145,4 +145,6 @@ public class MainPositionVo implements Serializable {
     @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "gradeRequirement", other = "main_experience")
     private String gradeRequirementLabel;
 
+    /** HR/负责人头像 URL */
+    private String hrAvatar;
 }

+ 52 - 23
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/MainPositionServiceImpl.java

@@ -19,8 +19,10 @@ import org.dromara.main.mapper.MainPositionMapper;
 import org.dromara.main.service.IMainPositionService;
 import org.dromara.main.service.IMainStudentDislikeService;
 import org.dromara.system.domain.SysTenant;
+import org.dromara.system.domain.SysUser;
 import org.dromara.system.domain.vo.SysTenantVo;
 import org.dromara.system.mapper.SysTenantMapper;
+import org.dromara.system.mapper.SysUserMapper;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -36,11 +38,9 @@ public class MainPositionServiceImpl extends ServiceImpl<MainPositionMapper, Mai
     private final MainPositionMapper baseMapper;
 
     private final SysTenantMapper tenantMapper;
-
+    private final SysUserMapper userMapper;
     private final MainCompanyApplyMapper companyApplyMapper;
-
     private final OssService ossService;
-
     private final IMainStudentDislikeService studentDislikeService;
     /**
      * 查询岗位分页列表
@@ -67,21 +67,31 @@ public class MainPositionServiceImpl extends ServiceImpl<MainPositionMapper, Mai
                 SysTenantVo tenant = tenantMapper.selectVoOne(new LambdaQueryWrapper<SysTenant>().eq(SysTenant::getTenantId, vo.getTenantId()));
                 if (tenant != null) {
                     vo.setCompanyName(tenant.getCompanyName());
+                    // 使用租户表的 logo 字段作为企业 Logo
+                    if (tenant.getLogo() != null) {
+                        vo.setCompanyAvatar(ossService.selectUrlByIds(tenant.getLogo().toString()));
+                    }
+                    // 1. 优先从 SysUser 中获取负责人头像(对应租户管理员头像)
+                    SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                        .eq(SysUser::getTenantId, vo.getTenantId())
+                        .eq(SysUser::getNickName, tenant.getContactUserName())
+                        .last("limit 1"));
+                    if (user != null && user.getAvatar() != null) {
+                        vo.setHrAvatar(ossService.selectUrlByIds(user.getAvatar().toString()));
+                    } else {
+                        // 2. 备选方案:从 MainCompanyApply 中获取
+                        MainCompanyApply companyApply = companyApplyMapper.selectOne(new LambdaQueryWrapper<MainCompanyApply>()
+                            .eq(MainCompanyApply::getTenantId, vo.getTenantId())
+                            .last("limit 1"));
+                        if (companyApply != null && companyApply.getAvatar() != null) {
+                            vo.setHrAvatar(ossService.selectUrlByIds(companyApply.getAvatar().toString()));
+                        }
+                    }
                 } else if ("000000".equals(vo.getTenantId())) {
                     vo.setCompanyName("平台推荐");
                 } else {
                     vo.setCompanyName("未知企业");
                 }
-                // 补全企业logo
-                try {
-                    MainCompanyApply companyApply = companyApplyMapper.selectOne(
-                        new LambdaQueryWrapper<MainCompanyApply>().eq(MainCompanyApply::getTenantId, vo.getTenantId()).last("LIMIT 1"));
-                    if (companyApply != null && companyApply.getAvatar() != null) {
-                        vo.setCompanyAvatar(ossService.selectUrlByIds(companyApply.getAvatar().toString()));
-                    }
-                } catch (Exception e) {
-                    log.warn("获取企业logo失败, tenantId={}: {}", vo.getTenantId(), e.getMessage());
-                }
             });
         }
         return result;
@@ -100,21 +110,40 @@ public class MainPositionServiceImpl extends ServiceImpl<MainPositionMapper, Mai
                 vo.setCompanyName(tenant.getCompanyName());
                 vo.setLongitude(tenant.getLongitude());
                 vo.setLatitude(tenant.getLatitude());
+                // 使用租户表的 logo 字段
+                if (tenant.getLogo() != null) {
+                    try {
+                        vo.setCompanyAvatar(ossService.selectUrlByIds(tenant.getLogo().toString()));
+                    } catch (Exception e) {
+                        log.warn("获取企业logo失败: {}", e.getMessage());
+                    }
+                }
+                // 获取真正的负责人头像
+                try {
+                    // 1. 优先从 SysUser 中获取负责人头像
+                    SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                        .eq(SysUser::getTenantId, vo.getTenantId())
+                        .eq(SysUser::getNickName, tenant.getContactUserName())
+                        .last("limit 1"));
+                    if (user != null && user.getAvatar() != null) {
+                        vo.setHrAvatar(ossService.selectUrlByIds(user.getAvatar().toString()));
+                    } else {
+                        // 2. 备选方案:从 MainCompanyApply 中获取
+                        MainCompanyApply companyApply = companyApplyMapper.selectOne(new LambdaQueryWrapper<MainCompanyApply>()
+                            .eq(MainCompanyApply::getTenantId, vo.getTenantId())
+                            .last("limit 1"));
+                        if (companyApply != null && companyApply.getAvatar() != null) {
+                            vo.setHrAvatar(ossService.selectUrlByIds(companyApply.getAvatar().toString()));
+                        }
+                    }
+                } catch (Exception e) {
+                    log.warn("获取负责人头像失败: {}", e.getMessage());
+                }
             } else if ("000000".equals(vo.getTenantId())) {
                 vo.setCompanyName("平台推荐");
             } else {
                 vo.setCompanyName("未知企业");
             }
-            // 查询企业logo
-            MainCompanyApply companyApply = companyApplyMapper.selectOne(
-                new LambdaQueryWrapper<MainCompanyApply>().eq(MainCompanyApply::getTenantId, vo.getTenantId()).last("LIMIT 1"));
-            if (companyApply != null && companyApply.getAvatar() != null) {
-                try {
-                    vo.setCompanyAvatar(ossService.selectUrlByIds(companyApply.getAvatar().toString()));
-                } catch (Exception e) {
-                    log.warn("获取企业logo失败: {}", e.getMessage());
-                }
-            }
         }
         return vo;
     }