Browse Source

版本更新:v3.5.0

master
xsx 11 months ago
parent
commit
d39980bea9
  1. 2
      im-admin-ui/src/views/im/group/index.vue
  2. 12
      im-admin-ui/src/views/im/message/group/index.vue
  3. 12
      im-admin-ui/src/views/im/message/private/index.vue
  4. 9
      im-admin-ui/src/views/im/user/index.vue
  5. 20
      im-admin/pom.xml
  6. 2
      im-admin/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfig.java
  7. 21
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImPrivateMessageServiceImpl.java

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

@ -32,7 +32,7 @@
<el-table-column label="群名" align="center" prop="name" />
<el-table-column label="群头像" align="center" prop="headImage" width="100">
<template #default="scope">
<image-preview :src="scope.row.headImageThumb" :full-src="scope.row.headImage" :width="40" :height="40" />
<image-preview v-if="scope.row.headImageThumb" :src="scope.row.headImageThumb" :full-src="scope.row.headImage" :width="40" :height="40" />
</template>
</el-table-column>
<el-table-column label="群主" align="center" prop="ownerUserName" />

12
im-admin-ui/src/views/im/message/group/index.vue

@ -4,6 +4,12 @@
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="群聊" prop="groupId">
<im-group-select v-model="queryParams.groupId"></im-group-select>
</el-form-item>
<el-form-item label="发送用户" prop="sendId">
<im-user-select v-model="queryParams.sendId"></im-user-select>
</el-form-item>
<el-form-item label="发送时间" prop="createdTime">
<el-date-picker
v-model="dateRange"
@ -15,12 +21,6 @@
:default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
></el-date-picker>
</el-form-item>
<el-form-item label="群聊" prop="groupId">
<im-group-select v-model="queryParams.groupId"></im-group-select>
</el-form-item>
<el-form-item label="发送用户" prop="sendId">
<im-user-select v-model="queryParams.sendId"></im-user-select>
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input v-model="queryParams.content"></el-input>
</el-form-item>

12
im-admin-ui/src/views/im/message/private/index.vue

@ -4,6 +4,12 @@
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="用户1" prop="sendId">
<im-user-select v-model="queryParams.sendId"></im-user-select>
</el-form-item>
<el-form-item label="用户2" prop="recvId">
<im-user-select v-model="queryParams.recvId"></im-user-select>
</el-form-item>
<el-form-item label="发送时间" prop="createdTime">
<el-date-picker
v-model="dateRange"
@ -15,12 +21,6 @@
:default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
></el-date-picker>
</el-form-item>
<el-form-item label="发送用户" prop="sendId">
<im-user-select v-model="queryParams.sendId"></im-user-select>
</el-form-item>
<el-form-item label="接收用户" prop="recvId">
<im-user-select v-model="queryParams.recvId"></im-user-select>
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input v-model="queryParams.content"></el-input>
</el-form-item>

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

@ -55,8 +55,10 @@
<template #default="scope">
<el-button link type="primary" v-hasPermi="['im:user:query']"
@click="handleDetail(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 v-else link type="danger" v-hasPermi="['im:user:ban']" @click="banHandle(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 v-else link type="danger" v-hasPermi="['im:user:ban']"
@click="banHandle(scope.row)">封禁</el-button>
</template>
</el-table-column>
</el-table>
@ -68,7 +70,8 @@
<el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body>
<el-form ref="userFormRef" :model="form" :rules="rules" label-width="100px" disabled>
<el-form-item label="用户头像" prop="headImage">
<image-preview :src="form.headImageThumb" :full-src="form.headImage" :width="100" :height="100" />
<image-preview v-if="scope.row.headImageThumb" :src="form.headImageThumb" :full-src="form.headImage"
:width="100" :height="100" />
</el-form-item>
<el-form-item label="用户名" prop="userName">
<el-input v-model="form.userName" placeholder="请输入用户名" />

20
im-admin/pom.xml

@ -29,7 +29,6 @@
<redisson.version>3.37.0</redisson.version>
<lock4j.version>2.2.7</lock4j.version>
<dynamic-ds.version>4.3.1</dynamic-ds.version>
<snailjob.version>1.1.2</snailjob.version>
<mapstruct-plus.version>1.4.5</mapstruct-plus.version>
<mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
<lombok.version>1.18.34</lombok.version>
@ -53,13 +52,6 @@
</properties>
<profiles>
<profile>
<id>local</id>
<properties>
<!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>local</profiles.active>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
@ -236,18 +228,6 @@
<version>${lock4j.version}</version>
</dependency>
<!-- SnailJob Client -->
<dependency>
<groupId>com.aizuda</groupId>
<artifactId>snail-job-client-starter</artifactId>
<version>${snailjob.version}</version>
</dependency>
<dependency>
<groupId>com.aizuda</groupId>
<artifactId>snail-job-client-job-core</artifactId>
<version>${snailjob.version}</version>
</dependency>
<!-- 加密包引入 -->
<dependency>
<groupId>org.bouncycastle</groupId>

2
im-admin/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfig.java

@ -25,7 +25,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
* @author Lion Li
*/
@EnableTransactionManagement(proxyTargetClass = true)
@MapperScan("${mybatis-plus.mapperPackage}")
@MapperScan("org.dromara.**.mapper")
@PropertySource(value = "classpath:common-mybatis.yml", factory = YmlPropertySourceFactory.class)
public class MybatisPlusConfig {

21
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImPrivateMessageServiceImpl.java

@ -17,6 +17,7 @@ import org.dromara.im.service.IImPrivateMessageService;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.Objects;
/**
* 私聊消息Service业务层处理
@ -60,11 +61,23 @@ public class ImPrivateMessageServiceImpl implements IImPrivateMessageService {
private LambdaQueryWrapper<ImPrivateMessage> buildQueryWrapper(ImPrivateMessageBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ImPrivateMessage> wrapper = Wrappers.lambdaQuery();
wrapper.eq(bo.getSendId() != null, ImPrivateMessage::getSendId, bo.getSendId());
wrapper.eq(bo.getRecvId() != null, ImPrivateMessage::getRecvId, bo.getRecvId());
if (!Objects.isNull(bo.getSendId()) && !Objects.isNull(bo.getRecvId())) {
// 指定了两个用户,返回这两个用户之间的聊天记录
wrapper.and(wrap -> wrap.and(wp -> wp.eq(ImPrivateMessage::getSendId, bo.getSendId())
.eq(ImPrivateMessage::getRecvId, bo.getRecvId()))
.or(wp -> wp.eq(ImPrivateMessage::getSendId, bo.getRecvId())
.eq(ImPrivateMessage::getRecvId, bo.getSendId())));
} else if (!Objects.isNull(bo.getSendId())) {
wrapper.and(wp -> wp.eq(ImPrivateMessage::getSendId, bo.getSendId()).or()
.eq(ImPrivateMessage::getRecvId, bo.getSendId()));
} else if (!Objects.isNull(bo.getRecvId())) {
wrapper.and(wp -> wp.eq(ImPrivateMessage::getSendId, bo.getRecvId()).or()
.eq(ImPrivateMessage::getRecvId, bo.getRecvId()));
}
wrapper.like(StringUtils.isNotBlank(bo.getContent()), ImPrivateMessage::getContent, bo.getContent());
wrapper.eq(bo.getType() != null, ImPrivateMessage::getType, bo.getType());
wrapper.eq(bo.getStatus() != null, ImPrivateMessage::getStatus, bo.getStatus());
wrapper.eq(!Objects.isNull(bo.getType()), ImPrivateMessage::getType, bo.getType());
wrapper.eq(!Objects.isNull(bo.getStatus()), ImPrivateMessage::getStatus, bo.getStatus());
wrapper.between(params.get("beginTime") != null && params.get("endTime") != null, ImPrivateMessage::getSendTime,
params.get("beginTime"), params.get("endTime"));
wrapper.orderByDesc(ImPrivateMessage::getId);

Loading…
Cancel
Save