351 lines
15 KiB
Objective-C
Executable File
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(@"进入MY语聊") 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 setTitleColor:RGB16(0x0DFFB9) forState:(UIControlStateNormal)];
|
|
[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
|