Forráskód Böngészése

自发布职位和职位分享

15555599100 6 éve
szülő
commit
be14f7cd11
100 módosított fájl, 2447 hozzáadás és 166 törlés
  1. 34 0
      .gitignore
  2. BIN
      HappyJob/.DS_Store
  3. 1290 131
      HappyJob/HappyJob.xcodeproj/project.pbxproj
  4. BIN
      HappyJob/HappyJob.xcworkspace/xcuserdata/Bob.xcuserdatad/UserInterfaceState.xcuserstate
  5. BIN
      HappyJob/HappyJob/.DS_Store
  6. 22 0
      HappyJob/HappyJob/API/FBNetworking/FBAPIManagerDataBox.h
  7. 115 0
      HappyJob/HappyJob/API/FBNetworking/FBBaseAPIManager.h
  8. 249 0
      HappyJob/HappyJob/API/FBNetworking/FBBaseAPIManager.m
  9. 0 0
      HappyJob/HappyJob/API/FBNetworking/FBNetworkingConfig.h
  10. 0 0
      HappyJob/HappyJob/API/FBNetworking/FBNetworkingConfig.m
  11. 1 0
      HappyJob/HappyJob/AppDelegate.h
  12. 102 35
      HappyJob/HappyJob/AppDelegate.m
  13. 6 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/Contents.json
  14. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_certification.imageset/Contents.json
  15. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_certification.imageset/b_home_certification@2x.png
  16. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_certification.imageset/b_home_certification@3x.png
  17. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_delivery.imageset/Contents.json
  18. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_delivery.imageset/b_home_delivery@2x.png
  19. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_delivery.imageset/b_home_delivery@3x.png
  20. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_search.imageset/Contents.json
  21. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_search.imageset/b_home_search@2x.png
  22. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_search.imageset/b_home_search@3x.png
  23. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_set.imageset/Contents.json
  24. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_set.imageset/b_home_set@2x.png
  25. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_set.imageset/b_home_set@3x.png
  26. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_messag.imageset/Contents.json
  27. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_messag.imageset/b_messag@2x.png
  28. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_messag.imageset/b_messag@3x.png
  29. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_message.imageset/Contents.json
  30. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_message.imageset/b_message_message@2x.png
  31. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_message.imageset/b_message_message@3x.png
  32. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_nopass.imageset/Contents.json
  33. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_nopass.imageset/b_message_nopass@2x.png
  34. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_nopass.imageset/b_message_nopass@3x.png
  35. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_position.imageset/Contents.json
  36. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_position.imageset/b_message_position@2x.png
  37. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_position.imageset/b_message_position@3x.png
  38. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_resume.imageset/Contents.json
  39. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_resume.imageset/b_message_resume@2x.png
  40. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_resume.imageset/b_message_resume@3x.png
  41. 6 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/Contents.json
  42. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_enterprise_certification.imageset/Contents.json
  43. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_enterprise_certification.imageset/b_enterprise_certification@2x.png
  44. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_enterprise_certification.imageset/b_enterprise_certification@3x.png
  45. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_collection.imageset/Contents.json
  46. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_collection.imageset/b_my_collection@2x.png
  47. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_collection.imageset/b_my_collection@3x.png
  48. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_feedback.imageset/Contents.json
  49. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_feedback.imageset/b_my_feedback@2x.png
  50. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_feedback.imageset/b_my_feedback@3x.png
  51. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_right.imageset/Contents.json
  52. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_right.imageset/b_my_righ@3x.png
  53. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_right.imageset/b_my_right@2x.png
  54. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_set.imageset/Contents.json
  55. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_set.imageset/b_my_set@2x.png
  56. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_set.imageset/b_my_set@3x.png
  57. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_wallet.imageset/Contents.json
  58. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_wallet.imageset/b_my_wallet@2x.png
  59. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_wallet.imageset/b_my_wallet@3x.png
  60. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_ID.imageset/Contents.json
  61. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_ID.imageset/b_set_ID@2x.png
  62. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_ID.imageset/b_set_ID@3x.png
  63. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_clear.imageset/Contents.json
  64. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_clear.imageset/b_set_clear@2x.png
  65. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_clear.imageset/b_set_clear@3x.png
  66. 6 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/Contents.json
  67. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_certification.imageset/Contents.json
  68. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_certification.imageset/b_certification@2x.png
  69. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_certification.imageset/b_certification@3x.png
  70. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_blue.imageset/Contents.json
  71. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_blue.imageset/b_edit_blue@2x.png
  72. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_blue.imageset/b_edit_blue@3x.png
  73. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_gray.imageset/Contents.json
  74. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_gray.imageset/b_edit_gray@2x.png
  75. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_gray.imageset/b_edit_gray@3x.png
  76. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_blue.imageset/Contents.json
  77. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_blue.imageset/b_end_blue@2x.png
  78. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_blue.imageset/b_end_blue@3x.png
  79. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_gray.imageset/Contents.json
  80. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_gray.imageset/b_end_gray@2x.png
  81. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_gray.imageset/b_end_gray@3x.png
  82. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_invitation_company.imageset/Contents.json
  83. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_invitation_company.imageset/b_invitation_company@2x.png
  84. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_invitation_company.imageset/b_invitation_company@3x.png
  85. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_message_white.imageset/Contents.json
  86. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_message_white.imageset/b_message_white@2x.png
  87. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_message_white.imageset/b_message_white@3x.png
  88. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_address.imageset/Contents.json
  89. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_address.imageset/b_position_address@2x.png
  90. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_address.imageset/b_position_address@3x.png
  91. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allnoselect.imageset/Contents.json
  92. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allnoselect.imageset/b_position_allnoselect@2x.png
  93. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allnoselect.imageset/b_position_allnoselect@3x.png
  94. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allselect.imageset/Contents.json
  95. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allselect.imageset/b_position_allselect@2x.png
  96. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allselect.imageset/b_position_allselect@3x.png
  97. 22 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_auditnoselect.imageset/Contents.json
  98. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_auditnoselect.imageset/b_position_auditnoselect@2x.png
  99. BIN
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_auditnoselect.imageset/b_position_auditnoselect@3x.png
  100. 0 0
      HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_auditselect.imageset/Contents.json

+ 34 - 0
.gitignore

@@ -0,0 +1,34 @@
+# Xcode
+#
+build/
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+*.xccheckout
+*.moved-aside
+DerivedData
+*.hmap
+*.ipa
+*.xcuserstate
+
+# CocoaPods
+#
+# We recommend against adding the Pods directory to your .gitignore. However
+# you should judge for yourself, the pros and cons are mentioned at:
+# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
+#
+Pods/
+Podfile.lock
+
+# Carthage
+#
+# Add this line if you want to avoid checking in source code from Carthage dependencies.
+# Carthage/Checkouts
+
+Carthage/Build

BIN
HappyJob/.DS_Store


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 1290 - 131
HappyJob/HappyJob.xcodeproj/project.pbxproj


BIN
HappyJob/HappyJob.xcworkspace/xcuserdata/Bob.xcuserdatad/UserInterfaceState.xcuserstate


BIN
HappyJob/HappyJob/.DS_Store


+ 22 - 0
HappyJob/HappyJob/API/FBNetworking/FBAPIManagerDataBox.h

@@ -0,0 +1,22 @@
+//
+//  FBAPIManagerDataBox.h
+//  HappyJob
+//
+//  Created by Bob on 2019/3/29.
+//  Copyright © 2019 Bob. All rights reserved.
+//
+
+#ifndef FBAPIManagerDataBox_h
+#define FBAPIManagerDataBox_h
+
+@class FBBaseAPIManager;
+
+@protocol FBAPIManagerDataBox <NSObject>
+//协议 数据处理的
+
+@required//遵循此协议方法必须实现(协议中只有方法的声明没有方法的实现)
+- (id)manager:(FBBaseAPIManager *)manager boxingData:(NSDictionary *)data;
+
+@end
+
+#endif /* FBAPIManagerDataBox_h */

+ 115 - 0
HappyJob/HappyJob/API/FBNetworking/FBBaseAPIManager.h

@@ -0,0 +1,115 @@
+//
+//  FBBaseAPIManager.h
+//  HappyJob
+//
+//  Created by Bob on 2019/3/28.
+//  Copyright © 2019 Bob. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <YTKNetwork/YTKNetwork.h>
+#import "FBAPIManagerDataBox.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSInteger, FBAPIManagerErrorType) {
+    
+    FBAPIManagerErrorTypeDefault,         // 没有产生过API请求,这个是manager的默认状态。
+    FBAPIManagerErrorTypeSuccess,         // API请求成功且返回数据正确,此时manager的数据是可以直接拿来使用的。
+    FBAPIManagerErrorTypeNoContent,       // API请求成功但返回数据不正确。如果回调数据验证函数返回值为NO,manager的状态就会是这个。
+    FBAPIManagerErrorTypeNoError,         // 无错误errcode返回0,但是没有对data中的数据进行校验
+    FBAPIManagerErrorTypeParamsError,     // 参数错误,此时manager不会调用API,因为参数验证是在调用API之前做的。
+    FBAPIManagerErrorTypeTimedOut,        // 请求超时。requestTimeoutInterval设置的是20秒超时。
+    FBAPIManagerErrorTypeNoNetWork,       // 网络不通。在调用API之前会判断一下当前网络是否通畅,这个也是在调用API之前验证的,和上面超时的状态是有区别的。
+};
+
+typedef NS_ENUM(NSInteger, FBAPIManagerRequestType) {
+    
+    FBAPIManagerRequestTypePost,          //默认是Post请求
+    FBAPIManagerRequestTypeGet,
+};
+
+@class FBBaseAPIManager;
+@class FBUploadDataModel;
+
+@protocol FBAPIManagerProtocol <NSObject>
+
+@required
+/** 接口调用URL */
+- (NSString *)methodName;
+
+@optional
+/** 接口调用参数 */
+- (NSDictionary *)parameters;
+/** 接口请求方式 */
+- (FBAPIManagerRequestType)requestType;
+/** 上传数据 */
+- (NSArray<FBUploadDataModel *> *)uploadDataArray;
+/** 按时间缓存内容,如:3 分钟 = 180 秒 */
+- (NSInteger)cacheTime;
+
+@end
+
+@protocol FBAPIManagerDelegate <NSObject>
+
+@required
+- (void)managerCallAPIDidSuccess:(FBBaseAPIManager *)manager;
+- (void)managerCallAPIDidFailed:(FBBaseAPIManager *)manager;
+
+@end
+
+@protocol FBAPIManagerInterceptor <NSObject>
+
+@required
+- (BOOL)manager:(FBBaseAPIManager *)manager shouldStartCallAPIWithParams:(NSDictionary *_Nullable)params;;
+- (void)managerShouldFinishCallAPI:(FBBaseAPIManager *)manager;
+
+@end
+
+@protocol FBAPIManagerValidator <NSObject>
+
+@required
+/** 接口调用返回数据校验 */
+- (FBAPIManagerErrorType)manager:(FBBaseAPIManager *)manager validWithCallBackData:(NSDictionary *)data;
+
+/** 接口调用参数校验 */
+- (FBAPIManagerErrorType)manager:(FBBaseAPIManager *)manager validWithCallParamsData:(NSDictionary *)data;
+
+@end
+
+@protocol FBPageableAPIManager <NSObject>
+
+@property (nonatomic, assign) NSInteger pageSize;
+@property (nonatomic, assign, readonly) NSUInteger currentPageNumber;
+@property (nonatomic, assign, readonly) BOOL isFirstPage;//是否是第一页
+@property (nonatomic, assign, readonly) BOOL isLastPage;//是否是最后一页
+
+- (void)loadNextPage;
+
+@end
+
+@interface FBBaseAPIManager : YTKRequest
+
+@property (nonatomic, weak) id<FBAPIManagerDelegate> APIManagerDelegate;//结果
+@property (nonatomic, weak) id<FBAPIManagerInterceptor> APIManagerInterceptor;//指示
+@property (nonatomic, assign) FBAPIManagerErrorType errorType;
+@property (nonatomic, copy, readonly) NSString *errorMessage;
+
+- (id)fetchDataWithBox:(id<FBAPIManagerDataBox> _Nullable)box;
+
+@end
+
+@interface FBUploadDataModel : NSObject
+
+/**上传文件数据*/
+@property (nonatomic, copy) NSData *data;
+/**文件名,一定要带扩展名*/
+@property (nonatomic, copy) NSString *name;
+/**上传文件的参数名*/
+@property (nonatomic, copy) NSString *formKey;
+/**文件上传的类型,如:image/jpeg*/
+@property (nonatomic, copy) NSString *type;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 249 - 0
HappyJob/HappyJob/API/FBNetworking/FBBaseAPIManager.m

@@ -0,0 +1,249 @@
+//
+//  FBBaseAPIManager.m
+//  HappyJob
+//
+//  Created by Bob on 2019/3/28.
+//  Copyright © 2019 Bob. All rights reserved.
+//
+
+#import "FBBaseAPIManager.h"
+#import <AFNetworking/AFNetworking.h>
+
+@interface FBBaseAPIManager () <YTKRequestDelegate>
+
+@property (nonatomic, weak) NSObject<FBAPIManagerProtocol, FBAPIManagerValidator> *child;
+
+@property (nonatomic, strong, readwrite) id fetchedRawData;
+@property (nonatomic, copy, readwrite)   NSString *errorMessage;
+
+@end
+
+@implementation FBBaseAPIManager
+
+- (instancetype)init {
+    
+    if (self = [super init])
+    {
+        _fetchedRawData = nil;
+        self.delegate = self;
+        
+        if ([self conformsToProtocol:@protocol(FBAPIManagerProtocol)])
+        {
+            self.child = (id<FBAPIManagerProtocol, FBAPIManagerValidator>)self;
+        }
+        else
+        {
+            NSString *name = NSStringFromClass([self class]);
+            NSString *reason = @"没有实现父类的代理方法";
+            NSException *exception = [NSException exceptionWithName:name reason:reason userInfo:nil];
+            @throw exception;
+        }
+    }
+    return self;
+}
+
+- (id)fetchDataWithBox:(id<FBAPIManagerDataBox>)box {
+    
+    id resultData = nil;
+    if ([box respondsToSelector:@selector(manager:boxingData:)])
+    {
+        resultData = [box manager:self boxingData:self.fetchedRawData];
+    }
+    else
+    {
+        resultData = [self.fetchedRawData mutableCopy];
+    }
+    return resultData;
+}
+
+#pragma mark - YTKRequestDelegate
+
+- (void)requestFinished:(__kindof YTKBaseRequest *)request {
+    DDLogDebug(@"[%@: %@] = %@", [self requestUrl], [self requestArgument], request.responseObject);
+    
+    [self callingSuccessWithResponseObject:request.responseObject];
+}
+
+- (void)requestFailed:(__kindof YTKBaseRequest *)request {
+    DDLogDebug(@"[%@: %@] = error:%@", [self requestUrl], [self requestArgument], request.error);
+    
+    // 除了超时以外,所有错误都当成是无网络
+    FBAPIManagerErrorType errorType = FBAPIManagerErrorTypeNoNetWork;
+    if (request.error.code == NSURLErrorTimedOut)
+    {
+        errorType = FBAPIManagerErrorTypeTimedOut;
+    }
+    
+    [self callingFailedWithResponseObject:request.responseObject errorType:errorType];
+}
+
+#pragma mark - 重载父类方法
+
+- (void)start {
+    
+    NSDictionary *reformedParams = [self requestArgument];
+    if (reformedParams == nil)
+    {
+        reformedParams = @{};
+    }
+    if ([self shouldCallAPIWithParams:reformedParams])
+    {
+        FBAPIManagerErrorType errorType = [self.child manager:self validWithCallParamsData:reformedParams];//校验参数
+        if (errorType == FBAPIManagerErrorTypeParamsError)
+        {
+            DDLogDebug(@"参数校验失败:[%@: %@]", [self requestUrl], [self requestArgument]);
+            [self callingFailedWithResponseObject:nil errorType:FBAPIManagerErrorTypeParamsError];//参数失败处理
+        }
+        else
+        {
+            [super start];
+        }
+    }
+}
+
+- (NSString *)requestUrl {
+    
+    return [self.child methodName];
+}
+
+- (id)requestArgument {
+    
+    if ([self.child respondsToSelector:@selector(parameters)])
+    {
+        return [self.child parameters];
+    }
+    return nil;
+}
+
+- (YTKRequestMethod)requestMethod {
+    
+    if ([self.child respondsToSelector:@selector(requestType)])
+    {
+        if ([self.child requestType] == FBAPIManagerRequestTypeGet)
+        {
+            return YTKRequestMethodGET;
+        }
+    }
+    
+    return YTKRequestMethodPOST;
+}
+
+- (YTKRequestSerializerType)requestSerializerType {
+    
+    return YTKRequestSerializerTypeJSON;
+}
+
+- (NSTimeInterval)requestTimeoutInterval {
+    
+    return 20;
+}
+
+- (NSInteger)cacheTimeInSeconds {
+    
+    if ([self.child respondsToSelector:@selector(cacheTime)])
+    {
+        return [self.child cacheTime];
+    }
+    
+    return [super cacheTimeInSeconds];
+}
+
+- (AFConstructingBlock)constructingBodyBlock {
+    
+    if ([self.child respondsToSelector:@selector(uploadDataArray)])
+    {
+        NSArray *array = [self.child uploadDataArray];
+        if (array.count > 0)
+        {
+            return ^(id<AFMultipartFormData> formData) {
+                
+                for (FBUploadDataModel *model in array)
+                {
+                    NSData *data = model.data;
+                    NSString *name = model.name;
+                    NSString *formKey = model.formKey;
+                    NSString *type = model.type;
+                    [formData appendPartWithFileData:data name:formKey fileName:name mimeType:type];
+                }
+            };
+        }
+    }
+    
+    return nil;
+}
+
+#pragma mark - interceptor
+
+//只有返回YES才会继续调用API
+- (BOOL)shouldCallAPIWithParams:(NSDictionary *)params {
+    
+    if ([self.APIManagerInterceptor respondsToSelector:@selector(manager:shouldStartCallAPIWithParams:)])
+    {
+        return [self.APIManagerInterceptor manager:self shouldStartCallAPIWithParams:params];
+    }
+    else
+    {
+        return YES;
+    }
+}
+
+#pragma mark - private methods
+
+- (void)callingSuccessWithResponseObject:(id)responseObject {
+    
+    self.fetchedRawData = [responseObject copy];
+    
+    FBAPIManagerErrorType errorType = [self.child manager:self validWithCallBackData:responseObject];//错误类型
+    if (errorType == FBAPIManagerErrorTypeNoError)
+    {
+        self.errorType = errorType;
+        
+        if ([self.APIManagerInterceptor respondsToSelector:@selector(managerShouldFinishCallAPI:)])
+        {
+            [self.APIManagerInterceptor managerShouldFinishCallAPI:self];//结束指示器
+        }
+        
+        if ([self.APIManagerDelegate respondsToSelector:@selector(managerCallAPIDidSuccess:)])
+        {
+            [self.APIManagerDelegate managerCallAPIDidSuccess:self];//成功回调
+        }
+    }
+    else
+    {
+        [self callingFailedWithResponseObject:responseObject errorType:errorType];//处理失败的
+    }
+}
+
+- (void)callingFailedWithResponseObject:(id)responseObject errorType:(FBAPIManagerErrorType)errorType {
+    self.errorType = errorType;
+    
+    // 常规错误
+    if (errorType == FBAPIManagerErrorTypeNoNetWork)
+    {
+        self.errorMessage = @"无网络连接,请检查网络";
+    }
+    if (errorType == FBAPIManagerErrorTypeTimedOut)
+    {
+        self.errorMessage = @"请求超时";
+    }
+    if (errorType == FBAPIManagerErrorTypeParamsError)
+    {
+        self.errorMessage = @"参数有误";
+    }
+    
+    if ([self.APIManagerInterceptor respondsToSelector:@selector(managerShouldFinishCallAPI:)])
+    {
+        [self.APIManagerInterceptor managerShouldFinishCallAPI:self];//结束指示器
+    }
+    
+    if ([self.APIManagerDelegate respondsToSelector:@selector(managerCallAPIDidFailed:)])
+    {
+        [self.APIManagerDelegate managerCallAPIDidFailed:self];//失败回调
+    }
+}
+
+@end
+
+@implementation FBUploadDataModel
+
+@end

HappyJob/HappyJob/Components/FBKit/FBNetworking/FBNetworkingConfig.h → HappyJob/HappyJob/API/FBNetworking/FBNetworkingConfig.h


HappyJob/HappyJob/Components/FBKit/FBNetworking/FBNetworkingConfig.m → HappyJob/HappyJob/API/FBNetworking/FBNetworkingConfig.m


+ 1 - 0
HappyJob/HappyJob/AppDelegate.h

@@ -12,6 +12,7 @@
 
 @property (strong, nonatomic) UIWindow *window;
 
+- (void)switchTabBar;//切换
 
 @end
 

+ 102 - 35
HappyJob/HappyJob/AppDelegate.m

@@ -21,19 +21,30 @@
 #import <AMapFoundationKit/AMapFoundationKit.h>
 #import <Bugly/Bugly.h>
 
-@interface AppDelegate () <HJWelcomeViewDelegate>
+#import "BMainViewController.h"//自发布的
+#import "BReleaseJobsViewController.h"//发布工作
+#import "BReleaseViewController.h"
+
+@interface AppDelegate () <HJWelcomeViewDelegate,UITabBarControllerDelegate>
+
+@property (nonatomic, strong) BMainViewController *bTabBarC;
+@property (nonatomic, assign) int                 lastIndex;//tabBar选中的上一个的视图索引
+@property (nonatomic, strong) HJConfirmPanelViewController *confirmVC;//弹出页面
+
 
 @end
 
 @implementation AppDelegate
 
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+    
+    [[HJAppUserType sharedInstance] loadUserType];
+    
     //配置Bugly
     [Bugly startWithAppId:kBuglyAppID];
     
     //配置广告数据
     [self setupAd];
-    
     // 高德地图
     [AMapServices sharedServices].apiKey = kGAODEAPIKey;
     
@@ -53,83 +64,119 @@
     
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     self.window.backgroundColor = [UIColor whiteColor];
+    //引导页
     HJWelcomeViewController *welcomeViewController = [[HJWelcomeViewController alloc] init];
     welcomeViewController.delegate = self;
-    if (welcomeViewController.isShow) {
+    if (welcomeViewController.isShow)
+    {
         self.window.rootViewController = welcomeViewController;
-    } else {
+    }
+    else
+    {
         self.window.rootViewController = [self setupFirstViewController];
     }
     [self.window makeKeyAndVisible];
     
     return YES;
 }
+
 //iOS 9 之前用
 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
+    
     return [WXApi handleOpenURL:url delegate:[HJWeiXinAPIManager sharedManager]];
 }
 
 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
+    
     return [WXApi handleOpenURL:url delegate:[HJWeiXinAPIManager sharedManager]];
 }
 //iOS 9之后用
 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
+    
     return [WXApi handleOpenURL:url delegate:[HJWeiXinAPIManager sharedManager]];
 }
 
-- (void)applicationWillResignActive:(UIApplication *)application {
-    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
-    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
-}
-
-
-- (void)applicationDidEnterBackground:(UIApplication *)application {
-    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
-    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
-}
-
-
-- (void)applicationWillEnterForeground:(UIApplication *)application {
-    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
-}
-
-
-- (void)applicationDidBecomeActive:(UIApplication *)application {
-    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
-}
-
-
-- (void)applicationWillTerminate:(UIApplication *)application {
-    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
-}
-
 #pragma mark - HJWelcomeViewDelegate
 
 - (void)skipWelcomeView:(HJWelcomeViewController *)welcomeView {
+    
     self.window.rootViewController = [self setupFirstViewController];
 }
 
 #pragma mark - event response
 
 - (void)launchStartButtonClicked:(UIButton *)sender {
+    
     [XHLaunchAd removeAndAnimated:YES];
 }
 
 #pragma mark - private methods
 
 - (UIViewController *)setupFirstViewController {
+    
     NSString *userID = [HJUserInfoModel userInfo].userID;
-    if (userID != nil && ![userID isEqualToString:@""]) {
-        HJMainViewController *mainViewController = [[HJMainViewController alloc] init];
-        return mainViewController;
-    } else {
+    
+    if (userID != nil && ![userID isEqualToString:@""])
+    {  //c端
+        if (USERTYPE)
+        {
+            _bTabBarC = [[BMainViewController alloc]init];
+            _bTabBarC.delegate = self;
+            return _bTabBarC;
+        }
+        else
+        {//自发布
+            HJMainViewController *mainViewController = [[HJMainViewController alloc] init];
+            return mainViewController;
+        }
+    }
+    else
+    {
         HJLoginViewController *loginViewController = [[HJLoginViewController alloc] init];
         UINavigationController *loginNav = [[UINavigationController alloc] initWithRootViewController:loginViewController];
         return loginNav;
     }
+
 }
+- (void)switchTabBar {
+    
+    self.window.rootViewController = [self setupFirstViewController];
+    
+}
+#pragma mark - UITabBarControllerDelegate 代理
+- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
+{
+    if (_bTabBarC.tabBar.selectedItem.tag == 2 && [[HJCompanyInfoModel companyInfo].authenticationStatus integerValue] == 0)
+    {//取消tabBar的点击事件
+        return NO;
+    }
+   else
+   {
+       _lastIndex = (int)tabBarController.selectedIndex;
+       return YES;
+   }
 
+}
+- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
+{
+    if (tabBarController.selectedIndex == 2)
+    {
+        if ([[HJCompanyInfoModel companyInfo].authenticationStatus integerValue] == 3 || [[HJCompanyInfoModel companyInfo].authenticationStatus integerValue] == 2 || [[HJCompanyInfoModel companyInfo].authenticationStatus integerValue] == 1)
+        {
+            tabBarController.selectedIndex = _lastIndex ;
+            BReleaseJobsViewController *certification=[[BReleaseJobsViewController alloc]init];
+            UINavigationController *navi=[[UINavigationController alloc]initWithRootViewController:certification];
+            [self.window.rootViewController presentViewController:navi animated:YES completion:nil];
+        }
+        else
+        {
+            tabBarController.selectedIndex = _lastIndex ;
+        }
+    }
+}
+/* 配置启动页 */
 - (void)setupAd {
+    
     //设置你工程的启动页使用的是:LaunchImage 还是 LaunchScreen.storyboard(不设置默认:LaunchImage)
     [XHLaunchAd setLaunchSourceType:SourceTypeLaunchScreen];
     
@@ -147,11 +194,31 @@
     launchVersionLabel.textAlignment = NSTextAlignmentCenter;
     
     XHLaunchImageAdConfiguration *imageAdconfiguration = [XHLaunchImageAdConfiguration defaultConfiguration];
-    imageAdconfiguration.duration = 3;
+    imageAdconfiguration.duration = 1;
     imageAdconfiguration.subViews = @[launchVersionLabel, launchStartButton];
     imageAdconfiguration.skipButtonType = SkipTypeNone;
     imageAdconfiguration.showFinishAnimate = ShowFinishAnimateLite;
     [XHLaunchAd imageAdWithImageAdConfiguration:imageAdconfiguration delegate:self];
 }
+- (void)applicationWillResignActive:(UIApplication *)application {
+    
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application {
+    
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application {
+    
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application {
+    
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application {
+    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
 
 @end

+ 6 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_certification.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_home_certification@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_home_certification@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_certification.imageset/b_home_certification@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_certification.imageset/b_home_certification@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_delivery.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_home_delivery@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_home_delivery@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_delivery.imageset/b_home_delivery@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_delivery.imageset/b_home_delivery@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_search.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_home_search@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_home_search@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_search.imageset/b_home_search@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_search.imageset/b_home_search@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_set.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_home_set@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_home_set@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_set.imageset/b_home_set@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_home_set.imageset/b_home_set@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_messag.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_messag@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_messag@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_messag.imageset/b_messag@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_messag.imageset/b_messag@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_message.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_message@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_message@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_message.imageset/b_message_message@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_message.imageset/b_message_message@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_nopass.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_nopass@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_nopass@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_nopass.imageset/b_message_nopass@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_nopass.imageset/b_message_nopass@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_position.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_position@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_position@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_position.imageset/b_message_position@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_position.imageset/b_message_position@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_resume.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_resume@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_resume@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_resume.imageset/b_message_resume@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMessageImage/b_message_resume.imageset/b_message_resume@3x.png


+ 6 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_enterprise_certification.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_enterprise_certification@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_enterprise_certification@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_enterprise_certification.imageset/b_enterprise_certification@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_enterprise_certification.imageset/b_enterprise_certification@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_collection.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_collection@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_collection@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_collection.imageset/b_my_collection@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_collection.imageset/b_my_collection@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_feedback.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_feedback@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_feedback@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_feedback.imageset/b_my_feedback@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_feedback.imageset/b_my_feedback@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_right.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_right@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_righ@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_right.imageset/b_my_righ@3x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_right.imageset/b_my_right@2x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_set.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_set@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_set@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_set.imageset/b_my_set@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_set.imageset/b_my_set@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_wallet.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_wallet@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_my_wallet@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_wallet.imageset/b_my_wallet@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_my_wallet.imageset/b_my_wallet@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_ID.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_set_ID@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_set_ID@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_ID.imageset/b_set_ID@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_ID.imageset/b_set_ID@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_clear.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_set_clear@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_set_clear@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_clear.imageset/b_set_clear@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BMy/b_set_clear.imageset/b_set_clear@3x.png


+ 6 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_certification.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_certification@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_certification@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_certification.imageset/b_certification@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_certification.imageset/b_certification@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_blue.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_edit_blue@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_edit_blue@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_blue.imageset/b_edit_blue@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_blue.imageset/b_edit_blue@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_gray.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_edit_gray@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_edit_gray@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_gray.imageset/b_edit_gray@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_edit_gray.imageset/b_edit_gray@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_blue.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_end_blue@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_end_blue@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_blue.imageset/b_end_blue@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_blue.imageset/b_end_blue@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_gray.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_end_gray@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_end_gray@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_gray.imageset/b_end_gray@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_end_gray.imageset/b_end_gray@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_invitation_company.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_invitation_company@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_invitation_company@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_invitation_company.imageset/b_invitation_company@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_invitation_company.imageset/b_invitation_company@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_message_white.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_white@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_message_white@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_message_white.imageset/b_message_white@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_message_white.imageset/b_message_white@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_address.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_position_address@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_position_address@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_address.imageset/b_position_address@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_address.imageset/b_position_address@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allnoselect.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_position_allnoselect@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_position_allnoselect@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allnoselect.imageset/b_position_allnoselect@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allnoselect.imageset/b_position_allnoselect@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allselect.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_position_allselect@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_position_allselect@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allselect.imageset/b_position_allselect@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_allselect.imageset/b_position_allselect@3x.png


+ 22 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_auditnoselect.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_position_auditnoselect@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "b_position_auditnoselect@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_auditnoselect.imageset/b_position_auditnoselect@2x.png


BIN
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_auditnoselect.imageset/b_position_auditnoselect@3x.png


+ 0 - 0
HappyJob/HappyJob/Assets.xcassets/BImage/BPosition/b_position_auditselect.imageset/Contents.json


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott