【同步】BOOT 和 CLOUD 的功能
parent
f5a68ce6f3
commit
0c69bedc34
|
|
@ -22,7 +22,7 @@ import cn.iocoder.yudao.framework.web.config.WebProperties;
|
|||
import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package cn.iocoder.yudao.module.im.controller.admin.face;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.im.controller.admin.face.vo.pack.ImFacePackUserRespVO;
|
||||
|
|
@ -9,12 +10,12 @@ import cn.iocoder.yudao.module.im.service.face.ImFacePackItemService;
|
|||
import cn.iocoder.yudao.module.im.service.face.ImFacePackService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -39,7 +40,7 @@ public class ImFacePackController {
|
|||
// 1.1 拉所有启用表情包
|
||||
List<ImFacePackDO> packs = facePackService.getEnabledFacePackList();
|
||||
if (packs.isEmpty()) {
|
||||
return success(List.of());
|
||||
return success(ListUtil.of());
|
||||
}
|
||||
// 1.2 拉这些包下所有启用表情,按 packId 分组
|
||||
List<ImFacePackItemDO> items = facePackItemService.getEnabledItemListByPackIds(
|
||||
|
|
@ -49,7 +50,7 @@ public class ImFacePackController {
|
|||
// 2. 拼装:BeanUtils 把 pack 字段映射 + 自己塞 items
|
||||
List<ImFacePackUserRespVO> result = convertList(packs, pack -> {
|
||||
ImFacePackUserRespVO vo = BeanUtils.toBean(pack, ImFacePackUserRespVO.class);
|
||||
vo.setItems(BeanUtils.toBean(itemsByPackId.getOrDefault(pack.getId(), List.of()), ImFacePackUserRespVO.Item.class));
|
||||
vo.setItems(BeanUtils.toBean(itemsByPackId.getOrDefault(pack.getId(), ListUtil.of()), ImFacePackUserRespVO.Item.class));
|
||||
return vo;
|
||||
});
|
||||
return success(result);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package cn.iocoder.yudao.module.im.enums.message;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
|
||||
|
|
@ -340,7 +341,7 @@ public enum ImMessageTypeEnum implements ArrayValuable<Integer> {
|
|||
|
||||
public static final Integer[] ARRAYS = Arrays.stream(values()).map(ImMessageTypeEnum::getType).toArray(Integer[]::new);
|
||||
|
||||
private static final Set<Integer> FRIEND_NOTIFICATION_TYPES = Set.of(
|
||||
private static final Set<Integer> FRIEND_NOTIFICATION_TYPES = CollUtil.newHashSet(
|
||||
FRIEND_REQUEST_APPROVED.type,
|
||||
FRIEND_REQUEST_REJECTED.type,
|
||||
FRIEND_REQUEST_RECEIVED.type,
|
||||
|
|
@ -351,12 +352,12 @@ public enum ImMessageTypeEnum implements ArrayValuable<Integer> {
|
|||
FRIEND_INFO_UPDATED.type,
|
||||
FRIEND_UPDATE.type);
|
||||
|
||||
private static final Set<Integer> GROUP_REQUEST_NOTIFICATION_TYPES = Set.of(
|
||||
private static final Set<Integer> GROUP_REQUEST_NOTIFICATION_TYPES = CollUtil.newHashSet(
|
||||
GROUP_REQUEST_RECEIVED.type,
|
||||
GROUP_REQUEST_APPROVED.type,
|
||||
GROUP_REQUEST_REJECTED.type);
|
||||
|
||||
private static final Set<Integer> RTC_NOTIFICATION_TYPES = Set.of(
|
||||
private static final Set<Integer> RTC_NOTIFICATION_TYPES = CollUtil.newHashSet(
|
||||
RTC_CALL.type,
|
||||
RTC_PARTICIPANT_CONNECTED.type,
|
||||
RTC_PARTICIPANT_DISCONNECTED.type);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package cn.iocoder.yudao.module.im.service.friend;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
|
|
@ -22,7 +23,6 @@ import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.Frie
|
|||
import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.FriendRequestRejectedNotification;
|
||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||
import javax.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -31,6 +31,7 @@ import org.springframework.transaction.support.TransactionSynchronization;
|
|||
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
|
@ -172,7 +173,7 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService {
|
|||
// 1.1 校验申请存在、未处理、操作人是接收方
|
||||
ImFriendRequestDO request = validateRequestForHandle(userId, requestId);
|
||||
// 1.2 复验双方用户有效
|
||||
adminUserApi.validateUserList(List.of(request.getFromUserId(), request.getToUserId()));
|
||||
adminUserApi.validateUserList(ListUtil.of(request.getFromUserId(), request.getToUserId()));
|
||||
|
||||
// 2. 乐观锁更新申请处理结果
|
||||
ImFriendRequestDO updateObj = new ImFriendRequestDO()
|
||||
|
|
@ -224,7 +225,7 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService {
|
|||
public List<ImFriendRequestDO> getMyFriendRequestList(Long userId, Long maxId, Integer limit) {
|
||||
ImFriendRequestDO maxRequest = maxId != null ? friendRequestMapper.selectById(maxId) : null;
|
||||
if (maxId != null && maxRequest == null) {
|
||||
return List.of();
|
||||
return ListUtil.of();
|
||||
}
|
||||
return friendRequestMapper.selectMyList(userId,
|
||||
maxRequest != null ? maxRequest.getUpdateTime() : null,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package cn.iocoder.yudao.module.im.service.group;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
|
@ -78,7 +79,7 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService {
|
|||
public List<ImGroupMemberDO> getGroupMemberListByOwnerAndAdmin(Long groupId) {
|
||||
// TODO DONE @AI:把条件往下传;这样减少加载数据量!
|
||||
return groupMemberMapper.selectListByGroupIdAndStatusAndRoles(groupId, CommonStatusEnum.ENABLE.getStatus(),
|
||||
List.of(ImGroupMemberRoleEnum.OWNER.getRole(), ImGroupMemberRoleEnum.ADMIN.getRole()));
|
||||
ListUtil.of(ImGroupMemberRoleEnum.OWNER.getRole(), ImGroupMemberRoleEnum.ADMIN.getRole()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -270,7 +271,7 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService {
|
|||
boolean groupRemarkChanged = updateReqVO.getGroupRemark() != null
|
||||
&& ObjUtil.notEqual(updateReqVO.getGroupRemark(), member.getGroupRemark());
|
||||
if (silentChanged || groupRemarkChanged) {
|
||||
groupMessageService.sendGroupMessage(userId, List.of(userId), ImGroupMessageSendDTO.ofGroupMemberSettingUpdate(
|
||||
groupMessageService.sendGroupMessage(userId, ListUtil.of(userId), ImGroupMessageSendDTO.ofGroupMemberSettingUpdate(
|
||||
groupId, userId, updateReqVO.getSilent(), updateReqVO.getGroupRemark()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -413,12 +413,12 @@ public class ImGroupServiceImpl implements ImGroupService {
|
|||
ImGroupMemberDO newOwner = groupMemberService.validateMemberInGroup(groupId, newOwnerUserId);
|
||||
|
||||
// 2.1 更新成员角色
|
||||
int newOwnerAffected = groupMemberService.updateGroupMemberRole(groupId, Set.of(newOwner.getUserId()),
|
||||
int newOwnerAffected = groupMemberService.updateGroupMemberRole(groupId, CollUtil.newHashSet(newOwner.getUserId()),
|
||||
ImGroupMemberRoleEnum.OWNER.getRole());
|
||||
if (newOwnerAffected != 1) {
|
||||
throw exception(GROUP_MEMBER_NOT_IN_GROUP);
|
||||
}
|
||||
int oldOwnerAffected = groupMemberService.updateGroupMemberRole(groupId, Set.of(userId),
|
||||
int oldOwnerAffected = groupMemberService.updateGroupMemberRole(groupId, CollUtil.newHashSet(userId),
|
||||
ImGroupMemberRoleEnum.NORMAL.getRole());
|
||||
if (oldOwnerAffected != 1) {
|
||||
throw exception(GROUP_MEMBER_NOT_IN_GROUP);
|
||||
|
|
|
|||
|
|
@ -32,15 +32,16 @@ import cn.iocoder.yudao.module.im.service.websocket.dto.ImGroupMessageDTO;
|
|||
import cn.iocoder.yudao.module.im.service.websocket.dto.message.QuoteMessage;
|
||||
import cn.iocoder.yudao.module.im.service.websocket.dto.message.RecallMessage;
|
||||
import cn.iocoder.yudao.module.im.util.ImMessageUtils;
|
||||
import javax.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
|
||||
|
|
@ -295,7 +296,7 @@ public class ImGroupMessageServiceImpl implements ImGroupMessageService {
|
|||
.filter(msg -> isMessageVisible(msg, memberMap.get(msg.getGroupId()), userId))
|
||||
.sorted(Comparator.comparing(ImGroupMessageDO::getId))
|
||||
.limit(size)
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,16 +1,18 @@
|
|||
package cn.iocoder.yudao.module.im.dal.mysql.message;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
import cn.iocoder.yudao.module.im.dal.dataobject.message.ImGroupMessageDO;
|
||||
import cn.iocoder.yudao.module.im.enums.message.ImGroupMessageReceiptStatusEnum;
|
||||
import cn.iocoder.yudao.module.im.enums.message.ImMessageStatusEnum;
|
||||
import javax.annotation.Resource;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
/**
|
||||
* IM 群聊消息 Mapper 单元测试
|
||||
|
|
@ -35,7 +37,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest {
|
|||
mapper.insert(msg20);
|
||||
|
||||
// 调用:只查群 10
|
||||
List<ImGroupMessageDO> result = mapper.selectListByMinId(List.of(10L), 0L, FAR_PAST, 100);
|
||||
List<ImGroupMessageDO> result = mapper.selectListByMinId(ListUtil.of(10L), 0L, FAR_PAST, 100);
|
||||
|
||||
// 断言:只有 msg10
|
||||
assertEquals(1, result.size());
|
||||
|
|
@ -50,7 +52,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest {
|
|||
ImGroupMessageDO recalled = buildMessage(10L, 1L, ImMessageStatusEnum.RECALL);
|
||||
mapper.insert(recalled);
|
||||
|
||||
List<ImGroupMessageDO> result = mapper.selectListByMinId(List.of(10L), 0L, FAR_PAST, 100);
|
||||
List<ImGroupMessageDO> result = mapper.selectListByMinId(ListUtil.of(10L), 0L, FAR_PAST, 100);
|
||||
|
||||
// 断言:撤回消息一并返回,由客户端按 status 切换渲染
|
||||
assertEquals(2, result.size());
|
||||
|
|
@ -66,7 +68,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest {
|
|||
outWindow.setSendTime(LocalDateTime.now().minusDays(40));
|
||||
mapper.insert(outWindow);
|
||||
|
||||
List<ImGroupMessageDO> result = mapper.selectListByMinId(List.of(10L), 0L,
|
||||
List<ImGroupMessageDO> result = mapper.selectListByMinId(ListUtil.of(10L), 0L,
|
||||
LocalDateTime.now().minusDays(30), 100);
|
||||
|
||||
assertEquals(1, result.size());
|
||||
|
|
@ -84,7 +86,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest {
|
|||
mapper.insert(m3);
|
||||
|
||||
// 调用:size=2,返回 id 最小的 2 条
|
||||
List<ImGroupMessageDO> result = mapper.selectListByMinId(List.of(10L), 0L, FAR_PAST, 2);
|
||||
List<ImGroupMessageDO> result = mapper.selectListByMinId(ListUtil.of(10L), 0L, FAR_PAST, 2);
|
||||
|
||||
assertEquals(2, result.size());
|
||||
assertTrue(result.get(0).getId() < result.get(1).getId());
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package cn.iocoder.yudao.module.im.service.friend;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
||||
|
|
@ -248,7 +249,7 @@ public class ImFriendServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
@Test
|
||||
public void testGetFriendList() {
|
||||
List<ImFriendDO> list = List.of(
|
||||
List<ImFriendDO> list = ListUtil.of(
|
||||
ImFriendDO.builder().id(1L).userId(1L).friendUserId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImFriendDO.builder().id(2L).userId(1L).friendUserId(3L)
|
||||
|
|
@ -276,9 +277,9 @@ public class ImFriendServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImFriendDO friend3 = ImFriendDO.builder().id(2L).userId(1L).friendUserId(3L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(imFriendMapper.selectListByUserIdAndStatus(1L, CommonStatusEnum.ENABLE.getStatus()))
|
||||
.thenReturn(List.of(friend2, friend3));
|
||||
.thenReturn(ListUtil.of(friend2, friend3));
|
||||
when(imFriendMapper.selectListByUserIdsAndFriendUserIdAndStatus(anyCollection(), eq(1L),
|
||||
eq(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(List.of(
|
||||
eq(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(ListUtil.of(
|
||||
ImFriendDO.builder().userId(2L).friendUserId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()));
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package cn.iocoder.yudao.module.im.service.group;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
||||
|
|
@ -116,10 +117,10 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMemberDO exist4 = ImGroupMemberDO.builder().id(40L).groupId(10L).userId(4L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
|
||||
.thenReturn(List.of(exist3, exist4));
|
||||
.thenReturn(ListUtil.of(exist3, exist4));
|
||||
|
||||
// 调用
|
||||
groupMemberService.addGroupMembers(10L, List.of(2L, 3L, 4L));
|
||||
groupMemberService.addGroupMembers(10L, ListUtil.of(2L, 3L, 4L));
|
||||
|
||||
// 断言:updates 只有用户 3;inserts 只有用户 2
|
||||
verify(groupMemberMapper).updateRejoinFields(eq(30L), eq(CommonStatusEnum.ENABLE.getStatus()),
|
||||
|
|
@ -131,7 +132,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
@Test
|
||||
public void testAddGroupMembers_allExisting_onlyUpdates() {
|
||||
// 准备:传入的 3 个用户都已有记录(全部 DISABLE) → 只做 update,不做 insert
|
||||
List<ImGroupMemberDO> existing = List.of(
|
||||
List<ImGroupMemberDO> existing = ListUtil.of(
|
||||
ImGroupMemberDO.builder().id(1L).groupId(10L).userId(2L)
|
||||
.status(CommonStatusEnum.DISABLE.getStatus()).build(),
|
||||
ImGroupMemberDO.builder().id(2L).groupId(10L).userId(3L)
|
||||
|
|
@ -140,7 +141,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
|
||||
.thenReturn(existing);
|
||||
|
||||
groupMemberService.addGroupMembers(10L, List.of(2L, 3L));
|
||||
groupMemberService.addGroupMembers(10L, ListUtil.of(2L, 3L));
|
||||
|
||||
verify(groupMemberMapper, times(2)).updateRejoinFields(anyLong(), eq(CommonStatusEnum.ENABLE.getStatus()),
|
||||
any(), eq(ImGroupMemberRoleEnum.NORMAL.getRole()), isNull(), isNull());
|
||||
|
|
@ -151,9 +152,9 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
public void testAddGroupMembers_allNew_onlyInserts() {
|
||||
// 准备:都不存在 → 只做 insert
|
||||
when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
groupMemberService.addGroupMembers(10L, List.of(2L, 3L));
|
||||
groupMemberService.addGroupMembers(10L, ListUtil.of(2L, 3L));
|
||||
|
||||
verify(groupMemberMapper, never()).updateRejoinFields(anyLong(), anyInt(), any(), anyInt(), any(), any());
|
||||
verify(groupMemberMapper).insertBatch(anyList());
|
||||
|
|
@ -162,14 +163,14 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
@Test
|
||||
public void testAddGroupMembers_allExistingEnabled_nothingHappens() {
|
||||
// 准备:都已存在且 ENABLE → 既不 update 也不 insert
|
||||
List<ImGroupMemberDO> existing = List.of(
|
||||
List<ImGroupMemberDO> existing = ListUtil.of(
|
||||
ImGroupMemberDO.builder().id(1L).groupId(10L).userId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()
|
||||
);
|
||||
when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
|
||||
.thenReturn(existing);
|
||||
|
||||
groupMemberService.addGroupMembers(10L, List.of(2L));
|
||||
groupMemberService.addGroupMembers(10L, ListUtil.of(2L));
|
||||
|
||||
verify(groupMemberMapper, never()).updateRejoinFields(anyLong(), anyInt(), any(), anyInt(), any(), any());
|
||||
verify(groupMemberMapper, never()).insertBatch(anyList());
|
||||
|
|
@ -179,14 +180,14 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
public void testAddGroupMembers_batchInsertDuplicateFallback() {
|
||||
// 准备:两个新增成员,批量插入失败时降级为逐个 addGroupMember
|
||||
when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
doThrow(new DuplicateKeyException("concurrent batch insert"))
|
||||
.when(groupMemberMapper).insertBatch(anyList());
|
||||
// addGroupMember 单条兜底逻辑
|
||||
when(groupMemberMapper.selectByGroupIdAndUserId(eq(10L), anyLong())).thenReturn(null);
|
||||
|
||||
// 调用
|
||||
groupMemberService.addGroupMembers(10L, List.of(2L, 3L));
|
||||
groupMemberService.addGroupMembers(10L, ListUtil.of(2L, 3L));
|
||||
|
||||
// 断言:降级为逐条调用 insert
|
||||
verify(groupMemberMapper, times(2)).insert(any(ImGroupMemberDO.class));
|
||||
|
|
@ -244,7 +245,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 公开字段昵称变化 → 全员广播 GROUP_MEMBER_NICKNAME_UPDATE
|
||||
verify(groupMessageService).sendGroupMessage(eq(1L), any(cn.iocoder.yudao.module.im.service.message.dto.ImGroupMessageSendDTO.class));
|
||||
// 个人字段 silent 变化 → 仅自己多端同步 GROUP_MEMBER_SETTING_UPDATE
|
||||
verify(groupMessageService).sendGroupMessage(eq(1L), eq(java.util.List.of(1L)),
|
||||
verify(groupMessageService).sendGroupMessage(eq(1L), eq(ListUtil.of(1L)),
|
||||
any(cn.iocoder.yudao.module.im.service.message.dto.ImGroupMessageSendDTO.class));
|
||||
}
|
||||
|
||||
|
|
@ -278,7 +279,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
@Test
|
||||
public void testRemoveGroupMembers_batch() {
|
||||
groupMemberService.removeGroupMembers(10L, List.of(2L, 3L));
|
||||
groupMemberService.removeGroupMembers(10L, ListUtil.of(2L, 3L));
|
||||
|
||||
ArgumentCaptor<ImGroupMemberDO> captor = ArgumentCaptor.forClass(ImGroupMemberDO.class);
|
||||
verify(groupMemberMapper).updateByGroupIdAndUserIdsAndStatus(eq(10L), anyCollection(),
|
||||
|
|
@ -303,7 +304,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
@Test
|
||||
public void testGetActiveGroupMemberUserIdsByGroupId_extractsUserIds() {
|
||||
// 准备:3 个 ENABLE 成员
|
||||
List<ImGroupMemberDO> members = List.of(
|
||||
List<ImGroupMemberDO> members = ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(2L)
|
||||
|
|
@ -318,13 +319,13 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
List<Long> userIds = groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L);
|
||||
|
||||
// 断言:只返回 userId、顺序保留
|
||||
assertEquals(List.of(1L, 2L, 3L), userIds);
|
||||
assertEquals(ListUtil.of(1L, 2L, 3L), userIds);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetActiveGroupMemberUserIdsByGroupId_emptyList() {
|
||||
when(groupMemberMapper.selectListByGroupIdAndStatus(
|
||||
10L, CommonStatusEnum.ENABLE.getStatus())).thenReturn(List.of());
|
||||
10L, CommonStatusEnum.ENABLE.getStatus())).thenReturn(ListUtil.of());
|
||||
|
||||
List<Long> userIds = groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L);
|
||||
|
||||
|
|
@ -333,8 +334,8 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
@Test
|
||||
public void testGetGroupMemberListByOwnerAndAdmin_passesRoles() {
|
||||
List<Integer> roles = List.of(ImGroupMemberRoleEnum.OWNER.getRole(), ImGroupMemberRoleEnum.ADMIN.getRole());
|
||||
List<ImGroupMemberDO> members = List.of(ImGroupMemberDO.builder().groupId(10L).userId(1L).build());
|
||||
List<Integer> roles = ListUtil.of(ImGroupMemberRoleEnum.OWNER.getRole(), ImGroupMemberRoleEnum.ADMIN.getRole());
|
||||
List<ImGroupMemberDO> members = ListUtil.of(ImGroupMemberDO.builder().groupId(10L).userId(1L).build());
|
||||
when(groupMemberMapper.selectListByGroupIdAndStatusAndRoles(10L, CommonStatusEnum.ENABLE.getStatus(), roles))
|
||||
.thenReturn(members);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package cn.iocoder.yudao.module.im.service.group;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||
|
|
@ -39,7 +42,6 @@ import java.time.LocalDateTime;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
|
||||
|
|
@ -108,13 +110,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 准备:创建者 + 2 个初始成员,都是好友
|
||||
ImGroupCreateReqVO reqVO = new ImGroupCreateReqVO();
|
||||
reqVO.setName("测试群");
|
||||
reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));
|
||||
reqVO.setMemberUserIds(new ArrayList<>(ListUtil.of(2L, 3L)));
|
||||
when(groupMapper.insert(any(ImGroupDO.class))).thenAnswer(invocation -> {
|
||||
ImGroupDO group = invocation.getArgument(0);
|
||||
group.setId(100L);
|
||||
return 1;
|
||||
});
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of(
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImFriendDO.builder().userId(1L).friendUserId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImFriendDO.builder().userId(1L).friendUserId(3L)
|
||||
|
|
@ -140,15 +142,15 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 准备:初始成员里有非好友
|
||||
ImGroupCreateReqVO reqVO = new ImGroupCreateReqVO();
|
||||
reqVO.setName("测试群");
|
||||
reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));
|
||||
reqVO.setMemberUserIds(new ArrayList<>(ListUtil.of(2L, 3L)));
|
||||
// 只有 2 是好友,3 不是
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of(
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImFriendDO.builder().userId(1L).friendUserId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()));
|
||||
AdminUserRespDTO u3 = new AdminUserRespDTO();
|
||||
u3.setId(3L);
|
||||
u3.setNickname("李四");
|
||||
when(adminUserApi.getUserMap(anyCollection())).thenReturn(Map.of(3L, u3));
|
||||
when(adminUserApi.getUserMap(anyCollection())).thenReturn(MapUtil.of(3L, u3));
|
||||
|
||||
// 调用并断言
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
|
|
@ -327,8 +329,8 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 被邀请人 2 和 3 都是好友
|
||||
ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));
|
||||
List<ImFriendDO> friends = List.of(
|
||||
reqVO.setMemberUserIds(new ArrayList<>(ListUtil.of(2L, 3L)));
|
||||
List<ImFriendDO> friends = ListUtil.of(
|
||||
ImFriendDO.builder().userId(1L).friendUserId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImFriendDO.builder().userId(1L).friendUserId(3L)
|
||||
|
|
@ -366,7 +368,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.role(ImGroupMemberRoleEnum.NORMAL.getRole())
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build());
|
||||
when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(List.of(
|
||||
when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(99L)
|
||||
.role(ImGroupMemberRoleEnum.OWNER.getRole())
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
|
|
@ -376,8 +378,8 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of(
|
||||
reqVO.setMemberUserIds(new ArrayList<>(ListUtil.of(2L, 3L)));
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImFriendDO.builder().userId(1L).friendUserId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImFriendDO.builder().userId(1L).friendUserId(3L)
|
||||
|
|
@ -408,15 +410,15 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.role(ImGroupMemberRoleEnum.OWNER.getRole())
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build());
|
||||
when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(List.of(
|
||||
when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.role(ImGroupMemberRoleEnum.OWNER.getRole())
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()));
|
||||
|
||||
ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of(
|
||||
reqVO.setMemberUserIds(new ArrayList<>(ListUtil.of(2L, 3L)));
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImFriendDO.builder().userId(1L).friendUserId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImFriendDO.builder().userId(1L).friendUserId(3L)
|
||||
|
|
@ -445,18 +447,18 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMapper.selectById(10L)).thenReturn(group);
|
||||
when(groupMemberService.getActiveGroupMemberListByGroupId(10L))
|
||||
.thenReturn(List.of(ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.thenReturn(ListUtil.of(ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()));
|
||||
|
||||
ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));
|
||||
reqVO.setMemberUserIds(new ArrayList<>(ListUtil.of(2L, 3L)));
|
||||
// 只有 2 是好友,3 不是
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of(
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImFriendDO.builder().userId(1L).friendUserId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()));
|
||||
AdminUserRespDTO u3 = new AdminUserRespDTO(); u3.setId(3L); u3.setNickname("李四");
|
||||
when(adminUserApi.getUserMap(anyCollection())).thenReturn(Map.of(3L, u3));
|
||||
when(adminUserApi.getUserMap(anyCollection())).thenReturn(MapUtil.of(3L, u3));
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> groupService.inviteGroupMember(1L, reqVO));
|
||||
|
|
@ -484,9 +486,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(new ArrayList<>(List.of(600L, 601L)));
|
||||
reqVO.setMemberUserIds(new ArrayList<>(ListUtil.of(600L, 601L)));
|
||||
// 被邀请人都是好友
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of(
|
||||
when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImFriendDO.builder().userId(1L).friendUserId(600L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImFriendDO.builder().userId(1L).friendUserId(601L)
|
||||
|
|
@ -512,7 +514,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMapper.selectById(10L)).thenReturn(group);
|
||||
// 用户 2 已在群中
|
||||
when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(List.of(
|
||||
when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(2L)
|
||||
|
|
@ -521,7 +523,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(new ArrayList<>(List.of(2L))); // 只邀请 2,他已在群中
|
||||
reqVO.setMemberUserIds(new ArrayList<>(ListUtil.of(2L))); // 只邀请 2,他已在群中
|
||||
|
||||
// 调用
|
||||
groupService.inviteGroupMember(1L, reqVO);
|
||||
|
|
@ -606,7 +608,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(List.of(1L, 2L));
|
||||
reqVO.setMemberUserIds(ListUtil.of(1L, 2L));
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> groupService.removeGroupMember(1L, reqVO));
|
||||
|
|
@ -628,7 +630,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.role(ImGroupMemberRoleEnum.OWNER.getRole()).build());
|
||||
// 目标:两个普通成员
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(2L)
|
||||
.role(ImGroupMemberRoleEnum.NORMAL.getRole())
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
|
|
@ -638,7 +640,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(List.of(2L, 3L));
|
||||
reqVO.setMemberUserIds(ListUtil.of(2L, 3L));
|
||||
|
||||
groupService.removeGroupMember(1L, reqVO);
|
||||
|
||||
|
|
@ -665,14 +667,14 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.role(ImGroupMemberRoleEnum.ADMIN.getRole()).build());
|
||||
// 目标:另一个管理员
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(2L)
|
||||
.role(ImGroupMemberRoleEnum.ADMIN.getRole())
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()));
|
||||
|
||||
ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(List.of(2L));
|
||||
reqVO.setMemberUserIds(ListUtil.of(2L));
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> groupService.removeGroupMember(1L, reqVO));
|
||||
|
|
@ -694,14 +696,14 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.role(ImGroupMemberRoleEnum.OWNER.getRole()).build());
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(99L)
|
||||
.role(ImGroupMemberRoleEnum.OWNER.getRole())
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()));
|
||||
|
||||
ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(List.of(99L));
|
||||
reqVO.setMemberUserIds(ListUtil.of(99L));
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> groupService.removeGroupMember(1L, reqVO));
|
||||
|
|
@ -723,7 +725,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.role(ImGroupMemberRoleEnum.OWNER.getRole()).build());
|
||||
// 目标:2L 有效普通成员;3L 已退群(DISABLE)的历史管理员,应被跳过而非拦截整批
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(2L)
|
||||
.role(ImGroupMemberRoleEnum.NORMAL.getRole())
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
|
|
@ -733,17 +735,17 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setMemberUserIds(List.of(2L, 3L));
|
||||
reqVO.setMemberUserIds(ListUtil.of(2L, 3L));
|
||||
|
||||
groupService.removeGroupMember(1L, reqVO);
|
||||
|
||||
// 仅有效成员 2L 进入移除 / 已读清理,已退群的 3L 被跳过
|
||||
ArgumentCaptor<Collection> removeCaptor = ArgumentCaptor.forClass(Collection.class);
|
||||
verify(groupMemberService).removeGroupMembers(eq(10L), removeCaptor.capture());
|
||||
assertEquals(Set.of(2L), Set.copyOf(removeCaptor.getValue()));
|
||||
assertEquals(CollUtil.newHashSet(2L), CollUtil.newHashSet(removeCaptor.getValue()));
|
||||
ArgumentCaptor<Collection> readCaptor = ArgumentCaptor.forClass(Collection.class);
|
||||
verify(groupMessageService).deleteReadMaxMessageIds(eq(10L), readCaptor.capture());
|
||||
assertEquals(Set.of(2L), Set.copyOf(readCaptor.getValue()));
|
||||
assertEquals(CollUtil.newHashSet(2L), CollUtil.newHashSet(readCaptor.getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -759,7 +761,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
|
||||
// 目标 3 是普通成员
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().userId(3L).status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.role(ImGroupMemberRoleEnum.NORMAL.getRole()).build()));
|
||||
// 群里已有 1 个 ADMIN,1 + 1 ≤ 3 不超上限
|
||||
|
|
@ -770,7 +772,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO();
|
||||
reqVO.setId(10L);
|
||||
reqVO.setUserIds(List.of(3L));
|
||||
reqVO.setUserIds(ListUtil.of(3L));
|
||||
|
||||
groupService.addGroupAdmin(1L, reqVO);
|
||||
|
||||
|
|
@ -789,7 +791,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().userId(5L).status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.role(ImGroupMemberRoleEnum.NORMAL.getRole()).build()));
|
||||
// 群里已有 3 个 ADMIN(达到上限),再加 1 会超
|
||||
|
|
@ -798,7 +800,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO();
|
||||
reqVO.setId(10L);
|
||||
reqVO.setUserIds(List.of(5L));
|
||||
reqVO.setUserIds(ListUtil.of(5L));
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> groupService.addGroupAdmin(1L, reqVO));
|
||||
|
|
@ -816,13 +818,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().userId(1L).status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.role(ImGroupMemberRoleEnum.OWNER.getRole()).build()));
|
||||
|
||||
ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO();
|
||||
reqVO.setId(10L);
|
||||
reqVO.setUserIds(List.of(1L));
|
||||
reqVO.setUserIds(ListUtil.of(1L));
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> groupService.addGroupAdmin(1L, reqVO));
|
||||
|
|
@ -840,13 +842,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
|
||||
// 目标已是 ADMIN:再加无需操作
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.role(ImGroupMemberRoleEnum.ADMIN.getRole()).build()));
|
||||
|
||||
ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO();
|
||||
reqVO.setId(10L);
|
||||
reqVO.setUserIds(List.of(2L));
|
||||
reqVO.setUserIds(ListUtil.of(2L));
|
||||
|
||||
groupService.addGroupAdmin(1L, reqVO);
|
||||
|
||||
|
|
@ -866,7 +868,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.role(ImGroupMemberRoleEnum.ADMIN.getRole()).build()));
|
||||
when(groupMemberService.updateGroupMemberRole(eq(10L), anyCollection(),
|
||||
|
|
@ -874,7 +876,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
ImGroupAdminRemoveReqVO reqVO = new ImGroupAdminRemoveReqVO();
|
||||
reqVO.setId(10L);
|
||||
reqVO.setUserIds(List.of(2L));
|
||||
reqVO.setUserIds(ListUtil.of(2L));
|
||||
|
||||
groupService.removeGroupAdmin(1L, reqVO);
|
||||
|
||||
|
|
@ -894,13 +896,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
.status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
|
||||
// 目标已是 MEMBER:撤销无需操作
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of(
|
||||
when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(ListUtil.of(
|
||||
ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.role(ImGroupMemberRoleEnum.NORMAL.getRole()).build()));
|
||||
|
||||
ImGroupAdminRemoveReqVO reqVO = new ImGroupAdminRemoveReqVO();
|
||||
reqVO.setId(10L);
|
||||
reqVO.setUserIds(List.of(2L));
|
||||
reqVO.setUserIds(ListUtil.of(2L));
|
||||
|
||||
groupService.removeGroupAdmin(1L, reqVO);
|
||||
|
||||
|
|
@ -922,9 +924,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
when(groupMemberService.validateMemberInGroup(10L, 2L)).thenReturn(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(2L)
|
||||
.role(ImGroupMemberRoleEnum.NORMAL.getRole()).build());
|
||||
when(groupMemberService.updateGroupMemberRole(eq(10L), eq(Set.of(2L)),
|
||||
when(groupMemberService.updateGroupMemberRole(eq(10L), eq(CollUtil.newHashSet(2L)),
|
||||
eq(ImGroupMemberRoleEnum.OWNER.getRole()))).thenReturn(1);
|
||||
when(groupMemberService.updateGroupMemberRole(eq(10L), eq(Set.of(1L)),
|
||||
when(groupMemberService.updateGroupMemberRole(eq(10L), eq(CollUtil.newHashSet(1L)),
|
||||
eq(ImGroupMemberRoleEnum.NORMAL.getRole()))).thenReturn(1);
|
||||
|
||||
ImGroupTransferOwnerReqVO reqVO = new ImGroupTransferOwnerReqVO();
|
||||
|
|
@ -938,9 +940,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
verify(groupMapper).updateById(groupCaptor.capture());
|
||||
assertEquals(2L, groupCaptor.getValue().getOwnerUserId());
|
||||
// 旧群主 → MEMBER;新群主 → OWNER
|
||||
verify(groupMemberService).updateGroupMemberRole(eq(10L), eq(Set.of(1L)),
|
||||
verify(groupMemberService).updateGroupMemberRole(eq(10L), eq(CollUtil.newHashSet(1L)),
|
||||
eq(ImGroupMemberRoleEnum.NORMAL.getRole()));
|
||||
verify(groupMemberService).updateGroupMemberRole(eq(10L), eq(Set.of(2L)),
|
||||
verify(groupMemberService).updateGroupMemberRole(eq(10L), eq(CollUtil.newHashSet(2L)),
|
||||
eq(ImGroupMemberRoleEnum.OWNER.getRole()));
|
||||
}
|
||||
}
|
||||
|
|
@ -1120,7 +1122,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
@Test
|
||||
public void testGetMyGroupList_success() {
|
||||
// 活跃群成员
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(new ArrayList<>(List.of(
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(new ArrayList<>(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImGroupMemberDO.builder().groupId(20L).userId(1L)
|
||||
|
|
@ -1128,11 +1130,11 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
|
|||
)));
|
||||
// 最近退群成员(最近 30 天内)
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(new ArrayList<>(List.of(
|
||||
.thenReturn(new ArrayList<>(ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(30L).userId(1L)
|
||||
.status(CommonStatusEnum.DISABLE.getStatus()).build()
|
||||
)));
|
||||
List<ImGroupDO> groups = List.of(
|
||||
List<ImGroupDO> groups = ListUtil.of(
|
||||
ImGroupDO.builder().id(10L).status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImGroupDO.builder().id(20L).status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImGroupDO.builder().id(30L).status(CommonStatusEnum.ENABLE.getStatus()).build()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package cn.iocoder.yudao.module.im.service.message;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||
|
|
@ -96,7 +98,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member);
|
||||
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
|
||||
.thenReturn(List.of(1L, 2L, 3L));
|
||||
.thenReturn(ListUtil.of(1L, 2L, 3L));
|
||||
when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenAnswer(invocation -> {
|
||||
ImGroupMessageDO msg = invocation.getArgument(0);
|
||||
msg.setId(99L);
|
||||
|
|
@ -168,7 +170,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(joinTime).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(member));
|
||||
|
||||
// 入群前 1 条 + 入群后 1 条
|
||||
ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder()
|
||||
|
|
@ -177,11 +179,11 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMessageDO afterJoin = ImGroupMessageDO.builder()
|
||||
.id(2L).groupId(10L).senderId(2L)
|
||||
.sendTime(now.minusHours(1)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(100)))
|
||||
.thenReturn(List.of(beforeJoin, afterJoin));
|
||||
.thenReturn(ListUtil.of(beforeJoin, afterJoin));
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
// 调用
|
||||
List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100);
|
||||
|
|
@ -200,26 +202,26 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(joinTime).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(member));
|
||||
|
||||
ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder()
|
||||
.id(1L).groupId(10L).senderId(2L)
|
||||
.sendTime(now.minusHours(3)).build();
|
||||
ImGroupMessageDO directedMsg = ImGroupMessageDO.builder()
|
||||
.id(2L).groupId(10L).senderId(2L)
|
||||
.receiverUserIds(List.of(2L, 3L))
|
||||
.receiverUserIds(ListUtil.of(2L, 3L))
|
||||
.sendTime(now.minusHours(2)).build();
|
||||
ImGroupMessageDO visibleMsg = ImGroupMessageDO.builder()
|
||||
.id(3L).groupId(10L).senderId(2L)
|
||||
.sendTime(now.minusMinutes(30)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(2)))
|
||||
.thenReturn(List.of(beforeJoin, directedMsg));
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(2L),
|
||||
.thenReturn(ListUtil.of(beforeJoin, directedMsg));
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(2L),
|
||||
any(LocalDateTime.class), eq(2)))
|
||||
.thenReturn(List.of(visibleMsg));
|
||||
.thenReturn(ListUtil.of(visibleMsg));
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
// 调用
|
||||
List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 2);
|
||||
|
|
@ -227,9 +229,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 断言:仅返回第二批的可见消息;两批 selectListByMinId 各被调用一次
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(3L, result.get(0).getId());
|
||||
verify(groupMessageMapper).selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
verify(groupMessageMapper).selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(2));
|
||||
verify(groupMessageMapper).selectListByMinId(eq(List.of(10L)), eq(2L),
|
||||
verify(groupMessageMapper).selectListByMinId(eq(ListUtil.of(10L)), eq(2L),
|
||||
any(LocalDateTime.class), eq(2));
|
||||
}
|
||||
|
||||
|
|
@ -241,14 +243,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(now.minusDays(10)).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(activeMember));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(activeMember));
|
||||
|
||||
ImGroupMessageDO activeMsg = ImGroupMessageDO.builder()
|
||||
.id(5L).groupId(10L).senderId(2L)
|
||||
.sendTime(now.minusHours(2)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(100)))
|
||||
.thenReturn(List.of(activeMsg));
|
||||
.thenReturn(ListUtil.of(activeMsg));
|
||||
|
||||
// 已退群:退群时间在窗口内(minId=0,minQuitTime 直接用 minSendTime)
|
||||
LocalDateTime quitTime = now.minusDays(3);
|
||||
|
|
@ -258,14 +260,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.joinTime(now.minusDays(20))
|
||||
.quitTime(quitTime).build();
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(List.of(quitMember));
|
||||
.thenReturn(ListUtil.of(quitMember));
|
||||
|
||||
ImGroupMessageDO quitGroupMsg = ImGroupMessageDO.builder()
|
||||
.id(3L).groupId(20L).senderId(99L)
|
||||
.sendTime(now.minusDays(5)).build();
|
||||
when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(0L),
|
||||
any(LocalDateTime.class), eq(quitTime), eq(100)))
|
||||
.thenReturn(List.of(quitGroupMsg));
|
||||
.thenReturn(ListUtil.of(quitGroupMsg));
|
||||
|
||||
// 调用
|
||||
List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100);
|
||||
|
|
@ -280,14 +282,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
public void testPullMessages_quitMemberFilteredByBoundarySendTime() {
|
||||
// 准备:minId > 0,边界消息 sendTime 晚于窗口起点,应当被用作 minQuitTime
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of());
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of());
|
||||
|
||||
LocalDateTime boundarySendTime = now.minusDays(2);
|
||||
ImGroupMessageDO boundary = ImGroupMessageDO.builder()
|
||||
.id(8L).groupId(10L).senderId(2L).sendTime(boundarySendTime).build();
|
||||
when(groupMessageMapper.selectById(8L)).thenReturn(boundary);
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(1L, boundarySendTime))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
// 调用
|
||||
List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 8L, 100);
|
||||
|
|
@ -306,24 +308,24 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(joinTime).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(activeMember));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(activeMember));
|
||||
|
||||
ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder()
|
||||
.id(100L).groupId(10L).senderId(2L)
|
||||
.sendTime(now.minusHours(3)).build();
|
||||
ImGroupMessageDO directedMsg = ImGroupMessageDO.builder()
|
||||
.id(101L).groupId(10L).senderId(2L)
|
||||
.receiverUserIds(List.of(2L, 3L))
|
||||
.receiverUserIds(ListUtil.of(2L, 3L))
|
||||
.sendTime(now.minusMinutes(50)).build();
|
||||
ImGroupMessageDO visibleActiveMsg = ImGroupMessageDO.builder()
|
||||
.id(102L).groupId(10L).senderId(2L)
|
||||
.sendTime(now.minusMinutes(30)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(8L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(8L),
|
||||
any(LocalDateTime.class), eq(2)))
|
||||
.thenReturn(List.of(beforeJoin, directedMsg));
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(101L),
|
||||
.thenReturn(ListUtil.of(beforeJoin, directedMsg));
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(101L),
|
||||
any(LocalDateTime.class), eq(2)))
|
||||
.thenReturn(List.of(visibleActiveMsg));
|
||||
.thenReturn(ListUtil.of(visibleActiveMsg));
|
||||
|
||||
LocalDateTime boundarySendTime = now.minusDays(2);
|
||||
ImGroupMessageDO boundary = ImGroupMessageDO.builder()
|
||||
|
|
@ -337,14 +339,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.joinTime(now.minusDays(10))
|
||||
.quitTime(quitTime).build();
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(1L, boundarySendTime))
|
||||
.thenReturn(List.of(quitMember));
|
||||
.thenReturn(ListUtil.of(quitMember));
|
||||
|
||||
ImGroupMessageDO quitGroupMsg = ImGroupMessageDO.builder()
|
||||
.id(50L).groupId(20L).senderId(99L)
|
||||
.sendTime(now.minusDays(1)).build();
|
||||
when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(8L),
|
||||
any(LocalDateTime.class), eq(quitTime), eq(2)))
|
||||
.thenReturn(List.of(quitGroupMsg));
|
||||
.thenReturn(ListUtil.of(quitGroupMsg));
|
||||
|
||||
// 调用
|
||||
List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 8L, 2);
|
||||
|
|
@ -353,9 +355,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
assertEquals(2, result.size());
|
||||
assertEquals(50L, result.get(0).getId());
|
||||
assertEquals(102L, result.get(1).getId());
|
||||
verify(groupMessageMapper).selectListByMinId(eq(List.of(10L)), eq(8L),
|
||||
verify(groupMessageMapper).selectListByMinId(eq(ListUtil.of(10L)), eq(8L),
|
||||
any(LocalDateTime.class), eq(2));
|
||||
verify(groupMessageMapper).selectListByMinId(eq(List.of(10L)), eq(101L),
|
||||
verify(groupMessageMapper).selectListByMinId(eq(ListUtil.of(10L)), eq(101L),
|
||||
any(LocalDateTime.class), eq(2));
|
||||
verify(groupMemberService).getQuitGroupMemberListByUserId(1L, boundarySendTime);
|
||||
verify(groupMessageMapper).selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(8L),
|
||||
|
|
@ -372,22 +374,22 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(now.minusDays(10)).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(member));
|
||||
|
||||
// 定向接收消息:只给用户 2 和 3
|
||||
ImGroupMessageDO directedMsg = ImGroupMessageDO.builder()
|
||||
.id(1L).groupId(10L).senderId(5L)
|
||||
.receiverUserIds(List.of(2L, 3L))
|
||||
.receiverUserIds(ListUtil.of(2L, 3L))
|
||||
.sendTime(now.minusHours(2)).build();
|
||||
// 全员消息
|
||||
ImGroupMessageDO allMsg = ImGroupMessageDO.builder()
|
||||
.id(2L).groupId(10L).senderId(5L)
|
||||
.sendTime(now.minusHours(1)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(100)))
|
||||
.thenReturn(List.of(directedMsg, allMsg));
|
||||
.thenReturn(ListUtil.of(directedMsg, allMsg));
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
// 调用
|
||||
List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100);
|
||||
|
|
@ -405,24 +407,24 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(now.minusDays(10)).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(member));
|
||||
|
||||
ImGroupMessageDO atMsg = ImGroupMessageDO.builder()
|
||||
.id(1L).groupId(10L).senderId(2L)
|
||||
.atUserIds(List.of(1L, 3L))
|
||||
.atUserIds(ListUtil.of(1L, 3L))
|
||||
.sendTime(now.minusHours(1)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(100)))
|
||||
.thenReturn(List.of(atMsg));
|
||||
.thenReturn(ListUtil.of(atMsg));
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
// 调用
|
||||
List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100);
|
||||
|
||||
// 断言:@ 字段正确返回
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(List.of(1L, 3L), result.get(0).getAtUserIds());
|
||||
assertEquals(ListUtil.of(1L, 3L), result.get(0).getAtUserIds());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -432,15 +434,15 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(now.minusDays(10)).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(activeMember));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(activeMember));
|
||||
|
||||
ImGroupMessageDO activeMsg1 = ImGroupMessageDO.builder()
|
||||
.id(1000L).groupId(10L).senderId(2L).sendTime(now.minusHours(2)).build();
|
||||
ImGroupMessageDO activeMsg2 = ImGroupMessageDO.builder()
|
||||
.id(2000L).groupId(10L).senderId(2L).sendTime(now.minusHours(1)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(2)))
|
||||
.thenReturn(List.of(activeMsg1, activeMsg2));
|
||||
.thenReturn(ListUtil.of(activeMsg1, activeMsg2));
|
||||
|
||||
LocalDateTime quitTime = now.minusDays(1);
|
||||
ImGroupMemberDO quitMember = ImGroupMemberDO.builder()
|
||||
|
|
@ -449,7 +451,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.joinTime(now.minusDays(20))
|
||||
.quitTime(quitTime).build();
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(List.of(quitMember));
|
||||
.thenReturn(ListUtil.of(quitMember));
|
||||
|
||||
ImGroupMessageDO quit1 = ImGroupMessageDO.builder()
|
||||
.id(150L).groupId(20L).senderId(99L).sendTime(now.minusDays(5)).build();
|
||||
|
|
@ -457,7 +459,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.id(160L).groupId(20L).senderId(99L).sendTime(now.minusDays(4)).build();
|
||||
when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(0L),
|
||||
any(LocalDateTime.class), eq(quitTime), eq(2)))
|
||||
.thenReturn(List.of(quit1, quit2));
|
||||
.thenReturn(ListUtil.of(quit1, quit2));
|
||||
|
||||
when(groupMessageReadRedisDAO.getReadMaxMessageId(anyLong(), eq(1L))).thenReturn(null);
|
||||
|
||||
|
|
@ -475,7 +477,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(now.minusDays(10)).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(member));
|
||||
|
||||
ImGroupMessageDO low = ImGroupMessageDO.builder()
|
||||
.id(5L).groupId(10L).senderId(2L).status(ImMessageStatusEnum.UNREAD.getStatus())
|
||||
|
|
@ -483,11 +485,11 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMessageDO high = ImGroupMessageDO.builder()
|
||||
.id(10L).groupId(10L).senderId(2L).status(ImMessageStatusEnum.UNREAD.getStatus())
|
||||
.sendTime(now.minusHours(1)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(100)))
|
||||
.thenReturn(List.of(low, high));
|
||||
.thenReturn(ListUtil.of(low, high));
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(7L);
|
||||
|
||||
|
|
@ -505,18 +507,18 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(now.minusDays(10)).build();
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member));
|
||||
when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(ListUtil.of(member));
|
||||
|
||||
ImGroupMessageDO receiptMsg = ImGroupMessageDO.builder()
|
||||
.id(100L).groupId(10L).senderId(1L)
|
||||
.status(ImMessageStatusEnum.UNREAD.getStatus())
|
||||
.receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus())
|
||||
.sendTime(now.minusHours(1)).build();
|
||||
when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L),
|
||||
when(groupMessageMapper.selectListByMinId(eq(ListUtil.of(10L)), eq(0L),
|
||||
any(LocalDateTime.class), eq(100)))
|
||||
.thenReturn(List.of(receiptMsg));
|
||||
.thenReturn(ListUtil.of(receiptMsg));
|
||||
when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(100L);
|
||||
Map<Long, Long> positions = new HashMap<>();
|
||||
|
|
@ -525,7 +527,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
positions.put(3L, 50L);
|
||||
when(groupMessageReadRedisDAO.getReadMaxMessageIdMap(10L)).thenReturn(positions);
|
||||
|
||||
List<ImGroupMemberDO> allMembers = List.of(
|
||||
List<ImGroupMemberDO> allMembers = ListUtil.of(
|
||||
member,
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(2L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
|
|
@ -564,7 +566,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenReturn(1);
|
||||
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
|
||||
.thenReturn(List.of(1L, 2L));
|
||||
.thenReturn(ListUtil.of(1L, 2L));
|
||||
|
||||
// 调用
|
||||
ImGroupMessageDO result = groupMessageService.recallGroupMessage(1L, 50L);
|
||||
|
|
@ -669,7 +671,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 用户 2: 正常,入群在消息之前
|
||||
// 用户 3: 正常,但入群在消息之后 → 不可见
|
||||
// 用户 5: 发送者,不计入回执
|
||||
List<ImGroupMemberDO> allMembers = List.of(
|
||||
List<ImGroupMemberDO> allMembers = ListUtil.of(
|
||||
currentMember,
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(1L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
|
|
@ -739,7 +741,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMemberDO member = ImGroupMemberDO.builder()
|
||||
.groupId(10L).userId(1L).status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member);
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(ListUtil.of(1L));
|
||||
when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenReturn(1);
|
||||
|
||||
// 调用
|
||||
|
|
@ -821,7 +823,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.id(100L).groupId(10L).senderId(2L).sendTime(LocalDateTime.now()).build());
|
||||
when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(5L);
|
||||
// readGroupMessageEvent 内部会调 selectListByGroupIdAndPendingReceipt → 返回空简化流程
|
||||
when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 5L, 100L)).thenReturn(List.of());
|
||||
when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 5L, 100L)).thenReturn(ListUtil.of());
|
||||
|
||||
// 调用
|
||||
groupMessageService.readGroupMessages(1L, 10L, 100L);
|
||||
|
|
@ -875,7 +877,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMemberDO member = ImGroupMemberDO.builder()
|
||||
.groupId(10L).userId(1L).status(CommonStatusEnum.ENABLE.getStatus()).build();
|
||||
when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member);
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L, 2L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(ListUtil.of(1L, 2L));
|
||||
|
||||
ImGroupMessageDO result = groupMessageService.sendGroupMessage(1L, reqVO);
|
||||
|
||||
|
|
@ -932,8 +934,8 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus())
|
||||
.status(ImMessageStatusEnum.UNREAD.getStatus()).build();
|
||||
when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 0L, 100L))
|
||||
.thenReturn(List.of(pending));
|
||||
List<ImGroupMemberDO> activeMembers = List.of(
|
||||
.thenReturn(ListUtil.of(pending));
|
||||
List<ImGroupMemberDO> activeMembers = ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(5L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(LocalDateTime.now().minusDays(10)).build(),
|
||||
|
|
@ -971,8 +973,8 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus())
|
||||
.status(ImMessageStatusEnum.UNREAD.getStatus()).build();
|
||||
when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 0L, 100L))
|
||||
.thenReturn(List.of(pending));
|
||||
List<ImGroupMemberDO> activeMembers = List.of(
|
||||
.thenReturn(ListUtil.of(pending));
|
||||
List<ImGroupMemberDO> activeMembers = ListUtil.of(
|
||||
ImGroupMemberDO.builder().groupId(10L).userId(5L)
|
||||
.status(CommonStatusEnum.ENABLE.getStatus())
|
||||
.joinTime(LocalDateTime.now().minusDays(10)).build(),
|
||||
|
|
@ -1006,7 +1008,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
.setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
|
||||
.setContent("{\"messageId\":1}");
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
|
||||
.thenReturn(List.of(1L, 2L, 3L, 4L));
|
||||
.thenReturn(ListUtil.of(1L, 2L, 3L, 4L));
|
||||
|
||||
groupMessageService.sendGroupMessage(1L, dto);
|
||||
|
||||
|
|
@ -1023,9 +1025,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
|
||||
.setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
|
||||
.setContent("{\"messageId\":1}")
|
||||
.setReceiverUserIds(List.of(2L, 3L));
|
||||
.setReceiverUserIds(ListUtil.of(2L, 3L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
|
||||
.thenReturn(List.of(1L, 2L, 3L, 4L));
|
||||
.thenReturn(ListUtil.of(1L, 2L, 3L, 4L));
|
||||
|
||||
groupMessageService.sendGroupMessage(1L, dto);
|
||||
|
||||
|
|
@ -1042,9 +1044,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
|
||||
.setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
|
||||
.setContent("{\"messageId\":1}")
|
||||
.setReceiverUserIds(List.of(2L, 3L));
|
||||
.setReceiverUserIds(ListUtil.of(2L, 3L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
|
||||
.thenReturn(List.of(1L, 2L, 3L, 4L));
|
||||
.thenReturn(ListUtil.of(1L, 2L, 3L, 4L));
|
||||
|
||||
groupMessageService.sendGroupMessage(99L, dto);
|
||||
|
||||
|
|
@ -1061,7 +1063,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
|
||||
.setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
|
||||
.setContent(new RecallMessage().setMessageId(50L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(ListUtil.of(1L));
|
||||
|
||||
groupMessageService.sendGroupMessage(1L, dto);
|
||||
|
||||
|
|
@ -1085,7 +1087,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
|
||||
.setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
|
||||
.setContent("{\"messageId\":50}").setReceipt(true);
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(ListUtil.of(1L));
|
||||
|
||||
groupMessageService.sendGroupMessage(1L, dto);
|
||||
|
||||
|
|
@ -1099,7 +1101,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 准备:persistent=false 类型(RECEIPT 回执)→ 不入库,仅推送
|
||||
ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
|
||||
.setGroupId(10L).setType(ImMessageTypeEnum.RECEIPT.getType());
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L, 2L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(ListUtil.of(1L, 2L));
|
||||
|
||||
groupMessageService.sendGroupMessage(1L, dto);
|
||||
|
||||
|
|
@ -1110,7 +1112,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
@Test
|
||||
public void testSendGroupMessage_threeArg_explicitTargetsBypassActiveMembers() {
|
||||
// 准备:调用方传入显式 targets(解散场景成员已被批量 DISABLE,必须按移除前快照推送)
|
||||
Set<Long> targets = Set.of(1L, 2L, 3L);
|
||||
Set<Long> targets = CollUtil.newHashSet(1L, 2L, 3L);
|
||||
ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
|
||||
.setGroupId(10L).setType(ImMessageTypeEnum.GROUP_DISSOLVE.getType()).setContent("{}");
|
||||
|
||||
|
|
@ -1138,7 +1140,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
reqVO.setMaxId(100L);
|
||||
reqVO.setLimit(20);
|
||||
|
||||
List<ImGroupMessageDO> mockList = List.of(
|
||||
List<ImGroupMessageDO> mockList = ListUtil.of(
|
||||
ImGroupMessageDO.builder().id(99L).groupId(10L).senderId(2L)
|
||||
.sendTime(joinTime.plusMinutes(1)).build()
|
||||
);
|
||||
|
|
@ -1181,9 +1183,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
@Test
|
||||
public void testDeleteReadMaxMessageIds_delegatesToRedis() {
|
||||
groupMessageService.deleteReadMaxMessageIds(10L, List.of(1L, 2L));
|
||||
groupMessageService.deleteReadMaxMessageIds(10L, ListUtil.of(1L, 2L));
|
||||
|
||||
verify(groupMessageReadRedisDAO).deleteReadMaxMessageIds(10L, List.of(1L, 2L));
|
||||
verify(groupMessageReadRedisDAO).deleteReadMaxMessageIds(10L, ListUtil.of(1L, 2L));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package cn.iocoder.yudao.module.im.service.message;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
||||
import cn.iocoder.yudao.module.im.controller.admin.message.vo.privates.ImPrivateMessageListReqVO;
|
||||
|
|
@ -135,7 +136,7 @@ public class ImPrivateMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
@Test
|
||||
public void testPullMessages_success() {
|
||||
// 准备
|
||||
List<ImPrivateMessageDO> mockMessages = List.of(
|
||||
List<ImPrivateMessageDO> mockMessages = ListUtil.of(
|
||||
ImPrivateMessageDO.builder().id(1L).senderId(1L).receiverId(2L).build(),
|
||||
ImPrivateMessageDO.builder().id(2L).senderId(2L).receiverId(1L).build()
|
||||
);
|
||||
|
|
@ -415,7 +416,7 @@ public class ImPrivateMessageServiceImplTest extends BaseMockitoUnitTest {
|
|||
reqVO.setReceiverId(2L);
|
||||
reqVO.setMaxId(100L);
|
||||
reqVO.setLimit(20);
|
||||
List<ImPrivateMessageDO> mockList = List.of(
|
||||
List<ImPrivateMessageDO> mockList = ListUtil.of(
|
||||
ImPrivateMessageDO.builder().id(99L).senderId(1L).receiverId(2L).build(),
|
||||
ImPrivateMessageDO.builder().id(98L).senderId(2L).receiverId(1L).build()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package cn.iocoder.yudao.module.im.service.rtc;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
||||
import cn.iocoder.yudao.module.im.controller.admin.rtc.vo.ImRtcCallCreateReqVO;
|
||||
|
|
@ -30,8 +33,6 @@ import java.time.Duration;
|
|||
import java.time.LocalDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.RTC_GROUP_INVITEE_REQUIRED;
|
||||
|
|
@ -103,8 +104,8 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 准备:候选非空但每个 CAS 都失败(并发已变状态)
|
||||
ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING);
|
||||
when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any()))
|
||||
.thenReturn(List.of(p));
|
||||
when(adminUserApi.getUserMap(anySet())).thenReturn(Map.of(100L, buildUser(100L)));
|
||||
.thenReturn(ListUtil.of(p));
|
||||
when(adminUserApi.getUserMap(anySet())).thenReturn(MapUtil.of(100L, buildUser(100L)));
|
||||
when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
|
||||
.thenReturn(0);
|
||||
|
||||
|
|
@ -122,15 +123,15 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 准备:群通话单候选 CAS 成功;shouldCloseGroupRoom 通过 selectListByRoom 多 JOINED 让其返 false,跳过 endSession
|
||||
ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING);
|
||||
when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any()))
|
||||
.thenReturn(List.of(p));
|
||||
when(adminUserApi.getUserMap(anySet())).thenReturn(Map.of(100L, buildUser(100L)));
|
||||
.thenReturn(ListUtil.of(p));
|
||||
when(adminUserApi.getUserMap(anySet())).thenReturn(MapUtil.of(100L, buildUser(100L)));
|
||||
when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
|
||||
.thenReturn(1);
|
||||
ImRtcCallDO call = buildCall("r1", 200L, ImConversationTypeEnum.GROUP, 999L);
|
||||
when(rtcCallMapper.selectByRoom("r1")).thenReturn(call);
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(999L)).thenReturn(List.of(200L, 201L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(999L)).thenReturn(ListUtil.of(200L, 201L));
|
||||
// 房内 2 个 JOINED + 1 个 INVITING → shouldCloseGroupRoom 返 false
|
||||
when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(List.of(
|
||||
when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(ListUtil.of(
|
||||
buildParticipant(20L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED),
|
||||
buildParticipant(21L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED),
|
||||
buildParticipant(22L, "r1", 202L, ImRtcParticipantStatusEnum.INVITING)
|
||||
|
|
@ -150,8 +151,8 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
|
|||
// 准备:CAS 成功后通话主表缺失(异常兜底场景)
|
||||
ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING);
|
||||
when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any()))
|
||||
.thenReturn(List.of(p));
|
||||
when(adminUserApi.getUserMap(anySet())).thenReturn(Map.of(100L, buildUser(100L)));
|
||||
.thenReturn(ListUtil.of(p));
|
||||
when(adminUserApi.getUserMap(anySet())).thenReturn(MapUtil.of(100L, buildUser(100L)));
|
||||
when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
|
||||
.thenReturn(1);
|
||||
when(rtcCallMapper.selectByRoom("r1")).thenReturn(null);
|
||||
|
|
@ -219,15 +220,15 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImRtcParticipantDO timeoutTarget = buildParticipant(11L, "r1", 101L, ImRtcParticipantStatusEnum.INVITING);
|
||||
when(rtcParticipantMapper.selectListByRoomAndStatusAndInviteTimeBefore(
|
||||
eq("r1"), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
|
||||
.thenReturn(List.of(timeoutTarget));
|
||||
when(adminUserApi.getUserMap(anySet())).thenReturn(Map.of(101L, buildUser(101L)));
|
||||
.thenReturn(ListUtil.of(timeoutTarget));
|
||||
when(adminUserApi.getUserMap(anySet())).thenReturn(MapUtil.of(101L, buildUser(101L)));
|
||||
when(rtcParticipantMapper.updateByIdAndStatus(eq(11L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
|
||||
.thenReturn(1);
|
||||
ImRtcCallDO call = buildCall("r1", 200L, ImConversationTypeEnum.GROUP, 999L);
|
||||
when(rtcCallMapper.selectByRoom("r1")).thenReturn(call);
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(999L)).thenReturn(List.of(200L, 201L));
|
||||
when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(999L)).thenReturn(ListUtil.of(200L, 201L));
|
||||
// 让 shouldCloseGroupRoom 返 false
|
||||
when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(List.of(
|
||||
when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(ListUtil.of(
|
||||
buildParticipant(20L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED),
|
||||
buildParticipant(21L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED)
|
||||
));
|
||||
|
|
@ -253,7 +254,7 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
|
|||
ImRtcCallCreateReqVO reqVO = new ImRtcCallCreateReqVO();
|
||||
reqVO.setConversationType(ImConversationTypeEnum.GROUP.getType());
|
||||
reqVO.setGroupId(10L);
|
||||
reqVO.setInviteeIds(Set.of(100L));
|
||||
reqVO.setInviteeIds(CollUtil.newHashSet(100L));
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> rtcCallService.createCall(100L, reqVO));
|
||||
|
|
@ -335,14 +336,14 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
|
|||
Callable<Void> callable = invocation.getArgument(1);
|
||||
return callable.call();
|
||||
});
|
||||
when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(List.of(
|
||||
when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(ListUtil.of(
|
||||
buildParticipant(10L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED),
|
||||
buildParticipant(11L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED),
|
||||
buildParticipant(12L, "r1", 202L, ImRtcParticipantStatusEnum.INVITING)
|
||||
));
|
||||
ImRtcCallInviteReqVO reqVO = new ImRtcCallInviteReqVO();
|
||||
reqVO.setRoom("r1");
|
||||
reqVO.setInviteeIds(Set.of(203L));
|
||||
reqVO.setInviteeIds(CollUtil.newHashSet(203L));
|
||||
|
||||
ServiceException exception = assertThrows(ServiceException.class,
|
||||
() -> rtcCallService.inviteCall(200L, reqVO));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package cn.iocoder.yudao.module.im.service.sensitiveword;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||
|
|
@ -44,7 +45,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
|
|||
// mock 启用敏感词列表;LoadingCache 在首次 validateText 时懒加载,无需主动 init
|
||||
// 用 lenient 避免 null / empty 等不触发 cache load 的用例报 UnnecessaryStubbing
|
||||
lenient().when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
|
||||
.thenReturn(List.of(
|
||||
.thenReturn(ListUtil.of(
|
||||
ImSensitiveWordDO.builder().id(1L).word("badword")
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImSensitiveWordDO.builder().id(2L).word("违禁词")
|
||||
|
|
@ -118,7 +119,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
// 准备:mapper 返回新词库(额外多一个 newbad),并让 createSensitiveWord 走通
|
||||
when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
|
||||
.thenReturn(List.of(
|
||||
.thenReturn(ListUtil.of(
|
||||
ImSensitiveWordDO.builder().id(1L).word("badword")
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build(),
|
||||
ImSensitiveWordDO.builder().id(2L).word("违禁词")
|
||||
|
|
@ -178,7 +179,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
|
|||
when(imSensitiveWordMapper.selectByWord("updatedbad")).thenReturn(null);
|
||||
// 准备:reload 时返回新词库
|
||||
when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
|
||||
.thenReturn(List.of(
|
||||
.thenReturn(ListUtil.of(
|
||||
ImSensitiveWordDO.builder().id(1L).word("updatedbad")
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()
|
||||
));
|
||||
|
|
@ -211,7 +212,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
|
|||
.status(CommonStatusEnum.ENABLE.getStatus()).build());
|
||||
// 准备:reload 时返回剩余词库(只剩中文那条)
|
||||
when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
|
||||
.thenReturn(List.of(
|
||||
.thenReturn(ListUtil.of(
|
||||
ImSensitiveWordDO.builder().id(2L).word("违禁词")
|
||||
.status(CommonStatusEnum.ENABLE.getStatus()).build()
|
||||
));
|
||||
|
|
@ -251,24 +252,24 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
|
|||
|
||||
// 准备:reload 时返回空词库
|
||||
when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
|
||||
.thenReturn(List.of());
|
||||
.thenReturn(ListUtil.of());
|
||||
|
||||
// 调用:批量删除,触发 invalidate
|
||||
sensitiveWordService.deleteSensitiveWordList(List.of(1L, 2L));
|
||||
sensitiveWordService.deleteSensitiveWordList(ListUtil.of(1L, 2L));
|
||||
|
||||
// 调用 + 断言:所有词都不再命中
|
||||
assertDoesNotThrow(() -> sensitiveWordService.validateText("contains badword here"));
|
||||
assertDoesNotThrow(() -> sensitiveWordService.validateText("这条消息里有违禁词哦"));
|
||||
|
||||
// 断言:deleteByIds 被调用 1 次;selectListByStatus 共 2 次
|
||||
verify(imSensitiveWordMapper, times(1)).deleteByIds(List.of(1L, 2L));
|
||||
verify(imSensitiveWordMapper, times(1)).deleteByIds(ListUtil.of(1L, 2L));
|
||||
verify(imSensitiveWordMapper, times(2)).selectListByStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteSensitiveWordList_emptyIds_skip() {
|
||||
// 调用:空列表直接返回
|
||||
sensitiveWordService.deleteSensitiveWordList(List.of());
|
||||
sensitiveWordService.deleteSensitiveWordList(ListUtil.of());
|
||||
|
||||
// 断言:mapper 不被调用
|
||||
verify(imSensitiveWordMapper, never()).deleteByIds(anyList());
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.api.config;
|
|||
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
|
||||
import cn.iocoder.yudao.module.infra.service.config.ConfigService;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import cn.hutool.core.util.IdUtil;
|
|||
import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
|
||||
import cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClient;
|
||||
import cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig;
|
||||
import jakarta.validation.Validation;
|
||||
import javax.validation.Validation;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
|||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - 分类新增/修改 Request VO")
|
||||
@Data
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraCategoryDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraCategoryDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraCategoryMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
|||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - 分类新增/修改 Request VO")
|
||||
@Data
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraCategoryDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraCategoryDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraCategoryMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentContactDO;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.service.demo;
|
|||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
|||
import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo;
|
|||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import jakarta.validation.constraints.*;
|
||||
import jakarta.validation.*;
|
||||
import jakarta.servlet.http.*;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.controller.admin.demo.vo;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cn.iocoder.yudao.module.infra.service.demo;
|
||||
|
||||
import java.util.*;
|
||||
import jakarta.validation.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
|
||||
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue