修改举报和UI
This commit is contained in:
@@ -173,6 +173,22 @@ typedef void (^AiVMSpeechTranscribeCompletion)(KBAiSpeechTranscribeResponse *_Nu
|
||||
- (void)fetchCompanionDetailWithCompanionId:(NSInteger)companionId
|
||||
completion:(void(^)(KBAICompanionDetailModel * _Nullable detail, NSError * _Nullable error))completion;
|
||||
|
||||
#pragma mark - 举报接口
|
||||
|
||||
/// 举报 AI 角色
|
||||
/// @param companionId AI 角色 ID
|
||||
/// @param reportTypes 举报类型数组(按界面从上到下 1-12)
|
||||
/// @param reportDesc 详细描述
|
||||
/// @param chatContext 聊天上下文快照 JSON 字符串
|
||||
/// @param evidenceImageUrl 图片证据 URL
|
||||
/// @param completion 完成回调
|
||||
- (void)reportCompanionWithCompanionId:(NSInteger)companionId
|
||||
reportTypes:(NSArray<NSNumber *> *)reportTypes
|
||||
reportDesc:(nullable NSString *)reportDesc
|
||||
chatContext:(nullable NSString *)chatContext
|
||||
evidenceImageUrl:(nullable NSString *)evidenceImageUrl
|
||||
completion:(void(^)(BOOL success, NSError * _Nullable error))completion;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -808,4 +808,100 @@ autoShowBusinessError:NO
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - 举报接口
|
||||
|
||||
- (void)reportCompanionWithCompanionId:(NSInteger)companionId
|
||||
reportTypes:(NSArray<NSNumber *> *)reportTypes
|
||||
reportDesc:(nullable NSString *)reportDesc
|
||||
chatContext:(nullable NSString *)chatContext
|
||||
evidenceImageUrl:(nullable NSString *)evidenceImageUrl
|
||||
completion:(void (^)(BOOL, NSError * _Nullable))completion {
|
||||
if (companionId <= 0) {
|
||||
NSError *error = [NSError errorWithDomain:@"AiVM"
|
||||
code:-1
|
||||
userInfo:@{NSLocalizedDescriptionKey : @"invalid companionId"}];
|
||||
if (completion) {
|
||||
completion(NO, error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableArray<NSNumber *> *typeList = [NSMutableArray array];
|
||||
for (id item in reportTypes) {
|
||||
if ([item isKindOfClass:[NSNumber class]]) {
|
||||
[typeList addObject:(NSNumber *)item];
|
||||
} else if ([item isKindOfClass:[NSString class]]) {
|
||||
NSInteger value = [(NSString *)item integerValue];
|
||||
[typeList addObject:@(value)];
|
||||
}
|
||||
}
|
||||
if (typeList.count == 0) {
|
||||
NSError *error = [NSError errorWithDomain:@"AiVM"
|
||||
code:-1
|
||||
userInfo:@{NSLocalizedDescriptionKey : @"reportTypes is empty"}];
|
||||
if (completion) {
|
||||
completion(NO, error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableDictionary *params = [NSMutableDictionary dictionary];
|
||||
params[@"companionId"] = @(companionId);
|
||||
params[@"reportTypes"] = [typeList copy];
|
||||
if (reportDesc.length > 0) {
|
||||
params[@"reportDesc"] = reportDesc;
|
||||
}
|
||||
if (chatContext.length > 0) {
|
||||
params[@"chatContext"] = chatContext;
|
||||
}
|
||||
if (evidenceImageUrl.length > 0) {
|
||||
params[@"evidenceImageUrl"] = evidenceImageUrl;
|
||||
}
|
||||
|
||||
NSLog(@"[AiVM] /ai-companion/report request: %@", params);
|
||||
[[KBNetworkManager shared]
|
||||
POST:@"/ai-companion/report"
|
||||
jsonBody:[params copy]
|
||||
headers:nil
|
||||
autoShowBusinessError:NO
|
||||
completion:^(NSDictionary *_Nullable json,
|
||||
NSURLResponse *_Nullable response,
|
||||
NSError *_Nullable error) {
|
||||
if (error) {
|
||||
NSLog(@"[AiVM] /ai-companion/report failed: %@", error.localizedDescription ?: @"");
|
||||
if (completion) {
|
||||
completion(NO, error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NSLog(@"[AiVM] /ai-companion/report response: %@", json);
|
||||
if (![json isKindOfClass:[NSDictionary class]]) {
|
||||
NSError *parseError = [NSError errorWithDomain:@"AiVM"
|
||||
code:-1
|
||||
userInfo:@{NSLocalizedDescriptionKey : @"数据格式错误"}];
|
||||
if (completion) {
|
||||
completion(NO, parseError);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NSInteger code = [json[@"code"] integerValue];
|
||||
if (code != 0) {
|
||||
NSString *message = json[@"message"] ?: @"请求失败";
|
||||
NSError *bizError = [NSError errorWithDomain:@"AiVM"
|
||||
code:code
|
||||
userInfo:@{NSLocalizedDescriptionKey : message}];
|
||||
if (completion) {
|
||||
completion(NO, bizError);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (completion) {
|
||||
completion(YES, nil);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user