CNLiveUserSystemCenter.m 16.3 KB
//
//  CNLiveUserSystemCenter.m
//  CNLiveUserSystemDemo
//
//  Created by iOS on 16/9/12.
//  Copyright © 2016年 zhulin. All rights reserved.
//

#import "CNLiveUserSystemCenter.h"
#import "CNLiveLogin.h"
#import "CNLiveRegister.h"
#import "CNLiveVerificationCode.h"
#import "CNLiveFeedback.h"
#import "CNLiveUserInfo.h"
#import "CNLiveUserSystemTools.h"
#import "CNLiveUserManager.h"
#import "CNLiveUploadIcon.h"
#import "CNLiveEmailModifyPassword.h"
#import "CNLiveCheckVerificationCode.h"
#import "Common.h"

@implementation CNLiveUserSystemCenter

+ (void)setAppId:(NSString *)appId appKey:(NSString *)appKey appSecret:(NSString *)appSecret
{
    [CNLiveUserManager manager].appId = appId;
    [CNLiveUserManager manager].appKey = appKey;
    [CNLiveUserManager manager].appSecret = appSecret;
    [CNLiveUserManager manager].isTestEnvironment = NO;
    
    [[CNLiveUserManager manager] addObserver];
}

/**
 @abstract      初始化
 @param         appId                   注册成功获得应用ID
 @param         appKey                  注册成功获得应用key
 @param         appSecret               注册成功获得应用secret
 @param         isTestEnvironment       测试环境开关,YES为测试环境,NO为正式环境
 @warning       必传参数
 必须在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 方法中调用
 */
+ (void)setAppId:(NSString *)appId appKey:(NSString *)appKey appSecret:(NSString *)appSecret isTestEnvironment:(BOOL)isTestEnvironment
{
    [CNLiveUserManager manager].appId = appId;
    [CNLiveUserManager manager].appKey = appKey;
    [CNLiveUserManager manager].appSecret = appSecret;
    [CNLiveUserManager manager].isTestEnvironment = isTestEnvironment;
    
    [[CNLiveUserManager manager] addObserver];
}

+ (void)setUserId:(NSString *)userId
{
    [CNLiveUserManager manager].userId = userId;
}

+ (void)setFromID:(NSString *)fromID
{
    [CNLiveUserManager manager].fromID = fromID;
}

/**
 *  注册
 */
+ (void)registerWithUserName:(NSString *)userName password:(NSString *)password verificationCode:(NSString *)verificationCode invitationCode:(NSString *)invitationCode frmId:(NSString *)frmId success:(void (^)(id))success failure :(void (^)(NSDictionary *))failure
{
    CNLiveRegister *userRegister = [[CNLiveRegister alloc] init];
    
    [userRegister registerWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey userName:userName password:password verificationCode:verificationCode invitationCode:invitationCode frmId:frmId success:success failure:failure];
}

/**
 *  第三方登录
 */
+ (void)thirdPartyLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl frmId:(NSString *)frmId success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveLogin *thirdLogin = [[CNLiveLogin alloc] init];
    
    [thirdLogin thirdPartyLoginWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey thirdPartyPlatType:plat thirdPartyId:thirdPartyId nickName:nickName gender:gender location:location faceUrl:faceUrl frmId:frmId success:success failure:failure];
}

/**
 *  快捷登录(旧)
 */

+ (void)shortcutLoginWithUserName:(NSString *)userName verificationCode:(NSString *)verificationCode frmId:(NSString *)frmId success:(void (^)(id))success failure :(void (^)(NSDictionary *))failure
{
    CNLiveLogin *shortcutLogin = [[CNLiveLogin alloc] init];
    
    [shortcutLogin shortcutLoginWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey userName:userName verificationCode:verificationCode frmId:frmId success:success failure:failure];
}

/**
 *  快捷登录(新)
 */

+ (void)shortcutLoginWithUserName:(NSString *)userName countryCode:(NSString *)countryCode verificationCode:(NSString *)verificationCode frmId:(NSString *)frmId success:(void (^)(id))success failure :(void (^)(NSDictionary *))failure
{
    CNLiveLogin *shortcutLogin = [[CNLiveLogin alloc] init];
    
    [shortcutLogin shortcutLoginWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey userName:userName countryCode:countryCode verificationCode:verificationCode frmId:frmId success:success failure:failure];
}

/**
 *  登录
 */
+ (void)loginWithUserName:(NSString *)userName password:(NSString *)password frmId:(NSString *)frmId success:(void (^)(id))success failure :(void (^)(NSDictionary *))failure
{
    CNLiveLogin *login = [[CNLiveLogin alloc] init];
    
    [login loginWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey userName:userName password:password frmId:frmId success:success failure:failure];
}

/**
 *  发送验证码(旧)
 */
+ (void)verificationCodeType:(VerificationCodeType)type mobile:(NSString *)mobile success:(void (^)(id))success failure :(void (^)(NSDictionary *))failure
{
    CNLiveVerificationCode *verification = [[CNLiveVerificationCode alloc] init];
    
    [verification getVerificationCodeWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:type mobile:mobile success:success failure:failure];
}

/**
 *  发送验证码 (新)
 */
+ (void)verificationCodeType:(VerificationCodeType)type mobile:(NSString *)mobile countryCode:(NSString *)countryCode success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure
{
    CNLiveVerificationCode *verification = [[CNLiveVerificationCode alloc] init];
    
    [verification getVerificationCodeWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:type mobile:mobile countryCode:countryCode success:success failure:failure];
}

/**
 *  更新用户附加信息
 */
+(void)updateOtherInfoWithUid:(NSString *)uid extInfo:(NSString *)extInfo success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUserInfo *updateOtherInfo = [[CNLiveUserInfo alloc] init];
    
    [updateOtherInfo updateOtherInfoWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey uid:uid extInfo:extInfo token:[[self class] getToken] success:success failure:failure];
}

/**
 *  修改用户单项信息
 */
+(void)modifyUserInfoType:(UserInfoType)type uid:(NSString *)uid modifyInfo:(NSString *)info success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUserInfo *updateUserInfo = [[CNLiveUserInfo alloc] init];
    
    [updateUserInfo modifyUserInfoWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:type uid:uid modifyInfo:info token:[[self class] getToken] success:success failure:failure];
}

/**
 *  更新手机号(旧)
 */
+(void)updateMobileWithUid:(NSString *)uid mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUserInfo *updateMobile = [[CNLiveUserInfo alloc] init];
    
    [updateMobile updateMobileWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey uid:uid mobile:mobile verificationCode:verificationCode token:[[self class] getToken] success:success failure:failure];
}

/**
 *  更新手机号(新)
 */
+(void)updateMobileWithUid:(NSString *)uid mobile:(NSString *)mobile countryCode:(NSString *)countryCode verificationCode:(NSString *)verificationCode success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUserInfo *updateMobile = [[CNLiveUserInfo alloc] init];
    
    [updateMobile updateMobileWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey uid:uid mobile:mobile countryCode:countryCode verificationCode:verificationCode token:[[self class] getToken] success:success failure:failure];
}

/**
 *  绑定第三方账号
 */
+(void)bindingThirdPartyWithUid:(NSString *)uid thirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUserInfo *bindingThird = [[CNLiveUserInfo alloc] init];
    
    [bindingThird bindingThirdPartyWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey uid:uid thirdPartyPlatType:plat thirdPartyId:thirdPartyId token:[[self class] getToken] success:success failure:failure];
}

/**
 *  修改密码
 */
+(void)changePasswordWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode newPassword:(NSString *)newPassword success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUserInfo *password = [[CNLiveUserInfo alloc] init];
    
    [password changePasswordWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey mobile:mobile verificationCode:verificationCode newPassword:newPassword success:success failure:failure];
}


/**
 *  上传头像
 */
+(void)uploadIconWithUid:(NSString *)uid icon:(UIImage *)icon success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUploadIcon *uplodIcon = [[CNLiveUploadIcon alloc] init];
    [uplodIcon uploadIconWithAppId:[CNLiveUserManager manager].appId uid:uid icon:icon token:[[self class] getToken] secret:[CNLiveUserManager manager].appSecret success:success failure:failure];
}

/**
 *  上传头像 ,可选图片质量
 */
+ (void)uploadIconWithUid:(NSString *)uid icon:(UIImage *)icon compressionQuality:(CGFloat)compressionQuality success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUploadIcon *uplodIcon = [[CNLiveUploadIcon alloc] init];
    [uplodIcon uploadIconWithAppId:[CNLiveUserManager manager].appId uid:uid icon:icon token:[[self class] getToken] compressionQuality:compressionQuality secret:[CNLiveUserManager manager].appSecret success:success failure:failure];
}


/**
 *  查询用户信息
 */
+ (void)queryUserInfoWithUid:(NSString *)uid srcUid:(NSString *)srcUid success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUserInfo *userInfo = [[CNLiveUserInfo alloc] init];
    
    [userInfo queryUserInfoWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey uid:uid srcUid:srcUid token:[[self class] getToken] success:success failure:failure];
}

/**
 *  查询多条用户信息
 */
+ (void)queryMoreUserInfosWithUid:(NSString *)uid srcUids:(NSArray *)srcUids success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    CNLiveUserInfo *userInfo = [[CNLiveUserInfo alloc] init];
    
    [userInfo queryMoreUserInfoWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey uid:uid srcUids:srcUids token:[[self class] getToken] success:success failure:failure];
}

/**
 *  用户反馈
 */
+ (void)feedbackWithContentId:(NSString *)contentId message:(NSString *)message success:(void (^)(id))success failure :(void (^)(NSDictionary *errorDic))failure
{
    CNLiveFeedback *feedback = [[CNLiveFeedback alloc] init];
    
    [feedback feedbackWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey contentId:contentId message:message success:success failure:failure];
}

/**
 *  通过邮箱修改密码
 */
+ (void)modifyPwdWithEmail:(NSString *)email newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure
{
    CNLiveEmailModifyPassword *emailModifyPwd = [[CNLiveEmailModifyPassword alloc] init];
    [emailModifyPwd modifyPwdWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey email:email newPwd:newPwd success:success failure:failure];
}

/**
 *  通过原密码修改密码
 */
+ (void)oldPwdChangePasswordWithUid:(NSString *)uid pwd:(NSString *)pwd newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure
{
    CNLiveUserInfo *userInfo = [[CNLiveUserInfo alloc] init];
    [userInfo oldPwdChangePasswordWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey uid:uid pwd:pwd newPwd:newPwd token:[[self class] getToken] success:success failure:failure];
}

/**
 *  注册前校验手机验证码(旧)
 */
+ (void)registerCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure
{
    CNLiveCheckVerificationCode *checkCode = [[CNLiveCheckVerificationCode alloc] init];
    [checkCode registerCheckVerificationCodeWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:CheckVerificationCodeTypeRegister mobile:mobile verificationCode:verificationCode success:success failure:failure];
}

/**
 *  注册前校验手机验证码(新)
 */
+ (void)registerCheckVerificationCodeWithMobile:(NSString *)mobile countryCode:(NSString *)countryCode verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure
{
    CNLiveCheckVerificationCode *checkCode = [[CNLiveCheckVerificationCode alloc] init];
    [checkCode registerCheckVerificationCodeWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:CheckVerificationCodeTypeRegister mobile:mobile countryCode:countryCode verificationCode:verificationCode success:success failure:failure];
}

/**
 *  快捷登录前校验手机验证码(旧)
 */
+ (void)shortcutLoginCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure
{
    CNLiveCheckVerificationCode *checkCode = [[CNLiveCheckVerificationCode alloc] init];
    [checkCode shortcutLoginCheckVerificationCodeWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:CheckVerificationCodeTypeShortcutLogin mobile:mobile verificationCode:verificationCode success:success failure:failure];
}

/**
 *  快捷登录前校验手机验证码(新)
 */
+ (void)shortcutLoginCheckVerificationCodeWithMobile:(NSString *)mobile countryCode:(NSString *)countryCode verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure
{
    CNLiveCheckVerificationCode *checkCode = [[CNLiveCheckVerificationCode alloc] init];
    [checkCode shortcutLoginCheckVerificationCodeWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:CheckVerificationCodeTypeShortcutLogin mobile:mobile countryCode:countryCode verificationCode:verificationCode success:success failure:failure];
}

/**
 *  验证第三方账号是否注册,若注册直接登录返回用户信息,若未注册返回errorCode
 */
+ (void)thirdPartyCheckLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure
{
    CNLiveLogin *thirdLogin = [[CNLiveLogin alloc] init];
    
    [thirdLogin thirdPartyCheckLoginWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey thirdPartyPlatType:plat thirdPartyId:thirdPartyId frmId:frmId success:success failure:failure];
}

/**
 *  第三方注册强制绑定手机号: 手机号+密码+验证码+三方账号
 */
+ (void)thirdPartyBindMobileLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode pawd:(NSString *)pawd frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure
{
    CNLiveLogin *thirdLogin = [[CNLiveLogin alloc] init];
    
    [thirdLogin thirdPartyBindMobileLoginWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey thirdPartyPlatType:plat thirdPartyId:thirdPartyId nickName:nickName gender:gender location:location faceUrl:faceUrl mobile:mobile verificationCode:verificationCode pawd:pawd frmId:frmId success:success failure:failure];
}

/**
 *  获取版本号
 */
+ (NSString *)getVersion
{
    return SDKVersion;
}

#pragma mark - token

+ (NSString *)getToken
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    if ([userDefaults objectForKey:@"CNLiveAuthToken"]) {
        return [userDefaults objectForKey:@"CNLiveAuthToken"];
    }
    return @"";
}

@end