diff --git a/web-app/src/main/java/com/zcloud/zcGbsServicer/service/AlarmRecordServiceImpl.java b/web-app/src/main/java/com/zcloud/zcGbsServicer/service/AlarmRecordServiceImpl.java index bcb5aad..de2a2a0 100644 --- a/web-app/src/main/java/com/zcloud/zcGbsServicer/service/AlarmRecordServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/zcGbsServicer/service/AlarmRecordServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.exception.BizException; +import com.zcloud.gbscommon.utils.PageQueryHelper; import com.zcloud.zcGbsServicer.api.AlarmRecordServiceI; import com.zcloud.zcGbsServicer.command.convertor.AlarmRecordCoConvertor; import com.zcloud.zcGbsServicer.dto.AlarmRecordAddCmd; @@ -16,6 +17,8 @@ import com.zcloud.zcGbsServicer.dto.clientobject.AlarmRecordCO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeDO; import com.zcloud.zcGbsServicer.persistence.dataobject.FireBrigadeUserDO; +import com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO; +import com.zcloud.zcGbsServicer.persistence.repository.AlarmUserRepository; import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmInfoRepository; import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeRepository; import com.zcloud.zcGbsServicer.persistence.repository.FireBrigadeUserRepository; @@ -42,33 +45,63 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A private static final int ALARM_STATUS_ALARMING = 1; private static final int ALARM_STATUS_DISPOSING = 2; private static final int ALARM_STATUS_CLEARED = 3; + private static final int USER_TYPE_SUPERVISE = 1; + private static final int USER_TYPE_ENTERPRISE = 2; + private static final int USER_TYPE_RELATED = 3; + /** 港务局用户-gwj特殊处理 */ + private static final Long SPECIAL_SUPERVISE_USER_ID = 1976974388809424896L; private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private final FireAlarmInfoRepository fireAlarmInfoRepository; private final FireBrigadeRepository fireBrigadeRepository; private final FireBrigadeUserRepository fireBrigadeUserRepository; + private final AlarmUserRepository alarmUserRepository; private final AlarmRecordCoConvertor alarmRecordCoConvertor; + private final FireAlarmMeetingAccountService fireAlarmMeetingAccountService; @Override public PageResponse listPage(AlarmRecordPageQry qry) { - Map params = new HashMap<>(); - params.put("pageIndex", qry.getPageIndex()); - params.put("pageSize", qry.getPageSize()); - params.put("fireBrigadeName", qry.getTeam()); - params.put("alarmStatus", parseStatus(qry.getStatus())); - params.put("feedbackOnly", Boolean.TRUE.equals(qry.getMyFeedbackOnly())); - if (Boolean.TRUE.equals(qry.getMyFeedbackOnly())) { - List currentBrigadeIds = getCurrentUserBrigadeBizIds(); - if (currentBrigadeIds.isEmpty()) { - return PageResponse.of(Collections.emptyList(), 0, qry.getPageSize(), qry.getPageIndex()); - } - params.put("fireBrigadeIds", currentBrigadeIds); + Map params = PageQueryHelper.toHashMap(qry); + String menuPath = qry == null ? null : qry.getMenuPath(); + if (qry != null && StrUtil.isNotBlank(qry.getTeam())) { + params.put("fireBrigadeName", qry.getTeam().trim()); } - PageResponse page = fireAlarmInfoRepository.listPage(params); + Integer alarmStatus = parseStatus(qry == null ? null : qry.getStatus()); + if (alarmStatus != null) { + params.put("alarmStatus", alarmStatus); + } + Long corpinfoId = resolveListCorpinfoId(qry); + if (corpinfoId != null) { + params.put("corpinfoId", corpinfoId); + } + PageResponse page = fireAlarmInfoRepository.listPage(params, menuPath); return PageResponse.of(page.getData().stream().map(this::buildCO).collect(Collectors.toList()), page.getTotalCount(), page.getPageSize(), page.getPageIndex()); } + /** + * user_type:1监管可查全部;2企业/3相关方查本企业。 + */ + private Long resolveListCorpinfoId(AlarmRecordPageQry qry) { + Long userId = currentUserId(); + if (SPECIAL_SUPERVISE_USER_ID.equals(userId)) { + return qry == null ? null : qry.getCorpinfoId(); + } + AlarmUserScopeDO scope = alarmUserRepository.getScopeByUserId(userId); + Integer userType = scope == null ? null : scope.getUserType(); + if (Integer.valueOf(USER_TYPE_SUPERVISE).equals(userType)) { + return qry == null ? null : qry.getCorpinfoId(); + } + if (Integer.valueOf(USER_TYPE_ENTERPRISE).equals(userType) + || Integer.valueOf(USER_TYPE_RELATED).equals(userType)) { + if (scope.getCorpinfoId() != null) { + return scope.getCorpinfoId(); + } + throw new BizException("当前企业用户未配置所属企业,无法查询报警记录"); + } + return qry == null ? null : qry.getCorpinfoId(); + } + @Override @Transactional(rollbackFor = Exception.class) public SingleResponse add(AlarmRecordAddCmd cmd) { @@ -92,7 +125,19 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A record.setAlarmStatus(ALARM_STATUS_ALARMING); record.setRecordTime(LocalDateTime.now()); fireAlarmInfoRepository.save(record); - return SingleResponse.of(buildCO(record)); + if (Integer.valueOf(ALARM_MODE_APP).equals(record.getAlarmMode())) { + Long appUserId = record.getAlarmUserId() == null ? currentUserId() : record.getAlarmUserId(); + if (appUserId == null) { + throw new BizException("APP报警人用户ID不能为空"); + } + if (record.getAlarmUserId() == null) { + record.setAlarmUserId(appUserId); + fillUpdateAudit(record); + fireAlarmInfoRepository.updateById(record); + } + fireAlarmMeetingAccountService.ensureAppMeetingAccount(appUserId, record.getAlarmUserName(), record.getAlarmPhone()); + } + return SingleResponse.of(buildDetailCO(record)); } @Override @@ -101,7 +146,7 @@ public class AlarmRecordServiceImpl extends FireAlarmServiceSupport implements A if (record == null) { throw new BizException("消防报警记录不存在"); } - return buildCO(record); + return buildDetailCO(record); } @Override @@ -192,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 photos) { if (photos == null || photos.isEmpty()) { return null; diff --git a/web-app/src/main/java/com/zcloud/zcGbsServicer/service/FireAlarmMeetingAccountService.java b/web-app/src/main/java/com/zcloud/zcGbsServicer/service/FireAlarmMeetingAccountService.java new file mode 100644 index 0000000..694c39a --- /dev/null +++ b/web-app/src/main/java/com/zcloud/zcGbsServicer/service/FireAlarmMeetingAccountService.java @@ -0,0 +1,252 @@ +package com.zcloud.zcGbsServicer.service; + +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; +import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmMeetingUserRepository; +import lombok.RequiredArgsConstructor; +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; +import java.util.Locale; +import java.util.Map; +import java.util.UUID; + +/** + * APP 报警人会议账号:无映射或无第三方账号时按需创建。 + */ +@Service +@RequiredArgsConstructor +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; + private final HstVideoPlatformProperties hstVideoPlatformProperties; + 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) { + throw new BizException("报警人用户ID不能为空"); + } + Long userTenantId = fireAlarmUserResolver.resolveUserTenantId(localUserId); + FireAlarmMeetingUserDO meetingUser = fireAlarmMeetingUserRepository.getByLocalUserId(localUserId, userTenantId); + if (meetingUser != null && StrUtil.isNotBlank(meetingUser.getThirdUserName())) { + boolean needUpdate = false; + if (StrUtil.isNotBlank(localUserName) && !localUserName.equals(meetingUser.getLocalUserName())) { + meetingUser.setLocalUserName(localUserName); + needUpdate = true; + } + if (StrUtil.isNotBlank(localPhone) && !localPhone.equals(meetingUser.getLocalPhone())) { + meetingUser.setLocalPhone(localPhone); + needUpdate = true; + } + if (needUpdate) { + fillUpdateAudit(meetingUser); + fireAlarmMeetingUserRepository.updateById(meetingUser); + } + return; + } + + if (StrUtil.isBlank(hstVideoPlatformProperties.getDefaultUserPassword())) { + throw new BizException("视频平台默认用户密码未配置,不能创建会议账号"); + } + + ZcloudUserCo user = fireAlarmUserResolver.getUserMap(Collections.singleton(localUserId)).get(localUserId); + String resolvedName = selectText(localUserName, user == null ? null : user.getName()); + String resolvedPhone = selectText(localPhone, user == null ? null : user.getPhone()); + String thirdUserName = resolveThirdUserName(meetingUser, localUserId); + + Map requestBody = new LinkedHashMap<>(); + requestBody.put("userName", thirdUserName); + requestBody.put("password", hstVideoPlatformProperties.getDefaultUserPassword()); + requestBody.put("passwordType", 0); + requestBody.put("mobile", resolvedPhone); + requestBody.put("nickName", selectText(resolvedName, thirdUserName)); + requestBody.put("sex", "0"); + requestBody.put("departId", StrUtil.blankToDefault(hstVideoPlatformProperties.getDefaultDepartId(), "0")); + requestBody.put("adminRole", 2); + + Map data = new HashMap<>(); + String syncMsg = "第三方账号创建成功"; + try { + Map response = hstVideoPlatformClient.addUser(requestBody); + hstVideoPlatformClient.ensureSuccess(response, "创建视频平台用户"); + data = castMap(response.get("data")); + syncMsg = selectText(asText(response.get("msg")), syncMsg); + } + catch (BizException ex) { + if (!isAlreadyExists(ex.getMessage())) { + throw new BizException("创建视频平台用户失败:" + ex.getMessage()); + } + syncMsg = "第三方账号已存在,已复用"; + } + + boolean isNew = meetingUser == null; + if (meetingUser == null) { + meetingUser = new FireAlarmMeetingUserDO(); + meetingUser.setId(nextId()); + meetingUser.setFireAlarmMeetingUserId(nextBizId()); + fillCreateAudit(meetingUser); + } + else { + fillUpdateAudit(meetingUser); + } + fireAlarmUserResolver.applyLocalUserTenant(meetingUser, localUserId); + + FireAlarmMeetingRoomDO room = fireAlarmMeetingRoomRepository.getByRoomCode(hstVideoPlatformProperties.getDefaultRoomCode()); + LocalDateTime now = LocalDateTime.now(); + meetingUser.setLocalUserId(localUserId); + meetingUser.setLocalUserName(resolvedName); + meetingUser.setLocalPhone(resolvedPhone); + if (meetingUser.getUserType() == null) { + meetingUser.setUserType(MEETING_USER_TYPE_APP); + } + meetingUser.setThirdUserId(selectText(asText(data.get("userId")), meetingUser.getThirdUserId())); + meetingUser.setThirdUserName(selectText(asText(data.get("userName")), thirdUserName)); + meetingUser.setThirdNickName(selectText(asText(data.get("displayName")), resolvedName)); + meetingUser.setThirdDepartId(selectText(asText(data.get("departId")), hstVideoPlatformProperties.getDefaultDepartId())); + meetingUser.setAuthRoomId(room == null ? hstVideoPlatformProperties.getDefaultRoomNo() + : selectText(room.getThirdRoomId(), room.getThirdRoomNo())); + meetingUser.setAuthRoomName(room == null ? "消防报警固定会议室" : room.getRoomName()); + meetingUser.setAuthStatus(1); + meetingUser.setAuthTime(now); + meetingUser.setSyncStatus(1); + meetingUser.setSyncMsg(syncMsg); + meetingUser.setLastSyncTime(now); + if (isNew) { + fireAlarmMeetingUserRepository.save(meetingUser); + } + else { + fireAlarmMeetingUserRepository.updateById(meetingUser); + } + syncRoomAuth(meetingUser.getThirdUserName(), 2); + } + + private void syncRoomAuth(String thirdUserName, int permission) { + if (StrUtil.isBlank(thirdUserName)) { + return; + } + FireAlarmMeetingRoomDO room = fireAlarmMeetingRoomRepository.getByRoomCode(hstVideoPlatformProperties.getDefaultRoomCode()); + String roomId = room == null ? hstVideoPlatformProperties.getDefaultRoomNo() + : selectText(room.getThirdRoomId(), room.getThirdRoomNo()); + if (StrUtil.isBlank(roomId)) { + return; + } + Map requestBody = new LinkedHashMap<>(); + requestBody.put("roomUserStr", roomId + "," + permission); + requestBody.put("userName", thirdUserName); + try { + Map response = hstVideoPlatformClient.authRoom(requestBody); + hstVideoPlatformClient.ensureSuccess(response, "用户授权会议室"); + } + catch (BizException ex) { + throw new BizException("用户授权会议室失败:" + ex.getMessage()); + } + } + + private String resolveThirdUserName(FireAlarmMeetingUserDO meetingUser, Long localUserId) { + if (meetingUser != null && StrUtil.isNotBlank(meetingUser.getThirdUserName())) { + return meetingUser.getThirdUserName().trim(); + } + String userName = StrUtil.blankToDefault(hstVideoPlatformProperties.getFireUserPrefix(), "xfbj") + localUserId; + if (userName.length() > 32) { + return userName.substring(0, 32); + } + return userName; + } + + private boolean isAlreadyExists(String message) { + String msg = StrUtil.blankToDefault(message, "").toLowerCase(Locale.ROOT); + return msg.contains("存在") || msg.contains("exist") || msg.contains("duplicate"); + } + + @SuppressWarnings("unchecked") + private Map castMap(Object value) { + if (!(value instanceof Map)) { + return new HashMap<>(); + } + return (Map) value; + } + + private String asText(Object value) { + return value == null ? null : String.valueOf(value); + } + + private String selectText(String preferred, String fallback) { + 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(); + } + + private String nextBizId() { + return UUID.randomUUID().toString().replace("-", ""); + } +} diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordPageQry.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordPageQry.java index bca0123..0b6df1b 100644 --- a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordPageQry.java +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/AlarmRecordPageQry.java @@ -13,6 +13,11 @@ public class AlarmRecordPageQry extends PageQuery { @ApiModelProperty("报警状态") private String status; + @ApiModelProperty("所属单位ID") + private Long corpinfoId; + @ApiModelProperty("是否只查询当前登录人所在消防队的处置数据") // 预留暂未使用 private Boolean myFeedbackOnly; + + private String menuPath; } diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordCO.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordCO.java index ea2af27..882cd20 100644 --- a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordCO.java +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordCO.java @@ -59,4 +59,7 @@ public class AlarmRecordCO extends ClientObject { private String clearReason; private List photos; + + /** APP 报警会议信息,用于重新入会;非 APP 报警或无会议账号时为 null */ + private AlarmRecordMeetingCO meeting; } diff --git a/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordMeetingCO.java b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordMeetingCO.java new file mode 100644 index 0000000..0fc8778 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/zcGbsServicer/dto/clientobject/AlarmRecordMeetingCO.java @@ -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; +} diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/dataobject/AlarmUserScopeDO.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/dataobject/AlarmUserScopeDO.java new file mode 100644 index 0000000..4e9a438 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/dataobject/AlarmUserScopeDO.java @@ -0,0 +1,13 @@ +package com.zcloud.zcGbsServicer.persistence.dataobject; + +import lombok.Data; + +@Data +public class AlarmUserScopeDO { + + /** 用户类型:1监管 2企业 3相关方 */ + private Integer userType; + + /** 所属企业ID,对应 fire_alarm_info.corpinfo_id */ + private Long corpinfoId; +} diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/AlarmUserMapper.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/AlarmUserMapper.java index 444bef4..fd10646 100644 --- a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/AlarmUserMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/AlarmUserMapper.java @@ -1,5 +1,6 @@ package com.zcloud.zcGbsServicer.persistence.mapper; +import com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -7,4 +8,6 @@ import org.apache.ibatis.annotations.Param; public interface AlarmUserMapper { Long selectTenantIdByUserId(@Param("userId") Long userId); + + AlarmUserScopeDO selectScopeByUserId(@Param("userId") Long userId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/FireAlarmInfoMapper.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/FireAlarmInfoMapper.java index 4737946..655451a 100644 --- a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/FireAlarmInfoMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/mapper/FireAlarmInfoMapper.java @@ -2,19 +2,21 @@ package com.zcloud.zcGbsServicer.persistence.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jjb.saas.framework.datascope.annotation.DataScope; +import com.jjb.saas.framework.datascope.annotation.DataScopes; import com.zcloud.zcGbsServicer.persistence.dataobject.FireAlarmInfoDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import java.util.List; +import java.util.Map; @Mapper +@DataScopes({ + @DataScope(method = "selectPageSql", menuPerms = "qyd-xfbjxxgl"), +}) public interface FireAlarmInfoMapper extends BaseMapper { - IPage selectPageSql(IPage page, - @Param("tenantId") Long tenantId, - @Param("fireBrigadeName") String fireBrigadeName, - @Param("alarmStatus") Integer alarmStatus, - @Param("fireBrigadeIds") List fireBrigadeIds, - @Param("feedbackOnly") Boolean corpinfoId); + IPage selectPageSql(IPage iPage, + @Param("params") Map params, + @Param("menuPath") String menuPath); } diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/AlarmUserRepository.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/AlarmUserRepository.java index 6333c1c..d218c5a 100644 --- a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/AlarmUserRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/AlarmUserRepository.java @@ -1,6 +1,10 @@ package com.zcloud.zcGbsServicer.persistence.repository; +import com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO; + public interface AlarmUserRepository { Long getTenantIdByUserId(Long userId); + + AlarmUserScopeDO getScopeByUserId(Long userId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/FireAlarmInfoRepository.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/FireAlarmInfoRepository.java index 640cd73..f66bb5d 100644 --- a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/FireAlarmInfoRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/FireAlarmInfoRepository.java @@ -8,7 +8,7 @@ import java.util.Map; public interface FireAlarmInfoRepository extends BaseRepository { - PageResponse listPage(Map params); + PageResponse listPage(Map params, String menuPath); FireAlarmInfoDO getByFireAlarmInfoId(String fireAlarmInfoId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/AlarmUserRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/AlarmUserRepositoryImpl.java index 196ae00..f66bea6 100644 --- a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/AlarmUserRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/AlarmUserRepositoryImpl.java @@ -1,5 +1,6 @@ package com.zcloud.zcGbsServicer.persistence.repository.impl; +import com.zcloud.zcGbsServicer.persistence.dataobject.AlarmUserScopeDO; import com.zcloud.zcGbsServicer.persistence.mapper.AlarmUserMapper; import com.zcloud.zcGbsServicer.persistence.repository.AlarmUserRepository; import lombok.RequiredArgsConstructor; @@ -18,4 +19,12 @@ public class AlarmUserRepositoryImpl implements AlarmUserRepository { } return alarmUserMapper.selectTenantIdByUserId(userId); } + + @Override + public AlarmUserScopeDO getScopeByUserId(Long userId) { + if (userId == null) { + return null; + } + return alarmUserMapper.selectScopeByUserId(userId); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/FireAlarmInfoRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/FireAlarmInfoRepositoryImpl.java index d9f8c69..4db18e6 100644 --- a/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/FireAlarmInfoRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/zcGbsServicer/persistence/repository/impl/FireAlarmInfoRepositoryImpl.java @@ -13,7 +13,6 @@ import com.zcloud.zcGbsServicer.persistence.repository.FireAlarmInfoRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Map; @Service @@ -23,20 +22,9 @@ public class FireAlarmInfoRepositoryImpl extends BaseRepositoryImpl listPage(Map params) { + public PageResponse listPage(Map params, String menuPath) { IPage page = new Query().getPage(params); - String fireBrigadeName = params == null ? null : (String) params.get("fireBrigadeName"); - Integer alarmStatus = params == null ? null : (Integer) params.get("alarmStatus"); - List fireBrigadeIds = params == null ? null : (List) params.get("fireBrigadeIds"); - Boolean feedbackOnly = params == null ? null : (Boolean) params.get("feedbackOnly"); - IPage result = fireAlarmInfoMapper.selectPageSql( - page, - AuthContext.getTenantId(), - fireBrigadeName, - alarmStatus, - fireBrigadeIds, - feedbackOnly - ); + IPage result = fireAlarmInfoMapper.selectPageSql(page, params, menuPath); return PageHelper.pageToResponse(result, result.getRecords()); } diff --git a/web-infrastructure/src/main/resources/fireAlarm.sql b/web-infrastructure/src/main/resources/fireAlarm.sql index 826946b..779f2df 100644 --- a/web-infrastructure/src/main/resources/fireAlarm.sql +++ b/web-infrastructure/src/main/resources/fireAlarm.sql @@ -185,6 +185,7 @@ CREATE TABLE `fire_brigade_user` ( `duty_name` varchar(128) DEFAULT NULL COMMENT '职务名称', `corp_id` varchar(64) DEFAULT NULL COMMENT '机构ID', `org_name` varchar(128) DEFAULT NULL COMMENT '机构名称', + `age` int DEFAULT NULL COMMENT '年龄', `version` int DEFAULT NULL COMMENT '乐观锁', `create_id` bigint DEFAULT NULL COMMENT '创建人ID', `create_name` varchar(64) DEFAULT NULL COMMENT '创建人姓名', diff --git a/web-infrastructure/src/main/resources/mapper/AlarmUserMapper.xml b/web-infrastructure/src/main/resources/mapper/AlarmUserMapper.xml index ab6daac..4ade6c1 100644 --- a/web-infrastructure/src/main/resources/mapper/AlarmUserMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/AlarmUserMapper.xml @@ -11,4 +11,13 @@ LIMIT 1 + + diff --git a/web-infrastructure/src/main/resources/mapper/FireAlarmInfoMapper.xml b/web-infrastructure/src/main/resources/mapper/FireAlarmInfoMapper.xml index bbc2166..f8bafeb 100644 --- a/web-infrastructure/src/main/resources/mapper/FireAlarmInfoMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/FireAlarmInfoMapper.xml @@ -5,30 +5,30 @@