|
@@ -5,12 +5,15 @@ import cn.hutool.core.lang.UUID;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
+import com.cyksj.common.constant.Constant;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.common.util.StringUtil;
|
|
import com.cyksj.common.util.StringUtil;
|
|
|
import com.cyksj.mapper.*;
|
|
import com.cyksj.mapper.*;
|
|
|
import com.cyksj.model.entity.*;
|
|
import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.request.gpt.ConversationRequest;
|
|
import com.cyksj.model.request.gpt.ConversationRequest;
|
|
|
import com.cyksj.model.response.ConversationLimitResponse;
|
|
import com.cyksj.model.response.ConversationLimitResponse;
|
|
|
|
|
+import com.cyksj.model.views.ChatGptUserView;
|
|
|
|
|
+import com.cyksj.model.views.ClaudeUserView;
|
|
|
import com.cyksj.redis.RedisService;
|
|
import com.cyksj.redis.RedisService;
|
|
|
import com.cyksj.service.claude.ClaudeService;
|
|
import com.cyksj.service.claude.ClaudeService;
|
|
|
import com.cyksj.service.sys.SysConfigService;
|
|
import com.cyksj.service.sys.SysConfigService;
|
|
@@ -21,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
@@ -54,6 +58,27 @@ public class ClaudeServiceImpl implements ClaudeService {
|
|
|
|
|
|
|
|
private final ClaudeUserConversationRecordMapper claudeUserConversationRecordMapper;
|
|
private final ClaudeUserConversationRecordMapper claudeUserConversationRecordMapper;
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public ClaudeUserView getUserInfo(long userId, Long relationId) {
|
|
|
|
|
+ ClaudeUser claudeUser = checkCarAccount(userId, relationId);
|
|
|
|
|
+ if (claudeUser != null) {
|
|
|
|
|
+
|
|
|
|
|
+ GroupsRelation groupsRelation = getGroupsRelation(userId, relationId);
|
|
|
|
|
+ GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
|
|
|
|
|
+ GoodsDonSku goodsDonSku = skuMapper.selectById(groupsTrips.getSkuId());
|
|
|
|
|
+
|
|
|
|
|
+ return ClaudeUserView.builder()
|
|
|
|
|
+ .skuName(goodsDonSku.getSubTitle())
|
|
|
|
|
+ .expireTime(claudeUser.getExpireTime())
|
|
|
|
|
+ .limitNum(claudeUser.getLimitNum())
|
|
|
|
|
+ .limitTime(claudeUser.getLimitTime())
|
|
|
|
|
+ .use(Math.min(claudeUser.getLimitNum(), getConversationCount(claudeUser.getUserToken(), claudeUser.getLimitTime())))
|
|
|
|
|
+ .build();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("您还未购买该车票");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public ClaudeUser findByUserTokenAndExpireTimeAfter(String userToken, LocalDateTime now) {
|
|
public ClaudeUser findByUserTokenAndExpireTimeAfter(String userToken, LocalDateTime now) {
|
|
|
return claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class).eq(ClaudeUser::getUserToken, userToken).gt(ClaudeUser::getExpireTime, now));
|
|
return claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class).eq(ClaudeUser::getUserToken, userToken).gt(ClaudeUser::getExpireTime, now));
|
|
@@ -133,16 +158,15 @@ public class ClaudeServiceImpl implements ClaudeService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public Boolean checkCarAccount(Long userId, Long relationId) {
|
|
|
|
|
|
|
+ public ClaudeUser checkCarAccount(Long userId, Long relationId) {
|
|
|
GroupsRelation groupsRelation = getGroupsRelation(userId, relationId);
|
|
GroupsRelation groupsRelation = getGroupsRelation(userId, relationId);
|
|
|
GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
|
|
GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
|
|
|
GoodsDonSku goodsDonSku = skuMapper.selectById(groupsTrips.getSkuId());
|
|
GoodsDonSku goodsDonSku = skuMapper.selectById(groupsTrips.getSkuId());
|
|
|
|
|
|
|
|
if (goodsDonSku != null && goodsDonSku.getGoodsId() == 75 && goodsDonSku.getIsMirror() && goodsDonSku.getIsCar()) {
|
|
if (goodsDonSku != null && goodsDonSku.getGoodsId() == 75 && goodsDonSku.getIsMirror() && goodsDonSku.getIsCar()) {
|
|
|
- ClaudeUser claudeUser = getClaudeUser(userId, relationId, groupsRelation, goodsDonSku);
|
|
|
|
|
- return true;
|
|
|
|
|
|
|
+ return getClaudeUser(userId, relationId, groupsRelation, goodsDonSku);
|
|
|
} else {
|
|
} else {
|
|
|
- return false;
|
|
|
|
|
|
|
+ return null;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|