add gao user notify

This commit is contained in:
Timi
2026-08-25 22:55:18 +08:00
parent 9f884e2b74
commit d747a0fdae
14 changed files with 520 additions and 34 deletions
@@ -1,6 +1,9 @@
package com.imyeyu.api.modules.common.service;
import com.imyeyu.api.modules.common.entity.Notify;
import com.imyeyu.api.modules.common.vo.NotifyManagementItem;
import com.imyeyu.spring.bean.Page;
import com.imyeyu.spring.bean.PageResult;
import com.imyeyu.spring.service.BaseService;
/**
@@ -11,6 +14,32 @@ import com.imyeyu.spring.service.BaseService;
*/
public interface NotifyService extends BaseService<Notify, String> {
/// 分页查询当前用户创建的通知
///
/// @param page 分页参数
/// @param userId 用户 ID
/// @return 管理端通知列表
PageResult<NotifyManagementItem> pageManagement(Page<Notify> page, String userId);
/// 查询当前用户可管理的通知
///
/// @param notifyId 通知 ID
/// @param userId 用户 ID
/// @return 通知
Notify getManagement(String notifyId, String userId);
/// 删除当前用户创建的通知
///
/// @param notifyId 通知 ID
/// @param userId 用户 ID
void deleteManagement(String notifyId, String userId);
/// 取消当前用户创建的通知
///
/// @param notifyId 通知 ID
/// @param userId 用户 ID
void cancelManagement(String notifyId, String userId);
/// 取消通知中尚未成功发送的通知详情
///
/// @param notifyId 通知 ID
@@ -64,9 +64,10 @@ public class NotifyDetailServiceImplement extends AbstractEntityService<NotifyDe
detail.setRetry(TimiJava.defaultIfNull(detail.getRetry(), 1));
detail.setSendAt(TimiJava.defaultIfNull(detail.getSendAt(), Time.now()));
detail.setTimeoutAt(TimiJava.defaultIfNull(detail.getTimeoutAt(), detail.getSendAt() + Time.D));
detail.setStatus(detail.getMsgType() == NotifyDetail.MsgType.INTERNAL
? NotifyDetail.Status.REMINDED
: NotifyDetail.Status.WAITING);
boolean scheduled = Time.now() < detail.getSendAt();
detail.setStatus(detail.getMsgType() == NotifyDetail.MsgType.INTERNAL && !scheduled
? NotifyDetail.Status.REMINDED
: NotifyDetail.Status.WAITING);
detail.setReadAt(null);
super.create(detail);
if (detail.getMsgType() == NotifyDetail.MsgType.INTERNAL) {
@@ -8,10 +8,13 @@ import com.imyeyu.api.modules.common.service.NotifyDetailService;
import com.imyeyu.api.modules.common.service.NotifyService;
import com.imyeyu.api.modules.system.entity.Logger;
import com.imyeyu.api.modules.system.service.LoggerService;
import com.imyeyu.api.modules.common.vo.NotifyManagementItem;
import com.imyeyu.api.modules.user.service.UserLoginService;
import com.imyeyu.java.TimiJava;
import com.imyeyu.java.bean.timi.TimiCode;
import com.imyeyu.java.bean.timi.TimiException;
import com.imyeyu.spring.bean.Page;
import com.imyeyu.spring.bean.PageResult;
import com.imyeyu.spring.mapper.BaseMapper;
import com.imyeyu.spring.service.AbstractEntityService;
import lombok.RequiredArgsConstructor;
@@ -53,12 +56,10 @@ public class NotifyServiceImplement extends AbstractEntityService<Notify, String
try {
TimiException.required(notify, "未找到通知");
TimiException.required(notify.getDetailList(), "未找到通知详情列表");
String sendFrom = userLoginService.isLogged() ? userLoginService.getRequireLoginUserId() : null;
notify.setCreatedBy(sendFrom);
super.create(notify);
String sendFrom = null;
if (userLoginService.isLogged()) {
sendFrom = userLoginService.getRequireLoginUserId();
}
for (NotifyDetail detail : notify.getDetailList()) {
detail.setNotifyId(notify.getId());
if (TimiJava.isNotEmpty(sendFrom)) {
@@ -82,6 +83,55 @@ public class NotifyServiceImplement extends AbstractEntityService<Notify, String
}
}
/// 分页查询当前用户创建的通知
///
/// @param page 分页参数
/// @param userId 用户 ID
/// @return 管理端通知列表
@Override
public PageResult<NotifyManagementItem> pageManagement(Page<Notify> page, String userId) {
TimiException.required(userId, "未找到用户 ID");
Page<Notify> validPage = TimiJava.defaultIfNull(page, new Page<>());
PageResult<NotifyManagementItem> result = new PageResult<>();
result.setTotal(mapper.countManagement(userId));
result.setList(mapper.selectManagementPage(userId, validPage.getOffset(), validPage.getLimit()));
return result;
}
/// 查询当前用户可管理的通知
///
/// @param notifyId 通知 ID
/// @param userId 用户 ID
/// @return 通知
@Override
public Notify getManagement(String notifyId, String userId) {
TimiException.required(notifyId, "未找到通知 ID");
TimiException.required(userId, "未找到用户 ID");
Notify notify = mapper.selectManagement(notifyId, userId);
TimiException.required(notify, "未找到可管理的通知");
return notify;
}
/// 删除当前用户创建的通知
///
/// @param notifyId 通知 ID
/// @param userId 用户 ID
@Override
public void deleteManagement(String notifyId, String userId) {
getManagement(notifyId, userId);
delete(notifyId);
}
/// 取消当前用户创建的通知
///
/// @param notifyId 通知 ID
/// @param userId 用户 ID
@Override
public void cancelManagement(String notifyId, String userId) {
getManagement(notifyId, userId);
cancel(notifyId);
}
/// 删除通知并级联软删除通知详情
///
/// @param notifyId 通知 ID