feat: add enterprise outdoor fair information
This commit is contained in:
@@ -6,10 +6,12 @@ import com.ruoyi.cms.domain.FairCompany;
|
||||
import com.ruoyi.cms.domain.Job;
|
||||
import com.ruoyi.cms.domain.OutdoorFair;
|
||||
import com.ruoyi.cms.domain.OutdoorFairAttendee;
|
||||
import com.ruoyi.cms.domain.OutdoorFairBooth;
|
||||
import com.ruoyi.cms.domain.OutdoorFairBoothBooking;
|
||||
import com.ruoyi.cms.domain.OutdoorFairDevice;
|
||||
import com.ruoyi.cms.mapper.CompanyMapper;
|
||||
import com.ruoyi.cms.mapper.FairCompanyMapper;
|
||||
import com.ruoyi.cms.mapper.OutdoorFairBoothMapper;
|
||||
import com.ruoyi.cms.mapper.OutdoorFairBoothBookingMapper;
|
||||
import com.ruoyi.cms.mapper.OutdoorFairDeviceMapper;
|
||||
import com.ruoyi.cms.mapper.OutdoorFairJobMapper;
|
||||
@@ -72,6 +74,9 @@ public class AppOutdoorFairController extends BaseController
|
||||
@Autowired
|
||||
private OutdoorFairBoothBookingMapper outdoorFairBoothBookingMapper;
|
||||
|
||||
@Autowired
|
||||
private OutdoorFairBoothMapper outdoorFairBoothMapper;
|
||||
|
||||
@Autowired
|
||||
private OutdoorFairJobMapper outdoorFairJobMapper;
|
||||
|
||||
@@ -188,7 +193,7 @@ public class AppOutdoorFairController extends BaseController
|
||||
return AjaxResult.error("招聘会不存在");
|
||||
}
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("fair", fair);
|
||||
data.put("fair", buildPublicFairDetail(fair));
|
||||
data.put("fairH5Url", buildFairH5Url(request, fairId));
|
||||
return success(data);
|
||||
}
|
||||
@@ -361,6 +366,36 @@ public class AppOutdoorFairController extends BaseController
|
||||
return jobFair;
|
||||
}
|
||||
|
||||
/**
|
||||
* 公共(求职者)详情只保留公开招聘会资料。
|
||||
* 企业需携带资料与到场须知不能随实体直接序列化到公共接口。
|
||||
*/
|
||||
private OutdoorFair buildPublicFairDetail(OutdoorFair fair)
|
||||
{
|
||||
OutdoorFair publicFair = new OutdoorFair();
|
||||
publicFair.setId(fair.getId());
|
||||
publicFair.setTitle(fair.getTitle());
|
||||
publicFair.setHostUnit(fair.getHostUnit());
|
||||
publicFair.setFairType(fair.getFairType());
|
||||
publicFair.setRegion(fair.getRegion());
|
||||
publicFair.setVenueId(fair.getVenueId());
|
||||
publicFair.setVenueName(fair.getVenueName());
|
||||
publicFair.setAddress(fair.getAddress());
|
||||
publicFair.setBoothCount(fair.getBoothCount());
|
||||
publicFair.setHoldTime(fair.getHoldTime());
|
||||
publicFair.setEndTime(fair.getEndTime());
|
||||
publicFair.setApplyStartTime(fair.getApplyStartTime());
|
||||
publicFair.setApplyEndTime(fair.getApplyEndTime());
|
||||
publicFair.setOnlineApply(fair.getOnlineApply());
|
||||
publicFair.setPhotoUrl(fair.getPhotoUrl());
|
||||
publicFair.setFairIntroduction(fair.getFairIntroduction());
|
||||
publicFair.setFairProcess(fair.getFairProcess());
|
||||
Long boothMapCount = outdoorFairBoothMapper.selectCount(new LambdaQueryWrapper<OutdoorFairBooth>()
|
||||
.eq(OutdoorFairBooth::getFairId, fair.getId()));
|
||||
publicFair.setBoothMapCount(boothMapCount == null ? 0 : boothMapCount.intValue());
|
||||
return publicFair;
|
||||
}
|
||||
|
||||
private Date[] parseDayRange(String day)
|
||||
{
|
||||
try {
|
||||
|
||||
@@ -144,6 +144,56 @@ public class OutdoorFairController extends BaseController
|
||||
return success(outdoorFairService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 企业只读查看当前招聘会的展位图。
|
||||
* 仅当前企业已报名且审核通过时返回数据;企业端没有任何展位图写入入口。
|
||||
*/
|
||||
@ApiOperation("企业查看已审核通过户外招聘会的展位图")
|
||||
@PreAuthorize("@ss.hasPermi('cms:outdoorFair:companyBoothMap')")
|
||||
@GetMapping("/{fairId}/company/booth-map")
|
||||
public AjaxResult getCurrentCompanyBoothMap(@PathVariable Long fairId)
|
||||
{
|
||||
if (!RoleUtils.isCompanyAdmin()) {
|
||||
return AjaxResult.error("仅企业用户可查看企业展位图");
|
||||
}
|
||||
Company company = getCurrentCompanyOrThrow();
|
||||
ensureFairCompanyApprovedIfCompany(fairId, company.getCompanyId());
|
||||
|
||||
List<OutdoorFairBooth> booths = outdoorFairBoothMapper.selectList(
|
||||
new LambdaQueryWrapper<OutdoorFairBooth>()
|
||||
.eq(OutdoorFairBooth::getFairId, fairId)
|
||||
.orderByAsc(OutdoorFairBooth::getPositionY)
|
||||
.orderByAsc(OutdoorFairBooth::getPositionX)
|
||||
.orderByAsc(OutdoorFairBooth::getBoothNumber));
|
||||
Map<Long, OutdoorFairBoothBooking> bookingMap = outdoorFairBoothBookingMapper.selectList(
|
||||
new LambdaQueryWrapper<OutdoorFairBoothBooking>()
|
||||
.eq(OutdoorFairBoothBooking::getFairId, fairId)
|
||||
.eq(OutdoorFairBoothBooking::getStatus, "reserved"))
|
||||
.stream()
|
||||
.filter(item -> item.getBoothId() != null)
|
||||
.collect(Collectors.toMap(OutdoorFairBoothBooking::getBoothId, item -> item, (a, b) -> a));
|
||||
|
||||
List<Map<String, Object>> rows = new ArrayList<>();
|
||||
for (OutdoorFairBooth booth : booths) {
|
||||
OutdoorFairBoothBooking booking = bookingMap.get(booth.getId());
|
||||
Map<String, Object> row = new HashMap<>();
|
||||
row.put("id", booth.getId());
|
||||
row.put("boothId", booth.getId());
|
||||
row.put("boothNumber", booth.getBoothNumber());
|
||||
row.put("positionX", booth.getPositionX());
|
||||
row.put("positionY", booth.getPositionY());
|
||||
row.put("bookingId", booking == null ? null : booking.getId());
|
||||
row.put("companyId", booking == null ? null : booking.getCompanyId());
|
||||
row.put("companyName", booking == null ? null : booking.getCompanyName());
|
||||
row.put("status", booking == null ? "available" : "reserved");
|
||||
rows.add(row);
|
||||
}
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("currentCompanyId", company.getCompanyId());
|
||||
data.put("booths", rows);
|
||||
return success(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 招聘会数据统计(dashboard)
|
||||
* 按年/周/月/日维度,统计举办时间落在区间内的招聘会:
|
||||
|
||||
@@ -109,6 +109,18 @@ public class OutdoorFair extends BaseEntity
|
||||
@ApiModelProperty("招聘会整体流程")
|
||||
private String fairProcess;
|
||||
|
||||
@Excel(name = "需携带资料")
|
||||
@ApiModelProperty("企业参加招聘会需携带的资料")
|
||||
private String requiredMaterials;
|
||||
|
||||
@Excel(name = "到场须知")
|
||||
@ApiModelProperty("企业到场须知")
|
||||
private String attendanceNotes;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty("招聘会展位图实际摊位数量")
|
||||
private Integer boothMapCount;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty("当前企业ID")
|
||||
private Long companyId;
|
||||
|
||||
Reference in New Issue
Block a user