mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
[feature][common]Add permission management to chat model.
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package com.tencent.supersonic.common.config;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.ChatModelConfig;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ChatModel {
|
||||
@@ -25,5 +27,11 @@ public class ChatModel {
|
||||
|
||||
private String admin;
|
||||
|
||||
private String viewer;
|
||||
private List<String> viewers = Lists.newArrayList();
|
||||
|
||||
private Integer isOpen = 0;
|
||||
|
||||
public boolean isPublic() {
|
||||
return isOpen != null && isOpen == 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,4 +30,6 @@ public class ChatModelDO {
|
||||
private String admin;
|
||||
|
||||
private String viewer;
|
||||
|
||||
private Integer isOpen;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.tencent.supersonic.common.pojo.User;
|
||||
import java.util.List;
|
||||
|
||||
public interface ChatModelService {
|
||||
List<ChatModel> getChatModels();
|
||||
List<ChatModel> getChatModels(User user);
|
||||
|
||||
ChatModel getChatModel(Integer id);
|
||||
|
||||
|
||||
@@ -23,8 +23,15 @@ import java.util.stream.Collectors;
|
||||
public class ChatModelServiceImpl extends ServiceImpl<ChatModelMapper, ChatModelDO>
|
||||
implements ChatModelService {
|
||||
@Override
|
||||
public List<ChatModel> getChatModels() {
|
||||
return list().stream().map(this::convert).collect(Collectors.toList());
|
||||
public List<ChatModel> getChatModels(User user) {
|
||||
return list().stream().map(this::convert).filter(chatModel -> {
|
||||
if (chatModel.isPublic() || user.isSuperAdmin()
|
||||
|| chatModel.getCreatedBy().equals(user.getName())
|
||||
|| chatModel.getViewers().contains(user.getName())) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -41,12 +48,15 @@ public class ChatModelServiceImpl extends ServiceImpl<ChatModelMapper, ChatModel
|
||||
chatModelDO.setCreatedBy(user.getName());
|
||||
chatModelDO.setCreatedAt(new Date());
|
||||
chatModelDO.setUpdatedBy(user.getName());
|
||||
chatModelDO.setUpdatedAt(new Date());
|
||||
chatModelDO.setUpdatedAt(chatModelDO.getCreatedAt());
|
||||
chatModelDO.setIsOpen(chatModel.getIsOpen());
|
||||
if (StringUtils.isBlank(chatModel.getAdmin())) {
|
||||
chatModelDO.setAdmin(user.getName());
|
||||
}
|
||||
if (!chatModel.getViewers().isEmpty()) {
|
||||
chatModelDO.setViewer(JsonUtil.toString(chatModel.getViewers()));
|
||||
}
|
||||
save(chatModelDO);
|
||||
chatModel.setId(chatModelDO.getId());
|
||||
return chatModel;
|
||||
}
|
||||
|
||||
@@ -55,9 +65,13 @@ public class ChatModelServiceImpl extends ServiceImpl<ChatModelMapper, ChatModel
|
||||
ChatModelDO chatModelDO = convert(chatModel);
|
||||
chatModelDO.setUpdatedBy(user.getName());
|
||||
chatModelDO.setUpdatedAt(new Date());
|
||||
chatModelDO.setIsOpen(chatModel.getIsOpen());
|
||||
if (StringUtils.isBlank(chatModel.getAdmin())) {
|
||||
chatModel.setAdmin(user.getName());
|
||||
}
|
||||
if (!chatModel.getViewers().isEmpty()) {
|
||||
chatModelDO.setViewer(JsonUtil.toString(chatModel.getViewers()));
|
||||
}
|
||||
updateById(chatModelDO);
|
||||
return chatModel;
|
||||
}
|
||||
@@ -74,6 +88,7 @@ public class ChatModelServiceImpl extends ServiceImpl<ChatModelMapper, ChatModel
|
||||
ChatModel chatModel = new ChatModel();
|
||||
BeanUtils.copyProperties(chatModelDO, chatModel);
|
||||
chatModel.setConfig(JsonUtil.toObject(chatModelDO.getConfig(), ChatModelConfig.class));
|
||||
chatModel.setViewers(JsonUtil.toList(chatModelDO.getViewer(), String.class));
|
||||
return chatModel;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user