Files
my_yuyin/QXLive/Login(登录)/Controlller/QXFillUserInfoViewController.m
2025-09-22 18:48:29 +08:00

351 lines
15 KiB
Objective-C
Executable File

//
// QXFillUserInfoViewController.m
// SoundRiver
//
// Created by Reyna on 2020/10/27.
//
#import "QXFillUserInfoViewController.h"
#import "BRDatePickerView.h"
#import "NSDate+BRPickerView.h"
#import <TZImagePickerController/TZImageManager.h>
#import <TZImagePickerController/TZImagePickerController.h>
#import "UIImage+QX.h"
#import "NSString+QX.h"
#import "QXApi.h"
#import "QXOSSManager.h"
#import "QXLoginNetwork.h"
#import "AppDelegate.h"
//#import <ImSDK_Plus/V2TIMManager.h>
#import <ImSDK_Plus/ImSDK_Plus.h>
@interface QXFillUserInfoViewController ()<UITextFieldDelegate,TZImagePickerControllerDelegate>
@property (weak, nonatomic) IBOutlet UITextField *userNameTF; //用户昵称TF
@property (weak, nonatomic) IBOutlet UITextField *codeTF; //邀请码TF
@property (weak, nonatomic) IBOutlet UIButton *girlBtn;
@property (weak, nonatomic) IBOutlet UIButton *boyBtn;
@property (weak, nonatomic) IBOutlet UILabel *yearLabel;
@property (weak, nonatomic) IBOutlet UILabel *monthLabel;
@property (weak, nonatomic) IBOutlet UILabel *dayLabel;
@property (weak, nonatomic) IBOutlet UIButton *headerBtn;
@property (weak, nonatomic) IBOutlet UIButton *randomBtn;
@property (weak, nonatomic) IBOutlet UIButton *comitUserInfoBtn;
@property (nonatomic, assign) NSInteger mSex;
@property (nonatomic, strong) NSString *birthday;
@property (nonatomic, strong) NSString *avartar;
@property (weak, nonatomic) IBOutlet UILabel *nickTitleLabel;
@property (weak, nonatomic) IBOutlet UILabel *sexTitleLabel;
@property (weak, nonatomic) IBOutlet UILabel *birthdayTitleLabel;
@property (weak, nonatomic) IBOutlet UILabel *invitTitleLabel;
@property (weak, nonatomic) IBOutlet UILabel *yearTitleLabel;
@property (weak, nonatomic) IBOutlet UILabel *monthTitleLabel;
@property (weak, nonatomic) IBOutlet UILabel *dayTitleLabel;
@property (nonatomic, assign) BOOL isPhoto;
@property (nonatomic,strong)UIButton *backBtn;
@end
@implementation QXFillUserInfoViewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)initSubViews {
self.headerBtn.layer.masksToBounds = YES;
self.headerBtn.layer.cornerRadius = 47.5;
self.headerBtn.imageView.contentMode = UIViewContentModeScaleAspectFill;
self.backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, kSafeAreaTop+5, 40, 40)];
[self.backBtn setImage:[UIImage imageNamed:@"back"] forState:(UIControlStateNormal)];
[self.backBtn addTarget:self action:@selector(backAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:self.backBtn];
if ([[QXGlobal shareGlobal].getKeyWindow.rootViewController isKindOfClass:[self class]]) {
self.backBtn.hidden = YES;
}
[self getRandomUsername];
[self configLanguage];
}
-(void)configLanguage{
[self.comitUserInfoBtn setTitle:QXText(@"进入秘地") forState:(UIControlStateNormal)];
[self.comitUserInfoBtn setTitleColor:QXConfig.btnTextColor forState:(UIControlStateNormal)];
self.comitUserInfoBtn.backgroundColor = QXConfig.themeColor;
self.nickTitleLabel.text = QXText(@"起个好听的名字");
NSString *noChangeText = [NSString stringWithFormat:@"(%@)",QXText(@"注册成功,不可更改")];
NSString *str = [NSString stringWithFormat:@"%@%@",QXText(@"选择您的性别"),noChangeText];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:str];
[attr yy_setFont:[UIFont boldSystemFontOfSize:16] range:NSMakeRange(0, str.length)];
[attr yy_setFont:[UIFont systemFontOfSize:16] range:[noChangeText rangeOfString:str]];
[attr yy_setColor:RGB16A(0x000000, 0.45) range:NSMakeRange(0, str.length)];
[attr yy_setColor:RGB16A(0x000000, 0.45) range:[noChangeText rangeOfString:str]];
self.sexTitleLabel.attributedText = attr;
self.birthdayTitleLabel.text = QXText(@"您的生日");
NSString *noChangeText1 = [NSString stringWithFormat:@"(%@)",QXText(@"选填")];
NSString *str1 = [NSString stringWithFormat:@"%@%@",QXText(@"邀请码"),noChangeText1];
NSMutableAttributedString *attr1 = [[NSMutableAttributedString alloc] initWithString:str1];
[attr1 yy_setFont:[UIFont boldSystemFontOfSize:16] range:NSMakeRange(0, str1.length)];
[attr1 yy_setFont:[UIFont systemFontOfSize:16] range:[noChangeText1 rangeOfString:str1]];
[attr1 yy_setColor:RGB16A(0x000000, 0.45) range:NSMakeRange(0, str1.length)];
[attr1 yy_setColor:RGB16A(0x000000, 0.45) range:[noChangeText rangeOfString:str1]];
self.invitTitleLabel.attributedText = attr1;
[self.randomBtn setTitle:QXText(@"随机") forState:(UIControlStateNormal)];
}
-(void)getRandomUsername{
MJWeakSelf
[QXLoginNetwork getRandomNickNameSuccessBlock:^(NSString * _Nonnull nickName) {
weakSelf.userNameTF.text = nickName;
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
}
-(void)getAvartarWithSex:(NSString*)sex{
/// 从相册选中后选择性别不再重新生成头像
if (self.isPhoto) {
return;
}
MJWeakSelf
[QXLoginNetwork getHeaderImageWithSex:sex successBlock:^(NSString * _Nonnull imageUrl) {
weakSelf.avartar = imageUrl;
[weakSelf.headerBtn sd_setBackgroundImageWithURL:[NSURL URLWithString:imageUrl] forState:(UIControlStateNormal)];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
}
- (IBAction)clearNickName:(id)sender {
self.userNameTF.text = @"";
}
- (IBAction)randomAction:(id)sender {
[self getRandomUsername];
}
-(void)selectAlbumPhoto {
TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:nil];
imagePickerVc.maxImagesCount = 1;
imagePickerVc.allowCameraLocation = NO;
imagePickerVc.allowPickingOriginalPhoto = NO;
imagePickerVc.allowTakeVideo = NO;
imagePickerVc.allowPickingVideo = NO;
imagePickerVc.showSelectBtn = NO;
imagePickerVc.allowCrop = NO;
MJWeakSelf
[imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
if (photos.count) {
NSData *imageData = [photos.firstObject qx_compressImageQualityWithToByte:(SCREEN_WIDTH*SCREEN_HEIGHT*2)];
[weakSelf OSSUploadPhotoWithFileData:imageData contentType:[NSString contentTypeWithImageData:imageData]];
}
}];
imagePickerVc.modalPresentationStyle = UIModalPresentationFullScreen;
[imagePickerVc.navigationBar setBackgroundImage:[UIImage qx_imageWithColor:RGB16(0x333333)] forBarMetrics:UIBarMetricsDefault];
[self presentViewController:imagePickerVc animated:YES completion:nil];
}
- (void)OSSUploadPhotoWithFileData:(NSData *)fileData contentType:(NSString *)contentType {
[self OSSUploadPhotoWithFileData:fileData contentType:contentType isVideoCover:NO];
}
- (void)OSSUploadPhotoWithFileData:(NSData *)fileData contentType:(NSString *)contentType isVideoCover:(BOOL)isVideoCover {
if (!fileData || !contentType) {
showToastInView(QXText(@"资源加载错误"), self.view);
return;
}
if (fileData.length > 1024*1024 && [contentType isEqualToString:IMG_FILE_BASE_PATH]) {
showToastInView(QXText(@"请不要上传超过1M的头像"), self.view);
return;
}
NSMutableArray *files = [[NSMutableArray alloc] initWithObjects:fileData, nil];
NSString *fileBasePath = IMG_FILE_BASE_PATH;// 默认图片上传
NSString *fileName = [NSString stringWithFormat:@"%@%@/%@.%@",fileBasePath,[[QXOSSManager sharedInstance] currentDate],[NSUUID UUID].UUIDString,contentType];
NSMutableArray *fileNames = [[NSMutableArray alloc] initWithObjects:fileName, nil];
__weak typeof(self)weakSelf = self;
showLoadingInView(self.view);
[[QXOSSManager sharedInstance] uploadFile:files withObjectKey:fileNames isAsync:YES complete:^(NSArray<NSString *> *names, UploadImageState state) {
dispatch_async(dispatch_get_main_queue(), ^{
hideLoadingInView(weakSelf.view);
});
if (state == UploadImageSuccess) {
NSString *fileName = [names lastObject];
NSString *fileUrl =[NSString stringWithFormat:@"https://%@.%@/%@",OSS_BUCKET_NAME,OSSEndPoint,fileName];
weakSelf.avartar = fileUrl;
[weakSelf.headerBtn sd_setImageWithURL:[NSURL URLWithString:fileUrl] forState:(UIControlStateNormal)];
weakSelf.isPhoto = YES;
}else{
showToastInView(QXText(@"文件上传失败,请重新尝试"), self.view);
}
}];
}
-(void)backAction{
[self.navigationController popViewControllerAnimated:YES];
}
#pragma mark - Request
- (void)isGoToRoomRequest {
// [self.adapter fetchTabBarRandomHotRoomDataWithCompletionHandler:^(int64_t roomId, NSString * _Nullable error) {
// if (roomId > 0) {
// SRUserManager.shared.isNeedTurnToRoom = YES;
// }
// }];
if ([[QXGlobal shareGlobal].getKeyWindow.rootViewController isKindOfClass:[self class]]) {
}
}
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *nameStr = textField.text;
if (string.length == 0 && nameStr.length>0) {
[nameStr substringToIndex:nameStr.length - 1];
}
nameStr = [nameStr stringByReplacingCharactersInRange:range withString:string];
if (nameStr.length > 10) {
showToastInView(QXText(@"昵称过长"), self.view);
return NO;
}
return YES;
}
#pragma mark - TouchEvent
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[super touchesBegan:touches withEvent:event];
[self.view endEditing:YES];
}
#pragma mark - Action
- (IBAction)girlAction:(id)sender {
self.girlBtn.selected = YES;
self.boyBtn.selected = NO;
[self getAvartarWithSex:@"2"];
}
- (IBAction)birthdatyAction:(id)sender {
BRDatePickerView *piker = [[BRDatePickerView alloc] initWithPickerMode:(BRDatePickerModeYMD)];
NSDate *minDate = [NSDate br_setYear:1900 month:1 day:1];
piker.minDate = minDate;
piker.maxDate = [NSDate date];
piker.selectDate = [NSDate date];
piker.isAutoSelect = YES;
MJWeakSelf
piker.resultBlock = ^(NSDate * _Nullable selectDate, NSString * _Nullable selectValue) {
weakSelf.yearLabel.text = [NSString stringWithFormat:@"%ld",selectDate.br_year];
weakSelf.monthLabel.text = [NSString stringWithFormat:@"%ld",selectDate.br_month];
weakSelf.dayLabel.text = [NSString stringWithFormat:@"%ld",selectDate.br_day];
weakSelf.birthday = selectValue;
};
[piker show];
}
- (IBAction)boyAction:(id)sender {
self.boyBtn.selected = YES;
self.girlBtn.selected = NO;
[self getAvartarWithSex:@"1"];
}
- (IBAction)headerAction:(id)sender {
[self selectAlbumPhoto];
}
- (IBAction)comitUserInfoBtnAction:(id)sender {
//提交信息
if (_userNameTF.text.length == 0) {
showToastInView(QXText(@"请填写昵称"), self.view);
return;
}
if (self.girlBtn.selected == NO && self.boyBtn.selected == NO) {
showToastInView(QXText(@"请选择性别"), self.view);
return;
}
if (self.birthday.length == 0) {
showToastInView(QXText(@"请选择生日"), self.view);
return;
}
[self beginSoundriver];
}
- (void)beginSoundriver {
__block NSString* sex;
if (self.girlBtn.selected) {
sex = @"2";
}else {
sex = @"1";
}
// [LoginAnalyticsManager analyticsClickWechatLoginWith:[NSString stringWithFormat:@"%ld",sex] nick_name:self.userNameTF.text invitation_code:self.codeTF.text];
// NSDictionary *requestDic = @{@"nickname":_userNameTF.text,@"sex":[NSString stringWithFormat:@"%ld",sex]};
// NSMutableDictionary *params = [NSMutableDictionary dictionaryWithDictionary:requestDic];
// if ([self.codeTF.text isNotBlank]) {
// [params setObject:self.codeTF.text forKey:@"user_no"];
// }
// [params setObject:self.birthday forKey:@"birthday"];
// [params setObject:self.avartar forKey:@"head_picture"];
// [SRToastTool showIndicatorInView:self.view];
// AppDelegate *delegate = [AppDelegate shareAppDelegate];
// SRWeakSelf
// [SRLoginAdapter qx_updateUserInfoWithParams:params completion:^(BOOL success, NSString * _Nullable error) {
// [SRToastTool hideHUDForView:self.view];
// if (success) {
// if (delegate.window.rootViewController && [delegate.window.rootViewController isKindOfClass:[SRTabBarController class]]) {
// [weakSelf.navigationController dismissViewControllerAnimated:YES completion:^{
// //用户注册成功后调用
// [[SRTabBarController sharedInstance] registUserGotoHotRoom];
// }];
// }else {
// [delegate setupMainViewController];
// //用户注册成功后调用
// [[SRTabBarController sharedInstance] registUserGotoHotRoom];
// }
// }else{
// [SRToastTool showError:error toView:weakSelf.view];
// }
// }];
MJWeakSelf
QXLoginModel *loginModel = [QXGlobal shareGlobal].loginModel;
[QXLoginNetwork fillUserInfoWithNickname:_userNameTF.text
birthday:self.birthday
sex:sex
avatar:self.avartar
init_code:self.codeTF.text
user_id:[QXGlobal shareGlobal].loginModel.user_id
successBlock:^(id _Nonnull responseObject) {
V2TIMUserFullInfo *info = [[V2TIMUserFullInfo alloc] init];
info.faceURL = weakSelf.avartar;
info.nickName = weakSelf.userNameTF.text;
[[V2TIMManager sharedInstance] setSelfInfo:info succ:^{
QXLOG(@"腾讯IM同步个人信息成功");
} fail:^(int code, NSString * _Nullable desc) {
QXLOG(@"腾讯IM同步个人信息失败-code-%d,desc-%@",code,desc);
}];
loginModel.sex = sex;
loginModel.avatar = weakSelf.avartar;
loginModel.nickname = weakSelf.userNameTF.text;
loginModel.birthday = weakSelf.birthday;
[[QXGlobal shareGlobal] updateUserInfoWithMolde:loginModel];
if ([[QXGlobal shareGlobal].getKeyWindow.rootViewController isKindOfClass:[self class]]) {
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate changeRootViewControllerIsTabbar];
}else{
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}
}
failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
}
@end