This commit is contained in:
2025-12-04 13:37:11 +08:00
parent f770f8055e
commit b216ddaa61
11 changed files with 377 additions and 10 deletions

View File

@@ -6,18 +6,31 @@
//
#import <Foundation/Foundation.h>
#import "KBCharacter.h"
@class KBUser;
NS_ASSUME_NONNULL_BEGIN
typedef void(^KBMyUserDetailCompletion)(KBUser *_Nullable user, NSError *_Nullable error);
typedef void(^KBCharacterListCompletion)(NSArray<KBCharacter *> *characterArray, NSError *_Nullable error);
typedef void(^KBUpLoadAvatarCompletion)(BOOL success, NSError * _Nullable error);
typedef void(^KBUpdateUserInfoCompletion)(BOOL success, NSError * _Nullable error);
@interface KBMyVM : NSObject
/// 获取当前用户详情(/user/detail
- (void)fetchUserDetailWithCompletion:(KBMyUserDetailCompletion)completion;
/// 用户人设列表(/character/listByUser
- (void)fetchCharacterListByUserWithCompletion:(KBCharacterListCompletion)completion;
/// 上传头像
- (void)upLoadAvatarWithData:(NSData *)avatarData completion:(KBUpLoadAvatarCompletion)completion;
/// 更新用户信息
- (void)updateUserInfo:(KBUser *)user completion:(KBUpdateUserInfoCompletion)completion;
/// 退出登录
- (void)logout;
@end

View File

@@ -42,6 +42,72 @@
if (completion) completion(user, nil);
}];
}
- (void)fetchCharacterListByUserWithCompletion:(KBCharacterListCompletion)completion{
[[KBNetworkManager shared] GET:KB_API_CHARACTER_LISTBYUSER
parameters:nil
headers:nil
autoShowBusinessError:NO
completion:^(NSDictionary *jsonOrData, NSURLResponse * _Nullable response, NSError * _Nullable error) {
[KBHUD dismiss];
if (error) {
NSString *msg = KBBizMessageFromJSONObject(jsonOrData) ?: error.localizedDescription ?: KBLocalized(@"Network error");
[KBHUD showInfo:msg];
if (completion) completion([NSArray new], error);
return;
}
id dataObj = jsonOrData[KBData] ?: jsonOrData[@"data"];
if (![dataObj isKindOfClass:[NSArray class]]) {
NSError *e = [NSError errorWithDomain:KBNetworkErrorDomain
code:KBNetworkErrorInvalidResponse
userInfo:@{NSLocalizedDescriptionKey: KBLocalized(@"Invalid response")}];
[KBHUD showInfo:e.localizedDescription];
if (completion) completion([NSArray new], e);
return;
}
NSArray<KBCharacter *> *list = [KBCharacter mj_objectArrayWithKeyValuesArray:(NSArray *)dataObj];
if (completion) completion(list, nil);
}];
}
///
- (void)upLoadAvatarWithData:(NSData *)avatarData completion:(KBUpLoadAvatarCompletion)completion{
[KBHUD show];
[[KBNetworkManager shared] uploadFile:KB_API_FILE_UPLOAD
fileData:avatarData
fileName:@"avatar.jpg"
mimeType:@"image/jpeg"
headers:nil
completion:^(NSDictionary * _Nullable json,
NSURLResponse * _Nullable response,
NSError * _Nullable error) {
[KBHUD dismiss];
if (error) {
NSLog(@"上传失败: %@", error);
return;
}
NSString *avImageString = json[@"data"];
// [weakSelf.avatarView kb_setImageURL:[NSURL URLWithString:avImageString] placeholder:KBPlaceholderImage];
NSLog(@"上传成功: %@", json);
}];
}
///
- (void)updateUserInfo:(KBUser *)user completion:(KBUpdateUserInfoCompletion)completion{
///
KBUser *localUser = [KBUserSessionManager shared].currentUser;
NSMutableDictionary *params = [NSMutableDictionary dictionary];
if (localUser.userId.length) params[@"uid"] = localUser.userId;
if (localUser.nickName.length) params[@"nickName"] = localUser.nickName;
params[@"gender"] = (NSInteger)localUser.gender;
if (localUser.avatarUrl.length) params[@"avatarUrl"] = localUser.avatarUrl;
}
- (void)logout{
[KBHUD show];
[[KBNetworkManager shared] GET:API_LOGOUT