推送订阅功能
This commit is contained in:
@@ -18,6 +18,9 @@ import com.yunhai.userbase.repository.SysUserGroupRelRepository;
|
||||
import com.yunhai.userbase.repository.SysUserRepository;
|
||||
import com.yunhai.userbase.service.ISysGroupService;
|
||||
import com.yunhai.userbase.service.ISysUserService;
|
||||
import com.yunhai.userbase.event.DataSyncEvent;
|
||||
import com.yunhai.userbase.model.push.PushInterfaceType;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
@@ -79,6 +82,9 @@ public class SysUserService implements ISysUserService {
|
||||
@Autowired
|
||||
private SysUserAppRoleRelRepository sysUserAppRoleRelRepository;
|
||||
|
||||
@Autowired
|
||||
private ApplicationEventPublisher eventPublisher;
|
||||
|
||||
@Autowired
|
||||
private SysGroupRepository sysGroupRepository;
|
||||
|
||||
@@ -130,7 +136,8 @@ public class SysUserService implements ISysUserService {
|
||||
// disabled 用枚举存储:不传时默认 NORMAL(正常/未禁用)
|
||||
entity.setDisabled(request.getDisabled() != null ? resolveStatus(request.getDisabled()) : StatusEnum.NORMAL);
|
||||
entity.setExpired(request.getExpired() != null ? request.getExpired() : false);
|
||||
sysUserRepository.save(entity);
|
||||
SysUser saved = sysUserRepository.save(entity);
|
||||
publishUserEvent(PushInterfaceType.ADD_USER, saved.getId());
|
||||
|
||||
// 写入组用户关联
|
||||
SysUserGroupRel rel = new SysUserGroupRel();
|
||||
@@ -175,6 +182,7 @@ public class SysUserService implements ISysUserService {
|
||||
entity.setExpired(request.getExpired());
|
||||
}
|
||||
sysUserRepository.save(entity);
|
||||
publishUserEvent(PushInterfaceType.UPDATE_USER, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -188,6 +196,7 @@ public class SysUserService implements ISysUserService {
|
||||
// AI-FIX(角色授权): 删除用户时级联清理用户-业务角色绑定(逻辑外键无物理 FK,避免残留孤儿数据)
|
||||
sysUserAppRoleRelRepository.deleteByUserIdBulk(id);
|
||||
sysUserRepository.deleteById(id);
|
||||
publishUserEvent(PushInterfaceType.DELETE_USER, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -211,6 +220,7 @@ public class SysUserService implements ISysUserService {
|
||||
throw new DException("存在无效用户");
|
||||
}
|
||||
|
||||
List<Integer> deletedUserIds = new ArrayList<>();
|
||||
for (Integer userId : userIds) {
|
||||
// 删除当前组关联
|
||||
sysUserGroupRelRepository.deleteByUserIdAndGroupId(userId, groupId);
|
||||
@@ -218,8 +228,12 @@ public class SysUserService implements ISysUserService {
|
||||
if (sysUserGroupRelRepository.countByUserId(userId) == 0) {
|
||||
sysUserAppRoleRelRepository.deleteByUserIdBulk(userId);
|
||||
sysUserRepository.deleteById(userId);
|
||||
deletedUserIds.add(userId);
|
||||
}
|
||||
}
|
||||
if (!deletedUserIds.isEmpty()) {
|
||||
publishUserEvent(PushInterfaceType.DELETE_USER, deletedUserIds);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -230,6 +244,7 @@ public class SysUserService implements ISysUserService {
|
||||
// 实体 disabled 字段为 StatusEnum(0=正常/未禁用,1=禁用):boolean 直接映射枚举
|
||||
entity.setDisabled(disabled ? StatusEnum.DISABLED : StatusEnum.NORMAL);
|
||||
sysUserRepository.save(entity);
|
||||
publishUserEvent(PushInterfaceType.UPDATE_USER, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -247,6 +262,8 @@ public class SysUserService implements ISysUserService {
|
||||
user.setDisabled(targetStatus);
|
||||
}
|
||||
sysUserRepository.saveAll(users);
|
||||
publishUserEvent(PushInterfaceType.UPDATE_USER,
|
||||
users.stream().map(SysUser::getId).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -362,6 +379,7 @@ public class SysUserService implements ISysUserService {
|
||||
}
|
||||
sysUserGroupRelRepository.saveAll(rels);
|
||||
}
|
||||
publishUserEvent(PushInterfaceType.UPDATE_USER, userIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -936,4 +954,23 @@ public class SysUserService implements ISysUserService {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// ===================== 推送事件 =====================
|
||||
|
||||
private void publishUserEvent(PushInterfaceType type, Integer userId) {
|
||||
DataSyncEvent e = new DataSyncEvent();
|
||||
e.setType(type);
|
||||
e.setUserIds(Collections.singletonList(userId));
|
||||
eventPublisher.publishEvent(e);
|
||||
}
|
||||
|
||||
private void publishUserEvent(PushInterfaceType type, List<Integer> userIds) {
|
||||
if (userIds == null || userIds.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
DataSyncEvent e = new DataSyncEvent();
|
||||
e.setType(type);
|
||||
e.setUserIds(userIds);
|
||||
eventPublisher.publishEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user