Steven 1 год назад
Родитель
Сommit
d248043158
27 измененных файлов с 292 добавлено и 47 удалено
  1. 18 12
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSAccompanyWebViewController.m
  3. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m
  4. 6 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h
  5. 11 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  6. 11 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Define/KSDomain.h
  7. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Common/LoadingManager/KSHudLoagingManager.m
  8. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Extension/NSDictionary+Extension.m
  9. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/ChatViewController.m
  10. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/TenantGroup/TenantChooseMemberViewController.m
  11. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupSettingViewController.m
  12. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/ChatComplainBottomView.xib
  13. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Model/Tenant/TenantStuModel.h
  14. 7 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Model/Tenant/TenantStuModel.m
  15. 11 10
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m
  16. 18 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeMusicSheetLayout.h
  17. 118 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeMusicSheetLayout.m
  18. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Courseware/ViewModel/CoursewareViewModel.m
  19. 17 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/Controller/AboutUsViewController.m
  20. 23 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/Controller/FeedbackViewController.m
  21. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/AboutUsBodyView.h
  22. 5 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/AboutUsBodyView.m
  23. 20 6
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/AboutUsBodyView.xib
  24. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/FeedbackBodyView.h
  25. 7 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/FeedbackBodyView.m
  26. 4 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/FeedbackBodyView.xib
  27. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/SettingBodyView.m

+ 18 - 12
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -1152,6 +1152,7 @@
 		BCE6A0AA27F852CD00C97704 /* MineFansGroupCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCE6A0A827F852CD00C97704 /* MineFansGroupCell.xib */; };
 		BCE70D3628C6DA8B00DE7A69 /* MyStyleEditHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCE70D3528C6DA8B00DE7A69 /* MyStyleEditHeadView.m */; };
 		BCE70D3828C6DA9300DE7A69 /* MyStyleEditHeadView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCE70D3728C6DA9300DE7A69 /* MyStyleEditHeadView.xib */; };
+		BCE73D692ABD705F00AD1F9A /* HomeMusicSheetLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = BCE73D672ABD705F00AD1F9A /* HomeMusicSheetLayout.m */; };
 		BCEA751A2818D59300886A86 /* BankNameModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCEA75192818D59300886A86 /* BankNameModel.m */; };
 		BCEA751D2818F6C900886A86 /* MyCardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCEA751C2818F6C900886A86 /* MyCardModel.m */; };
 		BCEA752028190CEB00886A86 /* CardBandResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCEA751F28190CEB00886A86 /* CardBandResultViewController.m */; };
@@ -3153,6 +3154,8 @@
 		BCE70D3428C6DA8B00DE7A69 /* MyStyleEditHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleEditHeadView.h; sourceTree = "<group>"; };
 		BCE70D3528C6DA8B00DE7A69 /* MyStyleEditHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleEditHeadView.m; sourceTree = "<group>"; };
 		BCE70D3728C6DA9300DE7A69 /* MyStyleEditHeadView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleEditHeadView.xib; sourceTree = "<group>"; };
+		BCE73D672ABD705F00AD1F9A /* HomeMusicSheetLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeMusicSheetLayout.m; sourceTree = "<group>"; };
+		BCE73D682ABD705F00AD1F9A /* HomeMusicSheetLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeMusicSheetLayout.h; sourceTree = "<group>"; };
 		BCEA75182818D59300886A86 /* BankNameModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BankNameModel.h; sourceTree = "<group>"; };
 		BCEA75192818D59300886A86 /* BankNameModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BankNameModel.m; sourceTree = "<group>"; };
 		BCEA751B2818F6C900886A86 /* MyCardModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyCardModel.h; sourceTree = "<group>"; };
@@ -4437,13 +4440,15 @@
 		277935FC27E32BBF0010E277 /* Model */ = {
 			isa = PBXGroup;
 			children = (
-				BC1263AC28FF9A0200509E90 /* HomeMusicModel.h */,
-				BC1263AD28FF9A0200509E90 /* HomeMusicModel.m */,
 				BCA1136928A4D6E6007FAFB9 /* AnimationSource */,
 				BCDE359D289BC03E00A9A560 /* HomeAlbumModel.h */,
 				BCDE359C289BC03E00A9A560 /* HomeAlbumModel.m */,
 				BC6BEA9E288A4C0900022109 /* HomeMessageModel.h */,
 				BC6BEA9D288A4C0900022109 /* HomeMessageModel.m */,
+				BC1263AC28FF9A0200509E90 /* HomeMusicModel.h */,
+				BC1263AD28FF9A0200509E90 /* HomeMusicModel.m */,
+				BCE73D682ABD705F00AD1F9A /* HomeMusicSheetLayout.h */,
+				BCE73D672ABD705F00AD1F9A /* HomeMusicSheetLayout.m */,
 				BC9473FC282A5E71004B3B27 /* NoticeSourceModel.h */,
 				BC9473FB282A5E71004B3B27 /* NoticeSourceModel.m */,
 				BCA193B4282A80A9004A585D /* RecentCourseModel.h */,
@@ -8317,6 +8322,7 @@
 				BC56C95529233D0500AF301F /* CoursewareTableDelegate.m in Sources */,
 				BC5E4B1E291E5E26001BBCD2 /* SmallToolBodyView.m in Sources */,
 				BC4BCE6C28239EEB00522C8B /* MyAddressListCell.m in Sources */,
+				BCE73D692ABD705F00AD1F9A /* HomeMusicSheetLayout.m in Sources */,
 				BCD6D16228195A17009A773E /* WithdrawApplyViewController.m in Sources */,
 				BC106B8C2A8F4586000759A9 /* TXLiveMessageSeatResponse.m in Sources */,
 				277932B627E30FFE0010E277 /* UIView+SDExtension.m in Sources */,
@@ -9263,11 +9269,11 @@
 				INFOPLIST_KEY_CFBundleDisplayName = "酷乐秀学院";
 				INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = YES;
 				INFOPLIST_KEY_NSAppleMusicUsageDescription = "App需要您的同意访问媒体资料库权限,用于播放媒体服务";
-				INFOPLIST_KEY_NSCameraUsageDescription = "APP需要您的同意,访问您的相机,以便您正常使用上传图片、视频课程等服务";
+				INFOPLIST_KEY_NSCameraUsageDescription = "请开启摄像头权限,打开后可以使用聊天拍摄视频和图片等功能。你可以通过系统“设置”进行权限的管理。";
 				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要您的同意访问定位权限,用来记录签到信息";
-				INFOPLIST_KEY_NSMicrophoneUsageDescription = "App需要您的同意访问麦克风权限,用于您的语音服务、视频教学";
-				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "App需要您的同意访问您的相册权限,用于您的图片课件上传服务";
-				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App需要您的同意访问您的相册权限,用于您的图片课件上传服务";
+				INFOPLIST_KEY_NSMicrophoneUsageDescription = "请开启麦克风权限,打开后可以使用聊天语音消息和智能评测等功能。你可以通过系统“设置”进行权限的管理。";
+				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "请开启相册权限,打开后可以保存智能评测录制的视频和图片。你可以通过系统“设置”进行权限的管理";
+				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "请开启相册权限,打开后可以保存智能评测录制的视频和图片。你可以通过系统“设置”进行权限的管理";
 				INFOPLIST_KEY_NSUserTrackingUsageDescription = "App需要您的授权,该标识符将用于向您投进行定制化消息推送服务";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
@@ -9290,7 +9296,7 @@
 					"$(PROJECT_DIR)/KulexiuForTeacher/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.4/SocialLibraries/QQ",
 					"$(PROJECT_DIR)/KulexiuForTeacher/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.4/UMSocialSDKPlugin",
 				);
-				MARKETING_VERSION = 1.4.8;
+				MARKETING_VERSION = 1.5.0;
 				MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
 				MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++17";
 				PRODUCT_BUNDLE_IDENTIFIER = com.Colexiu.KulexiuForTeacher;
@@ -9331,11 +9337,11 @@
 				INFOPLIST_KEY_CFBundleDisplayName = "酷乐秀学院";
 				INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = YES;
 				INFOPLIST_KEY_NSAppleMusicUsageDescription = "App需要您的同意访问媒体资料库权限,用于播放媒体服务";
-				INFOPLIST_KEY_NSCameraUsageDescription = "APP需要您的同意,访问您的相机,以便您正常使用上传图片、视频课程等服务";
+				INFOPLIST_KEY_NSCameraUsageDescription = "请开启摄像头权限,打开后可以使用聊天拍摄视频和图片等功能。你可以通过系统“设置”进行权限的管理。";
 				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要您的同意访问定位权限,用来记录签到信息";
-				INFOPLIST_KEY_NSMicrophoneUsageDescription = "App需要您的同意访问麦克风权限,用于您的语音服务、视频教学";
-				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "App需要您的同意访问您的相册权限,用于您的图片课件上传服务";
-				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App需要您的同意访问您的相册权限,用于您的图片课件上传服务";
+				INFOPLIST_KEY_NSMicrophoneUsageDescription = "请开启麦克风权限,打开后可以使用聊天语音消息和智能评测等功能。你可以通过系统“设置”进行权限的管理。";
+				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "请开启相册权限,打开后可以保存智能评测录制的视频和图片。你可以通过系统“设置”进行权限的管理";
+				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "请开启相册权限,打开后可以保存智能评测录制的视频和图片。你可以通过系统“设置”进行权限的管理";
 				INFOPLIST_KEY_NSUserTrackingUsageDescription = "App需要您的授权,该标识符将用于向您投进行定制化消息推送服务";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
@@ -9358,7 +9364,7 @@
 					"$(PROJECT_DIR)/KulexiuForTeacher/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.4/SocialLibraries/QQ",
 					"$(PROJECT_DIR)/KulexiuForTeacher/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.4/UMSocialSDKPlugin",
 				);
-				MARKETING_VERSION = 1.4.8;
+				MARKETING_VERSION = 1.5.0;
 				MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
 				MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++17";
 				PRODUCT_BUNDLE_IDENTIFIER = com.Colexiu.KulexiuForTeacher;

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSAccompanyWebViewController.m

@@ -204,6 +204,7 @@
 }
 
 - (void)initWebView {
+    [self.scrollView removeFromSuperview];
     [self.view addSubview:self.navView];
     CGFloat topHeight = kNaviBarHeight;
     [self.navView mas_makeConstraints:^(MASConstraintMaker *make) {

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m

@@ -173,7 +173,7 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
 }
 
 - (void)initWebView {
-    
+    [self.scrollView removeFromSuperview];
     [self.view addSubview:self.navView];
     CGFloat topHeight = kNaviBarHeight;
     if (self.hideTop) {

+ 6 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h

@@ -1386,5 +1386,11 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)unbindTenantDetailRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+
+/// 查询配置客服电话和手机号
+/// @param post post
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryConfigRequest:(NSString *)post success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 @end
 NS_ASSUME_NONNULL_END

+ 11 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m

@@ -2545,6 +2545,17 @@
     NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/teacher/unbindTenantDetail"];
     NSMutableDictionary *parm = [NSMutableDictionary dictionary];
     [self request:get andWithUrl:url and:parm success:success faliure:faliure];
+}
+
 
+/// 查询配置客服电话和手机号
+/// @param post post
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryConfigRequest:(NSString *)post success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-auth/user/queryConfig"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 @end

+ 11 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Define/KSDomain.h

@@ -33,6 +33,17 @@
 //#define CONFIG_TXSDKAPPID (1400805079)
 //#define TXOfflinePushCertificateIDForAPNS (39559)
 
+// 预生产
+//#define hostURL (@"https://ponline.colexiu.com")
+//#define SEALCLASSHOST (@"https://ponline.colexiu.com/api-classroom")
+//#define WEBHOST (@"https://ponline.colexiu.com/teacher")
+//#define SOCKET_URL (@"wss://ponline.colexiu.com/audioAnalysis")
+//#define JSPUSH_ENVIRONMENT (YES)
+//#define RCIM_KEY (@"e5t4ouvpe42pa")
+//#define SUBMIT_UUID (YES)
+//#define CONFIG_TXSDKAPPID (1400799837)
+//#define TXOfflinePushCertificateIDForAPNS (39561)
+
 //#else
 
 //#define hostURL (@"https://online.colexiu.com")

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/LoadingManager/KSHudLoagingManager.m

@@ -31,7 +31,7 @@
 - (void)showHUD {
     dispatch_main_async_safe(^{
         [self removeLoadingView];
-        UIWindow *window = [[UIApplication sharedApplication ] keyWindow];
+        UIWindow *window = [NSObject getKeyWindow];
         self.HUD = [window addHUDActivityViewToView:nil
                                                        HintsText:@"加载中..."
                                                            Image:nil

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Extension/NSDictionary+Extension.m

@@ -11,7 +11,7 @@
 @implementation NSDictionary (Extension)
 
 - (NSInteger)ks_integerValueForKey:(id)key {
-    id value = [self valueForKey:key];
+    id value = [self notNullValueForKey:key];
     return value == nil ? 0 : [value integerValue];
 }
 

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/ChatViewController.m

@@ -210,7 +210,7 @@
             break;
         case CHATNAVACTION_SEND:
         {
-            if ([UserDefault(TENANT_ID) integerValue] > -1) {
+            if ([UserDefault(TENANT_ID) integerValue] > 0) {
                 TenantCreateGroupViewController *ctrl = [[TenantCreateGroupViewController alloc] init];
                 [self.navigationController pushViewController:ctrl animated:YES];
             }

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/TenantGroup/TenantChooseMemberViewController.m

@@ -84,7 +84,7 @@
     
     NSMutableArray *memArray = [NSMutableArray array];
     for (TenantStuModel *model in stuArray) {
-        BOOL isContainUser = [self isContainUser:model.userId];
+        BOOL isContainUser = [self isContainUser:model.imUserId];
         if (isContainUser == NO) {
             [memArray addObject:model];
         }

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupSettingViewController.m

@@ -221,7 +221,7 @@
         {
             NSMutableArray *memberArray = [NSMutableArray array];
             for (GroupMemberModel *model in self.sourceArray) {
-                [memberArray addObject:model.userId];
+                [memberArray addObject:model.imUserId];
             }
             TenantChooseMemberViewController *ctrl = [[TenantChooseMemberViewController alloc] init];
             ctrl.groupMemberIdArray = memberArray;

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/ChatComplainBottomView.xib

@@ -27,7 +27,7 @@
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                     <connections>
-                        <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpOutside" id="oZy-Hm-8pM"/>
+                        <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="6R5-TO-zzG"/>
                     </connections>
                 </button>
             </subviews>

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Model/Tenant/TenantStuModel.h

@@ -45,6 +45,8 @@
 @property (nonatomic, assign) double lockFlag;
 @property (nonatomic, strong) NSString *membershipStartTime;
 
+@property (nonatomic, strong) NSString *imUserId;
+
 @property (nonatomic, assign) BOOL isChoose;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;

+ 7 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Model/Tenant/TenantStuModel.m

@@ -41,7 +41,7 @@ NSString *const kTenantStuModelPhone = @"phone";
 NSString *const kTenantStuModelIsReal = @"isReal";
 NSString *const kTenantStuModelLockFlag = @"lockFlag";
 NSString *const kTenantStuModelMembershipStartTime = @"membershipStartTime";
-
+NSString *const kTenantStuModelImUserId= @"imUserId";
 
 @interface TenantStuModel ()
 
@@ -84,7 +84,7 @@ NSString *const kTenantStuModelMembershipStartTime = @"membershipStartTime";
 @synthesize isReal = _isReal;
 @synthesize lockFlag = _lockFlag;
 @synthesize membershipStartTime = _membershipStartTime;
-
+@synthesize imUserId = _imUserId;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -131,7 +131,7 @@ NSString *const kTenantStuModelMembershipStartTime = @"membershipStartTime";
             self.isReal = [[self objectOrNilForKey:kTenantStuModelIsReal fromDictionary:dict] doubleValue];
             self.lockFlag = [[self objectOrNilForKey:kTenantStuModelLockFlag fromDictionary:dict] doubleValue];
             self.membershipStartTime = [self objectOrNilForKey:kTenantStuModelMembershipStartTime fromDictionary:dict];
-
+        self.imUserId = [self objectOrNilForKey:kTenantStuModelImUserId fromDictionary:dict];
     }
     
     return self;
@@ -174,7 +174,7 @@ NSString *const kTenantStuModelMembershipStartTime = @"membershipStartTime";
     [mutableDict setValue:[NSNumber numberWithDouble:self.isReal] forKey:kTenantStuModelIsReal];
     [mutableDict setValue:[NSNumber numberWithDouble:self.lockFlag] forKey:kTenantStuModelLockFlag];
     [mutableDict setValue:self.membershipStartTime forKey:kTenantStuModelMembershipStartTime];
-
+    [mutableDict setValue:self.imUserId forKey:kTenantStuModelImUserId];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -234,6 +234,7 @@ NSString *const kTenantStuModelMembershipStartTime = @"membershipStartTime";
     self.isReal = [aDecoder decodeDoubleForKey:kTenantStuModelIsReal];
     self.lockFlag = [aDecoder decodeDoubleForKey:kTenantStuModelLockFlag];
     self.membershipStartTime = [aDecoder decodeObjectForKey:kTenantStuModelMembershipStartTime];
+    self.imUserId = [aDecoder decodeObjectForKey:kTenantStuModelImUserId];
     return self;
 }
 
@@ -273,6 +274,7 @@ NSString *const kTenantStuModelMembershipStartTime = @"membershipStartTime";
     [aCoder encodeDouble:_isReal forKey:kTenantStuModelIsReal];
     [aCoder encodeDouble:_lockFlag forKey:kTenantStuModelLockFlag];
     [aCoder encodeObject:_membershipStartTime forKey:kTenantStuModelMembershipStartTime];
+    [aCoder encodeObject:_imUserId forKey:kTenantStuModelImUserId];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -314,6 +316,7 @@ NSString *const kTenantStuModelMembershipStartTime = @"membershipStartTime";
         copy.isReal = self.isReal;
         copy.lockFlag = self.lockFlag;
         copy.membershipStartTime = [self.membershipStartTime copyWithZone:zone];
+        copy.imUserId = [self.imUserId copyWithZone:zone];
     }
     
     return copy;

+ 11 - 10
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m

@@ -62,6 +62,10 @@
 #import "HomeTenantView.h"
 
 #import "HomeTenantPageView.h"
+#import "HomeMusicSheetLayout.h"
+
+#define COLLECTION_WIDTH ((NSInteger)(KPortraitWidth * 0.83))
+#define COLLECTION_HEIGHT (320)
 
 #define BUTTONWIDTH (65)
 #define BUTTONHEIGHT (70)
@@ -1287,7 +1291,7 @@
 
     }
     else {
-        return CGSizeMake(KPortraitWidth * 0.83, 320);
+        return CGSizeMake(COLLECTION_WIDTH, COLLECTION_HEIGHT);
     }
 }
 
@@ -1364,9 +1368,8 @@
 
 - (UICollectionView *)recommendMusicCollectionView {
     if (!_recommendMusicCollectionView) {
-        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
-        layout.sectionInset = UIEdgeInsetsMake(12, 14, 12, 14);
-        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
+        HomeMusicSheetLayout *layout = [[HomeMusicSheetLayout alloc] initWithSectionInset:UIEdgeInsetsMake(0, 11, 0, KPortraitWidth - COLLECTION_WIDTH) andMiniLineSapce:10 andMiniInterItemSpace:10 andItemSize:CGSizeMake(COLLECTION_WIDTH, COLLECTION_HEIGHT)];
+
         _recommendMusicCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
         _recommendMusicCollectionView.backgroundColor = [UIColor clearColor];
         _recommendMusicCollectionView.delegate = self;
@@ -1422,9 +1425,8 @@
 
 - (UICollectionView *)newestMusicCollectionView {
     if (!_newestMusicCollectionView) {
-        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
-        layout.sectionInset = UIEdgeInsetsMake(12, 14, 12, 14);
-        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
+        HomeMusicSheetLayout *layout = [[HomeMusicSheetLayout alloc] initWithSectionInset:UIEdgeInsetsMake(0, 11, 0, KPortraitWidth - COLLECTION_WIDTH) andMiniLineSapce:10 andMiniInterItemSpace:10 andItemSize:CGSizeMake(COLLECTION_WIDTH, COLLECTION_HEIGHT)];
+
         _newestMusicCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
         _newestMusicCollectionView.backgroundColor = [UIColor clearColor];
         _newestMusicCollectionView.delegate = self;
@@ -1485,9 +1487,8 @@
 
 - (UICollectionView *)musicCollectionView {
     if (!_musicCollectionView) {
-        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
-        layout.sectionInset = UIEdgeInsetsMake(12, 14, 12, 14);
-        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
+        HomeMusicSheetLayout *layout = [[HomeMusicSheetLayout alloc] initWithSectionInset:UIEdgeInsetsMake(0, 11, 0, KPortraitWidth - COLLECTION_WIDTH) andMiniLineSapce:10 andMiniInterItemSpace:10 andItemSize:CGSizeMake(COLLECTION_WIDTH, COLLECTION_HEIGHT)];
+
         _musicCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
         _musicCollectionView.backgroundColor = [UIColor clearColor];
         _musicCollectionView.delegate = self;

+ 18 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeMusicSheetLayout.h

@@ -0,0 +1,18 @@
+//
+//  HomeMusicSheetLayout.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2023/9/20.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HomeMusicSheetLayout : UICollectionViewFlowLayout
+
+- (instancetype)initWithSectionInset:(UIEdgeInsets)insets andMiniLineSapce:(CGFloat)miniLineSpace andMiniInterItemSpace:(CGFloat)miniInterItemSpace andItemSize:(CGSize)itemSize;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 118 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeMusicSheetLayout.m

@@ -0,0 +1,118 @@
+//
+//  HomeMusicSheetLayout.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2023/9/20.
+//
+
+#import "HomeMusicSheetLayout.h"
+
+@interface HomeMusicSheetLayout ()
+
+@property (nonatomic, assign) UIEdgeInsets sectionInsets;
+
+@property (nonatomic, assign) CGFloat miniLineSpace;
+
+@property (nonatomic, assign) CGFloat miniInterItemSpace;
+
+@property (nonatomic, assign) CGSize eachItemSize;
+
+@property (nonatomic, assign) BOOL scrollAnimation;/**<是否有分页动画*/
+
+@property (nonatomic, assign) CGPoint lastOffset;/**<记录上次滑动停止时contentOffset值*/
+
+@end
+
+@implementation HomeMusicSheetLayout
+
+/*初始化部分*/
+- (instancetype)initWithSectionInset:(UIEdgeInsets)insets andMiniLineSapce:(CGFloat)miniLineSpace andMiniInterItemSpace:(CGFloat)miniInterItemSpace andItemSize:(CGSize)itemSize {
+    self = [self init];
+    if (self) {
+        //基本尺寸/边距设置
+        self.sectionInsets = insets;
+        self.miniLineSpace = miniLineSpace;
+        self.miniInterItemSpace = miniInterItemSpace;
+        self.eachItemSize = itemSize;
+    }
+    return self;
+}
+
+- (instancetype)init {
+    self = [super init];
+    if (self) {
+        _lastOffset = CGPointZero;
+    }
+    return self;
+}
+
+-(void)prepareLayout {
+    [super prepareLayout];
+    self.scrollDirection = UICollectionViewScrollDirectionHorizontal;// 水平滚动
+    /*设置内边距*/
+    self.sectionInset = _sectionInsets;
+    self.minimumLineSpacing = _miniLineSpace;
+    self.minimumInteritemSpacing = _miniInterItemSpace;
+    self.itemSize = _eachItemSize;
+    /**
+     * decelerationRate系统给出了2个值:
+     * 1. UIScrollViewDecelerationRateFast(速率快)
+     * 2. UIScrollViewDecelerationRateNormal(速率慢)
+     * 此处设置滚动加速度率为fast,这样在移动cell后就会出现明显的吸附效果
+     */
+    self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast;
+}
+
+- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity {
+    CGFloat pageSpace = [self stepSpace];//计算分页步距
+    CGFloat offsetMax = self.collectionView.contentSize.width - (pageSpace + self.sectionInset.right);
+    CGFloat offsetMin = 0;
+    /*修改之前记录的位置,如果小于最小contentsize或者大于最大contentsize则重置值*/
+    if (_lastOffset.x<offsetMin) {
+        _lastOffset.x = offsetMin;
+    }
+    else if (_lastOffset.x>offsetMax) {
+        _lastOffset.x = offsetMax;
+    }
+    
+    CGFloat offsetForCurrentPointX = ABS(proposedContentOffset.x - _lastOffset.x);//目标位移点距离当前点的距离绝对值
+    CGFloat velocityX = velocity.x;
+    BOOL direction = (proposedContentOffset.x - _lastOffset.x) > 0;//判断当前滑动方向,手指向左滑动:YES;手指向右滑动:NO
+    
+    if (offsetForCurrentPointX > pageSpace/8. && _lastOffset.x>=offsetMin && _lastOffset.x<=offsetMax) {
+        NSInteger pageFactor = 0;//分页因子,用于计算滑过的cell个数
+        if (velocityX != 0) {
+            /*滑动*/
+            pageFactor = ABS(velocityX);//速率越快,cell滑过数量越多
+        }
+        else {
+            /**
+             * 拖动
+             * 没有速率,则计算:位移差/默认步距=分页因子
+             */
+            pageFactor = ABS(offsetForCurrentPointX/pageSpace);
+        }
+        
+        /*设置pageFactor上限为2, 防止滑动速率过大,导致翻页过多*/
+        pageFactor = pageFactor<1?1:(pageFactor<3?1:2);
+        
+        CGFloat pageOffsetX = pageSpace*pageFactor;
+        proposedContentOffset = CGPointMake(_lastOffset.x + (direction?pageOffsetX:-pageOffsetX), proposedContentOffset.y);
+    }
+    else {
+        /*滚动距离,小于翻页步距一半,则不进行翻页操作*/
+        proposedContentOffset = CGPointMake(_lastOffset.x, _lastOffset.y);
+    }
+    
+    //记录当前最新位置
+    _lastOffset.x = proposedContentOffset.x;
+    return proposedContentOffset;
+}
+
+/**
+ *计算每滑动一页的距离:步距
+ */
+-(CGFloat)stepSpace {
+    return self.eachItemSize.width + self.miniLineSpace;
+}
+@end

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Courseware/ViewModel/CoursewareViewModel.m

@@ -33,7 +33,7 @@
 
 - (void)requestData {
     [LOADING_MANAGER showHUD];
-    [KSNetworkingManager courseCoursewareRequest:KS_POST status:0 searchKey:self.searchKey page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
+    [KSNetworkingManager courseCoursewareRequest:KS_POST status:1 searchKey:self.searchKey page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
         [LOADING_MANAGER removeHUD];
         [self endRefresh];
         if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {

+ 17 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/Controller/AboutUsViewController.m

@@ -21,6 +21,23 @@
     // Do any additional setup after loading the view.
     [self allocTitle:@"关于我们"];
     [self configUI];
+    [self requestConfig];
+}
+
+- (void)requestConfig {
+    [KSNetworkingManager queryConfigRequest:KS_POST success:^(NSDictionary * _Nonnull dic) {
+        if ([dic ks_integerValueForKey:@"code"] == 200) {
+            NSDictionary *result = [dic ks_dictionaryValueForKey:@"data"];
+            NSString *phone = [result ks_stringValueForKey:@"customerServicePhone"];
+            NSString *email = [result ks_stringValueForKey:@"customerServiceEmail"];
+            [self.bodyView configPhone:phone email:email];
+        }
+        else {
+            
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        
+    }];
 }
 
 - (void)configUI {

+ 23 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/Controller/FeedbackViewController.m

@@ -11,6 +11,8 @@
 
 @interface FeedbackViewController ()
 
+@property (nonatomic, strong) FeedbackBodyView *bodyView;
+
 @end
 
 @implementation FeedbackViewController
@@ -21,6 +23,23 @@
     [self allocTitle:@"意见反馈"];
     [self configUI];
     [self countUMEvent];
+    [self requestConfig];
+}
+
+- (void)requestConfig {
+    [KSNetworkingManager queryConfigRequest:KS_POST success:^(NSDictionary * _Nonnull dic) {
+        if ([dic ks_integerValueForKey:@"code"] == 200) {
+            NSDictionary *result = [dic ks_dictionaryValueForKey:@"data"];
+            NSString *phone = [result ks_stringValueForKey:@"customerServicePhone"];
+            NSString *email = [result ks_stringValueForKey:@"customerServiceEmail"];
+            [self.bodyView configPhone:phone email:email];
+        }
+        else {
+            
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        
+    }];
 }
 
 - (void)countUMEvent {
@@ -28,16 +47,16 @@
 }
 
 - (void)configUI {
-    FeedbackBodyView *bodyView = [FeedbackBodyView shareInstance];
-    [self.scrollView addSubview:bodyView];
+    self.bodyView = [FeedbackBodyView shareInstance];
+    [self.scrollView addSubview:self.bodyView];
     CGFloat height = kScreenHeight - kNaviBarHeight - iPhoneXSafeBottomMargin > 530 ?  kScreenHeight - kNaviBarHeight - iPhoneXSafeBottomMargin : 530;
-    [bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
+    [self.bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.top.mas_equalTo(self.scrollView.mas_top);
         make.right.left.mas_equalTo(self.view);
         make.height.mas_equalTo(height);
     }];
     KSWeakSelf(weakSelf);
-    [bodyView submitActionCallback:^(NSString *submitStr, NSString *contactStr) {
+    [self.bodyView submitActionCallback:^(NSString *submitStr, NSString *contactStr) {
         // 提交
         [weakSelf submitWithPhone:contactStr suggestion:submitStr];
     }];

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/AboutUsBodyView.h

@@ -13,6 +13,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 + (instancetype)shareInstance;
 
+- (void)configPhone:(NSString *)phone email:(NSString *)email;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 5 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/AboutUsBodyView.m

@@ -24,6 +24,11 @@
     self.emailLabel.text = @"klx@kulexiu999.onexmail.com";
 }
 
+- (void)configPhone:(NSString *)phone email:(NSString *)email {
+    self.phoneLabel.text = [NSString returnNoNullStringWithString:phone];
+    self.emailLabel.text = [NSString returnNoNullStringWithString:email];
+}
+
 + (instancetype)shareInstance {
     AboutUsBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"AboutUsBodyView" owner:nil options:nil] firstObject];
     return view;

+ 20 - 6
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/AboutUsBodyView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -32,13 +32,19 @@
                             <rect key="frame" x="0.0" y="245" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="E-mail" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zan-am-t8E">
-                                    <rect key="frame" x="16" y="15" width="48.5" height="20"/>
+                                    <rect key="frame" x="16" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="aKh-78-34y"/>
+                                    </constraints>
                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                     <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cnn-JH-ETQ">
-                                    <rect key="frame" x="370" y="25" width="0.0" height="0.0"/>
+                                    <rect key="frame" x="370" y="14" width="0.0" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="fnZ-IC-1WB"/>
+                                    </constraints>
                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                     <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
@@ -48,6 +54,7 @@
                             <constraints>
                                 <constraint firstItem="zan-am-t8E" firstAttribute="centerY" secondItem="Llz-E9-UuO" secondAttribute="centerY" id="J0e-zN-IpI"/>
                                 <constraint firstAttribute="height" constant="50" id="M1m-bo-gOH"/>
+                                <constraint firstItem="cnn-JH-ETQ" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="zan-am-t8E" secondAttribute="trailing" constant="12" id="W4N-Kb-gpR"/>
                                 <constraint firstItem="zan-am-t8E" firstAttribute="leading" secondItem="Llz-E9-UuO" secondAttribute="leading" constant="16" id="XIq-kX-qbY"/>
                                 <constraint firstItem="cnn-JH-ETQ" firstAttribute="centerY" secondItem="Llz-E9-UuO" secondAttribute="centerY" id="xyz-wD-GMm"/>
                                 <constraint firstAttribute="trailing" secondItem="cnn-JH-ETQ" secondAttribute="trailing" constant="16" id="zTa-6I-9Hc"/>
@@ -57,13 +64,19 @@
                             <rect key="frame" x="0.0" y="195" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="客服电话" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sAj-jF-RYu">
-                                    <rect key="frame" x="16" y="15" width="69.5" height="20"/>
+                                    <rect key="frame" x="16" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="jJi-zT-p8P"/>
+                                    </constraints>
                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                     <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="v4W-Tc-Z7P">
-                                    <rect key="frame" x="370" y="25" width="0.0" height="0.0"/>
+                                    <rect key="frame" x="370" y="14" width="0.0" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="YZF-fi-TdF"/>
+                                    </constraints>
                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                     <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
@@ -81,6 +94,7 @@
                                 <constraint firstAttribute="trailing" secondItem="uiK-CI-oZC" secondAttribute="trailing" constant="10" id="7GK-cx-1dC"/>
                                 <constraint firstItem="sAj-jF-RYu" firstAttribute="centerY" secondItem="Ebq-nd-C8r" secondAttribute="centerY" id="AUS-G7-eyd"/>
                                 <constraint firstItem="v4W-Tc-Z7P" firstAttribute="centerY" secondItem="Ebq-nd-C8r" secondAttribute="centerY" id="MBa-y4-kTz"/>
+                                <constraint firstItem="v4W-Tc-Z7P" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="sAj-jF-RYu" secondAttribute="trailing" constant="12" id="Nmd-Pr-tRA"/>
                                 <constraint firstAttribute="trailing" secondItem="v4W-Tc-Z7P" secondAttribute="trailing" constant="16" id="Of5-H2-upH"/>
                                 <constraint firstItem="sAj-jF-RYu" firstAttribute="leading" secondItem="Ebq-nd-C8r" secondAttribute="leading" constant="16" id="k9H-YA-caI"/>
                                 <constraint firstItem="uiK-CI-oZC" firstAttribute="leading" secondItem="Ebq-nd-C8r" secondAttribute="leading" constant="10" id="kNb-qR-XQk"/>

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/FeedbackBodyView.h

@@ -17,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)submitActionCallback:(SubmitAction)action;
 
+- (void)configPhone:(NSString *)phone email:(NSString *)email;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 7 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/FeedbackBodyView.m

@@ -36,6 +36,13 @@
     _emailContract.text = orgEmail;
 }
 
+- (void)configPhone:(NSString *)phone email:(NSString *)email {
+    if (![NSString isEmptyString:email]) {
+        self.emailContract.text = [NSString stringWithFormat:@"邮箱:%@", email];
+
+    }
+}
+
 + (instancetype)shareInstance {
     FeedbackBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"FeedbackBodyView" owner:nil options:nil] firstObject];
     return view;

+ 4 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/FeedbackBodyView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -123,12 +123,14 @@
                 <constraint firstItem="xej-UK-bQu" firstAttribute="top" secondItem="C3X-28-3eB" secondAttribute="bottom" constant="10" id="AOy-TT-LD9"/>
                 <constraint firstItem="xej-UK-bQu" firstAttribute="leading" secondItem="C3X-28-3eB" secondAttribute="leading" id="Him-df-kQK"/>
                 <constraint firstItem="DoC-1c-3dy" firstAttribute="leading" secondItem="xej-UK-bQu" secondAttribute="leading" id="L7H-FM-5j8"/>
+                <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="h4X-Xm-3Ji" secondAttribute="trailing" constant="10" id="NLN-xp-vpf"/>
                 <constraint firstItem="DoC-1c-3dy" firstAttribute="top" secondItem="xej-UK-bQu" secondAttribute="bottom" constant="13" id="P7h-Ep-NPN"/>
                 <constraint firstItem="T7Y-Q2-h52" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="28" id="TXw-X5-Y1u"/>
                 <constraint firstAttribute="trailing" secondItem="C3X-28-3eB" secondAttribute="trailing" constant="16" id="X8w-Bf-zC7"/>
                 <constraint firstItem="T7Y-Q2-h52" firstAttribute="top" secondItem="ZfN-9l-0US" secondAttribute="bottom" constant="50" id="aAz-dB-TiZ"/>
                 <constraint firstItem="C3X-28-3eB" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="20" id="dh9-Of-IhS"/>
                 <constraint firstItem="C3X-28-3eB" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="16" id="h2u-9a-ba7"/>
+                <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ZfN-9l-0US" secondAttribute="trailing" constant="10" id="q3n-0k-slY"/>
                 <constraint firstItem="h4X-Xm-3Ji" firstAttribute="top" secondItem="DoC-1c-3dy" secondAttribute="bottom" constant="5" id="rEp-T3-PWy"/>
                 <constraint firstItem="xej-UK-bQu" firstAttribute="trailing" secondItem="C3X-28-3eB" secondAttribute="trailing" id="rtR-RK-fdA"/>
                 <constraint firstItem="ZfN-9l-0US" firstAttribute="leading" secondItem="DoC-1c-3dy" secondAttribute="leading" id="sRD-xS-D9d"/>

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/SettingBodyView.m

@@ -25,7 +25,7 @@
 - (void)awakeFromNib {
     [super awakeFromNib];
     
-    if ([UserDefault(TENANT_ID) integerValue] > -1) {
+    if ([UserDefault(TENANT_ID) integerValue] > 0) {
         self.unbindView.hidden = NO;
         self.unbindHeight.constant = 50.0f;
     }