feat(): 消防报警记录详情接口增加会议信息支持APP重新入会

dev^2
lishiwei 2026-08-01 18:01:20 +08:00
parent 892c736ea9
commit a0531bdebe
4 changed files with 100 additions and 2 deletions

View File

@ -137,7 +137,7 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A
} }
fireAlarmMeetingAccountService.ensureAppMeetingAccount(appUserId, record.getAlarmUserName(), record.getAlarmPhone()); fireAlarmMeetingAccountService.ensureAppMeetingAccount(appUserId, record.getAlarmUserName(), record.getAlarmPhone());
} }
return SingleResponse.of(buildCO(record)); return SingleResponse.of(buildDetailCO(record));
} }
@Override @Override
@ -146,7 +146,7 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A
if (record == null) { if (record == null) {
throw new BizException("消防报警记录不存在"); throw new BizException("消防报警记录不存在");
} }
return buildCO(record); return buildDetailCO(record);
} }
@Override @Override
@ -237,6 +237,12 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A
return co; return co;
} }
private AlarmRecordCO buildDetailCO(FireAlarmInfoDO record) {
AlarmRecordCO co = buildCO(record);
co.setMeeting(fireAlarmMeetingAccountService.buildAppMeetingInfo(record));
return co;
}
private String toPhotoJson(List<String> photos) { private String toPhotoJson(List<String> photos) {
if (photos == null || photos.isEmpty()) { if (photos == null || photos.isEmpty()) {
return null; return null;

View File

@ -4,6 +4,8 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.cola.exception.BizException; import com.alibaba.cola.exception.BizException;
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo; import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo;
import com.zcloud.zcGbsServicer.dto.clientobject.AlarmRecordMeetingCO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingRoomDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingRoomDO;
import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingUserDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmMeetingUserDO;
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingRoomRepository; import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingRoomRepository;
@ -13,6 +15,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@ -28,6 +31,8 @@ import java.util.UUID;
public class FireAlarmMeetingAccountService extends FireAlarmServiceSupport { public class FireAlarmMeetingAccountService extends FireAlarmServiceSupport {
private static final int MEETING_USER_TYPE_APP = 2; private static final int MEETING_USER_TYPE_APP = 2;
private static final int ALARM_MODE_APP = 2;
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private final FireAlarmMeetingUserRepository fireAlarmMeetingUserRepository; private final FireAlarmMeetingUserRepository fireAlarmMeetingUserRepository;
private final FireAlarmMeetingRoomRepository fireAlarmMeetingRoomRepository; private final FireAlarmMeetingRoomRepository fireAlarmMeetingRoomRepository;
@ -35,6 +40,51 @@ public class FireAlarmMeetingAccountService extends FireAlarmServiceSupport {
private final HstVideoPlatformClient hstVideoPlatformClient; private final HstVideoPlatformClient hstVideoPlatformClient;
private final FireAlarmUserResolver fireAlarmUserResolver; private final FireAlarmUserResolver fireAlarmUserResolver;
/**
* APP
*/
public AlarmRecordMeetingCO buildAppMeetingInfo(FireAlarmInfoDO record) {
if (record == null || !Integer.valueOf(ALARM_MODE_APP).equals(record.getAlarmMode())) {
return null;
}
Long localUserId = record.getAlarmUserId();
if (localUserId == null) {
return null;
}
FireAlarmMeetingRoomDO room = fireAlarmMeetingRoomRepository
.getByRoomCode(hstVideoPlatformProperties.getDefaultRoomCode());
Long userTenantId = fireAlarmUserResolver.resolveUserTenantId(localUserId);
FireAlarmMeetingUserDO meetingUser = fireAlarmMeetingUserRepository.getByLocalUserId(localUserId, userTenantId);
AlarmRecordMeetingCO co = new AlarmRecordMeetingCO();
co.setAlarmId(record.getId());
co.setLocalUserId(localUserId);
co.setRoomCode(hstVideoPlatformProperties.getDefaultRoomCode());
co.setRoomId(selectText(record.getMeetingRoomId(),
room == null ? hstVideoPlatformProperties.getDefaultRoomNo()
: selectText(room.getThirdRoomId(), room.getThirdRoomNo())));
co.setRoomNo(room == null ? hstVideoPlatformProperties.getDefaultRoomNo() : room.getThirdRoomNo());
co.setMeetingName(selectText(record.getMeetingRoomName(),
room == null ? "消防报警固定会议室" : room.getRoomName()));
co.setPassword(room == null ? null : room.getRoomPasswordCipher());
co.setThirdUserName(selectText(record.getMeetingApplyThirdUserName(),
meetingUser == null ? null : meetingUser.getThirdUserName()));
co.setUserPass(hstVideoPlatformProperties.getDefaultUserPassword());
co.setGrantType("password");
co.setCesAddr(hstVideoPlatformProperties.getWebBaseUrl());
co.setWebUrl(hstVideoPlatformProperties.getWebBaseUrl());
co.setLoginUrl(hstVideoPlatformProperties.getWebBaseUrl());
co.setClientId(hstVideoPlatformProperties.getClientId());
co.setClientSecret(hstVideoPlatformProperties.getClientSecret());
co.setJoinStatus(record.getMeetingJoinStatus());
co.setJoinTime(formatTime(record.getMeetingJoinTime()));
co.setLeaveTime(formatTime(record.getMeetingLeaveTime()));
co.setAuthStatus(record.getMeetingAuthStatus());
co.setResultMsg(record.getMeetingResultMsg());
return co;
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void ensureAppMeetingAccount(Long localUserId, String localUserName, String localPhone) { public void ensureAppMeetingAccount(Long localUserId, String localUserName, String localPhone) {
if (localUserId == null) { if (localUserId == null) {
@ -188,6 +238,10 @@ public class FireAlarmMeetingAccountService extends FireAlarmServiceSupport {
return StrUtil.isNotBlank(preferred) ? preferred : fallback; return StrUtil.isNotBlank(preferred) ? preferred : fallback;
} }
private String formatTime(LocalDateTime time) {
return time == null ? null : TIME_FORMATTER.format(time);
}
private long nextId() { private long nextId() {
return IdUtil.getSnowflake(1, 1).nextId(); return IdUtil.getSnowflake(1, 1).nextId();
} }

View File

@ -59,4 +59,7 @@ public class AlarmRecordCO extends ClientObject {
private String clearReason; private String clearReason;
private List<String> photos; private List<String> photos;
/** APP 报警会议信息,用于重新入会;非 APP 报警或无会议账号时为 null */
private AlarmRecordMeetingCO meeting;
} }

View File

@ -0,0 +1,35 @@
package com.zcloud.zcGbsServicer.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import lombok.Data;
/**
* APP 使
*/
@Data
public class AlarmRecordMeetingCO extends ClientObject {
private Long alarmId;
private Long localUserId;
private String roomCode;
private String roomId;
private String roomNo;
private String meetingName;
private String password;
private String thirdUserName;
private String userPass;
private String grantType;
private String cesAddr;
private String webUrl;
private String loginUrl;
private String clientId;
private String clientSecret;
private Integer joinStatus;
private String joinTime;
private String leaveTime;
private Integer authStatus;
private String resultMsg;
}