MiniPopularizeCommonServiceImpl.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.cyksj.service.mini.impl;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.cyksj.mapper.mini.MiniPopularizeUserConversationChatMapper;
  5. import com.cyksj.mapper.mini.MiniPopularizeUserMapper;
  6. import com.cyksj.model.entity.MiniPopularizeUser;
  7. import com.cyksj.model.entity.MiniPopularizeUserConversationChat;
  8. import com.cyksj.redis.RedisService;
  9. import com.cyksj.service.mini.MiniPopularizeCommonService;
  10. import lombok.RequiredArgsConstructor;
  11. import org.springframework.stereotype.Service;
  12. /**
  13. * 项目名: yhlxj2
  14. * 文件名: MiniPopularizeCommonServiceImpl
  15. * 创建者: JavaZou
  16. * 创建时间:2025/4/11 11:46
  17. */
  18. @Service
  19. @RequiredArgsConstructor
  20. public class MiniPopularizeCommonServiceImpl implements MiniPopularizeCommonService {
  21. private final RedisService redisService;
  22. private final MiniPopularizeUserMapper miniPopularizeUserMapper;
  23. private final MiniPopularizeUserConversationChatMapper conversationChatMapper;
  24. @Override
  25. public void recoverUserLimit(Long userId, Boolean recoverNum) {
  26. if (!recoverNum) {
  27. return;
  28. }
  29. miniPopularizeUserMapper.incrNum(userId, 1);
  30. }
  31. @Override
  32. public Boolean saveImgRecord(MiniPopularizeUserConversationChat record) {
  33. Long id = record.getId();
  34. if (id != null) {
  35. MiniPopularizeUserConversationChat dbChat = conversationChatMapper.selectById(id);
  36. if (StrUtil.isNotBlank(dbChat.getImg())) {
  37. //已更新 直接返回false
  38. return false;
  39. }
  40. conversationChatMapper.updateById(record);
  41. } else conversationChatMapper.insert(record);
  42. return true;
  43. }
  44. @Override
  45. public void recordChatEndOfAnswer(String conversationId, Long userId, String content, MiniPopularizeUserConversationChat.Role role) {
  46. MiniPopularizeUserConversationChat chat = MiniPopularizeUserConversationChat
  47. .builder()
  48. .conversationId(conversationId)
  49. .userId(userId)
  50. .content(content)
  51. .type(MiniPopularizeUserConversationChat.Type.text)
  52. .role(role).build();
  53. conversationChatMapper.insert(chat);
  54. }
  55. @Override
  56. public void incrGptTimes(long userId, Integer oriNum, Integer addNum) {
  57. int i = miniPopularizeUserMapper.incrNumSync(userId, oriNum, addNum);
  58. while (i == 0) {
  59. MiniPopularizeUser user = miniPopularizeUserMapper.selectOne(Wrappers.lambdaQuery(MiniPopularizeUser.class)
  60. .eq(MiniPopularizeUser::getUserId, userId)
  61. .last("limit 1"));
  62. if (user == null) {
  63. break;
  64. }
  65. oriNum = user.getNum();
  66. i = miniPopularizeUserMapper.incrNumSync(userId, oriNum, addNum);
  67. }
  68. }
  69. @Override
  70. public Boolean checkImageIsCompleted(Long imgRecordId) {
  71. MiniPopularizeUserConversationChat dbChat = conversationChatMapper.selectById(imgRecordId);
  72. if (dbChat == null || (dbChat.getType() == MiniPopularizeUserConversationChat.Type.image && StrUtil.isEmpty(dbChat.getImg()) && dbChat.getStatus() == MiniPopularizeUserConversationChat.Status.processing)) {
  73. return false;
  74. }
  75. return true;
  76. }
  77. }