From ebb2f116c5af7045824b13fe01de3ec063706fec Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Thu, 18 Jul 2024 01:24:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=86=E6=9E=B6=E7=89=88=E6=9C=AC=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E8=87=B3:=20springboot3.3=E3=80=81jdk17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-commom/pom.xml | 7 - .../com/bx/imcommon/mq/RedisMQConfig.java | 1 - .../com/bx/imcommon/mq/RedisMQPullTask.java | 8 +- .../com/bx/imcommon/mq/RedisMQTemplate.java | 1 - .../util/ThreadPoolExecutorFactory.java | 3 +- im-platform/pom.xml | 67 +++--- .../java/com/bx/implatform/IMPlatformApp.java | 3 +- .../bx/implatform/annotation/OnlineCheck.java | 1 - .../implatform/aspect/OnlineCheckAspect.java | 7 - .../bx/implatform/aspect/RedisLockAspect.java | 2 - .../com/bx/implatform/config/RedisConfig.java | 54 ++--- .../bx/implatform/config/RedissonConfig.java | 9 +- .../bx/implatform/config/SwaggerConfig.java | 51 +++-- .../implatform/controller/FileController.java | 15 +- .../controller/FriendController.java | 26 +-- .../controller/GroupController.java | 41 ++-- .../controller/GroupMessageController.java | 37 ++-- .../controller/LoginController.java | 19 +- .../controller/PrivateMessageController.java | 38 ++-- .../controller/SystemController.java | 13 +- .../implatform/controller/UserController.java | 24 +-- .../controller/WebrtcGroupController.java | 54 +++-- .../controller/WebrtcPrivateController.java | 44 ++-- .../com/bx/implatform/dto/GroupBanDTO.java | 10 +- .../bx/implatform/dto/GroupMessageDTO.java | 21 +- .../com/bx/implatform/dto/GroupUnbanDTO.java | 7 +- .../java/com/bx/implatform/dto/LoginDTO.java | 20 +- .../com/bx/implatform/dto/ModifyPwdDTO.java | 12 +- .../bx/implatform/dto/PrivateMessageDTO.java | 16 +- .../com/bx/implatform/dto/RegisterDTO.java | 14 +- .../com/bx/implatform/dto/UserBanDTO.java | 9 +- .../implatform/dto/WebrtcGroupAnswerDTO.java | 16 +- .../dto/WebrtcGroupCandidateDTO.java | 17 +- .../implatform/dto/WebrtcGroupDeviceDTO.java | 15 +- .../implatform/dto/WebrtcGroupFailedDTO.java | 12 +- .../implatform/dto/WebrtcGroupInviteDTO.java | 13 +- .../bx/implatform/dto/WebrtcGroupJoinDTO.java | 11 +- .../implatform/dto/WebrtcGroupOfferDTO.java | 16 +- .../implatform/dto/WebrtcGroupSetupDTO.java | 13 +- .../java/com/bx/implatform/entity/Friend.java | 22 +- .../java/com/bx/implatform/entity/Group.java | 41 ++-- .../com/bx/implatform/entity/GroupMember.java | 35 +--- .../bx/implatform/entity/GroupMessage.java | 30 +-- .../bx/implatform/entity/PrivateMessage.java | 25 +-- .../java/com/bx/implatform/entity/User.java | 64 ++---- .../com/bx/implatform/filter/CacheFilter.java | 6 +- .../CacheHttpServletRequestWrapper.java | 8 +- .../implatform/generator/CodeGenerator.java | 192 +++++++++--------- .../interceptor/AuthInterceptor.java | 5 +- .../interceptor/XssInterceptor.java | 4 +- .../listener/GroupMessageListener.java | 2 - .../listener/SystemMessageListener.java | 10 - .../service/IWebrtcGroupService.java | 1 - .../service/IWebrtcPrivateService.java | 4 - .../service/impl/GroupServiceImpl.java | 7 +- .../service/thirdparty/FileService.java | 2 +- .../bx/implatform/session/SessionContext.java | 3 +- .../bx/implatform/session/WebrtcUserInfo.java | 15 +- .../task/UserBannedConsumerTask.java | 1 + .../implatform/util/SensitiveFilterUtil.java | 2 +- .../java/com/bx/implatform/vo/FriendVO.java | 14 +- .../com/bx/implatform/vo/GroupInviteVO.java | 13 +- .../com/bx/implatform/vo/GroupMemberVO.java | 17 +- .../com/bx/implatform/vo/GroupMessageVO.java | 27 ++- .../java/com/bx/implatform/vo/GroupVO.java | 29 ++- .../java/com/bx/implatform/vo/LoginVO.java | 13 +- .../bx/implatform/vo/OnlineTerminalVO.java | 6 +- .../bx/implatform/vo/PrivateMessageVO.java | 19 +- .../com/bx/implatform/vo/SystemConfigVO.java | 7 +- .../com/bx/implatform/vo/SystemMessageVO.java | 13 +- .../com/bx/implatform/vo/UploadImageVO.java | 9 +- .../java/com/bx/implatform/vo/UserVO.java | 28 ++- .../bx/implatform/vo/WebrtcGroupFailedVO.java | 9 +- .../bx/implatform/vo/WebrtcGroupInfoVO.java | 11 +- .../src/main/resources/application.yml | 11 +- im-server/pom.xml | 6 +- .../com/bx/imserver/config/RedisConfig.java | 33 --- .../com/bx/imserver/netty/IMServerGroup.java | 6 +- pom.xml | 53 ++--- 79 files changed, 628 insertions(+), 922 deletions(-) delete mode 100644 im-server/src/main/java/com/bx/imserver/config/RedisConfig.java diff --git a/im-commom/pom.xml b/im-commom/pom.xml index 61b263c..a019f36 100644 --- a/im-commom/pom.xml +++ b/im-commom/pom.xml @@ -39,15 +39,9 @@ org.springframework spring-beans - - org.apache.velocity - velocity - ${velocity.version} - com.fasterxml.jackson.datatype jackson-datatype-joda - 2.9.10 org.springframework @@ -63,7 +57,6 @@ org.slf4j slf4j-api - 1.7.36 diff --git a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java b/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java index 24ba4ba..99c5074 100644 --- a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java +++ b/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; diff --git a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java b/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java index 7b0d4c6..cf5bf99 100644 --- a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java +++ b/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java @@ -2,14 +2,18 @@ package com.bx.imcommon.mq; import com.alibaba.fastjson.JSONObject; import com.bx.imcommon.util.ThreadPoolExecutorFactory; +import jakarta.annotation.PreDestroy; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; -import javax.annotation.PreDestroy; + import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; -import java.util.*; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; diff --git a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java b/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java index f966579..bf8b076 100644 --- a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java +++ b/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java @@ -1,6 +1,5 @@ package com.bx.imcommon.mq; -import cn.hutool.core.util.StrUtil; import org.apache.logging.log4j.util.Strings; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisTemplate; diff --git a/im-commom/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java b/im-commom/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java index e2cdd6d..3cf0112 100644 --- a/im-commom/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java +++ b/im-commom/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java @@ -2,7 +2,8 @@ package com.bx.imcommon.util; import lombok.extern.slf4j.Slf4j; -import java.util.concurrent.*; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor; /** * 创建单例线程池 diff --git a/im-platform/pom.xml b/im-platform/pom.xml index 16e987c..05b2590 100644 --- a/im-platform/pom.xml +++ b/im-platform/pom.xml @@ -18,10 +18,6 @@ im-client 2.0.0 - - org.springframework.boot - spring-boot - org.springframework.boot spring-boot-starter-web @@ -29,29 +25,30 @@ com.baomidou mybatis-plus-boot-starter + + + org.mybatis + mybatis-spring + + + + + org.mybatis + mybatis-spring + ${mybatis.spring.version} com.alibaba druid - mysql - mysql-connector-java + com.mysql + mysql-connector-j org.springframework.boot spring-boot-starter-jdbc - - io.springfox - springfox-swagger2 - ${swagger.version} - - - io.springfox - springfox-swagger-ui - ${swagger.version} - org.aspectj aspectjweaver @@ -62,8 +59,9 @@ spring-boot-starter-data-redis - org.springframework.boot - spring-boot-starter-security + org.springframework.security + spring-security-crypto + 6.3.1 org.springframework.session @@ -77,27 +75,7 @@ io.minio minio - 8.4.3 - - - com.squareup.okhttp3 - okhttp - - - org.jetbrains.kotlin - kotlin-stdlib - - - - - com.squareup.okhttp3 - okhttp - 4.9.0 - - - org.jetbrains.kotlin - kotlin-stdlib - 1.3.70 + ${minio.version} @@ -112,8 +90,13 @@ org.redisson - redisson - 3.17.3 + redisson-spring-boot-starter + ${redisson.version} + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + ${knife4j.version} @@ -123,7 +106,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.0.3.RELEASE + 3.3.1 diff --git a/im-platform/src/main/java/com/bx/implatform/IMPlatformApp.java b/im-platform/src/main/java/com/bx/implatform/IMPlatformApp.java index ecb30a4..73dab5d 100644 --- a/im-platform/src/main/java/com/bx/implatform/IMPlatformApp.java +++ b/im-platform/src/main/java/com/bx/implatform/IMPlatformApp.java @@ -4,7 +4,6 @@ import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.EnableAspectJAutoProxy; @@ -14,7 +13,7 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy; @EnableAspectJAutoProxy(exposeProxy = true) @ComponentScan(basePackages = {"com.bx"}) @MapperScan(basePackages = {"com.bx.implatform.mapper"}) -@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})// 禁用secrity +@SpringBootApplication public class IMPlatformApp { public static void main(String[] args) { diff --git a/im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java b/im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java index f616002..4baec54 100644 --- a/im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java +++ b/im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java @@ -4,7 +4,6 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import java.util.concurrent.TimeUnit; /** * 在线校验,标注此注解的接口用户必须保持长连接,否则将抛异常 diff --git a/im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java b/im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java index b81124c..a9be97e 100644 --- a/im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java +++ b/im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java @@ -1,8 +1,6 @@ package com.bx.implatform.aspect; -import cn.hutool.core.util.StrUtil; import com.bx.imclient.IMClient; -import com.bx.implatform.annotation.RedisLock; import com.bx.implatform.exception.GlobalException; import com.bx.implatform.session.SessionContext; import com.bx.implatform.session.UserSession; @@ -11,13 +9,8 @@ import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.reflect.MethodSignature; -import org.redisson.api.RLock; -import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; -import java.lang.reflect.Method; - /** * @author: blue * @date: 2024-06-16 diff --git a/im-platform/src/main/java/com/bx/implatform/aspect/RedisLockAspect.java b/im-platform/src/main/java/com/bx/implatform/aspect/RedisLockAspect.java index 0cd5586..dc5c6b5 100644 --- a/im-platform/src/main/java/com/bx/implatform/aspect/RedisLockAspect.java +++ b/im-platform/src/main/java/com/bx/implatform/aspect/RedisLockAspect.java @@ -8,8 +8,6 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.reflect.MethodSignature; -import org.redisson.Redisson; -import org.redisson.RedissonLock; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.core.DefaultParameterNameDiscoverer; diff --git a/im-platform/src/main/java/com/bx/implatform/config/RedisConfig.java b/im-platform/src/main/java/com/bx/implatform/config/RedisConfig.java index 14922b0..d74e656 100644 --- a/im-platform/src/main/java/com/bx/implatform/config/RedisConfig.java +++ b/im-platform/src/main/java/com/bx/implatform/config/RedisConfig.java @@ -1,18 +1,17 @@ package com.bx.implatform.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import jakarta.annotation.Resource; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cache.interceptor.CacheErrorHandler; -import org.springframework.cache.interceptor.CacheResolver; -import org.springframework.cache.interceptor.SimpleCacheErrorHandler; -import org.springframework.cache.interceptor.SimpleCacheResolver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @@ -24,9 +23,7 @@ import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.StringRedisSerializer; -import javax.annotation.Resource; import java.time.Duration; -import java.util.Objects; @EnableCaching @Configuration @@ -40,7 +37,6 @@ public class RedisConfig extends CachingConfigurerSupport { public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); - // 设置值(value)的序列化采用jackson2JsonRedisSerializer redisTemplate.setValueSerializer(jackson2JsonRedisSerializer()); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer()); @@ -51,42 +47,28 @@ public class RedisConfig extends CachingConfigurerSupport { return redisTemplate; } + + + @Bean + public CacheManager cacheManager() { + // 设置redis缓存管理器 + RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)) + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer())); + return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build(); + } + + @Bean public Jackson2JsonRedisSerializer jackson2JsonRedisSerializer() { - Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 解决jackson2无法反序列化LocalDateTime的问题 om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); om.registerModule(new JavaTimeModule()); + om.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 忽略空值 om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); - jackson2JsonRedisSerializer.setObjectMapper(om); - return jackson2JsonRedisSerializer; - } - - - @Bean - @Override - public CacheResolver cacheResolver() { - return new SimpleCacheResolver(Objects.requireNonNull(cacheManager())); - } - - @Bean - @Override - public CacheErrorHandler errorHandler() { - // 用于捕获从Cache中进行CRUD时的异常的回调处理器。 - return new SimpleCacheErrorHandler(); - } - - @Bean - @Override - public CacheManager cacheManager() { - // 设置redis缓存管理器 - RedisCacheConfiguration cacheConfiguration = - RedisCacheConfiguration.defaultCacheConfig() - .disableCachingNullValues() - .entryTtl(Duration.ofMinutes(10)) - .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer())); - return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build(); + //忽略无效字段 + om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + return new Jackson2JsonRedisSerializer<>(om, Object.class); } } diff --git a/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java b/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java index 7dc1c92..f3203a0 100644 --- a/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java +++ b/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java @@ -6,11 +6,8 @@ import org.redisson.api.RedissonClient; import org.redisson.client.codec.StringCodec; import org.redisson.config.Config; import org.redisson.config.SingleServerConfig; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; /** * @author: Blue @@ -18,9 +15,9 @@ import org.springframework.context.annotation.Configuration; * @version: 1.0 */ -@Configuration -@ConditionalOnClass(Config.class) -@EnableConfigurationProperties(RedisProperties.class) +//@Configuration +//@ConditionalOnClass(Config.class) +//@EnableConfigurationProperties(RedisProperties.class) public class RedissonConfig { @Bean diff --git a/im-platform/src/main/java/com/bx/implatform/config/SwaggerConfig.java b/im-platform/src/main/java/com/bx/implatform/config/SwaggerConfig.java index 3410b08..5c5841f 100644 --- a/im-platform/src/main/java/com/bx/implatform/config/SwaggerConfig.java +++ b/im-platform/src/main/java/com/bx/implatform/config/SwaggerConfig.java @@ -1,41 +1,38 @@ package com.bx.implatform.config; -import io.swagger.annotations.ApiOperation; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import org.springdoc.core.models.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration -@EnableSwagger2 public class SwaggerConfig { @Bean - public Docket createRestApi() { - - return new Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo()) - .select() - //这里采用包含注解的方式来确定要显示的接口 - .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) - //这里采用包扫描的方式来确定要显示的接口 - .paths(PathSelectors.any()) - .build(); - + public GroupedOpenApi userApi() { + String[] paths = {"/**"}; + String[] packagedToMatch = {"com.bx"}; + return GroupedOpenApi.builder().group("BoxIM") + .pathsToMatch(paths) + .packagesToScan(packagedToMatch).build(); } - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("IM Platform doc") - .description("盒子IM API文档") - .termsOfServiceUrl("http://8.134.92.70/") - .version("1.0") - .build(); + @Bean + public OpenAPI customOpenAPI() { + Contact contact = new Contact(); + contact.setName("Blue"); + return new OpenAPI().info(new Info() + .title("Box-IM") + .description("盒子IM") + .contact(contact) + .version("3.0") + .termsOfService("https://www.boxim.online") + .license(new License().name("MIT") + .url("https://www.boxim.online"))); } } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/FileController.java b/im-platform/src/main/java/com/bx/implatform/controller/FileController.java index 204f639..ddf9236 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/FileController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/FileController.java @@ -4,33 +4,34 @@ import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.thirdparty.FileService; import com.bx.implatform.vo.UploadImageVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @Slf4j @RestController -@Api(tags = "文件上传") +@Tag(name = "文件上传") @RequiredArgsConstructor public class FileController { private final FileService fileService; - @ApiOperation(value = "上传图片", notes = "上传图片,上传后返回原图和缩略图的url") + @Operation(summary = "上传图片", description = "上传图片,上传后返回原图和缩略图的url") @PostMapping("/image/upload") - public Result uploadImage(MultipartFile file) { + public Result uploadImage(@RequestParam("file") MultipartFile file) { return ResultUtils.success(fileService.uploadImage(file)); } @CrossOrigin - @ApiOperation(value = "上传文件", notes = "上传文件,上传后返回文件url") + @Operation(summary = "上传文件", description = "上传文件,上传后返回文件url") @PostMapping("/file/upload") - public Result uploadFile(MultipartFile file) { + public Result uploadFile(@RequestParam("file") MultipartFile file) { return ResultUtils.success(fileService.uploadFile(file), ""); } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/FriendController.java b/im-platform/src/main/java/com/bx/implatform/controller/FriendController.java index 3ded8bd..cbc281c 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/FriendController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/FriendController.java @@ -6,17 +6,17 @@ import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.IFriendService; import com.bx.implatform.session.SessionContext; import com.bx.implatform.vo.FriendVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import javax.validation.constraints.NotEmpty; import java.util.List; import java.util.stream.Collectors; -@Api(tags = "好友") +@Tag(name = "好友") @RestController @RequestMapping("/friend") @RequiredArgsConstructor @@ -25,7 +25,7 @@ public class FriendController { private final IFriendService friendService; @GetMapping("/list") - @ApiOperation(value = "好友列表", notes = "获取好友列表") + @Operation(summary = "好友列表", description = "获取好友列表") public Result> findFriends() { List friends = friendService.findFriendByUserId(SessionContext.getSession().getUserId()); List vos = friends.stream().map(f -> { @@ -40,28 +40,28 @@ public class FriendController { @PostMapping("/add") - @ApiOperation(value = "添加好友", notes = "双方建立好友关系") - public Result addFriend(@NotEmpty(message = "好友id不可为空") @RequestParam("friendId") Long friendId) { + @Operation(summary = "添加好友", description = "双方建立好友关系") + public Result addFriend(@NotNull(message = "好友id不可为空") @RequestParam("friendId") Long friendId) { friendService.addFriend(friendId); return ResultUtils.success(); } @GetMapping("/find/{friendId}") - @ApiOperation(value = "查找好友信息", notes = "查找好友信息") - public Result findFriend(@NotEmpty(message = "好友id不可为空") @PathVariable("friendId") Long friendId) { + @Operation(summary = "查找好友信息", description = "查找好友信息") + public Result findFriend(@NotNull(message = "好友id不可为空") @PathVariable("friendId") Long friendId) { return ResultUtils.success(friendService.findFriend(friendId)); } @DeleteMapping("/delete/{friendId}") - @ApiOperation(value = "删除好友", notes = "解除好友关系") - public Result delFriend(@NotEmpty(message = "好友id不可为空") @PathVariable("friendId") Long friendId) { + @Operation(summary = "删除好友", description = "解除好友关系") + public Result delFriend(@NotNull(message = "好友id不可为空") @PathVariable("friendId") Long friendId) { friendService.delFriend(friendId); return ResultUtils.success(); } @PutMapping("/update") - @ApiOperation(value = "更新好友信息", notes = "更新好友头像或昵称") + @Operation(summary = "更新好友信息", description = "更新好友头像或昵称") public Result modifyFriend(@Valid @RequestBody FriendVO vo) { friendService.update(vo); return ResultUtils.success(); diff --git a/im-platform/src/main/java/com/bx/implatform/controller/GroupController.java b/im-platform/src/main/java/com/bx/implatform/controller/GroupController.java index a76b451..9aa83c3 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/GroupController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/GroupController.java @@ -6,16 +6,16 @@ import com.bx.implatform.service.IGroupService; import com.bx.implatform.vo.GroupInviteVO; import com.bx.implatform.vo.GroupMemberVO; import com.bx.implatform.vo.GroupVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import javax.validation.constraints.NotNull; import java.util.List; -@Api(tags = "群聊") +@Tag(name = "群聊") @RestController @RequestMapping("/group") @RequiredArgsConstructor @@ -23,61 +23,62 @@ public class GroupController { private final IGroupService groupService; - @ApiOperation(value = "创建群聊", notes = "创建群聊") + @Operation(summary = "创建群聊", description = "创建群聊") @PostMapping("/create") public Result createGroup(@Valid @RequestBody GroupVO vo) { return ResultUtils.success(groupService.createGroup(vo)); } - @ApiOperation(value = "修改群聊信息", notes = "修改群聊信息") + @Operation(summary = "修改群聊信息", description = "修改群聊信息") @PutMapping("/modify") public Result modifyGroup(@Valid @RequestBody GroupVO vo) { return ResultUtils.success(groupService.modifyGroup(vo)); } - @ApiOperation(value = "解散群聊", notes = "解散群聊") + @Operation(summary = "解散群聊", description = "解散群聊") @DeleteMapping("/delete/{groupId}") - public Result deleteGroup(@NotNull(message = "群聊id不能为空") @PathVariable Long groupId) { + public Result deleteGroup(@NotNull(message = "群聊id不能为空") @PathVariable("groupId") Long groupId) { groupService.deleteGroup(groupId); return ResultUtils.success(); } - @ApiOperation(value = "查询群聊", notes = "查询单个群聊信息") + @Operation(summary = "查询群聊", description = "查询单个群聊信息") @GetMapping("/find/{groupId}") - public Result findGroup(@NotNull(message = "群聊id不能为空") @PathVariable Long groupId) { + public Result findGroup(@NotNull(message = "群聊id不能为空") @PathVariable("groupId") Long groupId) { return ResultUtils.success(groupService.findById(groupId)); } - @ApiOperation(value = "查询群聊列表", notes = "查询群聊列表") + @Operation(summary = "查询群聊列表", description = "查询群聊列表") @GetMapping("/list") public Result> findGroups() { return ResultUtils.success(groupService.findGroups()); } - @ApiOperation(value = "邀请进群", notes = "邀请好友进群") + @Operation(summary = "邀请进群", description = "邀请好友进群") @PostMapping("/invite") public Result invite(@Valid @RequestBody GroupInviteVO vo) { groupService.invite(vo); return ResultUtils.success(); } - @ApiOperation(value = "查询群聊成员", notes = "查询群聊成员") + @Operation(summary = "查询群聊成员", description = "查询群聊成员") @GetMapping("/members/{groupId}") - public Result> findGroupMembers(@NotNull(message = "群聊id不能为空") @PathVariable Long groupId) { + public Result> findGroupMembers( + @NotNull(message = "群聊id不能为空") @PathVariable("groupId") Long groupId) { return ResultUtils.success(groupService.findGroupMembers(groupId)); } - @ApiOperation(value = "退出群聊", notes = "退出群聊") + @Operation(summary = "退出群聊", description = "退出群聊") @DeleteMapping("/quit/{groupId}") - public Result quitGroup(@NotNull(message = "群聊id不能为空") @PathVariable Long groupId) { + public Result quitGroup(@NotNull(message = "群聊id不能为空") @PathVariable("groupId") Long groupId) { groupService.quitGroup(groupId); return ResultUtils.success(); } - @ApiOperation(value = "踢出群聊", notes = "将用户踢出群聊") + @Operation(summary = "踢出群聊", description = "将用户踢出群聊") @DeleteMapping("/kick/{groupId}") - public Result kickGroup(@NotNull(message = "群聊id不能为空") @PathVariable Long groupId, - @NotNull(message = "用户id不能为空") @RequestParam Long userId) { + public Result kickGroup(@NotNull(message = "群聊id不能为空") @PathVariable("groupId") Long groupId, + @NotNull(message = "用户id不能为空") @RequestParam Long userId) { groupService.kickGroup(groupId, userId); return ResultUtils.success(); } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java b/im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java index c9df96c..2a54241 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java @@ -5,16 +5,16 @@ import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.IGroupMessageService; import com.bx.implatform.vo.GroupMessageVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import javax.validation.constraints.NotNull; import java.util.List; -@Api(tags = "群聊消息") +@Tag(name = "群聊消息") @RestController @RequestMapping("/message/group") @RequiredArgsConstructor @@ -23,43 +23,44 @@ public class GroupMessageController { private final IGroupMessageService groupMessageService; @PostMapping("/send") - @ApiOperation(value = "发送群聊消息", notes = "发送群聊消息") + @Operation(summary = "发送群聊消息", description = "发送群聊消息") public Result sendMessage(@Valid @RequestBody GroupMessageDTO vo) { return ResultUtils.success(groupMessageService.sendMessage(vo)); } @DeleteMapping("/recall/{id}") - @ApiOperation(value = "撤回消息", notes = "撤回群聊消息") - public Result recallMessage(@NotNull(message = "消息id不能为空") @PathVariable Long id) { + @Operation(summary = "撤回消息", description = "撤回群聊消息") + public Result recallMessage(@NotNull(message = "消息id不能为空") @PathVariable("id") Long id) { groupMessageService.recallMessage(id); return ResultUtils.success(); } @GetMapping("/pullOfflineMessage") - @ApiOperation(value = "拉取离线消息", notes = "拉取离线消息,消息将通过webscoket异步推送") - public Result pullOfflineMessage(@RequestParam Long minId) { + @Operation(summary = "拉取离线消息", description = "拉取离线消息,消息将通过webscoket异步推送") + public Result pullOfflineMessage(@RequestParam("minId") Long minId) { groupMessageService.pullOfflineMessage(minId); return ResultUtils.success(); } @PutMapping("/readed") - @ApiOperation(value = "消息已读", notes = "将群聊中的消息状态置为已读") - public Result readedMessage(@RequestParam Long groupId) { + @Operation(summary = "消息已读", description = "将群聊中的消息状态置为已读") + public Result readedMessage(@RequestParam("groupId") Long groupId) { groupMessageService.readedMessage(groupId); return ResultUtils.success(); } @GetMapping("/findReadedUsers") - @ApiOperation(value = "获取已读用户id", notes = "获取消息已读用户列表") - public Result> findReadedUsers(@RequestParam Long groupId,@RequestParam Long messageId) { - return ResultUtils.success(groupMessageService.findReadedUsers(groupId,messageId)); + @Operation(summary = "获取已读用户id", description = "获取消息已读用户列表") + public Result> findReadedUsers(@RequestParam("groupId") Long groupId, + @RequestParam("messageId") Long messageId) { + return ResultUtils.success(groupMessageService.findReadedUsers(groupId, messageId)); } @GetMapping("/history") - @ApiOperation(value = "查询聊天记录", notes = "查询聊天记录") + @Operation(summary = "查询聊天记录", description = "查询聊天记录") public Result> recallMessage(@NotNull(message = "群聊id不能为空") @RequestParam Long groupId, - @NotNull(message = "页码不能为空") @RequestParam Long page, - @NotNull(message = "size不能为空") @RequestParam Long size) { + @NotNull(message = "页码不能为空") @RequestParam Long page, + @NotNull(message = "size不能为空") @RequestParam Long size) { return ResultUtils.success(groupMessageService.findHistoryMessage(groupId, page, size)); } } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java b/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java index 4a960a1..49c0e34 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java @@ -7,14 +7,13 @@ import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.IUserService; import com.bx.implatform.vo.LoginVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; - -@Api(tags = "用户登录和注册") +@Tag(name = "用户登录和注册") @RestController @RequiredArgsConstructor public class LoginController { @@ -22,30 +21,28 @@ public class LoginController { private final IUserService userService; @PostMapping("/login") - @ApiOperation(value = "用户登陆", notes = "用户登陆") + @Operation(summary = "用户登陆", description = "用户登陆") public Result login(@Valid @RequestBody LoginDTO dto) { LoginVO vo = userService.login(dto); return ResultUtils.success(vo); } - @PutMapping("/refreshToken") - @ApiOperation(value = "刷新token", notes = "用refreshtoken换取新的token") + @Operation(summary = "刷新token", description = "用refreshtoken换取新的token") public Result refreshToken(@RequestHeader("refreshToken") String refreshToken) { LoginVO vo = userService.refreshToken(refreshToken); return ResultUtils.success(vo); } - @PostMapping("/register") - @ApiOperation(value = "用户注册", notes = "用户注册") + @Operation(summary = "用户注册", description = "用户注册") public Result register(@Valid @RequestBody RegisterDTO dto) { userService.register(dto); return ResultUtils.success(); } @PutMapping("/modifyPwd") - @ApiOperation(value = "修改密码", notes = "修改用户密码") + @Operation(summary = "修改密码", description = "修改用户密码") public Result modifyPassword(@Valid @RequestBody ModifyPwdDTO dto) { userService.modifyPassword(dto); return ResultUtils.success(); diff --git a/im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java b/im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java index 9f99531..7cc3da1 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java @@ -5,16 +5,16 @@ import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.IPrivateMessageService; import com.bx.implatform.vo.PrivateMessageVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import javax.validation.constraints.NotNull; import java.util.List; -@Api(tags = "私聊消息") +@Tag(name = "私聊消息") @RestController @RequestMapping("/message/private") @RequiredArgsConstructor @@ -23,44 +23,44 @@ public class PrivateMessageController { private final IPrivateMessageService privateMessageService; @PostMapping("/send") - @ApiOperation(value = "发送消息", notes = "发送私聊消息") + @Operation(summary = "发送消息", description = "发送私聊消息") public Result sendMessage(@Valid @RequestBody PrivateMessageDTO vo) { return ResultUtils.success(privateMessageService.sendMessage(vo)); } - @DeleteMapping("/recall/{id}") - @ApiOperation(value = "撤回消息", notes = "撤回私聊消息") - public Result recallMessage(@NotNull(message = "消息id不能为空") @PathVariable Long id) { + @Operation(summary = "撤回消息", description = "撤回私聊消息") + public Result recallMessage(@NotNull(message = "消息id不能为空") @PathVariable("id") Long id) { privateMessageService.recallMessage(id); return ResultUtils.success(); } @GetMapping("/pullOfflineMessage") - @ApiOperation(value = "拉取离线消息", notes = "拉取离线消息,消息将通过webscoket异步推送") - public Result pullOfflineMessage(@RequestParam Long minId) { + @Operation(summary = "拉取离线消息", description = "拉取离线消息,消息将通过webscoket异步推送") + public Result pullOfflineMessage(@RequestParam("minId") Long minId) { privateMessageService.pullOfflineMessage(minId); return ResultUtils.success(); } @PutMapping("/readed") - @ApiOperation(value = "消息已读", notes = "将会话中接收的消息状态置为已读") - public Result readedMessage(@RequestParam Long friendId) { + @Operation(summary = "消息已读", description = "将会话中接收的消息状态置为已读") + public Result readedMessage(@RequestParam("friendId") Long friendId) { privateMessageService.readedMessage(friendId); return ResultUtils.success(); } @GetMapping("/maxReadedId") - @ApiOperation(value = "获取最大已读消息的id",notes="获取某个会话中已读消息的最大id") - public Result getMaxReadedId(@RequestParam Long friendId){ + @Operation(summary = "获取最大已读消息的id", description = "获取某个会话中已读消息的最大id") + public Result getMaxReadedId(@RequestParam("friendId") Long friendId) { return ResultUtils.success(privateMessageService.getMaxReadedId(friendId)); } @GetMapping("/history") - @ApiOperation(value = "查询聊天记录", notes = "查询聊天记录") - public Result> recallMessage(@NotNull(message = "好友id不能为空") @RequestParam Long friendId, - @NotNull(message = "页码不能为空") @RequestParam Long page, - @NotNull(message = "size不能为空") @RequestParam Long size) { + @Operation(summary = "查询聊天记录", description = "查询聊天记录") + public Result> recallMessage( + @NotNull(message = "好友id不能为空") @RequestParam("friendId") Long friendId, + @NotNull(message = "页码不能为空") @RequestParam("page") Long page, + @NotNull(message = "size不能为空") @RequestParam("size") Long size) { return ResultUtils.success(privateMessageService.findHistoryMessage(friendId, page, size)); } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/SystemController.java b/im-platform/src/main/java/com/bx/implatform/controller/SystemController.java index d3cd30b..fd6de4d 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/SystemController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/SystemController.java @@ -1,14 +1,15 @@ package com.bx.implatform.controller; import com.bx.implatform.config.WebrtcConfig; -import com.bx.implatform.dto.PrivateMessageDTO; import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.vo.SystemConfigVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; @@ -17,7 +18,7 @@ import org.springframework.web.bind.annotation.*; * @date: 2024-06-10 * @version: 1.0 */ -@Api(tags = "系统相关") +@Tag(name = "系统相关") @RestController @RequestMapping("/system") @RequiredArgsConstructor @@ -26,7 +27,7 @@ public class SystemController { private final WebrtcConfig webrtcConfig; @GetMapping("/config") - @ApiOperation(value = "加载系统配置", notes = "加载系统配置") + @Operation(summary = "加载系统配置", description = "加载系统配置") public Result loadConfig() { return ResultUtils.success(new SystemConfigVO(webrtcConfig)); } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java index 1291db2..dd6c133 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java @@ -9,16 +9,16 @@ import com.bx.implatform.session.UserSession; import com.bx.implatform.util.BeanUtils; import com.bx.implatform.vo.OnlineTerminalVO; import com.bx.implatform.vo.UserVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import javax.validation.constraints.NotEmpty; import java.util.List; -@Api(tags = "用户") +@Tag(name = "用户") @RestController @RequestMapping("/user") @RequiredArgsConstructor @@ -27,14 +27,14 @@ public class UserController { private final IUserService userService; @GetMapping("/terminal/online") - @ApiOperation(value = "判断用户哪个终端在线", notes = "返回在线的用户id的终端集合") - public Result> getOnlineTerminal(@NotEmpty @RequestParam("userIds") String userIds) { + @Operation(summary = "判断用户哪个终端在线", description = "返回在线的用户id的终端集合") + public Result> getOnlineTerminal(@NotNull @RequestParam("userIds") String userIds) { return ResultUtils.success(userService.getOnlineTerminals(userIds)); } @GetMapping("/self") - @ApiOperation(value = "获取当前用户信息", notes = "获取当前用户信息") + @Operation(summary = "获取当前用户信息", description = "获取当前用户信息") public Result findSelfInfo() { UserSession session = SessionContext.getSession(); User user = userService.getById(session.getUserId()); @@ -44,20 +44,20 @@ public class UserController { @GetMapping("/find/{id}") - @ApiOperation(value = "查找用户", notes = "根据id查找用户") - public Result findById(@NotEmpty @PathVariable("id") Long id) { + @Operation(summary = "查找用户", description = "根据id查找用户") + public Result findById(@NotNull @PathVariable("id") Long id) { return ResultUtils.success(userService.findUserById(id)); } @PutMapping("/update") - @ApiOperation(value = "修改用户信息", notes = "修改用户信息,仅允许修改登录用户信息") + @Operation(summary = "修改用户信息", description = "修改用户信息,仅允许修改登录用户信息") public Result update(@Valid @RequestBody UserVO vo) { userService.update(vo); return ResultUtils.success(); } @GetMapping("/findByName") - @ApiOperation(value = "查找用户", notes = "根据用户名或昵称查找用户") + @Operation(summary = "查找用户", description = "根据用户名或昵称查找用户") public Result> findByName(@RequestParam("name") String name) { return ResultUtils.success(userService.findUserByName(name)); } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java index c9fb6b7..fa3bf62 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java @@ -1,24 +1,22 @@ package com.bx.implatform.controller; -import com.bx.implatform.config.WebrtcConfig; import com.bx.implatform.dto.*; import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.IWebrtcGroupService; import com.bx.implatform.vo.WebrtcGroupInfoVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; - /** * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ -@Api(tags = "webrtc视频多人通话") +@Tag(name = "webrtc视频多人通话") @RestController @RequestMapping("/webrtc/group") @RequiredArgsConstructor @@ -26,101 +24,101 @@ public class WebrtcGroupController { private final IWebrtcGroupService webrtcGroupService; - @ApiOperation(httpMethod = "POST", value = "发起群视频通话") + @Operation(summary = "发起群视频通话") @PostMapping("/setup") public Result setup(@Valid @RequestBody WebrtcGroupSetupDTO dto) { webrtcGroupService.setup(dto); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "接受通话") + @Operation(summary = "接受通话") @PostMapping("/accept") - public Result accept(@RequestParam Long groupId) { + public Result accept(@RequestParam("groupId") Long groupId) { webrtcGroupService.accept(groupId); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "拒绝通话") + @Operation(summary = "拒绝通话") @PostMapping("/reject") - public Result reject(@RequestParam Long groupId) { + public Result reject(@RequestParam("groupId") Long groupId) { webrtcGroupService.reject(groupId); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "通话失败") + @Operation(summary = "通话失败") @PostMapping("/failed") public Result failed(@Valid @RequestBody WebrtcGroupFailedDTO dto) { webrtcGroupService.failed(dto); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "进入视频通话") + @Operation(summary = "进入视频通话") @PostMapping("/join") - public Result join(@RequestParam Long groupId) { + public Result join(@RequestParam("groupId") Long groupId) { webrtcGroupService.join(groupId); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "取消通话") + @Operation(summary = "取消通话") @PostMapping("/cancel") - public Result cancel(@RequestParam Long groupId) { + public Result cancel(@RequestParam("groupId") Long groupId) { webrtcGroupService.cancel(groupId); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "离开视频通话") + @Operation(summary = "离开视频通话") @PostMapping("/quit") - public Result quit(@RequestParam Long groupId) { + public Result quit(@RequestParam("groupId") Long groupId) { webrtcGroupService.quit(groupId); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "推送offer信息") + @Operation(summary = "推送offer信息") @PostMapping("/offer") public Result offer(@Valid @RequestBody WebrtcGroupOfferDTO dto) { webrtcGroupService.offer(dto); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "推送answer信息") + @Operation(summary = "推送answer信息") @PostMapping("/answer") public Result answer(@Valid @RequestBody WebrtcGroupAnswerDTO dto) { webrtcGroupService.answer(dto); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "邀请用户进入视频通话") + @Operation(summary = "邀请用户进入视频通话") @PostMapping("/invite") public Result invite(@Valid @RequestBody WebrtcGroupInviteDTO dto) { webrtcGroupService.invite(dto); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "同步candidate") + @Operation(summary = "同步candidate") @PostMapping("/candidate") public Result candidate(@Valid @RequestBody WebrtcGroupCandidateDTO dto) { webrtcGroupService.candidate(dto); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "设备操作") + @Operation(summary = "设备操作") @PostMapping("/device") public Result device(@Valid @RequestBody WebrtcGroupDeviceDTO dto) { webrtcGroupService.device(dto); return ResultUtils.success(); } - @ApiOperation(httpMethod = "GET", value = "获取通话信息") + @Operation(summary = "获取通话信息") @GetMapping("/info") - public Result info(@RequestParam Long groupId) { + public Result info(@RequestParam("groupId") Long groupId) { return ResultUtils.success(webrtcGroupService.info(groupId)); } - @ApiOperation(httpMethod = "POST", value = "获取通话信息") + @Operation(summary = "获取通话信息") @PostMapping("/heartbeat") - public Result heartbeat(@RequestParam Long groupId) { + public Result heartbeat(@RequestParam("groupId") Long groupId) { webrtcGroupService.heartbeat(groupId); return ResultUtils.success(); } - } +} diff --git a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java index 7d583c6..c0d4728 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java @@ -1,18 +1,15 @@ package com.bx.implatform.controller; import com.bx.implatform.annotation.OnlineCheck; -import com.bx.implatform.config.ICEServer; import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.IWebrtcPrivateService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import java.util.List; - -@Api(tags = "webrtc视频单人通话") +@Tag(name = "webrtc视频单人通话") @RestController @RequestMapping("/webrtc/private") @RequiredArgsConstructor @@ -21,60 +18,59 @@ public class WebrtcPrivateController { private final IWebrtcPrivateService webrtcPrivateService; @OnlineCheck - @ApiOperation(httpMethod = "POST", value = "呼叫视频通话") + @Operation(summary = "呼叫视频通话") @PostMapping("/call") - public Result call(@RequestParam Long uid, @RequestParam(defaultValue = "video") String mode, @RequestBody String offer) { + public Result call(@RequestParam("uid") Long uid, @RequestParam(name = "mode", defaultValue = "video") String mode, + @RequestBody String offer) { webrtcPrivateService.call(uid, mode, offer); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "接受视频通话") + @Operation(summary = "接受视频通话") @PostMapping("/accept") - public Result accept(@RequestParam Long uid, @RequestBody String answer) { + public Result accept(@RequestParam("uid") Long uid, @RequestBody String answer) { webrtcPrivateService.accept(uid, answer); return ResultUtils.success(); } - - @ApiOperation(httpMethod = "POST", value = "拒绝视频通话") + @Operation(summary = "拒绝视频通话") @PostMapping("/reject") - public Result reject(@RequestParam Long uid) { + public Result reject(@RequestParam("uid") Long uid) { webrtcPrivateService.reject(uid); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "取消呼叫") + @Operation(summary = "取消呼叫") @PostMapping("/cancel") - public Result cancel(@RequestParam Long uid) { + public Result cancel(@RequestParam("uid") Long uid) { webrtcPrivateService.cancel(uid); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "呼叫失败") + @Operation(summary = "呼叫失败") @PostMapping("/failed") - public Result failed(@RequestParam Long uid, @RequestParam String reason) { + public Result failed(@RequestParam("uid") Long uid, @RequestParam String reason) { webrtcPrivateService.failed(uid, reason); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "挂断") + @Operation(summary = "挂断") @PostMapping("/handup") - public Result handup(@RequestParam Long uid) { + public Result handup(@RequestParam("uid") Long uid) { webrtcPrivateService.handup(uid); return ResultUtils.success(); } - @PostMapping("/candidate") - @ApiOperation(httpMethod = "POST", value = "同步candidate") - public Result candidate(@RequestParam Long uid, @RequestBody String candidate) { + @Operation(summary = "同步candidate") + public Result candidate(@RequestParam("uid") Long uid, @RequestBody String candidate) { webrtcPrivateService.candidate(uid, candidate); return ResultUtils.success(); } - @ApiOperation(httpMethod = "POST", value = "获取通话信息") + @Operation(summary = "获取通话信息") @PostMapping("/heartbeat") - public Result heartbeat(@RequestParam Long uid) { + public Result heartbeat(@RequestParam("uid") Long uid) { webrtcPrivateService.heartbeat(uid); return ResultUtils.success(); } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/GroupBanDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/GroupBanDTO.java index ec36509..cbe673d 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/GroupBanDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/GroupBanDTO.java @@ -1,7 +1,7 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; + +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,12 +10,12 @@ import lombok.Data; * @version: 1.0 */ @Data -@ApiModel(description = "群组封禁") +@Schema(description = "群组封禁") public class GroupBanDTO { - @ApiModelProperty(value = "群组id") + @Schema(description = "群组id") private Long id; - @ApiModelProperty(value = "封禁原因") + @Schema(description = "封禁原因") private String reason; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/GroupMessageDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/GroupMessageDTO.java index 6af8f38..4fbf715 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/GroupMessageDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/GroupMessageDTO.java @@ -1,36 +1,35 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.Data; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; import java.util.List; @Data -@ApiModel("群聊消息DTO") +@Schema(description = "群聊消息DTO") public class GroupMessageDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; @Length(max = 1024, message = "发送内容长度不得大于1024") @NotEmpty(message = "发送内容不可为空") - @ApiModelProperty(value = "发送内容") + @Schema(description = "发送内容") private String content; @NotNull(message = "消息类型不可为空") - @ApiModelProperty(value = "消息类型") + @Schema(description = "消息类型") private Integer type; - @ApiModelProperty(value = "是否回执消息") + @Schema(description = "是否回执消息") private Boolean receipt = false; @Size(max = 20, message = "一次最多只能@20个小伙伴哦") - @ApiModelProperty(value = "被@用户列表") + @Schema(description = "被@用户列表") private List atUserIds; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/GroupUnbanDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/GroupUnbanDTO.java index 7a9a7fd..2ccffa6 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/GroupUnbanDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/GroupUnbanDTO.java @@ -1,7 +1,6 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,10 +9,10 @@ import lombok.Data; * @version: 1.0 */ @Data -@ApiModel(description = "群组解锁") +@Schema(description = "群组解锁") public class GroupUnbanDTO { - @ApiModelProperty(value = "群组id") + @Schema(description = "群组id") private Long id; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/LoginDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/LoginDTO.java index 0cdede2..30b240e 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/LoginDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/LoginDTO.java @@ -1,30 +1,28 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - @Data -@ApiModel("用户登录DTO") +@Schema(description = "用户登录DTO") public class LoginDTO { @Max(value = 2, message = "登录终端类型取值范围:0,2") @Min(value = 0, message = "登录终端类型取值范围:0,2") @NotNull(message = "登录终端类型不可为空") - @ApiModelProperty(value = "登录终端 0:web 1:app 2:pc") + @Schema(description = "登录终端 0:web 1:app 2:pc") private Integer terminal; @NotEmpty(message = "用户名不可为空") - @ApiModelProperty(value = "用户名") + @Schema(description = "用户名") private String userName; @NotEmpty(message = "用户密码不可为空") - @ApiModelProperty(value = "用户密码") + @Schema(description = "用户密码") private String password; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/ModifyPwdDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/ModifyPwdDTO.java index 3ba3078..c733493 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/ModifyPwdDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/ModifyPwdDTO.java @@ -1,21 +1,19 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; -import javax.validation.constraints.NotEmpty; - @Data -@ApiModel("修改密码DTO") +@Schema(description = "修改密码DTO") public class ModifyPwdDTO { @NotEmpty(message = "旧用户密码不可为空") - @ApiModelProperty(value = "旧用户密码") + @Schema(description = "旧用户密码") private String oldPassword; @NotEmpty(message = "新用户密码不可为空") - @ApiModelProperty(value = "新用户密码") + @Schema(description = "新用户密码") private String newPassword; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/PrivateMessageDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/PrivateMessageDTO.java index 99cee20..4fb49e0 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/PrivateMessageDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/PrivateMessageDTO.java @@ -1,29 +1,27 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - @Data -@ApiModel("私聊消息DTO") +@Schema(description = "私聊消息DTO") public class PrivateMessageDTO { @NotNull(message = "接收用户id不可为空") - @ApiModelProperty(value = "接收用户id") + @Schema(description = "接收用户id") private Long recvId; @Length(max = 1024, message = "内容长度不得大于1024") @NotEmpty(message = "发送内容不可为空") - @ApiModelProperty(value = "发送内容") + @Schema(description = "发送内容") private String content; @NotNull(message = "消息类型不可为空") - @ApiModelProperty(value = "消息类型") + @Schema(description = "消息类型") private Integer type; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/RegisterDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/RegisterDTO.java index fd33135..f298808 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/RegisterDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/RegisterDTO.java @@ -1,29 +1,27 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.NotEmpty; - @Data -@ApiModel("用户注册DTO") +@Schema(description = "用户注册DTO") public class RegisterDTO { @Length(max = 64, message = "用户名不能大于64字符") @NotEmpty(message = "用户名不可为空") - @ApiModelProperty(value = "用户名") + @Schema(description = "用户名") private String userName; @Length(min = 5, max = 20, message = "密码长度必须在5-20个字符之间") @NotEmpty(message = "用户密码不可为空") - @ApiModelProperty(value = "用户密码") + @Schema(description = "用户密码") private String password; @Length(max = 64, message = "昵称不能大于64字符") @NotEmpty(message = "用户昵称不可为空") - @ApiModelProperty(value = "用户昵称") + @Schema(description = "用户昵称") private String nickName; diff --git a/im-platform/src/main/java/com/bx/implatform/dto/UserBanDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/UserBanDTO.java index 38571f9..f8953c6 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/UserBanDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/UserBanDTO.java @@ -1,7 +1,6 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,13 +9,13 @@ import lombok.Data; * @version: 1.0 */ @Data -@ApiModel("用户锁定DTO") +@Schema(description = "用户锁定DTO") public class UserBanDTO { - @ApiModelProperty(value = "用户id") + @Schema(description = "用户id") private Long id; - @ApiModelProperty(value = "锁定原因") + @Schema(description = "锁定原因") private String reason; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java index b66e68e..6e96bc0 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java @@ -1,31 +1,29 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - /** * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ @Data -@ApiModel("回复用户连接请求DTO") +@Schema(description = "回复用户连接请求DTO") public class WebrtcGroupAnswerDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; @NotNull(message = "用户id不可为空") - @ApiModelProperty(value = "用户id,代表回复谁的连接请求") + @Schema(description = "用户id,代表回复谁的连接请求") private Long userId; @NotEmpty(message = "anwer不可为空") - @ApiModelProperty(value = "用户本地anwer信息") + @Schema(description = "用户本地anwer信息") private String answer; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java index fd04e94..69d054e 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java @@ -1,32 +1,29 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import java.util.List; - /** * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ @Data -@ApiModel("发起群视频通话DTO") +@Schema(description = "发起群视频通话DTO") public class WebrtcGroupCandidateDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; @NotNull(message = "用户id不可为空") - @ApiModelProperty(value = "用户id") + @Schema(description = "用户id") private Long userId; @NotEmpty(message = "candidate信息不可为空") - @ApiModelProperty(value = "candidate信息") + @Schema(description = "candidate信息") private String candidate; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java index 5d87b4d..b7e2073 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java @@ -1,29 +1,26 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - /** * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ @Data -@ApiModel("用户设备操作DTO") +@Schema(description = "用户设备操作DTO") public class WebrtcGroupDeviceDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; - @ApiModelProperty(value = "是否开启摄像头") + @Schema(description = "是否开启摄像头") private Boolean isCamera; - @ApiModelProperty(value = "是否开启麦克风") + @Schema(description = "是否开启麦克风") private Boolean isMicroPhone; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java index 3df2cb9..fa2d5ba 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java @@ -1,25 +1,23 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotNull; - /** * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ @Data -@ApiModel("用户通话失败DTO") +@Schema(description = "用户通话失败DTO") public class WebrtcGroupFailedDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; - @ApiModelProperty(value = "失败原因") + @Schema(description = "失败原因") private String reason; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java index 7719a39..1c0f894 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java @@ -1,12 +1,11 @@ package com.bx.implatform.dto; import com.bx.implatform.session.WebrtcUserInfo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import java.util.List; /** @@ -15,15 +14,15 @@ import java.util.List; * @version: 1.0 */ @Data -@ApiModel("邀请用户进入群视频通话DTO") +@Schema(description = "邀请用户进入群视频通话DTO") public class WebrtcGroupInviteDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; @NotEmpty(message = "参与用户信息不可为空") - @ApiModelProperty(value = "参与用户信息") + @Schema(description = "参与用户信息") private List userInfos; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java index adbc066..b59adb0 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java @@ -1,23 +1,20 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - /** * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ @Data -@ApiModel("进入群视频通话DTO") +@Schema(description = "进入群视频通话DTO") public class WebrtcGroupJoinDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java index 057fe20..dbe0048 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java @@ -1,31 +1,29 @@ package com.bx.implatform.dto; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - /** * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ @Data -@ApiModel("回复用户连接请求DTO") +@Schema(description = "回复用户连接请求DTO") public class WebrtcGroupOfferDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; @NotNull(message = "用户id不可为空") - @ApiModelProperty(value = "用户id,代表回复谁的连接请求") + @Schema(description = "用户id,代表回复谁的连接请求") private Long userId; @NotEmpty(message = "offer不可为空") - @ApiModelProperty(value = "用户offer信息") + @Schema(description = "用户offer信息") private String offer; } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java index f59989f..724ceec 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java @@ -1,12 +1,11 @@ package com.bx.implatform.dto; import com.bx.implatform.session.WebrtcUserInfo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import java.util.List; /** @@ -15,15 +14,15 @@ import java.util.List; * @version: 1.0 */ @Data -@ApiModel("发起群视频通话DTO") +@Schema(description = "发起群视频通话DTO") public class WebrtcGroupSetupDTO { @NotNull(message = "群聊id不可为空") - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; @NotEmpty(message = "参与用户信息不可为空") - @ApiModelProperty(value = "参与用户信息") + @Schema(description = "参与用户信息") private List userInfos; } diff --git a/im-platform/src/main/java/com/bx/implatform/entity/Friend.java b/im-platform/src/main/java/com/bx/implatform/entity/Friend.java index 364ffe1..f869b81 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/Friend.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/Friend.java @@ -1,14 +1,9 @@ package com.bx.implatform.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; -import lombok.EqualsAndHashCode; -import java.io.Serializable; import java.util.Date; /** @@ -20,52 +15,39 @@ import java.util.Date; * @since 2022-10-22 */ @Data -@EqualsAndHashCode(callSuper = false) @TableName("im_friend") -public class Friend extends Model { +public class Friend{ - private static final long serialVersionUID = 1L; /** * id */ - @TableId(value = "id", type = IdType.AUTO) + @TableId private Long id; /** * 用户id */ - @TableField("user_id") private Long userId; /** * 好友id */ - @TableField("friend_id") private Long friendId; /** * 用户昵称 */ - @TableField("friend_nick_name") private String friendNickName; /** * 用户头像 */ - @TableField("friend_head_image") private String friendHeadImage; /** * 创建时间 */ - @TableField("created_time") private Date createdTime; - - @Override - protected Serializable pkVal() { - return this.id; - } - } diff --git a/im-platform/src/main/java/com/bx/implatform/entity/Group.java b/im-platform/src/main/java/com/bx/implatform/entity/Group.java index 1f4ba0b..86cdd55 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/Group.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/Group.java @@ -1,14 +1,9 @@ package com.bx.implatform.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; -import lombok.EqualsAndHashCode; -import java.io.Serializable; import java.util.Date; /** @@ -18,64 +13,60 @@ import java.util.Date; * @since 2022-10-31 */ @Data -@EqualsAndHashCode(callSuper = false) @TableName("im_group") -public class Group extends Model { - - private static final long serialVersionUID = 1L; +public class Group { /** * id */ - @TableId(value = "id", type = IdType.AUTO) + @TableId private Long id; /** * 群名字 */ - @TableField("name") private String name; /** * 群主id */ - @TableField("owner_id") private Long ownerId; /** - * 头像 + * 群头像 */ - @TableField("head_image") private String headImage; /** - * 头像缩略图 + * 群头像缩略图 */ - @TableField("head_image_thumb") private String headImageThumb; /** * 群公告 */ - @TableField("notice") private String notice; /** - * 是否已删除 + * 是否被封禁 */ - @TableField("deleted") - private Boolean deleted; + private Boolean isBanned; + + /** + * 被封禁原因 + */ + private String reason; /** * 创建时间 */ - @TableField("created_time") private Date createdTime; + /** + * 是否已删除 + */ + private Boolean deleted; + - @Override - protected Serializable pkVal() { - return this.id; - } } diff --git a/im-platform/src/main/java/com/bx/implatform/entity/GroupMember.java b/im-platform/src/main/java/com/bx/implatform/entity/GroupMember.java index a7d362d..ef6d7a3 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/GroupMember.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/GroupMember.java @@ -1,14 +1,11 @@ package com.bx.implatform.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; import lombok.EqualsAndHashCode; -import java.io.Serializable; import java.util.Date; /** @@ -24,67 +21,51 @@ import java.util.Date; @TableName("im_group_member") public class GroupMember extends Model { - private static final long serialVersionUID = 1L; - /** * id */ - @TableId(value = "id", type = IdType.AUTO) + @TableId private Long id; /** * 群id */ - @TableField("group_id") private Long groupId; /** * 用户id */ - @TableField("user_id") private Long userId; /** - * 群内显示名称 + * 组内显示名称 */ - @TableField("alias_name") private String aliasName; /** - * 头像 + * 用户头像 */ - @TableField("head_image") private String headImage; - /** * 备注 */ - @TableField("remark") private String remark; /** - * 是否已离开群聊 + * 是否已退出 */ - @TableField("quit") private Boolean quit; - /** - * 退群时间 - */ - @TableField("quit_time") - private Date quitTime; - /** * 创建时间 */ - @TableField("created_time") private Date createdTime; + /** + * 退出时间 + */ + private Date quitTime; - @Override - protected Serializable pkVal() { - return this.id; - } } diff --git a/im-platform/src/main/java/com/bx/implatform/entity/GroupMessage.java b/im-platform/src/main/java/com/bx/implatform/entity/GroupMessage.java index ebe02d5..a0ec72e 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/GroupMessage.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/GroupMessage.java @@ -1,14 +1,9 @@ package com.bx.implatform.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; -import lombok.EqualsAndHashCode; -import java.io.Serializable; import java.util.Date; /** @@ -20,87 +15,68 @@ import java.util.Date; * @since 2022-10-31 */ @Data -@EqualsAndHashCode(callSuper = false) -@TableName("im_group_message") -public class GroupMessage extends Model { - private static final long serialVersionUID = 1L; +@TableName("im_group_message") +public class GroupMessage { /** * id */ - @TableId(value = "id", type = IdType.AUTO) + @TableId private Long id; /** * 群id */ - @TableField("group_id") private Long groupId; /** * 发送用户id */ - @TableField("send_id") private Long sendId; /** * 发送用户昵称 */ - @TableField("send_nick_name") private String sendNickName; /** * 接受用户id,为空表示全体发送 */ - @TableField("recv_ids") private String recvIds; /** * @用户列表 */ - @TableField("at_user_ids") private String atUserIds; /** * 发送内容 */ - @TableField("content") private String content; /** * 消息类型 MessageType */ - @TableField("type") private Integer type; /** * 是否回执消息 */ - @TableField("receipt") private Boolean receipt; /** * 回执消息是否完成 */ - @TableField("receipt_ok") private Boolean receiptOk; /** * 状态 MessageStatus */ - @TableField("status") private Integer status; /** * 发送时间 */ - @TableField("send_time") private Date sendTime; - - @Override - protected Serializable pkVal() { - return this.id; - } - } diff --git a/im-platform/src/main/java/com/bx/implatform/entity/PrivateMessage.java b/im-platform/src/main/java/com/bx/implatform/entity/PrivateMessage.java index 1914d2e..cc605f1 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/PrivateMessage.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/PrivateMessage.java @@ -1,14 +1,8 @@ package com.bx.implatform.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; -import lombok.EqualsAndHashCode; -import java.io.Serializable; import java.util.Date; /** @@ -20,59 +14,44 @@ import java.util.Date; * @since 2022-10-01 */ @Data -@EqualsAndHashCode(callSuper = false) @TableName("im_private_message") -public class PrivateMessage extends Model { - - private static final long serialVersionUID = 1L; +public class PrivateMessage { /** * id */ - @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 发送用户id */ - @TableField("send_id") private Long sendId; /** * 接收用户id */ - @TableField("recv_id") private Long recvId; /** * 发送内容 */ - @TableField("content") private String content; /** - * 消息类型 0:文字 1:图片 2:文件 3:语音 10:撤回消息 + * 消息类型 MessageType */ - @TableField("type") private Integer type; /** * 状态 */ - @TableField("status") private Integer status; /** * 发送时间 */ - @TableField("send_time") private Date sendTime; - @Override - protected Serializable pkVal() { - return this.id; - } - } diff --git a/im-platform/src/main/java/com/bx/implatform/entity/User.java b/im-platform/src/main/java/com/bx/implatform/entity/User.java index 878310c..6767630 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/User.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/User.java @@ -1,14 +1,9 @@ package com.bx.implatform.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; -import lombok.EqualsAndHashCode; -import java.io.Serializable; import java.util.Date; /** @@ -20,93 +15,78 @@ import java.util.Date; * @since 2022-10-01 */ @Data -@EqualsAndHashCode(callSuper = false) @TableName("im_user") -public class User extends Model { - - private static final long serialVersionUID = 1L; +public class User { /** * id */ - @TableId(value = "id", type = IdType.AUTO) + @TableId private Long id; /** * 用户名 */ - @TableField("user_name") private String userName; /** - * 用户名 + * 用户昵称 */ - @TableField("nick_name") private String nickName; /** - * 性别 + * 用户头像 */ - @TableField("sex") - private Integer sex; + private String headImage; /** - * 头像 + * 用户头像缩略图 */ - @TableField("head_image") - private String headImage; + private String headImageThumb; /** - * 头像缩略图 + * 密码(明文) */ - @TableField("head_image_thumb") - private String headImageThumb; + private String password; /** - * 用户类型 1:普通用户 2:审核专用账户 + * 性别 0:男 1::女 */ - @TableField("type") - private Integer type; + private Integer sex; /** * 个性签名 */ - @TableField("signature") private String signature; - /** - * 密码 - */ - @TableField("password") - private String password; /** - * 是否被封禁 + * 账号是否被封禁 */ - @TableField("is_banned") private Boolean isBanned; /** - * 被封禁原因 + * 账号被封禁原因 */ - @TableField("reason") private String reason; /** * 最后登录时间 */ - @TableField("last_login_time") private Date lastLoginTime; /** - * 创建时间 + * 创建时间(注册时间) */ - @TableField("created_time") private Date createdTime; + /** + * 账号类型 1:普通用户 2:wx小程序审核账户 + */ + private Integer type; - @Override - protected Serializable pkVal() { - return this.id; - } + /** + * 客户端id,用于uni-push推送 + */ + private String cid; } diff --git a/im-platform/src/main/java/com/bx/implatform/filter/CacheFilter.java b/im-platform/src/main/java/com/bx/implatform/filter/CacheFilter.java index e33a6ff..6872796 100644 --- a/im-platform/src/main/java/com/bx/implatform/filter/CacheFilter.java +++ b/im-platform/src/main/java/com/bx/implatform/filter/CacheFilter.java @@ -1,11 +1,11 @@ package com.bx.implatform.filter; +import jakarta.servlet.*; +import jakarta.servlet.annotation.WebFilter; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.stereotype.Component; -import javax.servlet.*; -import javax.servlet.annotation.WebFilter; -import javax.servlet.http.HttpServletRequest; import java.io.IOException; @Component diff --git a/im-platform/src/main/java/com/bx/implatform/filter/CacheHttpServletRequestWrapper.java b/im-platform/src/main/java/com/bx/implatform/filter/CacheHttpServletRequestWrapper.java index 9101015..1e301a6 100644 --- a/im-platform/src/main/java/com/bx/implatform/filter/CacheHttpServletRequestWrapper.java +++ b/im-platform/src/main/java/com/bx/implatform/filter/CacheHttpServletRequestWrapper.java @@ -1,11 +1,11 @@ package com.bx.implatform.filter; +import jakarta.servlet.ReadListener; +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequestWrapper; import org.apache.commons.compress.utils.IOUtils; -import javax.servlet.ReadListener; -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; import java.io.*; public class CacheHttpServletRequestWrapper extends HttpServletRequestWrapper { diff --git a/im-platform/src/main/java/com/bx/implatform/generator/CodeGenerator.java b/im-platform/src/main/java/com/bx/implatform/generator/CodeGenerator.java index d0f423f..ea0099c 100644 --- a/im-platform/src/main/java/com/bx/implatform/generator/CodeGenerator.java +++ b/im-platform/src/main/java/com/bx/implatform/generator/CodeGenerator.java @@ -1,102 +1,102 @@ package com.bx.implatform.generator; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.core.toolkit.StringPool; -import com.baomidou.mybatisplus.generator.AutoGenerator; -import com.baomidou.mybatisplus.generator.InjectionConfig; -import com.baomidou.mybatisplus.generator.config.*; -import com.baomidou.mybatisplus.generator.config.po.TableInfo; -import com.baomidou.mybatisplus.generator.config.rules.DateType; -import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; -import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; - -import java.util.ArrayList; -import java.util.List; +//import com.baomidou.mybatisplus.annotation.IdType; +//import com.baomidou.mybatisplus.core.toolkit.StringPool; +//import com.baomidou.mybatisplus.generator.AutoGenerator; +//import com.baomidou.mybatisplus.generator.InjectionConfig; +//import com.baomidou.mybatisplus.generator.config.*; +//import com.baomidou.mybatisplus.generator.config.po.TableInfo; +//import com.baomidou.mybatisplus.generator.config.rules.DateType; +//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +//import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; +// +//import java.util.ArrayList; +//import java.util.List; public class CodeGenerator { - public static void main(String[] args) { - // 代码生成器 - AutoGenerator mpg = new AutoGenerator(); - - // 全局配置 - GlobalConfig gc = new GlobalConfig(); - //生成的代码输出路径,自己根据需要修改 - String projectPath = "d:\\work\\project\\code"; - gc.setOutputDir(projectPath + "/src/main/java"); - gc.setAuthor("blue"); - gc.setOpen(false); - gc.setFileOverride(true); - gc.setActiveRecord(true); - gc.setBaseColumnList(true); - gc.setBaseResultMap(true); - gc.setIdType(IdType.AUTO); - gc.setDateType(DateType.ONLY_DATE); - mpg.setGlobalConfig(gc); - - // 数据源配置 - DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:mysql://localhost:3306/box-im?useUnicode=true&characterEncoding=utf-8"); - dsc.setDriverName("com.mysql.jdbc.Driver"); - dsc.setUsername("root"); - dsc.setPassword("root"); - mpg.setDataSource(dsc); - - // 包配置 - PackageConfig pc = new PackageConfig(); - pc.setModuleName(""); - pc.setParent("com.bx"); - mpg.setPackageInfo(pc); - - // 如果模板引擎是 velocity - String templatePath = "/templates/mapper.xml.vm"; - - // 自定义输出配置 - List focList = new ArrayList<>(); - // 自定义配置会被优先输出 - focList.add(new FileOutConfig(templatePath) { - @Override - public String outputFile(TableInfo tableInfo) { - // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! - return projectPath + "/src/main/resources/mapper/" - + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; - } - }); - - // 自定义配置 - InjectionConfig cfg = new InjectionConfig() { - @Override - public void initMap() { - // to do nothing - } - }; - cfg.setFileOutConfigList(focList); - mpg.setCfg(cfg); - - // 配置模板 - TemplateConfig templateConfig = new TemplateConfig(); - templateConfig.setXml(null); - mpg.setTemplate(templateConfig); - - // 策略配置 - StrategyConfig strategy = new StrategyConfig(); - // 下划线转驼峰 - strategy.setNaming(NamingStrategy.underline_to_camel); - strategy.setColumnNaming(NamingStrategy.underline_to_camel); - strategy.setEntityTableFieldAnnotationEnable(true); - strategy.setVersionFieldName("version"); - //逻辑删除的字段 - strategy.setLogicDeleteFieldName("deleted"); - strategy.setEntityLombokModel(true); - strategy.setRestControllerStyle(true); - - - //多张表的时候直接在代码中写表名 - strategy.setInclude("friends"); - strategy.setTablePrefix(""); - mpg.setStrategy(strategy); - - mpg.setTemplateEngine(new VelocityTemplateEngine()); - mpg.execute(); - } +// public static void main(String[] args) { +// // 代码生成器 +// AutoGenerator mpg = new AutoGenerator(); +// +// // 全局配置 +// GlobalConfig gc = new GlobalConfig(); +// //生成的代码输出路径,自己根据需要修改 +// String projectPath = "d:\\work\\project\\code"; +// gc.setOutputDir(projectPath + "/src/main/java"); +// gc.setAuthor("blue"); +// gc.setOpen(false); +// gc.setFileOverride(true); +// gc.setActiveRecord(true); +// gc.setBaseColumnList(true); +// gc.setBaseResultMap(true); +// gc.setIdType(IdType.AUTO); +// gc.setDateType(DateType.ONLY_DATE); +// mpg.setGlobalConfig(gc); +// +// // 数据源配置 +// DataSourceConfig dsc = new DataSourceConfig(); +// dsc.setUrl("jdbc:mysql://localhost:3306/box-im?useUnicode=true&characterEncoding=utf-8"); +// dsc.setDriverName("com.mysql.jdbc.Driver"); +// dsc.setUsername("root"); +// dsc.setPassword("root"); +// mpg.setDataSource(dsc); +// +// // 包配置 +// PackageConfig pc = new PackageConfig(); +// pc.setModuleName(""); +// pc.setParent("com.bx"); +// mpg.setPackageInfo(pc); +// +// // 如果模板引擎是 velocity +// String templatePath = "/templates/mapper.xml.vm"; +// +// // 自定义输出配置 +// List focList = new ArrayList<>(); +// // 自定义配置会被优先输出 +// focList.add(new FileOutConfig(templatePath) { +// @Override +// public String outputFile(TableInfo tableInfo) { +// // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! +// return projectPath + "/src/main/resources/mapper/" +// + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; +// } +// }); +// +// // 自定义配置 +// InjectionConfig cfg = new InjectionConfig() { +// @Override +// public void initMap() { +// // to do nothing +// } +// }; +// cfg.setFileOutConfigList(focList); +// mpg.setCfg(cfg); +// +// // 配置模板 +// TemplateConfig templateConfig = new TemplateConfig(); +// templateConfig.setXml(null); +// mpg.setTemplate(templateConfig); +// +// // 策略配置 +// StrategyConfig strategy = new StrategyConfig(); +// // 下划线转驼峰 +// strategy.setNaming(NamingStrategy.underline_to_camel); +// strategy.setColumnNaming(NamingStrategy.underline_to_camel); +// strategy.setEntityTableFieldAnnotationEnable(true); +// strategy.setVersionFieldName("version"); +// //逻辑删除的字段 +// strategy.setLogicDeleteFieldName("deleted"); +// strategy.setEntityLombokModel(true); +// strategy.setRestControllerStyle(true); +// +// +// //多张表的时候直接在代码中写表名 +// strategy.setInclude("friends"); +// strategy.setTablePrefix(""); +// mpg.setStrategy(strategy); +// +// mpg.setTemplateEngine(new VelocityTemplateEngine()); +// mpg.execute(); +// } } diff --git a/im-platform/src/main/java/com/bx/implatform/interceptor/AuthInterceptor.java b/im-platform/src/main/java/com/bx/implatform/interceptor/AuthInterceptor.java index d964cd5..b3bd248 100644 --- a/im-platform/src/main/java/com/bx/implatform/interceptor/AuthInterceptor.java +++ b/im-platform/src/main/java/com/bx/implatform/interceptor/AuthInterceptor.java @@ -7,6 +7,8 @@ import com.bx.implatform.config.JwtProperties; import com.bx.implatform.enums.ResultCode; import com.bx.implatform.exception.GlobalException; import com.bx.implatform.session.UserSession; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; @@ -14,9 +16,6 @@ import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - @Slf4j @Component @AllArgsConstructor diff --git a/im-platform/src/main/java/com/bx/implatform/interceptor/XssInterceptor.java b/im-platform/src/main/java/com/bx/implatform/interceptor/XssInterceptor.java index d747176..073b2c4 100644 --- a/im-platform/src/main/java/com/bx/implatform/interceptor/XssInterceptor.java +++ b/im-platform/src/main/java/com/bx/implatform/interceptor/XssInterceptor.java @@ -3,14 +3,14 @@ package com.bx.implatform.interceptor; import com.bx.implatform.enums.ResultCode; import com.bx.implatform.exception.GlobalException; import com.bx.implatform.util.XssUtil; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.util.Map; diff --git a/im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java b/im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java index d927b99..25a31f6 100644 --- a/im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java +++ b/im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java @@ -5,9 +5,7 @@ import com.bx.imclient.listener.MessageListener; import com.bx.imcommon.enums.IMListenerType; import com.bx.imcommon.enums.IMSendCode; import com.bx.imcommon.model.IMSendResult; -import com.bx.implatform.contant.RedisKey; import com.bx.implatform.vo.GroupMessageVO; -import com.bx.implatform.vo.PrivateMessageVO; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.RedisTemplate; diff --git a/im-platform/src/main/java/com/bx/implatform/listener/SystemMessageListener.java b/im-platform/src/main/java/com/bx/implatform/listener/SystemMessageListener.java index 2f22099..e97474d 100644 --- a/im-platform/src/main/java/com/bx/implatform/listener/SystemMessageListener.java +++ b/im-platform/src/main/java/com/bx/implatform/listener/SystemMessageListener.java @@ -1,24 +1,14 @@ package com.bx.implatform.listener; -import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.bx.imclient.annotation.IMListener; import com.bx.imclient.listener.MessageListener; import com.bx.imcommon.enums.IMListenerType; import com.bx.imcommon.enums.IMSendCode; import com.bx.imcommon.model.IMSendResult; -import com.bx.implatform.entity.PrivateMessage; -import com.bx.implatform.enums.MessageStatus; -import com.bx.implatform.service.IPrivateMessageService; -import com.bx.implatform.vo.PrivateMessageVO; import com.bx.implatform.vo.SystemMessageVO; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import java.util.HashSet; import java.util.List; -import java.util.Set; @Slf4j @IMListener(type = IMListenerType.SYSTEM_MESSAGE) diff --git a/im-platform/src/main/java/com/bx/implatform/service/IWebrtcGroupService.java b/im-platform/src/main/java/com/bx/implatform/service/IWebrtcGroupService.java index edef9e6..144a118 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/IWebrtcGroupService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/IWebrtcGroupService.java @@ -1,6 +1,5 @@ package com.bx.implatform.service; -import com.bx.implatform.config.WebrtcConfig; import com.bx.implatform.dto.*; import com.bx.implatform.vo.WebrtcGroupInfoVO; diff --git a/im-platform/src/main/java/com/bx/implatform/service/IWebrtcPrivateService.java b/im-platform/src/main/java/com/bx/implatform/service/IWebrtcPrivateService.java index 04dd4ad..dbf4944 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/IWebrtcPrivateService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/IWebrtcPrivateService.java @@ -1,9 +1,5 @@ package com.bx.implatform.service; -import com.bx.implatform.config.ICEServer; - -import java.util.List; - /** * webrtc 通信服务 * diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java index c32de84..3055e25 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java @@ -18,7 +18,10 @@ import com.bx.implatform.enums.ResultCode; import com.bx.implatform.exception.GlobalException; import com.bx.implatform.mapper.GroupMapper; import com.bx.implatform.mapper.GroupMessageMapper; -import com.bx.implatform.service.*; +import com.bx.implatform.service.IFriendService; +import com.bx.implatform.service.IGroupMemberService; +import com.bx.implatform.service.IGroupService; +import com.bx.implatform.service.IUserService; import com.bx.implatform.session.SessionContext; import com.bx.implatform.session.UserSession; import com.bx.implatform.util.BeanUtils; @@ -40,7 +43,7 @@ import java.util.*; import java.util.stream.Collectors; @Slf4j -@CacheConfig(cacheNames = RedisKey.IM_CACHE_GROUP) +@CacheConfig(cacheManager = "cacheManager",cacheNames = RedisKey.IM_CACHE_GROUP) @Service @RequiredArgsConstructor public class GroupServiceImpl extends ServiceImpl implements IGroupService { diff --git a/im-platform/src/main/java/com/bx/implatform/service/thirdparty/FileService.java b/im-platform/src/main/java/com/bx/implatform/service/thirdparty/FileService.java index b727425..8baaaa6 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/thirdparty/FileService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/thirdparty/FileService.java @@ -9,6 +9,7 @@ import com.bx.implatform.util.FileUtil; import com.bx.implatform.util.ImageUtil; import com.bx.implatform.util.MinioUtil; import com.bx.implatform.vo.UploadImageVO; +import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -16,7 +17,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.PostConstruct; import java.io.IOException; import java.util.Objects; diff --git a/im-platform/src/main/java/com/bx/implatform/session/SessionContext.java b/im-platform/src/main/java/com/bx/implatform/session/SessionContext.java index 9577d36..ce61dbb 100644 --- a/im-platform/src/main/java/com/bx/implatform/session/SessionContext.java +++ b/im-platform/src/main/java/com/bx/implatform/session/SessionContext.java @@ -1,10 +1,9 @@ package com.bx.implatform.session; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.servlet.http.HttpServletRequest; - /* * @Description * @Author Blue diff --git a/im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java b/im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java index 5bae898..03c6b2d 100644 --- a/im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java +++ b/im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java @@ -1,7 +1,6 @@ package com.bx.implatform.session; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,20 +9,20 @@ import lombok.Data; * @version: 1.0 */ @Data -@ApiModel("用户信息") +@Schema(description = "用户信息") public class WebrtcUserInfo { - @ApiModelProperty(value = "用户id") + @Schema(description = "用户id") private Long id; - @ApiModelProperty(value = "用户昵称") + @Schema(description = "用户昵称") private String nickName; - @ApiModelProperty(value = "用户头像") + @Schema(description = "用户头像") private String headImage; - @ApiModelProperty(value = "是否开启摄像头") + @Schema(description = "是否开启摄像头") private Boolean isCamera; - @ApiModelProperty(value = "是否开启麦克风") + @Schema(description = "是否开启麦克风") private Boolean isMicroPhone; } diff --git a/im-platform/src/main/java/com/bx/implatform/task/UserBannedConsumerTask.java b/im-platform/src/main/java/com/bx/implatform/task/UserBannedConsumerTask.java index e112f9d..364e8e9 100644 --- a/im-platform/src/main/java/com/bx/implatform/task/UserBannedConsumerTask.java +++ b/im-platform/src/main/java/com/bx/implatform/task/UserBannedConsumerTask.java @@ -11,6 +11,7 @@ import com.bx.implatform.vo.SystemMessageVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; + import java.util.Collections; /** diff --git a/im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java b/im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java index bad68c1..2368d72 100644 --- a/im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java +++ b/im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java @@ -1,12 +1,12 @@ package com.bx.implatform.util; +import jakarta.annotation.PostConstruct; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.CharUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; diff --git a/im-platform/src/main/java/com/bx/implatform/vo/FriendVO.java b/im-platform/src/main/java/com/bx/implatform/vo/FriendVO.java index 7a580c1..7b40fb4 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/FriendVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/FriendVO.java @@ -1,24 +1,22 @@ package com.bx.implatform.vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotNull; - @Data -@ApiModel("好友信息VO") +@Schema(description = "好友信息VO") public class FriendVO { @NotNull(message = "好友id不可为空") - @ApiModelProperty(value = "好友id") + @Schema(description = "好友id") private Long id; @NotNull(message = "好友昵称不可为空") - @ApiModelProperty(value = "好友昵称") + @Schema(description = "好友昵称") private String nickName; - @ApiModelProperty(value = "好友头像") + @Schema(description = "好友头像") private String headImage; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/GroupInviteVO.java b/im-platform/src/main/java/com/bx/implatform/vo/GroupInviteVO.java index 1d1f38d..7c86962 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/GroupInviteVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/GroupInviteVO.java @@ -1,22 +1,21 @@ package com.bx.implatform.vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import java.util.List; @Data -@ApiModel("邀请好友进群请求VO") +@Schema(description = "邀请好友进群请求VO") public class GroupInviteVO { @NotNull(message = "群id不可为空") - @ApiModelProperty(value = "群id") + @Schema(description = "群id") private Long groupId; @NotEmpty(message = "群id不可为空") - @ApiModelProperty(value = "好友id列表不可为空") + @Schema(description = "好友id列表不可为空") private List friendIds; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java b/im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java index f4db9ae..e5f4192 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/GroupMemberVO.java @@ -1,29 +1,28 @@ package com.bx.implatform.vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data -@ApiModel("群成员信息VO") +@Schema(description = "群成员信息VO") public class GroupMemberVO { - @ApiModelProperty("用户id") + @Schema(description = "用户id") private Long userId; - @ApiModelProperty("群内显示名称") + @Schema(description = "群内显示名称") private String aliasName; - @ApiModelProperty("头像") + @Schema(description = "头像") private String headImage; - @ApiModelProperty("是否已退出") + @Schema(description = "是否已退出") private Boolean quit; - @ApiModelProperty(value = "是否在线") + @Schema(description = "是否在线") private Boolean online; - @ApiModelProperty("备注") + @Schema(description = "备注") private String remark; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/GroupMessageVO.java b/im-platform/src/main/java/com/bx/implatform/vo/GroupMessageVO.java index 377fd8a..ea41bde 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/GroupMessageVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/GroupMessageVO.java @@ -2,8 +2,7 @@ package com.bx.implatform.vo; import com.bx.imcommon.serializer.DateToLongSerializer; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; -import io.swagger.models.auth.In; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.Date; @@ -12,40 +11,40 @@ import java.util.List; @Data public class GroupMessageVO { - @ApiModelProperty(value = "消息id") + @Schema(description = "消息id") private Long id; - @ApiModelProperty(value = "群聊id") + @Schema(description = "群聊id") private Long groupId; - @ApiModelProperty(value = " 发送者id") + @Schema(description = " 发送者id") private Long sendId; - @ApiModelProperty(value = " 发送者昵称") + @Schema(description = " 发送者昵称") private String sendNickName; - @ApiModelProperty(value = "消息内容") + @Schema(description = "消息内容") private String content; - @ApiModelProperty(value = "消息内容类型 具体枚举值由应用层定义") + @Schema(description = "消息内容类型 具体枚举值由应用层定义") private Integer type; - @ApiModelProperty(value = "是否回执消息") + @Schema(description = "是否回执消息") private Boolean receipt; - @ApiModelProperty(value = "回执消息是否完成") + @Schema(description = "回执消息是否完成") private Boolean receiptOk; - @ApiModelProperty(value = "已读消息数量") + @Schema(description = "已读消息数量") private Integer readedCount = 0; - @ApiModelProperty(value = "@用户列表") + @Schema(description = "@用户列表") private List atUserIds; - @ApiModelProperty(value = " 状态") + @Schema(description = " 状态") private Integer status; - @ApiModelProperty(value = "发送时间") + @Schema(description = "发送时间") @JsonSerialize(using = DateToLongSerializer.class) private Date sendTime; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java b/im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java index cbbbf14..4743b1a 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java @@ -1,50 +1,47 @@ package com.bx.implatform.vo; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.NotEmpty; - @Data -@ApiModel("群信息VO") +@Schema(description = "群信息VO") public class GroupVO { - @ApiModelProperty(value = "群id") + @Schema(description = "群id") private Long id; @Length(max = 20, message = "群名称长度不能大于20") @NotEmpty(message = "群名称不可为空") - @ApiModelProperty(value = "群名称") + @Schema(description = "群名称") private String name; - @ApiModelProperty(value = "群主id") + @Schema(description = "群主id") private Long ownerId; - @ApiModelProperty(value = "头像") + @Schema(description = "头像") private String headImage; - @ApiModelProperty(value = "头像缩略图") + @Schema(description = "头像缩略图") private String headImageThumb; @Length(max = 1024, message = "群聊显示长度不能大于1024") - @ApiModelProperty(value = "群公告") + @Schema(description = "群公告") private String notice; @Length(max = 20, message = "群聊显示长度不能大于20") - @ApiModelProperty(value = "用户在群显示昵称") + @Schema(description = "用户在群显示昵称") private String aliasName; @Length(max = 20, message = "群聊显示长度不能大于20") - @ApiModelProperty(value = "群聊显示备注") + @Schema(description = "群聊显示备注") private String remark; - @ApiModelProperty(value = "是否已删除") + @Schema(description = "是否已删除") private Boolean deleted; - @ApiModelProperty(value = "是否已退出") + @Schema(description = "是否已退出") private Boolean quit; diff --git a/im-platform/src/main/java/com/bx/implatform/vo/LoginVO.java b/im-platform/src/main/java/com/bx/implatform/vo/LoginVO.java index 1b765bc..ba9f9a2 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/LoginVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/LoginVO.java @@ -1,23 +1,22 @@ package com.bx.implatform.vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data -@ApiModel("用户登录VO") +@Schema(description = "用户登录VO") public class LoginVO { - @ApiModelProperty(value = "每次请求都必须在header中携带accessToken") + @Schema(description = "每次请求都必须在header中携带accessToken") private String accessToken; - @ApiModelProperty(value = "accessToken过期时间(秒)") + @Schema(description = "accessToken过期时间(秒)") private Integer accessTokenExpiresIn; - @ApiModelProperty(value = "accessToken过期后,通过refreshToken换取新的token") + @Schema(description = "accessToken过期后,通过refreshToken换取新的token") private String refreshToken; - @ApiModelProperty(value = "refreshToken过期时间(秒)") + @Schema(description = "refreshToken过期时间(秒)") private Integer refreshTokenExpiresIn; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java b/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java index 67e5413..da40ec6 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java @@ -1,6 +1,6 @@ package com.bx.implatform.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; @@ -15,10 +15,10 @@ import java.util.List; @AllArgsConstructor public class OnlineTerminalVO { - @ApiModelProperty(value = "用户id") + @Schema(description = "用户id") private Long userId; - @ApiModelProperty(value = "在线终端类型") + @Schema(description = "在线终端类型") private List terminals; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java b/im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java index c8ea8a5..608e854 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java @@ -2,35 +2,34 @@ package com.bx.implatform.vo; import com.bx.imcommon.serializer.DateToLongSerializer; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.Date; @Data -@ApiModel("私聊消息VO") +@Schema(description = "私聊消息VO") public class PrivateMessageVO { - @ApiModelProperty(value = " 消息id") + @Schema(description = " 消息id") private Long id; - @ApiModelProperty(value = " 发送者id") + @Schema(description = " 发送者id") private Long sendId; - @ApiModelProperty(value = " 接收者id") + @Schema(description = " 接收者id") private Long recvId; - @ApiModelProperty(value = " 发送内容") + @Schema(description = " 发送内容") private String content; - @ApiModelProperty(value = "消息内容类型 IMCmdType") + @Schema(description = "消息内容类型 IMCmdType") private Integer type; - @ApiModelProperty(value = " 状态") + @Schema(description = " 状态") private Integer status; - @ApiModelProperty(value = " 发送时间") + @Schema(description = " 发送时间") @JsonSerialize(using = DateToLongSerializer.class) private Date sendTime; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/SystemConfigVO.java b/im-platform/src/main/java/com/bx/implatform/vo/SystemConfigVO.java index f8e936e..aa92709 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/SystemConfigVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/SystemConfigVO.java @@ -1,8 +1,7 @@ package com.bx.implatform.vo; import com.bx.implatform.config.WebrtcConfig; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; @@ -12,11 +11,11 @@ import lombok.Data; * @version: 1.0 */ @Data -@ApiModel("系统配置VO") +@Schema(description = "系统配置VO") @AllArgsConstructor public class SystemConfigVO { - @ApiModelProperty(value = "webrtc配置") + @Schema(description = "webrtc配置") private WebrtcConfig webrtc; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/SystemMessageVO.java b/im-platform/src/main/java/com/bx/implatform/vo/SystemMessageVO.java index 692b6e1..d1ee164 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/SystemMessageVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/SystemMessageVO.java @@ -2,26 +2,25 @@ package com.bx.implatform.vo; import com.bx.imcommon.serializer.DateToLongSerializer; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.Date; @Data -@ApiModel("系统消息VO") +@Schema(description = "系统消息VO") public class SystemMessageVO { - @ApiModelProperty(value = " 消息id") + @Schema(description = " 消息id") private Long id; - @ApiModelProperty(value = " 发送内容") + @Schema(description = " 发送内容") private String content; - @ApiModelProperty(value = "消息内容类型 MessageType") + @Schema(description = "消息内容类型 MessageType") private Integer type; - @ApiModelProperty(value = " 发送时间") + @Schema(description = " 发送时间") @JsonSerialize(using = DateToLongSerializer.class) private Date sendTime; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/UploadImageVO.java b/im-platform/src/main/java/com/bx/implatform/vo/UploadImageVO.java index 3c63709..f58114f 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/UploadImageVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/UploadImageVO.java @@ -1,16 +1,15 @@ package com.bx.implatform.vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data -@ApiModel("图片上传VO") +@Schema(description = "图片上传VO") public class UploadImageVO { - @ApiModelProperty(value = "原图") + @Schema(description = "原图") private String originUrl; - @ApiModelProperty(value = "缩略图") + @Schema(description = "缩略图") private String thumbUrl; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/UserVO.java b/im-platform/src/main/java/com/bx/implatform/vo/UserVO.java index f44d5aa..ae8345b 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/UserVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/UserVO.java @@ -1,48 +1,46 @@ package com.bx.implatform.vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - @Data -@ApiModel("用户信息VO") +@Schema(description = "用户信息VO") public class UserVO { @NotNull(message = "用户id不能为空") - @ApiModelProperty(value = "id") + @Schema(description = "id") private Long id; @NotEmpty(message = "用户名不能为空") @Length(max = 64, message = "用户名不能大于64字符") - @ApiModelProperty(value = "用户名") + @Schema(description = "用户名") private String userName; @NotEmpty(message = "用户昵称不能为空") @Length(max = 64, message = "昵称不能大于64字符") - @ApiModelProperty(value = "用户昵称") + @Schema(description = "用户昵称") private String nickName; - @ApiModelProperty(value = "性别") + @Schema(description = "性别") private Integer sex; - @ApiModelProperty(value = "用户类型 1:普通用户 2:审核账户") + @Schema(description = "用户类型 1:普通用户 2:审核账户") private Integer type; @Length(max = 1024, message = "个性签名不能大于1024个字符") - @ApiModelProperty(value = "个性签名") + @Schema(description = "个性签名") private String signature; - @ApiModelProperty(value = "头像") + @Schema(description = "头像") private String headImage; - @ApiModelProperty(value = "头像缩略图") + @Schema(description = "头像缩略图") private String headImageThumb; - @ApiModelProperty(value = "是否在线") + @Schema(description = "是否在线") private Boolean online; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java b/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java index 5c7b988..7cd4482 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java @@ -1,7 +1,6 @@ package com.bx.implatform.vo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -12,12 +11,12 @@ import java.util.List; * @version: 1.0 */ @Data -@ApiModel("用户加入群通话失败VO") +@Schema(description = "用户加入群通话失败VO") public class WebrtcGroupFailedVO { - @ApiModelProperty(value = "失败用户列表") + @Schema(description = "失败用户列表") private List userIds; - @ApiModelProperty(value = "失败原因") + @Schema(description = "失败原因") private String reason; } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java b/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java index bf27527..7bed11f 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java @@ -1,8 +1,7 @@ package com.bx.implatform.vo; import com.bx.implatform.session.WebrtcUserInfo; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -13,16 +12,16 @@ import java.util.List; * @version: 1.0 */ @Data -@ApiModel("群通话信息VO") +@Schema(description = "群通话信息VO") public class WebrtcGroupInfoVO { - @ApiModelProperty(value = "是否在通话中") + @Schema(description = "是否在通话中") private Boolean isChating; - @ApiModelProperty(value = "通话发起人") + @Schema(description = "通话发起人") WebrtcUserInfo host; - @ApiModelProperty(value = "通话用户列表") + @Schema(description = "通话用户列表") private List userInfos; } diff --git a/im-platform/src/main/resources/application.yml b/im-platform/src/main/resources/application.yml index 8e0cbe8..0e70e38 100644 --- a/im-platform/src/main/resources/application.yml +++ b/im-platform/src/main/resources/application.yml @@ -7,7 +7,7 @@ spring: pathmatch: matching-strategy: ant_path_matcher datasource: - driver-class-name: com.mysql.jdbc.Driver + driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/box-im?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true username: root password: root @@ -22,12 +22,13 @@ spring: max-request-size: 50MB mybatis-plus: + global-config: + db-config: + id-type: AUTO # ID自增 configuration: - # 是否开启自动驼峰命名规则 - map-underscore-to-camel-case: false + map-underscore-to-camel-case: true #开启自动驼峰命名规则 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - mapper-locations: - - classpath*:mapper/*.xml + minio: endpoint: http://127.0.0.1:9001 #内网地址 public: http://127.0.0.1:9001 #外网访问地址 diff --git a/im-server/pom.xml b/im-server/pom.xml index e5d0e78..3b6fe90 100644 --- a/im-server/pom.xml +++ b/im-server/pom.xml @@ -18,10 +18,6 @@ im-commom 2.0.0 - - org.springframework.boot - spring-boot - io.netty netty-all @@ -40,7 +36,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.0.3.RELEASE + 3.3.1 diff --git a/im-server/src/main/java/com/bx/imserver/config/RedisConfig.java b/im-server/src/main/java/com/bx/imserver/config/RedisConfig.java deleted file mode 100644 index 844cdf5..0000000 --- a/im-server/src/main/java/com/bx/imserver/config/RedisConfig.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.bx.imserver.config; - -import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.serializer.StringRedisSerializer; - -@Configuration -public class RedisConfig { - - @Bean - public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { - RedisTemplate redisTemplate = new RedisTemplate<>(); - redisTemplate.setConnectionFactory(redisConnectionFactory); - // 设置值(value)的序列化采用FastJsonRedisSerializer - redisTemplate.setValueSerializer(fastJsonRedisSerializer()); - redisTemplate.setHashValueSerializer(fastJsonRedisSerializer()); - // 设置键(key)的序列化采用StringRedisSerializer。 - redisTemplate.setKeySerializer(new StringRedisSerializer()); - redisTemplate.setHashKeySerializer(new StringRedisSerializer()); - redisTemplate.afterPropertiesSet(); - return redisTemplate; - } - - - public FastJsonRedisSerializer fastJsonRedisSerializer() { - return new FastJsonRedisSerializer<>(Object.class); - } - - -} diff --git a/im-server/src/main/java/com/bx/imserver/netty/IMServerGroup.java b/im-server/src/main/java/com/bx/imserver/netty/IMServerGroup.java index c498fd1..1498d18 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/IMServerGroup.java +++ b/im-server/src/main/java/com/bx/imserver/netty/IMServerGroup.java @@ -1,13 +1,13 @@ package com.bx.imserver.netty; import com.bx.imcommon.contant.IMRedisKey; +import jakarta.annotation.PreDestroy; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.CommandLineRunner; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import javax.annotation.PreDestroy; import java.util.List; @Slf4j @@ -17,7 +17,7 @@ public class IMServerGroup implements CommandLineRunner { public static volatile long serverId = 0; - RedisTemplate redisTemplate; + private final RedisTemplate redisTemplate; private final List imServers; @@ -36,7 +36,7 @@ public class IMServerGroup implements CommandLineRunner { } @Override - public void run(String... args) throws Exception { + public void run(String... args) { // 初始化SERVER_ID String key = IMRedisKey.IM_MAX_SERVER_ID; serverId = redisTemplate.opsForValue().increment(key, 1); diff --git a/pom.xml b/pom.xml index c3202b5..f5511d8 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,11 @@ com.bx pom 2.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.1 + im-platform @@ -17,34 +22,24 @@ - 1.8 - 1.8 - 1.8 UTF-8 UTF-8 - 1.8 - 3.4.0 - 1.2.40 - 1.7 - 2.7.0 - 5.8.16 + 17 + 3.5.7 + 1.2.83 + 4.5.0 + 5.8.28 1.1.22 + 8.5.1 + 3.21.3 3.8.1 - 1.18.16 - 5.1.46 + 1.18.32 + 3.0.3 - - - org.springframework.boot - spring-boot-dependencies - 2.7.17 - pom - import - org.projectlombok lombok @@ -70,31 +65,11 @@ druid ${druid.version} - - org.apache.velocity - velocity - ${velocity.version} - - - io.springfox - springfox-swagger2 - ${swagger.version} - - - io.springfox - springfox-swagger-ui - ${swagger.version} - cn.hutool hutool-all ${hutool.version} - - mysql - mysql-connector-java - ${mysql.version} - org.apache.poi poi-ooxml