|
|
|
@ -1,6 +1,10 @@ |
|
|
|
package com.zdxt.enforcementcode.service.impl; |
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import com.zdxt.enforcementcode.common.commonenum.MsgSourceTypeEnum; |
|
|
|
import com.zdxt.enforcementcode.domain.bean.SysMessageViewLog; |
|
|
|
import com.zdxt.enforcementcode.domain.bo.SysMessageViewLogBo; |
|
|
|
import com.zdxt.enforcementcode.mapper.EnforcementRegistrationMapper; |
|
|
|
import org.dromara.common.core.utils.MapstructUtils; |
|
|
|
import org.dromara.common.core.utils.StringUtils; |
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|
|
|
@ -10,8 +14,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.dromara.common.satoken.utils.LoginHelper; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import com.zdxt.enforcementcode.domain.bo.SysMessageViewLogBo; |
|
|
|
import com.zdxt.enforcementcode.domain.vo.SysMessageViewLogVo; |
|
|
|
import com.zdxt.enforcementcode.mapper.SysMessageViewLogMapper; |
|
|
|
import com.zdxt.enforcementcode.service.ISysMessageViewLogService; |
|
|
|
@ -32,6 +36,7 @@ import java.util.Collection; |
|
|
|
public class SysMessageViewLogServiceImpl implements ISysMessageViewLogService { |
|
|
|
|
|
|
|
private final SysMessageViewLogMapper baseMapper; |
|
|
|
private final EnforcementRegistrationMapper enforcementRegistrationMapper; |
|
|
|
|
|
|
|
/** |
|
|
|
* 查询系统消息浏览 |
|
|
|
@ -138,4 +143,95 @@ public class SysMessageViewLogServiceImpl implements ISysMessageViewLogService { |
|
|
|
} |
|
|
|
return baseMapper.deleteByIds(ids) > 0; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 插入消息查看记录(公共方法) |
|
|
|
* 用于在查询详情时自动记录用户查看行为 |
|
|
|
* |
|
|
|
* @param sourceId 来源表ID |
|
|
|
* @param sourceType 来源表类型:1-普法消息 2-执法评价 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void insertViewLog(String sourceId, Integer sourceType) { |
|
|
|
// 参数校验
|
|
|
|
if (StrUtil.isBlank(sourceId) || sourceType == null) { |
|
|
|
log.warn("插入查看记录失败:参数为空, sourceId={}, sourceType={}", sourceId, sourceType); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
// 检查是否登录
|
|
|
|
if (!LoginHelper.isLogin()) { |
|
|
|
log.warn("用户未登录,跳过插入查看记录: sourceId={}", sourceId); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 构建查看记录对象
|
|
|
|
SysMessageViewLogBo viewLogBo = new SysMessageViewLogBo(); |
|
|
|
viewLogBo.setSourceId(sourceId); |
|
|
|
viewLogBo.setSourceType(sourceType); |
|
|
|
|
|
|
|
// 获取登录用户信息
|
|
|
|
Long userId = LoginHelper.getUserId(); |
|
|
|
String username = LoginHelper.getUsername(); |
|
|
|
String deptId = LoginHelper.getDeptId(); |
|
|
|
Integer platformType = LoginHelper.getPlatformType(); |
|
|
|
|
|
|
|
log.debug("获取登录用户信息: userId={}, username={}, deptId={}, platformType={}", |
|
|
|
userId, username, deptId, platformType); |
|
|
|
|
|
|
|
// 设置创建者信息
|
|
|
|
viewLogBo.setCreateBy(userId); |
|
|
|
viewLogBo.setCreateByName(username); |
|
|
|
viewLogBo.setCreateDept(deptId); |
|
|
|
viewLogBo.setIsDelete(0); // 0=否
|
|
|
|
viewLogBo.setPlatformType(platformType); |
|
|
|
viewLogBo.setCompanyId(deptId); |
|
|
|
|
|
|
|
// 插入查看记录
|
|
|
|
this.insertByBo(viewLogBo); |
|
|
|
log.debug("插入查看记录成功: sourceId={}, sourceType={}, userId={}", sourceId, sourceType, userId); |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("插入查看记录失败: sourceId={}, sourceType={}", sourceId, sourceType, e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 统计当前登录用户的执法评价未读数量 |
|
|
|
* <p> |
|
|
|
* 计算逻辑:存在于 enforcement_registration 表中但不存在于 sys_message_view_log 表中的记录数 |
|
|
|
* - 条件1:当前用户在 enforcement_registration 表中作为执法人员1或执法人员2 |
|
|
|
* - 条件2:该记录在 sys_message_view_log 表中不存在(create_by=当前用户ID AND source_type=2) |
|
|
|
* |
|
|
|
* @return 未读数量 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public Long countUnreadEvaluate() { |
|
|
|
try { |
|
|
|
// 检查是否登录
|
|
|
|
if (!LoginHelper.isLogin()) { |
|
|
|
log.warn("用户未登录,无法统计未读数量"); |
|
|
|
return 0L; |
|
|
|
} |
|
|
|
|
|
|
|
// 获取当前登录用户ID
|
|
|
|
Long userId = LoginHelper.getUserId(); |
|
|
|
if (userId == null) { |
|
|
|
log.warn("当前用户ID为空,无法统计未读数量"); |
|
|
|
return 0L; |
|
|
|
} |
|
|
|
|
|
|
|
// 直接统计未读数(存在于 enforcement_registration 但不存在于 sys_message_view_log 的记录数)
|
|
|
|
Long unreadCount = baseMapper.countUnreadByUserIdAndSourceType(userId, MsgSourceTypeEnum.ZFPJ.getKey()); |
|
|
|
if (unreadCount == null) { |
|
|
|
unreadCount = 0L; |
|
|
|
} |
|
|
|
|
|
|
|
log.info("用户 {} 的执法评价未读数量: {}", userId, unreadCount); |
|
|
|
return unreadCount; |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("统计执法评价未读数量失败", e); |
|
|
|
return 0L; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|