Browse Source

优化

master
xsx 1 year ago
parent
commit
8ecd668c55
  1. 3
      im-admin-ui/src/components/ImagePreview/index.vue
  2. 4
      im-admin-ui/src/layout/components/Navbar.vue
  3. 4
      im-admin-ui/src/views/im/group/index.vue
  4. 4
      im-admin-ui/src/views/im/user/index.vue
  5. 2
      im-admin/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/CacheConfig.java
  6. 34
      im-admin/ruoyi-im/src/main/java/org/dromara/im/config/ImCacheConfig.java
  7. 15
      im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImGroupMessageController.java
  8. 6
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImGroupMemberBo.java
  9. 6
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImGroupMessageBo.java
  10. 2
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImPrivateMessageBo.java
  11. 2
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImSensitiveWordBo.java
  12. 2
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImGroupMessageVo.java
  13. 4
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImSensitiveWordVo.java
  14. 1
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImGroupMessageService.java
  15. 1
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImGroupMemberServiceImpl.java
  16. 3
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImGroupMessageServiceImpl.java
  17. 6
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImGroupServiceImpl.java
  18. 1
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImSensitiveWordServiceImpl.java

3
im-admin-ui/src/components/ImagePreview/index.vue

@ -57,8 +57,7 @@ const realHeight = computed(() => (typeof props.height == 'string' ? props.heigh
.el-image { .el-image {
border-radius: 5px; border-radius: 5px;
background-color: #ebeef5; background-color: #ebeef5;
box-shadow: 0 0 5px 1px #ccc;
:deep(.el-image__inner) { :deep(.el-image__inner) {
transition: all 0.3s; transition: all 0.3s;
cursor: pointer; cursor: pointer;

4
im-admin-ui/src/layout/components/Navbar.vue

@ -272,8 +272,8 @@ watch(
.user-avatar { .user-avatar {
cursor: pointer; cursor: pointer;
width: 40px; width: 35px;
height: 40px; height: 35px;
border-radius: 10px; border-radius: 10px;
margin-top: 10px; margin-top: 10px;
} }

4
im-admin-ui/src/views/im/group/index.vue

@ -56,8 +56,8 @@
<template #default="scope"> <template #default="scope">
<el-button link type="primary" v-hasPermi="['im:group:query']" <el-button link type="primary" v-hasPermi="['im:group:query']"
@click="handleDetail(scope.row)">详情</el-button> @click="handleDetail(scope.row)">详情</el-button>
<el-button link type="danger" v-hasPermi="['im:group:ban']" @click="handleUnban(scope.row)">解封</el-button> <el-button v-if="scope.row.isBanned" link type="danger" v-hasPermi="['im:group:ban']" @click="handleUnban(scope.row)">解封</el-button>
<el-button link type="danger" v-hasPermi="['im:group:ban']" @click="handleBan(scope.row)">封禁</el-button> <el-button v-else link type="danger" v-hasPermi="['im:group:ban']" @click="handleBan(scope.row)">封禁</el-button>
<el-button link type="primary" @click="handleShowMember(scope.row.id)">查看成员</el-button> <el-button link type="primary" @click="handleShowMember(scope.row.id)">查看成员</el-button>
</template> </template>
</el-table-column> </el-table-column>

4
im-admin-ui/src/views/im/user/index.vue

@ -60,8 +60,8 @@
<template #default="scope"> <template #default="scope">
<el-button link type="primary" v-hasPermi="['im:user:query']" <el-button link type="primary" v-hasPermi="['im:user:query']"
@click="handleDetail(scope.row)">详情</el-button> @click="handleDetail(scope.row)">详情</el-button>
<el-button link type="danger" v-hasPermi="['im:user:ban']" @click="unbanHandle(scope.row)">解封</el-button> <el-button v-if="scope.row.isBanned" link type="danger" v-hasPermi="['im:user:ban']" @click="unbanHandle(scope.row)">解封</el-button>
<el-button link type="danger" v-hasPermi="['im:user:ban']" @click="banHandle(scope.row)">封禁</el-button> <el-button v-else link type="danger" v-hasPermi="['im:user:ban']" @click="banHandle(scope.row)">封禁</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

2
im-admin/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/CacheConfig.java

@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.cache.CacheManager; import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -37,6 +38,7 @@ public class CacheConfig {
/** /**
* 自定义缓存管理器 整合spring-cache * 自定义缓存管理器 整合spring-cache
*/ */
@Primary
@Bean @Bean
public CacheManager cacheManager() { public CacheManager cacheManager() {
return new PlusSpringCacheManager(); return new PlusSpringCacheManager();

34
im-admin/ruoyi-im/src/main/java/org/dromara/im/config/ImCacheConfig.java

@ -1,32 +1,58 @@
package org.dromara.im.config; package org.dromara.im.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 lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.cache.CacheManager; import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializationContext;
import java.time.Duration; import java.time.Duration;
@Configuration
@EnableCaching @EnableCaching
@AllArgsConstructor @AllArgsConstructor
public class ImCacheConfig extends CachingConfigurerSupport { public class ImCacheConfig extends CachingConfigurerSupport {
public final static String REDIS_CACHE_MANAGER = "redisCacheManager";
private final RedisConnectionFactory factory; private final RedisConnectionFactory factory;
private final GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer;
@Bean @Bean(REDIS_CACHE_MANAGER)
public CacheManager cacheManager() { public CacheManager cacheManager() {
// 设置redis缓存管理器 // 设置redis缓存管理器
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)) RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)); .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer()));
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build(); return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();
} }
@Bean
public Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer() {
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);
//忽略无效字段
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return new Jackson2JsonRedisSerializer<>(om, Object.class);
}
} }

15
im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImGroupMessageController.java

@ -1,17 +1,9 @@
package org.dromara.im.controller; package org.dromara.im.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
@ -19,9 +11,10 @@ import org.dromara.im.domain.bo.ImGroupMessageBo;
import org.dromara.im.domain.vo.ImGroupMessageVo; import org.dromara.im.domain.vo.ImGroupMessageVo;
import org.dromara.im.service.IImGroupMessageService; import org.dromara.im.service.IImGroupMessageService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/** /**
* 群消息 * 群消息

6
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImGroupMemberBo.java

@ -1,13 +1,7 @@
package org.dromara.im.domain.bo; package org.dromara.im.domain.bo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.im.domain.ImGroupMember; import org.dromara.im.domain.ImGroupMember;
import java.util.Date; import java.util.Date;

6
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImGroupMessageBo.java

@ -1,13 +1,7 @@
package org.dromara.im.domain.bo; package org.dromara.im.domain.bo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.im.domain.ImGroupMessage; import org.dromara.im.domain.ImGroupMessage;
import java.util.Date; import java.util.Date;

2
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImPrivateMessageBo.java

@ -2,8 +2,6 @@ package org.dromara.im.domain.bo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.im.domain.ImPrivateMessage; import org.dromara.im.domain.ImPrivateMessage;
import java.util.Date; import java.util.Date;

2
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImSensitiveWordBo.java

@ -5,10 +5,8 @@ import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.im.domain.ImSensitiveWord; import org.dromara.im.domain.ImSensitiveWord;
import java.util.Date; import java.util.Date;

2
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImGroupMessageVo.java

@ -6,7 +6,6 @@ import com.fhs.core.trans.anno.Trans;
import com.fhs.core.trans.constant.TransType; import com.fhs.core.trans.constant.TransType;
import com.fhs.core.trans.vo.TransPojo; import com.fhs.core.trans.vo.TransPojo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.dromara.im.constant.ImConstant; import org.dromara.im.constant.ImConstant;
import org.dromara.im.domain.ImGroup; import org.dromara.im.domain.ImGroup;
@ -14,7 +13,6 @@ import org.dromara.im.domain.ImGroupMessage;
import org.dromara.im.domain.ImUser; import org.dromara.im.domain.ImUser;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable;
import java.util.Date; import java.util.Date;

4
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImSensitiveWordVo.java

@ -8,14 +8,10 @@ import com.fhs.core.trans.vo.TransPojo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.im.domain.ImSensitiveWord; import org.dromara.im.domain.ImSensitiveWord;
import org.dromara.system.domain.SysUser; import org.dromara.system.domain.SysUser;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**

1
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImGroupMessageService.java

@ -5,7 +5,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.im.domain.bo.ImGroupMessageBo; import org.dromara.im.domain.bo.ImGroupMessageBo;
import org.dromara.im.domain.vo.ImGroupMessageVo; import org.dromara.im.domain.vo.ImGroupMessageVo;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**

1
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImGroupMemberServiceImpl.java

@ -18,7 +18,6 @@ import org.dromara.im.service.IImGroupMemberService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 群成员Service业务层处理 * 群成员Service业务层处理

3
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImGroupMessageServiceImpl.java

@ -5,20 +5,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.im.constant.ImConstant; import org.dromara.im.constant.ImConstant;
import org.dromara.im.domain.ImGroupMessage; import org.dromara.im.domain.ImGroupMessage;
import org.dromara.im.domain.ImPrivateMessage;
import org.dromara.im.domain.bo.ImGroupMessageBo; import org.dromara.im.domain.bo.ImGroupMessageBo;
import org.dromara.im.domain.vo.ImGroupMessageVo; import org.dromara.im.domain.vo.ImGroupMessageVo;
import org.dromara.im.mapper.ImGroupMessageMapper; import org.dromara.im.mapper.ImGroupMessageMapper;
import org.dromara.im.service.IImGroupMessageService; import org.dromara.im.service.IImGroupMessageService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

6
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImGroupServiceImpl.java

@ -12,6 +12,7 @@ import org.apache.logging.log4j.util.Strings;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.im.config.ImCacheConfig;
import org.dromara.im.constant.ImConstant; import org.dromara.im.constant.ImConstant;
import org.dromara.im.constant.ImRedisKey; import org.dromara.im.constant.ImRedisKey;
import org.dromara.im.domain.ImGroup; import org.dromara.im.domain.ImGroup;
@ -35,10 +36,9 @@ import java.util.Map;
* 群Service业务层处理 * 群Service业务层处理
* *
* @author Blue * @author Blue
* @date 2024-12-22
*/ */
@DS(ImConstant.DS_IM_PLATFORM) @DS(ImConstant.DS_IM_PLATFORM)
@CacheConfig(cacheNames = ImRedisKey.IM_CACHE_GROUP) @CacheConfig(cacheManager = ImCacheConfig.REDIS_CACHE_MANAGER ,cacheNames = ImRedisKey.IM_CACHE_GROUP)
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class ImGroupServiceImpl implements IImGroupService { public class ImGroupServiceImpl implements IImGroupService {
@ -128,7 +128,7 @@ public class ImGroupServiceImpl implements IImGroupService {
return baseMapper.selectVoList(queryWrapper); return baseMapper.selectVoList(queryWrapper);
} }
private LambdaQueryWrapper<ImGroup> buildQueryWrapper(ImGroupBo bo) {; private LambdaQueryWrapper<ImGroup> buildQueryWrapper(ImGroupBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ImGroup> wrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<ImGroup> wrapper = Wrappers.lambdaQuery();
wrapper.like(StringUtils.isNotBlank(bo.getName()), ImGroup::getName, bo.getName()); wrapper.like(StringUtils.isNotBlank(bo.getName()), ImGroup::getName, bo.getName());

1
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImSensitiveWordServiceImpl.java

@ -20,7 +20,6 @@ import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 敏感词Service业务层处理 * 敏感词Service业务层处理

Loading…
Cancel
Save