package com.cyksj.service.claude; import com.cyksj.model.entity.ClaudeCodeUser; import com.cyksj.model.entity.GoodsDonSku; import com.cyksj.model.entity.GroupsRelation; import com.cyksj.model.request.ClaudeCodeApiKeysReq; import com.cyksj.model.request.ClaudeCodeCreditCardUseReq; import com.cyksj.model.request.ClaudeCodeDelReq; import com.cyksj.model.request.CreditResetReq; import com.cyksj.model.request.TimeRateConfigReq; import com.cyksj.model.response.*; import com.cyksj.model.response.claudecode.ClaudeCodeResp; import com.cyksj.model.views.ClaudeCodeUserApiKeysView; import com.cyksj.model.views.ClaudeCodeUserInfoView; import com.cyksj.model.views.ClaudeCodeUserResetRecordView; import com.cyksj.model.views.ClaudeCodeUserCreditCardRecordView; import com.ejlchina.searcher.SearchResult; import java.util.Date; import java.util.List; /** * 项目名: yhlxj11111111 * 文件名: ClaudeCodeService * 创建者: JavaZou * 创建时间:2025/8/8 10:55 */ public interface ClaudeCodeService { /** * 生成claude code用户套餐信息 */ void generateOrUpdateClaudeCodeUserInfo(Long orderId, Long relationId, Long userId, GoodsDonSku sku, Integer orderType); /** * 用户创建api keys */ ClaudeCodeResp createApiKeys(ClaudeCodeApiKeysReq req) throws Exception; /** * 删除api key */ void deleteApiKeysById(ClaudeCodeDelReq delReq) throws Exception; /** * 用户api keys列表 */ List getUserApiKeys(long userId) throws Exception; ClaudeCodePointsHistoryResp getUserPointsDetail(Long userId, String type, Integer page, Integer limit) throws Exception; ClaudeCodeResp getUserDashboard(Long userId) throws Exception; ClaudeCodeResp getUserBalance(Long userId) throws Exception; ClaudeCodeResp getCreditsAnalytics(Long userId, String start, String end, String tz, Integer page, Integer limit, String order, String type) throws Exception; void invalidateUserCache(Long relationUserId); ClaudeCodeUserInfoView getClaudeCodeUserSubsInfo(Long userId); Boolean checkClaudeCodeUser(Long userId); void updateClaudeCodeUserPackageInfo(ClaudeCodeUser claudeCodeUser, Date expiryTime); /** * 删除用户claude code 套餐 */ Boolean delUserPackages(Long userId); /** * 处理续费升级 TODO */ void handleClaudeCodeUserPackageSku(GroupsRelation relation, GoodsDonSku sku, Long orderId); /** * 获取当前时间的积分倍率配置信息 */ TimeRateCurrentResp getCurrentTimeRate(); /** * 获取系统中所有的时间倍率配置列表(包括已启用和已禁用的配置) */ TimeRateConfigsResp getAllConfigs(); /** * 创建新的时间倍率配置。系统支持跨天配置(如23点到6点) */ TimeRateConfigResp createConfig(TimeRateConfigReq req); /** * 更新指定ID的时间倍率配置 */ TimeRateConfigResp updateConfig(Long id, TimeRateConfigReq req); /** * 删除指定ID的时间倍率配置。删除后该时间段将使用默认倍率1.0 */ void deleteConfig(Long id); /** * 将指定用户的积分重置为满积分状态(used_credits设为0) */ CreditResetResp resetUserCredits(Long userId, CreditResetReq req); /** * 重置用户codePoints到原始值并记录重置次数 */ void resetUserCodePoints(Long userId, Integer resetType, Long operatorId, String operatorName, String resetReason); /** * 使用积分卡增加用户codePoints并记录使用次数 */ void useCreditCard(Long userId, Integer addCodePoints, String cardNumber, Long operatorId, String operatorName, String useReason); /** * 用户使用重置次数 - 保持幂等性 */ boolean useResetCount(Long userId); /** * 用户使用积分卡 */ ClaudeCodeResp useCreditCard(ClaudeCodeCreditCardUseReq req) throws Exception; /** * 获取用户重置次数明细 */ SearchResult getUserResetRecords(Long userId, Integer page, Integer limit); /** * 获取用户积分卡使用明细 */ SearchResult getUserCreditCardRecords(Long userId, Integer page, Integer limit); /** * 获取用户奖励明细 */ ClaudeCodeRewardDetailsResp getUserRewardDetails(Long userId); }