// // LoginPresenter.m // YUMI // // Created by zu on 2021/9/1. // #import "LoginPresenter.h" ///Third #import ///APi #import "Api+Login.h" ///Tool #import "AccountInfoStorage.h" #import "XNDJTDDLoadingTool.h" #import "YUMIMacroUitls.h" ///P #import "LoginProtocol.h" ///Model #import "ThirdUserInfo.h" #import "AccountModel.h" #import "DESEncrypt.h" #import "YuMi-swift.h" #import "FeedBackConfigModel.h" static NSString *clinet_s = @"uyzjdhds"; @implementation LoginPresenter - (void)dealloc{ [[NSNotificationCenter defaultCenter]removeObserver:self]; } - (instancetype)init{ self = [super init]; if(self){ } return self; } - (id)getView { return ((id) [super getView]); } - (void)phoneQuickLogin:(NSString *)accessToken token:(NSString *)token { @kWeakify(self); [Api phoneQuickLogin:[self createHttpCompletion:^(BaseModel *data) { @kStrongify(self); [[AccountInfoStorage instance] saveAccountInfo:[AccountModel modelWithDictionary:data.data]]; [[self getView] loginSuccess]; } showLoading:YES] accessToken:accessToken token:token]; } /// 第三方登录 /// @param type 登录的类型 - (void)thirdLoginWithType:(ThirdLoginType)type{ // TODO: 后续补充 Apple Login } -(void)loginWithThirdPartWithType:(ThirdLoginType)type{ [XNDJTDDLoadingTool showOnlyView:kWindow]; NSString * openid = [AccountInfoStorage instance].thirdUserInfo.openid; NSString * access_token = [AccountInfoStorage instance].thirdUserInfo.access_token; NSString * unionid = [AccountInfoStorage instance].thirdUserInfo.unionid; @kWeakify(self); [Api loginWithThirdPart:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); AccountModel * model = [AccountModel modelWithDictionary:data.data]; if (model != nil) { [[AccountInfoStorage instance] saveAccountInfo:model]; [XNDJTDDLoadingTool hideOnlyView:kWindow]; [[self getView] loginThirdPartSuccess]; } } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); [XNDJTDDLoadingTool hideOnlyView:kWindow]; if (msg.length == 0) { [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; } } showLoading:YES errorToast:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)type]]; } /// 获取手机的验证码 /// @param phone 手机号 /// @param type 类型 - (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode { NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api phoneSmsCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(phoneSmsCodeSuccess:type:)]) { NSString *message = data.message; [[self getView] phoneSmsCodeSuccess:message type:type]; } } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(phoneSmsCodeFailure)]) { [[self getView] phoneSmsCodeFailure]; } } showLoading:YES errorToast:YES] mobile:desPhone type:[NSString stringWithFormat:@"%lu", (unsigned long)type] phoneAreaCode:phoneAreaCode]; } /// 使用手机号和验证码登录 /// @param phone 手机号 /// @param code 验证码 - (void)loginWithPhone:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode{ NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api loginWithCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); AccountModel * accountModel = [AccountModel modelWithDictionary:data.data]; if (accountModel && accountModel.access_token.length > 0) { [[AccountInfoStorage instance] saveAccountInfo:accountModel]; } [[self getView] loginWithPhoenSuccess]; } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); [[self getView] loginFailWithMsg:msg]; } errorToast:NO] phone:desPhone code:code client_secret:clinet_s version:@"1" client_id:@"erban-client" grant_type:@"password" phoneAreaCode:phoneAreaCode]; } /// 使用手机号和密码登录 /// @param phone 手机号 /// @param password 验证码 - (void)loginWithPhone:(NSString *)phone password:(NSString *)password { NSString * desPassword = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyType_PasswordEncode)]; NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api loginWithPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); AccountModel * accountModel = [AccountModel modelWithDictionary:data.data]; if (accountModel && accountModel.access_token.length > 0) { [[AccountInfoStorage instance] saveAccountInfo:accountModel]; } [[self getView] loginSuccess]; } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); [[self getView] loginFailWithMsg:msg]; } showLoading:YES errorToast:YES] phone:desPhone password:desPassword client_secret:clinet_s version:@"1" client_id:@"erban-client" grant_type:@"password"]; } ///反馈 - (void)loadFeedbackConfig:(void(^)(FeedBackConfigModel *model))success failure:(void(^)(NSString *errorMessage))failure { [Api loadFeedbackConfig:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { if (code == 200) { FeedBackConfigModel *model =[FeedBackConfigModel modelWithDictionary:data.data]; if (success) { success(model); } } else { if (failure) { failure(msg); } } }]; } - (void)submitFeedback:(void(^)(void))success failure:(void(^)(NSString *errorMessage))failure type:(NSString *)type desc:(NSString *)desc photoURLString:(nullable NSString *)photoURLString contact:(nullable NSString *)contact { [Api commitFeedback:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { if (code == 200) { if (success) { success(); } } else { if (failure) { failure(msg); } } } type:type desc:desc screenUrl:photoURLString ? photoURLString : @"" contact:contact ? contact : @""]; } - (void)sendMailVerificationCode:(NSString *)emailAddress type:(NSInteger)type { NSString * desEmail = [DESEncrypt encryptUseDES:emailAddress key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api emailGetCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(emailCodeSucess:type:)]) { [[self getView] emailCodeSucess:@"" type:type]; } } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(emailCodeFailure)]) { [[self getView] emailCodeFailure]; } } showLoading:YES errorToast:YES] emailAddress:desEmail type:@(type)]; } - (void)loginWithEmail:(NSString *)email code:(NSString *)code { NSString * desMail = [DESEncrypt encryptUseDES:email key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api loginWithCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); AccountModel * accountModel = [AccountModel modelWithDictionary:data.data]; if (accountModel && accountModel.access_token.length > 0) { [[AccountInfoStorage instance] saveAccountInfo:accountModel]; } if ([[self getView] respondsToSelector:@selector(loginSuccess)]) { [[self getView] loginSuccess]; } } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); [[self getView] loginFailWithMsg:msg]; } errorToast:NO] email:desMail code:code client_secret:clinet_s version:@"1" client_id:@"erban-client" grant_type:@"email"]; } - (void)bindingNewEmail:(NSString *)email code:(NSString *)code { NSString *desMail = [DESEncrypt encryptUseDES:email key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api userBoundEmail:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(bindingNewEmailSuccess:)]) { [[self getView] bindingNewEmailSuccess:@""]; } } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(bindingNewEmailFailure:)]) { [[self getView] bindingNewEmailFailure:msg]; } } showLoading:YES errorToast:NO] email:desMail code:code]; } - (void)bindingNewPhone:(NSString *)phone code:(NSString *)code areaCode:(NSString *)areaCode { NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api userBoundPhone:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(bindingNewPhoneSuccess:)]) { [[self getView] bindingNewPhoneSuccess:@""]; } } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(bindingNewPhoneFailure:)]) { [[self getView] bindingNewPhoneFailure:msg]; } } showLoading:YES errorToast:YES] phone:desPhone code:code phoneAreaCode:areaCode]; } - (void)resetEmailPassword:(NSString *)email code:(NSString *)code newPassword:(NSString *)newPwd { NSString *desMail = [DESEncrypt encryptUseDES:email key:KeyWithType(KeyType_PasswordEncode)]; NSString *desPassword = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api resetPasswordWithEmail:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(resetEmailPasswordSuccess)]) { [[self getView] resetEmailPasswordSuccess]; } } fail:^(NSInteger code, NSString * _Nullable msg) { } showLoading:YES errorToast:YES] email:desMail newPwd:desPassword code:code]; } - (void)resetPhonePassword:(NSString *)phone code:(NSString *)code newPassword:(NSString *)newPwd areaCode:(NSString *)areaCode { NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; NSString *desPassword = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)]; @kWeakify(self); [Api resetPasswordWithPhone:[self createHttpCompletion:^(BaseModel * _Nonnull data) { @kStrongify(self); if ([[self getView] respondsToSelector:@selector(resetPhonePasswordSuccess)]) { [[self getView] resetPhonePasswordSuccess]; } } fail:^(NSInteger code, NSString * _Nullable msg) { } showLoading:YES errorToast:YES] phone:desPhone newPwd:desPassword smsCode:code phoneAreaCode:areaCode]; } - (void)checkEmailCode:(NSString *)email code:(NSString *)code { NSString *desMail = [DESEncrypt encryptUseDES:email key:KeyWithType(KeyType_PasswordEncode)]; [Api emailVerify:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] checkEmailSuccess]; } fail:^(NSInteger code, NSString * _Nullable msg) { } showLoading:YES errorToast:YES] emailAddress:desMail code:code]; } - (void)checkPhoneCode:(NSString *)phone code:(NSString *)code areaCode:(NSString *)areaCode { NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; NSString * uid = [[AccountInfoStorage instance] getUid]; NSString * ticket = [[AccountInfoStorage instance] getTicket]; [Api checkMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] checkPhoneSuccess]; } fail:^(NSInteger code, NSString * _Nullable msg) { } showLoading:YES errorToast:YES] mobile:desPhone code:desPhone uid:uid ticket:ticket phoneAreaCode:areaCode]; } @end