|
|
@@ -31,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.io.IOException;
|
|
|
import java.util.List;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
|
|
/**
|
|
|
* 项目名: yhlxj2
|
|
|
@@ -66,11 +67,12 @@ public class MiniPopularizeFrontServiceImpl implements MiniPopularizeFrontServic
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
public void createPictures(MiniAiPicturesReq miniAiPicturesReq) throws IOException {
|
|
|
String conversationId = miniAiPicturesReq.getConversationId();
|
|
|
+ AtomicBoolean recoverNum = new AtomicBoolean(true);
|
|
|
Long userId = miniAiPicturesReq.getUserId();
|
|
|
conversationId = checkUser(MiniPopularizeUserConversation.builder()
|
|
|
.userId(userId)
|
|
|
.content(miniAiPicturesReq.getTips())
|
|
|
- .build(), conversationId);
|
|
|
+ .build(), conversationId, recoverNum);
|
|
|
miniAiPicturesReq.setConversationId(conversationId);
|
|
|
Long configId = miniAiPicturesReq.getId();
|
|
|
if (configId != null) {
|
|
|
@@ -90,6 +92,7 @@ public class MiniPopularizeFrontServiceImpl implements MiniPopularizeFrontServic
|
|
|
.conversationId(conversationId)
|
|
|
.content(miniAiPicturesReq.getTips())
|
|
|
.type(MiniPopularizeUserConversationChat.Type.text)
|
|
|
+ .role(MiniPopularizeUserConversationChat.Role.user)
|
|
|
.userId(userId)
|
|
|
.build();
|
|
|
conversationChatMapper.insert(chat);
|
|
|
@@ -107,6 +110,7 @@ public class MiniPopularizeFrontServiceImpl implements MiniPopularizeFrontServic
|
|
|
.miniPopularizeCommonService(miniPopularizeCommonService)
|
|
|
.conversationId(conversationId)
|
|
|
.imgRecordId(imageRecord.getId())
|
|
|
+ .recoverNum(recoverNum.get())
|
|
|
.build();
|
|
|
streamChatCompletion(miniAiPicturesReq, listener);
|
|
|
}
|
|
|
@@ -118,7 +122,7 @@ public class MiniPopularizeFrontServiceImpl implements MiniPopularizeFrontServic
|
|
|
return user;
|
|
|
}
|
|
|
|
|
|
- private String checkUser(MiniPopularizeUserConversation conversation, String conversationId) {
|
|
|
+ private String checkUser(MiniPopularizeUserConversation conversation, String conversationId, AtomicBoolean recoverNum) {
|
|
|
if (conversationId != null) {
|
|
|
MiniPopularizeUserConversationChat miniPopularizeUserConversationChat = conversationChatMapper.selectOne(Wrappers.lambdaQuery(MiniPopularizeUserConversationChat.class)
|
|
|
.eq(MiniPopularizeUserConversationChat::getConversationId, conversationId)
|
|
|
@@ -126,15 +130,11 @@ public class MiniPopularizeFrontServiceImpl implements MiniPopularizeFrontServic
|
|
|
.orderByDesc(MiniPopularizeUserConversationChat::getId)
|
|
|
.last("limit 1"));
|
|
|
if (miniPopularizeUserConversationChat == null || !miniPopularizeUserConversationChat.getUserId().equals(conversation.getUserId())) {
|
|
|
- conversationId = null;
|
|
|
+ throw BusinessRuntimeException.getInstance("系统错误,无法在原图上进行修改");
|
|
|
} else if (miniPopularizeUserConversationChat.getStatus() != MiniPopularizeUserConversationChat.Status.success) {
|
|
|
throw BusinessRuntimeException.getInstance("图片还未生成,无法进行修改");
|
|
|
}
|
|
|
-
|
|
|
- if (conversationId == null) {
|
|
|
- conversationId = miniPopularizeUserConversationChat.getConversationId();
|
|
|
- conversation.setConversationId(conversationId);
|
|
|
- }
|
|
|
+ recoverNum.set(false);
|
|
|
}
|
|
|
Long userId = conversation.getUserId();
|
|
|
if (conversationId == null) {
|
|
|
@@ -148,7 +148,7 @@ public class MiniPopularizeFrontServiceImpl implements MiniPopularizeFrontServic
|
|
|
if (num < 0) {
|
|
|
redisService.incr(RedisService.key.MINI_POPULARIZE_GPT_NUM.getName() + userId, 1L);
|
|
|
}
|
|
|
- int i = miniPopularizeUserMapper.decLumaNum(user.getId(), 1, user.getNum());
|
|
|
+ int i = miniPopularizeUserMapper.decLumaNum(userId, 1, user.getNum());
|
|
|
if (i == 0) {
|
|
|
redisService.incr(RedisService.key.MINI_POPULARIZE_GPT_NUM.getName() + userId, 1L);
|
|
|
throw BusinessRuntimeException.getInstance("网络异常,请稍后再试");
|
|
|
@@ -209,10 +209,13 @@ public class MiniPopularizeFrontServiceImpl implements MiniPopularizeFrontServic
|
|
|
private void contentMsg(JSONArray messages, String conversationId) {
|
|
|
List<MiniPopularizeUserConversationChat> miniPopularizeUserConversationChats = conversationChatMapper.selectList(Wrappers.lambdaQuery(MiniPopularizeUserConversationChat.class)
|
|
|
.eq(MiniPopularizeUserConversationChat::getConversationId, conversationId));
|
|
|
- miniPopularizeUserConversationChats.forEach(chat->{
|
|
|
+ miniPopularizeUserConversationChats.forEach(chat -> {
|
|
|
if (chat.getStatus() != null && chat.getStatus() == MiniPopularizeUserConversationChat.Status.processing) {
|
|
|
return;
|
|
|
}
|
|
|
+ if (chat.getRole() != null && chat.getRole() == MiniPopularizeUserConversationChat.Role.sys) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
String content = chat.getContent();
|
|
|
if (chat.getType() == MiniPopularizeUserConversationChat.Type.text) {
|
|
|
messages.add(JSONUtil.createObj().set("role", "user").set("content", content));
|