|
|
@@ -19,6 +19,7 @@
|
|
|
#import "NavigationBarView.h"
|
|
|
#import "MerchantBaseEnrollContentView.h"
|
|
|
#import "UIButton+Layout.h"
|
|
|
+#import "MerchantEnrollDataManager.h"
|
|
|
@interface MerchantEnrollViewController ()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate, MerchantEnrollContentViewDelegate>
|
|
|
|
|
|
@property (nonatomic, assign) MerchantEnrollStep currentStep;
|
|
|
@@ -42,16 +43,137 @@
|
|
|
@property (nonatomic, strong, nullable) MerchantEnrollGuideView *guideView;
|
|
|
@property (nonatomic, strong, nullable) MerchantEnrollCheckListView *checkListView;
|
|
|
@property (nonatomic, strong, nullable) MerchantEnrollResultView *resultView;
|
|
|
+@property (nonatomic, assign) NSInteger selectedIndex;
|
|
|
|
|
|
@end
|
|
|
|
|
|
@implementation MerchantEnrollViewController
|
|
|
|
|
|
+#pragma mark - 步骤恢复
|
|
|
+
|
|
|
+- (void)restoreCurrentStep {
|
|
|
+ // 从数据管理器获取上次保存的步骤
|
|
|
+ MerchantEnrollStep savedStep = [[MerchantEnrollDataManager sharedManager] getCurrentStep];
|
|
|
+ self.currentStep = savedStep;
|
|
|
+
|
|
|
+ // 根据步骤设置selectedIndex
|
|
|
+ if (self.currentStep > MerchantEnrollStepCheckList && self.currentStep < MerchantEnrollStepWatingForReview) {
|
|
|
+ self.selectedIndex = self.currentStep - 2; // 减去Guide和CheckList步骤
|
|
|
+ } else {
|
|
|
+ self.selectedIndex = 0;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark - 数据保存和恢复
|
|
|
+
|
|
|
+- (void)saveCurrentStepData {
|
|
|
+ MerchantBaseEnrollContentView *currentView = [self getCurrentContentView];
|
|
|
+ if (!currentView) return;
|
|
|
+
|
|
|
+ NSDictionary *data = nil;
|
|
|
+ MerchantEnrollDataManager *dataManager = [MerchantEnrollDataManager sharedManager];
|
|
|
+
|
|
|
+ switch (self.currentStep) {
|
|
|
+ case MerchantEnrollStepStoreInfo:
|
|
|
+ if ([currentView isKindOfClass:[MerchantStoreInfoView class]]) {
|
|
|
+ MerchantStoreInfoView *storeView = (MerchantStoreInfoView *)currentView;
|
|
|
+ data = [storeView getMerchantEnrollParameters];
|
|
|
+ [dataManager saveStoreInfoData:data];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MerchantEnrollStepBusinessLicense:
|
|
|
+ if ([currentView respondsToSelector:@selector(getMerchantEnrollParameters)]) {
|
|
|
+ data = [currentView performSelector:@selector(getMerchantEnrollParameters)];
|
|
|
+ [dataManager saveBusinessLicenseData:data];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MerchantEnrollStepLegalInfo:
|
|
|
+ if ([currentView respondsToSelector:@selector(getMerchantEnrollParameters)]) {
|
|
|
+ data = [currentView performSelector:@selector(getMerchantEnrollParameters)];
|
|
|
+ [dataManager saveLegalInfoData:data];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MerchantEnrollStepBank:
|
|
|
+ if ([currentView respondsToSelector:@selector(getMerchantEnrollParameters)]) {
|
|
|
+ data = [currentView performSelector:@selector(getMerchantEnrollParameters)];
|
|
|
+ [dataManager saveBankInfoData:data];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MerchantEnrollStepSetAdmin:
|
|
|
+ if ([currentView respondsToSelector:@selector(getMerchantEnrollParameters)]) {
|
|
|
+ data = [currentView performSelector:@selector(getMerchantEnrollParameters)];
|
|
|
+ [dataManager saveAdminSetupData:data];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+- (MerchantBaseEnrollContentView *)getCurrentContentView {
|
|
|
+ // 获取当前显示的内容视图
|
|
|
+ if (self.currentStep > MerchantEnrollStepCheckList && self.currentStep < MerchantEnrollStepWatingForReview) {
|
|
|
+ // 从容器视图中获取当前视图
|
|
|
+ UIView *listView = [self.containerView.validListDict objectForKey:@(self.selectedIndex)];
|
|
|
+ if ([listView isKindOfClass:[MerchantBaseEnrollContentView class]]) {
|
|
|
+ return (MerchantBaseEnrollContentView *)listView;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil;
|
|
|
+}
|
|
|
+
|
|
|
+- (void)fillDataForContentView:(MerchantBaseEnrollContentView *)contentView withStep:(MerchantEnrollStep)step {
|
|
|
+ if (!contentView) return;
|
|
|
+
|
|
|
+ MerchantEnrollDataManager *dataManager = [MerchantEnrollDataManager sharedManager];
|
|
|
+ NSDictionary *savedData = nil;
|
|
|
+
|
|
|
+ // 根据步骤获取相应的保存数据
|
|
|
+ switch (step) {
|
|
|
+ case MerchantEnrollStepStoreInfo:
|
|
|
+ savedData = [dataManager getStoreInfoData];
|
|
|
+ if (savedData && [contentView respondsToSelector:@selector(fillWithData:)]) {
|
|
|
+ [contentView performSelector:@selector(fillWithData:) withObject:savedData];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MerchantEnrollStepBusinessLicense:
|
|
|
+ savedData = [dataManager getBusinessLicenseData];
|
|
|
+ if (savedData && [contentView respondsToSelector:@selector(fillWithData:)]) {
|
|
|
+ [contentView performSelector:@selector(fillWithData:) withObject:savedData];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MerchantEnrollStepLegalInfo:
|
|
|
+ savedData = [dataManager getLegalInfoData];
|
|
|
+ if (savedData && [contentView respondsToSelector:@selector(fillWithData:)]) {
|
|
|
+ [contentView performSelector:@selector(fillWithData:) withObject:savedData];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MerchantEnrollStepBank:
|
|
|
+ savedData = [dataManager getBankInfoData];
|
|
|
+ if (savedData && [contentView respondsToSelector:@selector(fillWithData:)]) {
|
|
|
+ [contentView performSelector:@selector(fillWithData:) withObject:savedData];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MerchantEnrollStepSetAdmin:
|
|
|
+ savedData = [dataManager getAdminSetupData];
|
|
|
+ if (savedData && [contentView respondsToSelector:@selector(fillWithData:)]) {
|
|
|
+ [contentView performSelector:@selector(fillWithData:) withObject:savedData];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
- (void)viewDidLoad {
|
|
|
[super viewDidLoad];
|
|
|
self.view.backgroundColor = [UIColor whiteColor];
|
|
|
[IQKeyboardManager sharedManager].enable = YES;
|
|
|
[IQKeyboardManager sharedManager].enableAutoToolbar = YES;
|
|
|
+
|
|
|
+ // 恢复上次的步骤
|
|
|
+ [self restoreCurrentStep];
|
|
|
+
|
|
|
[self setupNavigationBar];
|
|
|
[self setupStepsUI];
|
|
|
[self showCurrentStep];
|
|
|
@@ -226,7 +348,7 @@
|
|
|
if (self.currentStep > MerchantEnrollStepCheckList && self.currentStep < MerchantEnrollStepWatingForReview) {
|
|
|
self.stepsStackView.hidden = NO;
|
|
|
self.containerView.hidden = NO;
|
|
|
- [self.categoryView selectItemAtIndex:self.currentStep-2];
|
|
|
+ [self.categoryView selectItemAtIndex:self.selectedIndex];
|
|
|
} else {
|
|
|
self.stepsStackView.hidden = NO;
|
|
|
self.containerView.hidden = YES;
|
|
|
@@ -279,12 +401,13 @@
|
|
|
|
|
|
|
|
|
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
|
|
|
-
|
|
|
+ self.currentStep = [self.list[index] integerValue];
|
|
|
+ self.selectedIndex = index;
|
|
|
}
|
|
|
|
|
|
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index {
|
|
|
MerchantBaseEnrollContentView *contentView;
|
|
|
- MerchantEnrollStep step = index + 2;
|
|
|
+ MerchantEnrollStep step = [self.list[index] integerValue];
|
|
|
CGFloat height = SCREEN_HEIGHT-self.bgImageView.height+kRealValue(16);
|
|
|
CGFloat width = SCREEN_WIDTH;
|
|
|
CGRect frame = CGRectMake(0, 0, width, height);
|
|
|
@@ -313,6 +436,10 @@
|
|
|
}
|
|
|
contentView.delegate = self;
|
|
|
contentView.currentStep = step;
|
|
|
+
|
|
|
+ // 为视图填充保存的数据
|
|
|
+ [self fillDataForContentView:contentView withStep:step];
|
|
|
+
|
|
|
return contentView;
|
|
|
}
|
|
|
|
|
|
@@ -324,7 +451,17 @@
|
|
|
#pragma mark - MerchantEnrollContentViewDelegate
|
|
|
|
|
|
- (void)onMerchantEnrollGotoNextButtonClick {
|
|
|
+ // 保存当前步骤的数据
|
|
|
+ [self saveCurrentStepData];
|
|
|
+
|
|
|
self.currentStep++;
|
|
|
+
|
|
|
+ // 保存步骤进度
|
|
|
+ [[MerchantEnrollDataManager sharedManager] saveCurrentStep:self.currentStep];
|
|
|
+
|
|
|
+ if (self.currentStep > MerchantEnrollStepCheckList && self.currentStep < MerchantEnrollStepWatingForReview) {
|
|
|
+ self.selectedIndex = self.currentStep-2;
|
|
|
+ }
|
|
|
[self showCurrentStep];
|
|
|
}
|
|
|
|
|
|
@@ -335,14 +472,38 @@
|
|
|
break;
|
|
|
case MerchantEnrollResultFailed:
|
|
|
self.currentStep = MerchantEnrollStepStoreInfo;
|
|
|
+ // 保存当前步骤
|
|
|
+ [[MerchantEnrollDataManager sharedManager] saveCurrentStep:self.currentStep];
|
|
|
[self showCurrentStep];
|
|
|
break;
|
|
|
case MerchantEnrollResultSuccess:
|
|
|
+ // 入驻成功,清除所有保存的数据
|
|
|
+ [self clearAllSavedData];
|
|
|
[self.navigationController popViewControllerAnimated:YES];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+#pragma mark - 数据清理
|
|
|
+
|
|
|
+- (void)clearAllSavedData {
|
|
|
+ MerchantEnrollDataManager *dataManager = [MerchantEnrollDataManager sharedManager];
|
|
|
+ [dataManager clearStepRecord];
|
|
|
+ [dataManager clearAllData];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)resetEnrollProcess {
|
|
|
+ // 清除所有保存的数据
|
|
|
+ [self clearAllSavedData];
|
|
|
+
|
|
|
+ // 重置到第一步
|
|
|
+ self.currentStep = MerchantEnrollStepStoreInfo;
|
|
|
+ self.selectedIndex = 0;
|
|
|
+
|
|
|
+ // 刷新界面显示
|
|
|
+ [self showCurrentStep];
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
- (NavigationBarView *)navBar {
|
|
|
if (!_navBar) {
|
|
|
@@ -435,6 +596,7 @@
|
|
|
_categoryView.titles = array;
|
|
|
_categoryView.listContainer = self.containerView;
|
|
|
_categoryView.hidden = YES;
|
|
|
+ _categoryView.defaultSelectedIndex = self.selectedIndex;
|
|
|
}
|
|
|
return _categoryView;
|
|
|
}
|