blue
11 months ago
committed by
Gitee
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
11 changed files with
30 additions and
20 deletions
-
im-platform/src/main/java/com/bx/implatform/controller/FileController.java
-
im-platform/src/main/java/com/bx/implatform/controller/FriendController.java
-
im-platform/src/main/java/com/bx/implatform/controller/GroupController.java
-
im-platform/src/main/java/com/bx/implatform/service/GroupService.java
-
im-platform/src/main/java/com/bx/implatform/service/impl/GroupMemberServiceImpl.java
-
im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java
-
im-uniapp/components/group-member-selector/group-member-selector.vue
-
im-uniapp/pages/chat/chat-box.vue
-
im-web/src/components/chat/ChatBox.vue
-
im-web/src/components/common/UserInfo.vue
-
im-web/src/view/Group.vue
|
|
|
@ -8,7 +8,7 @@ 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.apache.logging.log4j.util.Strings; |
|
|
|
import org.springframework.web.bind.annotation.PostMapping; |
|
|
|
import org.springframework.web.bind.annotation.RequestParam; |
|
|
|
import org.springframework.web.bind.annotation.RestController; |
|
|
|
@ -29,11 +29,10 @@ public class FileController { |
|
|
|
return ResultUtils.success(fileService.uploadImage(file,isPermanent)); |
|
|
|
} |
|
|
|
|
|
|
|
@CrossOrigin |
|
|
|
@Operation(summary = "上传文件", description = "上传文件,上传后返回文件url") |
|
|
|
@PostMapping("/file/upload") |
|
|
|
public Result<String> uploadFile(@RequestParam("file") MultipartFile file) { |
|
|
|
return ResultUtils.success(fileService.uploadFile(file)); |
|
|
|
return ResultUtils.success(fileService.uploadFile(file), Strings.EMPTY); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
@ -7,7 +7,6 @@ import com.bx.implatform.service.FriendService; |
|
|
|
import com.bx.implatform.vo.FriendVO; |
|
|
|
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.*; |
|
|
|
|
|
|
|
@ -1,11 +1,11 @@ |
|
|
|
package com.bx.implatform.controller; |
|
|
|
|
|
|
|
import com.bx.implatform.annotation.RepeatSubmit; |
|
|
|
import com.bx.implatform.dto.GroupInviteDTO; |
|
|
|
import com.bx.implatform.dto.GroupMemberRemoveDTO; |
|
|
|
import com.bx.implatform.result.Result; |
|
|
|
import com.bx.implatform.result.ResultUtils; |
|
|
|
import com.bx.implatform.service.GroupService; |
|
|
|
import com.bx.implatform.dto.GroupInviteDTO; |
|
|
|
import com.bx.implatform.vo.GroupMemberVO; |
|
|
|
import com.bx.implatform.vo.GroupVO; |
|
|
|
import io.swagger.v3.oas.annotations.Operation; |
|
|
|
|
|
|
|
@ -1,9 +1,9 @@ |
|
|
|
package com.bx.implatform.service; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.IService; |
|
|
|
import com.bx.implatform.dto.GroupInviteDTO; |
|
|
|
import com.bx.implatform.dto.GroupMemberRemoveDTO; |
|
|
|
import com.bx.implatform.entity.Group; |
|
|
|
import com.bx.implatform.dto.GroupInviteDTO; |
|
|
|
import com.bx.implatform.vo.GroupMemberVO; |
|
|
|
import com.bx.implatform.vo.GroupVO; |
|
|
|
|
|
|
|
|
|
|
|
@ -1,7 +1,6 @@ |
|
|
|
package com.bx.implatform.service.impl; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
|
|
|
@ -12,6 +12,7 @@ import com.bx.imcommon.model.IMUserInfo; |
|
|
|
import com.bx.imcommon.util.CommaTextUtils; |
|
|
|
import com.bx.implatform.contant.Constant; |
|
|
|
import com.bx.implatform.contant.RedisKey; |
|
|
|
import com.bx.implatform.dto.GroupInviteDTO; |
|
|
|
import com.bx.implatform.dto.GroupMemberRemoveDTO; |
|
|
|
import com.bx.implatform.entity.*; |
|
|
|
import com.bx.implatform.enums.MessageStatus; |
|
|
|
@ -26,7 +27,6 @@ import com.bx.implatform.service.UserService; |
|
|
|
import com.bx.implatform.session.SessionContext; |
|
|
|
import com.bx.implatform.session.UserSession; |
|
|
|
import com.bx.implatform.util.BeanUtils; |
|
|
|
import com.bx.implatform.dto.GroupInviteDTO; |
|
|
|
import com.bx.implatform.vo.GroupMemberVO; |
|
|
|
import com.bx.implatform.vo.GroupMessageVO; |
|
|
|
import com.bx.implatform.vo.GroupVO; |
|
|
|
|
|
|
|
@ -1,6 +1,6 @@ |
|
|
|
<template> |
|
|
|
<uni-popup ref="popup" type="bottom"> |
|
|
|
<view class="chat-group-member-choose"> |
|
|
|
<view class="group-member-selector"> |
|
|
|
<view class="top-bar"> |
|
|
|
<view class="top-tip">选择成员</view> |
|
|
|
<button class="top-btn" type="warn" size="mini" @click="onClean()">清空 </button> |
|
|
|
@ -40,7 +40,7 @@ |
|
|
|
|
|
|
|
<script> |
|
|
|
export default { |
|
|
|
name: "chat-group-member-choose", |
|
|
|
name: "group-member-selector", |
|
|
|
props: { |
|
|
|
group: { |
|
|
|
type: Object |
|
|
|
@ -110,7 +110,7 @@ export default { |
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
.chat-group-member-choose { |
|
|
|
.group-member-selector { |
|
|
|
position: relative; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
|
|
|
|
@ -198,7 +198,7 @@ export default { |
|
|
|
onGroupVideo() { |
|
|
|
// 邀请成员发起通话 |
|
|
|
let ids = [this.mine.id]; |
|
|
|
this.$refs.selBox.init(ids, ids); |
|
|
|
this.$refs.selBox.init(ids, ids, []); |
|
|
|
this.$refs.selBox.open(); |
|
|
|
}, |
|
|
|
onInviteOk(ids) { |
|
|
|
|
|
|
|
@ -76,7 +76,7 @@ |
|
|
|
</el-main> |
|
|
|
<emotion ref="emoBox" @emotion="onEmotion"></Emotion> |
|
|
|
<chat-record :visible="showRecord" @close="closeRecordBox" @send="onSendRecord"></chat-record> |
|
|
|
<group-member-selector ref="rtcSel" :groupId="group.id" @complete="onInviteOk"></group-member-selector> |
|
|
|
<group-member-selector ref="rtcSel" :group="group" @complete="onInviteOk"></group-member-selector> |
|
|
|
<rtc-group-join ref="rtcJoin" :groupId="group.id"></rtc-group-join> |
|
|
|
<chat-history :visible="showHistory" :chat="chat" :friend="friend" :group="group" |
|
|
|
:groupMembers="groupMembers" @close="closeHistoryBox"></chat-history> |
|
|
|
@ -321,7 +321,7 @@ export default { |
|
|
|
// 邀请成员发起通话 |
|
|
|
let ids = [this.mine.id]; |
|
|
|
let maxChannel = this.$store.state.configStore.webrtc.maxChannel; |
|
|
|
this.$refs.rtcSel.open(maxChannel, ids, ids); |
|
|
|
this.$refs.rtcSel.open(maxChannel, ids, ids,[]); |
|
|
|
}, |
|
|
|
onInviteOk(members) { |
|
|
|
if (members.length < 2) { |
|
|
|
|
|
|
|
@ -67,7 +67,23 @@ export default { |
|
|
|
this.$emit("close"); |
|
|
|
}, |
|
|
|
onAddFriend() { |
|
|
|
this.$refs.applyRef.open(this.user); |
|
|
|
this.$http({ |
|
|
|
url: "/friend/add", |
|
|
|
method: "post", |
|
|
|
params: { |
|
|
|
friendId: this.user.id |
|
|
|
} |
|
|
|
}).then(() => { |
|
|
|
this.$message.success("添加成功,对方已成为您的好友"); |
|
|
|
let friend = { |
|
|
|
id: this.user.id, |
|
|
|
nickName: this.user.nickName, |
|
|
|
headImage: this.user.headImageThumb, |
|
|
|
online: this.user.online, |
|
|
|
deleted: false |
|
|
|
} |
|
|
|
this.$store.commit("addFriend", friend); |
|
|
|
}) |
|
|
|
}, |
|
|
|
showFullImage() { |
|
|
|
if (this.user.headImage) { |
|
|
|
@ -78,9 +94,6 @@ export default { |
|
|
|
computed: { |
|
|
|
isFriend() { |
|
|
|
return this.$store.getters.isFriend(this.user.id); |
|
|
|
}, |
|
|
|
isWaitingApprove() { |
|
|
|
return this.$store.getters.isInRecvRequest(this.user.id); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -150,4 +163,4 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |
|
|
|
</style> |
|
|
|
@ -61,7 +61,7 @@ |
|
|
|
maxlength="1024" placeholder="群主未设置"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<div> |
|
|
|
<el-button type="warning" @click="onInviteMember()">邀请</el-button> |
|
|
|
<el-button type="warning" @click="onInvite()">邀请</el-button> |
|
|
|
<el-button type="success" @click="onSaveGroup()">保存</el-button> |
|
|
|
<el-button type="danger" v-show="!isOwner" @click="onQuit()">退出</el-button> |
|
|
|
<el-button type="danger" v-show="isOwner" @click="onDissolve()">解散</el-button> |
|
|
|
|