feat(): 消防报警记录详情接口增加会议信息支持APP重新入会
parent
892c736ea9
commit
a0531bdebe
|
|
@ -137,7 +137,7 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A
|
|||
}
|
||||
fireAlarmMeetingAccountService.ensureAppMeetingAccount(appUserId, record.getAlarmUserName(), record.getAlarmPhone());
|
||||
}
|
||||
return SingleResponse.of(buildCO(record));
|
||||
return SingleResponse.of(buildDetailCO(record));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -146,7 +146,7 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A
|
|||
if (record == null) {
|
||||
throw new BizException("消防报警记录不存在");
|
||||
}
|
||||
return buildCO(record);
|
||||
return buildDetailCO(record);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -237,6 +237,12 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A
|
|||
return co;
|
||||
}
|
||||
|
||||
private AlarmRecordCO buildDetailCO(FireAlarmInfoDO record) {
|
||||
AlarmRecordCO co = buildCO(record);
|
||||
co.setMeeting(fireAlarmMeetingAccountService.buildAppMeetingInfo(record));
|
||||
return co;
|
||||
}
|
||||
|
||||
private String toPhotoJson(List<String> photos) {
|
||||
if (photos == null || photos.isEmpty()) {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import cn.hutool.core.util.IdUtil;
|
|||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
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.FireAlarmMeetingUserDO;
|
||||
import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingRoomRepository;
|
||||
|
|
@ -13,6 +15,7 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
|
|
@ -28,6 +31,8 @@ import java.util.UUID;
|
|||
public class FireAlarmMeetingAccountService extends FireAlarmServiceSupport {
|
||||
|
||||
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 FireAlarmMeetingRoomRepository fireAlarmMeetingRoomRepository;
|
||||
|
|
@ -35,6 +40,51 @@ public class FireAlarmMeetingAccountService extends FireAlarmServiceSupport {
|
|||
private final HstVideoPlatformClient hstVideoPlatformClient;
|
||||
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)
|
||||
public void ensureAppMeetingAccount(Long localUserId, String localUserName, String localPhone) {
|
||||
if (localUserId == null) {
|
||||
|
|
@ -188,6 +238,10 @@ public class FireAlarmMeetingAccountService extends FireAlarmServiceSupport {
|
|||
return StrUtil.isNotBlank(preferred) ? preferred : fallback;
|
||||
}
|
||||
|
||||
private String formatTime(LocalDateTime time) {
|
||||
return time == null ? null : TIME_FORMATTER.format(time);
|
||||
}
|
||||
|
||||
private long nextId() {
|
||||
return IdUtil.getSnowflake(1, 1).nextId();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,4 +59,7 @@ public class AlarmRecordCO extends ClientObject {
|
|||
private String clearReason;
|
||||
|
||||
private List<String> photos;
|
||||
|
||||
/** APP 报警会议信息,用于重新入会;非 APP 报警或无会议账号时为 null */
|
||||
private AlarmRecordMeetingCO meeting;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue