Steven 3 éve
szülő
commit
8f38bd4149
100 módosított fájl, 3137 hozzáadás és 2300 törlés
  1. 10 0
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 1 1
      KulexiuForStudent/KulexiuForStudent.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  3. BIN
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  4. 38 6
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  5. 2 1
      KulexiuForStudent/KulexiuForStudent/AppDelegate.m
  6. 2 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseViewController.h
  7. 3 3
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseViewController.m
  8. 1 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m
  9. 32 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.h
  10. 58 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m
  11. 1 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSOrderManager.h
  12. 21 1
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSOrderManager.m
  13. 64 68
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSRCIMDataSource.m
  14. 30 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSUploadManager.h
  15. 321 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSUploadManager.m
  16. 2 0
      KulexiuForStudent/KulexiuForStudent/Common/Define/PrefixHeader.pch
  17. 4 2
      KulexiuForStudent/KulexiuForStudent/Common/Tools/Custom/KSChoosePicker.h
  18. 18 3
      KulexiuForStudent/KulexiuForStudent/Common/Tools/Custom/KSChoosePicker.m
  19. 7 0
      KulexiuForStudent/KulexiuForStudent/Common/Tools/Custom/KSFullDatePicker.m
  20. 2 2
      KulexiuForStudent/KulexiuForStudent/Common/Tools/Custom/KeyChainTools.m
  21. 2 0
      KulexiuForStudent/KulexiuForStudent/Common/Tools/Extension/NSDate+Extension.h
  22. 10 0
      KulexiuForStudent/KulexiuForStudent/Common/Tools/Extension/NSDate+Extension.m
  23. 3 0
      KulexiuForStudent/KulexiuForStudent/Info.plist
  24. 24 0
      KulexiuForStudent/KulexiuForStudent/KulexiuForStudent.entitlements
  25. 11 15
      KulexiuForStudent/KulexiuForStudent/Module/Chat/Controller/KSChatConversationViewController.m
  26. 9 16
      KulexiuForStudent/KulexiuForStudent/Module/Chat/Group/Controller/KSChatComplainController.m
  27. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Chat/View/ChatAddressHeaderView.xib
  28. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Chat/View/GroupCreateView.m
  29. 32 15
      KulexiuForStudent/KulexiuForStudent/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m
  30. 2 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/Controller/CourseViewController.m
  31. 18 5
      KulexiuForStudent/KulexiuForStudent/Module/Home/Controller/HomeViewController.m
  32. 5 0
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeHotAlbumCell.xib
  33. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeLiveCouseCell.m
  34. 2 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/SubjectChooseViewController.h
  35. 10 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/SubjectChooseViewController.m
  36. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/FirstSettingBodyView.m
  37. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/LoginBodyView.m
  38. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/PasswordBodyView.m
  39. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Mall/Controller/ShopMallViewController.m
  40. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Mine/AddressList/View/AddressDetailBodyView.m
  41. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/AddressList/View/MyAddressListCell.m
  42. 14 15
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/Controller/HomeworkDetailViewController.m
  43. 47 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/Controller/MyCourseViewController.m
  44. 8 6
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/Model/LiveLessonModel.h
  45. 50 36
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/Model/LiveLessonModel.m
  46. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.h
  47. 35 3
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.m
  48. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLiveCourseCell.m
  49. 2 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyVideoCourseBodyView.h
  50. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyVideoCourseBodyView.m
  51. 15 15
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/FeedbackViewController.m
  52. 7 12
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/SettingViewController.m
  53. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/FeedbackBodyView.m
  54. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/ModifyBodyView.m
  55. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/PhoneChangeBodyView.m
  56. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/PhoneCheckBodyView.m
  57. 0 3
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/VeriCheckView.m
  58. 6 11
      KulexiuForStudent/KulexiuForStudent/Module/SealClass/Sections/NewWhiteboard/KSWhiteboardView.m
  59. 1 0
      KulexiuForStudent/Podfile
  60. 5 1
      KulexiuForStudent/Podfile.lock
  61. 5 1
      KulexiuForStudent/Pods/Manifest.lock
  62. 2016 1987
      KulexiuForStudent/Pods/Pods.xcodeproj/project.pbxproj
  63. 11 4
      KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  64. BIN
      KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_group_portrait.png
  65. BIN
      KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_group_portrait@2x.png
  66. BIN
      KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_group_portrait@3x.png
  67. BIN
      KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_portrait_msg.png
  68. BIN
      KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_portrait_msg@2x.png
  69. BIN
      KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_portrait_msg@3x.png
  70. 5 0
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests-acknowledgements.markdown
  71. 11 0
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests-acknowledgements.plist
  72. 2 2
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests.debug.xcconfig
  73. 2 2
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests.release.xcconfig
  74. 5 0
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent-acknowledgements.markdown
  75. 11 0
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent-acknowledgements.plist
  76. 2 2
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent.debug.xcconfig
  77. 2 2
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent.release.xcconfig
  78. 2 2
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudentTests/Pods-KulexiuForStudentTests.debug.xcconfig
  79. 2 2
      KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudentTests/Pods-KulexiuForStudentTests.release.xcconfig
  80. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/Assets.car
  81. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/ChatAddressHeaderView.nib
  82. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/Info.plist
  83. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/KulexiuForStudent
  84. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_group_portrait.png
  85. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_group_portrait@2x.png
  86. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_group_portrait@3x.png
  87. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_portrait_msg.png
  88. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_portrait_msg@2x.png
  89. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_portrait_msg@3x.png
  90. 76 21
      KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/_CodeSignature/CodeResources
  91. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/Pods_KulexiuForStudent.framework/Pods_KulexiuForStudent
  92. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/Pods_KulexiuForStudent.framework/_CodeSignature/CodeDirectory
  93. BIN
      KulexiuForStudent/build/Debug-iphonesimulator/Pods_KulexiuForStudent.framework/_CodeSignature/CodeRequirements-1
  94. 18 0
      KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/DerivedSources/Entitlements-Simulated.plist
  95. 1 0
      KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/InputFileList-7FA65C60616F879A71C69DE3-Pods-KulexiuForStudent-frameworks-Debug-input-files-6f44eee03c36c5950be11e25ec226c7b-resolved.xcfilelist
  96. BIN
      KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/KulexiuForStudent-project-headers.hmap
  97. 18 0
      KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/KulexiuForStudent.app-Simulated.xcent
  98. 1 0
      KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/Objects-normal/x86_64/ALCalendarCell.d
  99. 1 0
      KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/Objects-normal/x86_64/ALCalendarCollectionView.d
  100. 1 0
      KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/Objects-normal/x86_64/ALCalendarConfig.d

+ 10 - 0
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -437,6 +437,7 @@
 		BC40BA202812552300DEC0D1 /* KSHomeButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC40BA1D2812552200DEC0D1 /* KSHomeButton.xib */; };
 		BC40BA23281255F700DEC0D1 /* HomeCourseTipsView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC40BA22281255F700DEC0D1 /* HomeCourseTipsView.m */; };
 		BC40BA252812560100DEC0D1 /* HomeCourseTipsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC40BA242812560100DEC0D1 /* HomeCourseTipsView.xib */; };
+		BC48C3A92828FC7D00EE65C5 /* KSUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BC48C3A82828FC7D00EE65C5 /* KSUploadManager.m */; };
 		BC50171227FC0D5600F8BCBC /* SubjectChooseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC50171127FC0D5600F8BCBC /* SubjectChooseViewController.m */; };
 		BC50171527FC0D8300F8BCBC /* SubjectChooseBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC50171427FC0D8300F8BCBC /* SubjectChooseBodyView.m */; };
 		BC50171727FC0D8E00F8BCBC /* SubjectChooseBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC50171627FC0D8D00F8BCBC /* SubjectChooseBodyView.xib */; };
@@ -1419,6 +1420,9 @@
 		BC40BA21281255F700DEC0D1 /* HomeCourseTipsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeCourseTipsView.h; sourceTree = "<group>"; };
 		BC40BA22281255F700DEC0D1 /* HomeCourseTipsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeCourseTipsView.m; sourceTree = "<group>"; };
 		BC40BA242812560100DEC0D1 /* HomeCourseTipsView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCourseTipsView.xib; sourceTree = "<group>"; };
+		BC48C3A72828FC7D00EE65C5 /* KSUploadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSUploadManager.h; sourceTree = "<group>"; };
+		BC48C3A82828FC7D00EE65C5 /* KSUploadManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSUploadManager.m; sourceTree = "<group>"; };
+		BC48C3AB2829184C00EE65C5 /* KulexiuForStudent.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = KulexiuForStudent.entitlements; sourceTree = "<group>"; };
 		BC50171027FC0D5600F8BCBC /* SubjectChooseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SubjectChooseViewController.h; sourceTree = "<group>"; };
 		BC50171127FC0D5600F8BCBC /* SubjectChooseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SubjectChooseViewController.m; sourceTree = "<group>"; };
 		BC50171327FC0D8300F8BCBC /* SubjectChooseBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SubjectChooseBodyView.h; sourceTree = "<group>"; };
@@ -1967,6 +1971,7 @@
 		275E8AA727E18F8800DD3F6E /* KulexiuForStudent */ = {
 			isa = PBXGroup;
 			children = (
+				BC48C3AB2829184C00EE65C5 /* KulexiuForStudent.entitlements */,
 				275FA1F027E7356A00CFEA2E /* Module */,
 				2779336127E3249C0010E277 /* Common */,
 				275E8AA827E18F8800DD3F6E /* AppDelegate.h */,
@@ -3106,6 +3111,8 @@
 				275FA1C127E7351600CFEA2E /* WeakWebViewScriptMessageDelegate.m */,
 				275FA1D427E7351800CFEA2E /* KSNetworkingManager.h */,
 				275FA1AF27E7351400CFEA2E /* KSNetworkingManager.m */,
+				BC48C3A72828FC7D00EE65C5 /* KSUploadManager.h */,
+				BC48C3A82828FC7D00EE65C5 /* KSUploadManager.m */,
 			);
 			path = Base;
 			sourceTree = "<group>";
@@ -4649,6 +4656,7 @@
 				2723B62927F157D500E0B90B /* KSChatComplainController.m in Sources */,
 				2779351527E324A60010E277 /* NSArray+KSSafe.m in Sources */,
 				2723B61A27F157D500E0B90B /* KSSearchResultViewCell.m in Sources */,
+				BC48C3A92828FC7D00EE65C5 /* KSUploadManager.m in Sources */,
 				BC11927A280FB07F00A716F7 /* AccompanyArrangeCell.m in Sources */,
 				277935B827E324A90010E277 /* FSCalendar.m in Sources */,
 				BCB6356C27F6D2A300ACFDCF /* Whiteboard.m in Sources */,
@@ -5164,6 +5172,7 @@
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_ENTITLEMENTS = KulexiuForStudent/KulexiuForStudent.entitlements;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1.0.0;
 				DEVELOPMENT_TEAM = B2AP53HHTU;
@@ -5204,6 +5213,7 @@
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_ENTITLEMENTS = KulexiuForStudent/KulexiuForStudent.entitlements;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1.0.0;
 				DEVELOPMENT_TEAM = B2AP53HHTU;

+ 1 - 1
KulexiuForStudent/KulexiuForStudent.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>KulexiuForStudent.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>31</integer>
+			<integer>32</integer>
 		</dict>
 	</dict>
 </dict>

BIN
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate


+ 38 - 6
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -30,8 +30,8 @@
             filePath = "KulexiuForStudent/Module/Mine/Setting/Controller/SettingViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "254"
-            endingLineNumber = "254"
+            startingLineNumber = "249"
+            endingLineNumber = "249"
             landmarkName = "-modifyUserMessage:gender:birthday:"
             landmarkType = "7">
          </BreakpointContent>
@@ -62,8 +62,8 @@
             filePath = "KulexiuForStudent/Module/Home/Controller/HomeViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "931"
-            endingLineNumber = "931"
+            startingLineNumber = "935"
+            endingLineNumber = "935"
             landmarkName = "-homeCourseChooseAction:"
             landmarkType = "7">
          </BreakpointContent>
@@ -78,8 +78,8 @@
             filePath = "KulexiuForStudent/Common/Base/KSOrderManager.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "22"
-            endingLineNumber = "22"
+            startingLineNumber = "21"
+            endingLineNumber = "21"
             landmarkName = "+dealWithAliOrder:"
             landmarkType = "7">
          </BreakpointContent>
@@ -116,5 +116,37 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "99CF7F13-1490-414C-B049-80DB54A9A42D"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "158"
+            endingLineNumber = "158"
+            landmarkName = "-requestData"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "91AD6DD1-5C43-4402-97C8-203CA74E7735"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForStudent/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "70"
+            endingLineNumber = "70"
+            landmarkName = "-requestRoomConfig"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 2 - 1
KulexiuForStudent/KulexiuForStudent/AppDelegate.m

@@ -27,6 +27,7 @@
 #import "KSIMService.h"
 #import "RCConnectionManager.h"
 #import "KSRCIMDataSource.h"
+#import "WXApi.h"
 
 @interface RCNaviDataInfo : NSObject
 
@@ -42,7 +43,7 @@
 
 @end
 
-@interface AppDelegate ()<UITabBarControllerDelegate,RCIMReceiveMessageDelegate>
+@interface AppDelegate ()<UITabBarControllerDelegate,RCIMReceiveMessageDelegate,WXApiDelegate>
 
 @property (nonatomic, assign) BOOL isNeedUpdate;
 

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseViewController.h

@@ -32,6 +32,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, strong) NSMutableArray *dataArray;
 
+@property (nonatomic, assign) BOOL hideBackButton;
+
 - (void)addfeedBackGenertor;//添加震动反馈
 
 // 打开设置页面

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseViewController.m

@@ -54,10 +54,10 @@
     }
     
     if (self.navigationController && self != self.navigationController.viewControllers[0]) {
-        
-        [self leftbutton];
+        if (_hideBackButton == NO) {
+            [self leftbutton];
+        }
     }
-    
 }
 
 - (BOOL)networkAvaiable {

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m

@@ -410,6 +410,7 @@
     }
     else if ([[parm stringValueForKey:@"api"] isEqualToString:@"paymentOrder"]) {
         NSString *infoMessage = [[parm dictionaryValueForKey:@"content"] stringValueForKey:@"payInfo"];
+//        NSString *infoMessage = @"alipays://platformapi/startapp?appId=2021003127687472&page=pages/index/index&query=orderId=22050918273800001&token=266ca4ee-2742-47c2-ace9-8174fc4c4775";
         [KSOrderManager dealWithAliOrder:infoMessage];
     }
     else if ([[parm stringValueForKey:@"api"] isEqualToString:@"joinChatGroup"]) {

+ 32 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.h

@@ -28,6 +28,11 @@ NS_ASSUME_NONNULL_BEGIN
 // api-admin/appVersionInfo/queryByPlatform
 + (void)appVersionInfoRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+#pragma mark ----- 获取上传签名
+// 获取上传签名
+// /api-student/getUploadSign
++ (void)getUploadSignRequest:(NSString *)post fileName:(NSString *)fileName keyName:(NSString *)keyName success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
 #pragma mark ---- 图片上传
 /**
  图片上传
@@ -38,6 +43,7 @@ NS_ASSUME_NONNULL_BEGIN
  @param faliure 失败
  */
 + (void)multiImageUpload:(NSString *)post imgDataArray:(NSArray *)pics success:(void(^)(NSArray *dics))success faliure:(void(^)(NSError *error))faliure;
+
 #pragma mark ----- 视频文件上传
 /**
  视频文件上传
@@ -240,6 +246,26 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param success 成功
 /// @param faliure 失败
 + (void)studentSetSubject:(NSString *)get subjectIds:(NSString *)subjectIds success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
+// /api-student/sysSuggestion/add
+/**
+ 意见反馈
+ 
+ @param post post
+ @param content 内容
+ @param mobileNo 手机号
+ @param success 成功
+ @param faliure 失败
+ */
++ (void)suggestionAddRequest:(NSString *)post content:(NSString *)content mobileNo:(NSString *)mobileNo success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
+// /api-student/courseSchedule/selectRoomConfig
+
+/// 获取网络教室进入房间参数
+/// @param get get
+/// @param success 成功
+/// @param faliure 失败
++ (void)selectRoomConfigRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 #pragma mark -------- 群组服务
 // /api-student/imUserFriend/queryAll
 
@@ -367,6 +393,12 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)queryCourseForDay:(NSString *)post classDate:(NSString *)classDate success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+// /api-student/student/querySubjectItem
+/// 获取声部搜索下拉框
+/// @param post post
+/// @param success 成功
+/// @param faliure 失败
++ (void)querySubjectItemRequest:(NSString *)post success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 #pragma mark ----- 课后作业
 // /api-student/homework/list
 

+ 58 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m

@@ -306,6 +306,21 @@
     [self request:get andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+#pragma mark ----- 获取上传签名
+// 获取上传签名
+// /api-student/getUploadSign
++ (void)getUploadSignRequest:(NSString *)post fileName:(NSString *)fileName keyName:(NSString *)keyName success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/getUploadSign"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:fileName forKey:@"fileName"];
+    [parm setValue:@{@"acl":@"public-read",
+                    @"key" :keyName
+    } forKey:@"postData"];
+    [parm setValue:@[] forKey:@"unknowValueField"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
 #pragma mark ---- 图片上传
 /**
  图片上传
@@ -548,6 +563,37 @@
     [self request:get andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+// /api-student/sysSuggestion/add
+/**
+ 意见反馈
+ 
+ @param post post
+ @param content 内容
+ @param mobileNo 手机号
+ @param success 成功
+ @param faliure 失败
+ */
++ (void)suggestionAddRequest:(NSString *)post content:(NSString *)content mobileNo:(NSString *)mobileNo success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:@"iOS" forKey:@"clientType"];
+    [parm setValue:content forKey:@"content"];
+    [parm setValue:mobileNo forKey:@"mobileNo"];
+    [parm setValue:@"APP" forKey:@"type"];
+    NSString *url = [NSString stringWithFormat:@"%@%@",hostURL, @"/api-student/sysSuggestion/add"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
+// /api-student/courseSchedule/selectRoomConfig
+
+/// 获取网络教室进入房间参数
+/// @param get get
+/// @param success 成功
+/// @param faliure 失败
++ (void)selectRoomConfigRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    NSString *url = [NSString stringWithFormat:@"%@%@",hostURL, @"/api-student/courseSchedule/selectRoomConfig"];
+    [self request:get andWithUrl:url and:nil success:success faliure:faliure];
+}
 #pragma mark ---- 验证码服务
 
 // /api-student/code/sendSms
@@ -830,6 +876,18 @@
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+// /api-student/student/querySubjectItem
+/// 获取声部搜索下拉框
+/// @param post post
+/// @param success 成功
+/// @param faliure 失败
++ (void)querySubjectItemRequest:(NSString *)post success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-student/student/querySubjectItem"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
 #pragma mark ------ 陪练课评价
 // /api-student/courseSchedule/selectReplied
 

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSOrderManager.h

@@ -13,6 +13,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 + (void)dealWithAliOrder:(NSString *)infoMessage;
 
+//+ (void)dealWithAliProgram:(NSString *)infoMessage;
 
 @end
 

+ 21 - 1
KulexiuForStudent/KulexiuForStudent/Common/Base/KSOrderManager.m

@@ -12,7 +12,27 @@
 + (void)dealWithAliOrder:(NSString *)infoMessage {
     NSURL *url = [NSURL URLWithString:infoMessage];
     if ([[UIApplication sharedApplication] canOpenURL:url]) {
-//        [[UIApplication sharedApplication] openURL:url];
+        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
+            if (success) { // 跳转成功
+                NSLog(@"success");
+                [[NSNotificationCenter defaultCenter] postNotificationName:DEALCALLBACKNOTICIFATION object:@"success"];
+            }
+            else { // 未跳转成功
+                NSLog(@"---cancel---");
+                [[NSNotificationCenter defaultCenter] postNotificationName:DEALCALLBACKNOTICIFATION object:@"cancel"];
+            }
+        }];
+    }
+    else {
+        // 未安装
+        [[NSNotificationCenter defaultCenter] postNotificationName:DEALCALLBACKNOTICIFATION object:@"fail"];
+        NSLog(@"无法打开该链接---- %@----", infoMessage);
+    }
+}
+
++ (void)dealWithAliProgram:(NSString *)infoMessage {
+    NSURL *url = [NSURL URLWithString:infoMessage];
+    if ([[UIApplication sharedApplication] canOpenURL:url]) {
         [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
             if (success) { // 跳转成功
                 NSLog(@"success");

+ 64 - 68
KulexiuForStudent/KulexiuForStudent/Common/Base/KSRCIMDataSource.m

@@ -27,23 +27,20 @@
     if ([NSString isEmptyString:groupId]) {
         completion(nil);
     }
-    
-//    [KSRequestManager queryGroupDetailRequest:KS_GET imGroupId:groupId success:^(NSDictionary * _Nonnull dic) {
-//        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-//            NSDictionary *result = [dic dictionaryValueForKey:@"data"];
-//            RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:[result stringValueForKey:@"name"] portraitUri:[result stringValueForKey:@"img"]];
-//            completion(groupInfo);
-//        }
-//        else {
-//            RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:@"" portraitUri:@""];
-//            completion(groupInfo);
-//
-//        }
-//    } faliure:^(NSError * _Nonnull error) {
-//        RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:@"" portraitUri:@""];
-//        completion(groupInfo);
-//
-//    }];
+    [KSNetworkingManager queryGroupDetail:KS_POST groupId:groupId success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSDictionary *result = [dic dictionaryValueForKey:@"data"];
+            RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:[result stringValueForKey:@"name"] portraitUri:[result stringValueForKey:@"img"]];
+            completion(groupInfo);
+        }
+        else {
+            RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:@"" portraitUri:@""];
+            completion(groupInfo);
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:@"" portraitUri:@""];
+        completion(groupInfo);
+    }];
 }
 
 // 获取群组中所有的用户uid
@@ -52,21 +49,21 @@
         resultBlock(nil);
         return;
     }
-//    [KSRequestManager queryGroupMemberListRequest:KS_GET imGroupId:groupId success:^(NSDictionary * _Nonnull dic) {
-//        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-//            NSArray *sourceArray = [dic arrayValueForKey:@"data"];
-//            NSMutableArray *ret = [[NSMutableArray alloc] init];
-//            for (NSDictionary *parm in sourceArray) {
-//                [ret addObject:[parm stringValueForKey:@"userId"]];
-//            }
-//            resultBlock(ret);
-//        }
-//        else {
-//            resultBlock(nil);
-//        }
-//    } faliure:^(NSError * _Nonnull error) {
-//        resultBlock(nil);
-//    }];
+    [KSNetworkingManager imGroupMemberAllRequest:KS_POST groupId:groupId success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSArray *sourceArray = [dic arrayValueForKey:@"data"];
+            NSMutableArray *ret = [[NSMutableArray alloc] init];
+            for (NSDictionary *parm in sourceArray) {
+                [ret addObject:[parm stringValueForKey:@"userId"]];
+            }
+            resultBlock(ret);
+        }
+        else {
+            resultBlock(nil);
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        resultBlock(nil);
+    }];
     
 }
 
@@ -81,21 +78,21 @@
         return;
     }
     if (![userId isEqualToString:[RCIM sharedRCIM].currentUserInfo.userId]) {
-//        [KSRequestManager queryFriendDetailRequest:KS_GET userId:userId success:^(NSDictionary * _Nonnull dic) {
-//            if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-//                NSDictionary *result = [dic dictionaryValueForKey:@"data"];
-//                NSDictionary *userDic = [result dictionaryValueForKey:@"friend"];
-//                RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:userId name:[result stringValueForKey:@"friendNickname"] portrait:[userDic stringValueForKey:@"avatar"]];
-//                completion(user);
-//            }
-//            else {
-//                RCUserInfo *user = [RCUserInfo new];
-//                completion(user);
-//            }
-//        } faliure:^(NSError * _Nonnull error) {
-//            RCUserInfo *user = [RCUserInfo new];
-//            completion(user);
-//        }];
+        [KSNetworkingManager imUserFriendQueryDetail:KS_POST userId:userId success:^(NSDictionary * _Nonnull dic) {
+            if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+                NSDictionary *result = [dic dictionaryValueForKey:@"data"];
+                NSDictionary *userDic = [result dictionaryValueForKey:@"friend"];
+                RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:userId name:[result stringValueForKey:@"friendNickname"] portrait:[userDic stringValueForKey:@"avatar"]];
+                completion(user);
+            }
+            else {
+                RCUserInfo *user = [RCUserInfo new];
+                completion(user);
+            }
+        } faliure:^(NSError * _Nonnull error) {
+            RCUserInfo *user = [RCUserInfo new];
+            completion(user);
+        }];
     }
     else {
         RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:UserDefault(UIDKey) name:UserDefault(NicknameKey) portrait:UserDefault(AvatarUrlKey)];
@@ -113,27 +110,26 @@
         completion(user);
         return;
     }
-//    [KSRequestManager queryGroupMemberDetailRequest:KS_GET imGroupId:groupId userId:userId success:^(NSDictionary * _Nonnull dic) {
-//        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-//            NSDictionary *result = [dic dictionaryValueForKey:@"data"];
-//            NSString *name = [result stringValueForKey:@"nickname"];
-//            NSString *title = [result stringValueForKey:@"roleType"];
-//            if (![NSString isEmptyString:title]) {
-//                name = [NSString stringWithFormat:@"%@(%@)", name, title];
-//            }
-//            NSDictionary *userDic = [result dictionaryValueForKey:@"user"];
-//            RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:userId name:name portrait:[userDic stringValueForKey:@"avatar"]];
-//            completion(user);
-//        }
-//        else {
-//            RCUserInfo *user = [RCUserInfo new];
-//            completion(user);
-//        }
-//    } faliure:^(NSError * _Nonnull error) {
-//        RCUserInfo *user = [RCUserInfo new];
-//        completion(user);
-//    }];
-    
+    [KSNetworkingManager imGroupMemberQueryUser:KS_POST groupId:groupId userId:userId success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSDictionary *result = [dic dictionaryValueForKey:@"data"];
+            NSString *name = [result stringValueForKey:@"nickname"];
+            NSString *title = [result stringValueForKey:@"roleType"];
+            if (![NSString isEmptyString:title]) {
+                name = [NSString stringWithFormat:@"%@(%@)", name, title];
+            }
+            NSDictionary *userDic = [result dictionaryValueForKey:@"user"];
+            RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:userId name:name portrait:[userDic stringValueForKey:@"avatar"]];
+            completion(user);
+        }
+        else {
+            RCUserInfo *user = [RCUserInfo new];
+            completion(user);
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        RCUserInfo *user = [RCUserInfo new];
+        completion(user);
+    }];
 }
 
 @end

+ 30 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSUploadManager.h

@@ -0,0 +1,30 @@
+//
+//  KSUploadManager.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/8.
+//
+
+#import <Foundation/Foundation.h>
+
+typedef void(^KSUploadSuccess)(NSMutableArray * _Nonnull fileUrlArray);
+typedef void(^KSUploadFailer)(NSError * _Nullable error, NSString * _Nullable descMessaeg);
+typedef void(^KSUploadProgress)(int64_t bytesWritten,int64_t totalBytes);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KSUploadManager : NSObject
+
++ (instancetype)shareInstance;
+
+- (void)uploadImage:(NSData *)imageData fileName:(NSString *)fileName successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure;
+
+- (void)mutilUploadImage:(NSMutableArray *)fileDataArray fileName:(NSString *)fileName successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure;
+
+- (void)videoUpload:(NSData *)fileData fileName:(NSString *)fileName fileSuffix:(NSString *)fileSuffix progress:(KSUploadProgress)uploadProgress successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure;
+
+- (void)uploadFile:(NSData *)fileData fileName:(NSString *)fileName fileSuffix:(NSString *)fileSuffix successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 321 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSUploadManager.m

@@ -0,0 +1,321 @@
+//
+//  KSUploadManager.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/8.
+//
+
+#import "KSUploadManager.h"
+#import <KS3YunSDK.h>
+#import "NSDate+Extension.h"
+
+#define BUCKET_DOMAIN (@"ks3-cn-beijing.ksyuncs.com/daya")
+@interface KSUploadManager ()<KingSoftServiceRequestDelegate>
+
+@property (nonatomic, copy) KSUploadSuccess successCallback;
+
+@property (nonatomic, copy) KSUploadFailer faliureCallback;
+
+@property (nonatomic, copy) KSUploadProgress uploadProgress;
+
+@property (nonatomic, strong) NSString *videoLinkUrl;
+
+@property (assign, nonatomic) long long fileSize;
+
+@end
+
+@implementation KSUploadManager
++ (instancetype)shareInstance {
+    static KSUploadManager *manager = nil;
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        manager = [[KSUploadManager alloc] init];
+        [manager configCilentBucket];
+    });
+    return manager;
+}
+
+- (void)configCilentBucket {
+    [[KS3Client initialize] setBucketDomain:BUCKET_DOMAIN];
+}
+
+- (void)uploadImage:(NSData *)imageData fileName:(NSString *)fileName successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure {
+    if (success) {
+        self.successCallback = success;
+    }
+    if (faliure) {
+        self.faliureCallback = faliure;
+    }
+    NSString *uploadFileName = [NSString stringWithFormat:@"%@%@%@",[NSDate getCurrentTimestamp], fileName,[UIImage typeForImageData:imageData]];
+    NSString *keyValue = uploadFileName;
+    [KSNetworkingManager getUploadSignRequest:KS_POST fileName:uploadFileName keyName:keyValue success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            KS3AccessControlList *acl = [[KS3AccessControlList alloc] init];
+            [acl setContronAccess:KingSoftYun_Permission_Public_Read];
+            
+            KS3PutObjectRequest *putObjRequest = [[KS3PutObjectRequest alloc] initWithName:@"" withAcl:acl grantAcl:nil];
+            // token
+            [putObjRequest setStrKS3Token:[dic stringValueForKey:@"signature"]];
+            putObjRequest.filename = uploadFileName;
+            putObjRequest.data = imageData;
+            [putObjRequest setCompleteRequest];
+             
+            KS3PutObjectResponse *response = [[KS3Client initialize] putObject:putObjRequest];
+            if (response.httpStatusCode == 200) {
+                if (response.error == nil) {
+                    if (self.successCallback) {
+                        NSMutableArray *fileUrlArray = [NSMutableArray array];
+                        [fileUrlArray addObject:[NSString stringWithFormat:@"https://%@/%@",BUCKET_DOMAIN,uploadFileName]];
+                        self.successCallback(fileUrlArray);
+                    }
+                }
+                else {
+                    if (self.faliureCallback) {
+                        self.faliureCallback(response.error, @"上传文件失败");
+                    }
+                }
+            }
+            else {
+                NSLog(@"Set object acl error: %@", response.error.description);
+                if (self.faliureCallback) {
+                    self.faliureCallback(response.error, @"上传文件失败");
+                }
+            }
+        }
+        else {
+            if (self.faliureCallback) {
+                self.faliureCallback(nil, MESSAGEKEY);
+            }
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        if (self.faliureCallback) {
+            self.faliureCallback(error, @"获取文件签名失败");
+        }
+    }];
+}
+
+- (void)mutilUploadImage:(NSMutableArray *)fileDataArray fileName:(NSString *)fileName successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure {
+    if (success) {
+        self.successCallback = success;
+    }
+    if (faliure) {
+        self.faliureCallback = faliure;
+    }
+    NSMutableArray *fileNameArray = [NSMutableArray array];
+    for (NSInteger i = 0 ; i < fileDataArray.count; i++) {
+        NSData *fileData = fileDataArray[i];
+        NSString *uploadFileName = [NSString stringWithFormat:@"%@%zd%@%@",[NSDate getCurrentTimestamp], i,fileName,[UIImage typeForImageData:fileData]];
+        [fileNameArray addObject:uploadFileName];
+    }
+    
+    __block NSMutableArray *sessions = [NSMutableArray array];
+    __block NSMutableArray *responses = [NSMutableArray array];
+    __block NSMutableArray *failResponse = [NSMutableArray array];
+    
+    dispatch_group_t uploadGroup = dispatch_group_create();
+    NSInteger count = fileDataArray.count;
+    for (int i = 0; i < count; i++) {
+        
+        dispatch_group_enter(uploadGroup);
+        NSString *uploadFileName = fileNameArray[i];
+        NSString *keyName = fileNameArray[i];
+        NSData *fileData = fileDataArray[i];
+        [KSNetworkingManager getUploadSignRequest:KS_POST fileName:uploadFileName keyName:keyName success:^(NSDictionary * _Nonnull dic) {
+            if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+                KS3AccessControlList *acl = [[KS3AccessControlList alloc] init];
+                [acl setContronAccess:KingSoftYun_Permission_Public_Read];
+                
+                KS3PutObjectRequest *putObjRequest = [[KS3PutObjectRequest alloc] initWithName:@"" withAcl:acl grantAcl:nil];
+                if (putObjRequest) {
+                    [sessions addObject:putObjRequest];
+                }
+                // token
+                [putObjRequest setStrKS3Token:[dic stringValueForKey:@"signature"]];
+                putObjRequest.filename = uploadFileName;
+                putObjRequest.data = fileData;
+                [putObjRequest setCompleteRequest];
+                KS3PutObjectResponse *response = [[KS3Client initialize] putObject:putObjRequest];
+                if (response.httpStatusCode == 200) {
+                    if (response.error == nil) {
+                        [responses addObject:[NSString stringWithFormat:@"https://%@/%@",BUCKET_DOMAIN,uploadFileName]];
+                    }
+                    else {
+                        NSString *desc = [NSString stringWithFormat:@"第%d次上传文件失败",i];
+                        [failResponse addObject:desc];
+                    }
+                    [sessions removeObject:putObjRequest];
+                }
+                else {
+                    NSLog(@"Set object acl error: %@", response.error.description);
+                    NSString *desc = [NSString stringWithFormat:@"第%d次上传文件失败",i];
+                    [failResponse addObject:desc];
+                    [sessions removeObject:putObjRequest];
+                }
+            }
+            else {
+                [failResponse addObject:MESSAGEKEY];
+            }
+            dispatch_group_leave(uploadGroup);
+        } faliure:^(NSError * _Nonnull error) {
+            NSError *Error = [NSError errorWithDomain:@"getUploadSign" code:-999 userInfo:@{NSLocalizedDescriptionKey:[NSString stringWithFormat:@"第%d次获取签名失败",i]}];
+            [failResponse addObject:Error];
+            dispatch_group_leave(uploadGroup);
+        }];
+    }
+    
+    dispatch_group_notify(uploadGroup, dispatch_get_main_queue(), ^{
+        if (responses.count > 0) {
+            if (self.successCallback) {
+                self.successCallback([responses copy]);
+            }
+        }
+        if (failResponse.count > 0) {
+            if (self.faliureCallback) {
+                self.faliureCallback(nil,@"上传文件失败");
+            }
+        }
+        
+    });
+    
+}
+
+- (void)videoUpload:(NSData *)fileData fileName:(NSString *)fileName fileSuffix:(NSString *)fileSuffix progress:(KSUploadProgress)uploadProgress successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure {
+    if (success) {
+        self.successCallback = success;
+    }
+    if (faliure) {
+        self.faliureCallback = faliure;
+    }
+    if (uploadProgress) {
+        self.uploadProgress = uploadProgress;
+    }
+    NSString *uploadFileName = [NSString stringWithFormat:@"%@%@%@",[NSDate getCurrentTimestamp], fileName,fileSuffix];
+    NSString *keyValue = uploadFileName;
+    self.videoLinkUrl = [NSString stringWithFormat:@"https://%@/%@",BUCKET_DOMAIN,uploadFileName];
+    [KSNetworkingManager getUploadSignRequest:KS_POST fileName:uploadFileName keyName:keyValue success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            KS3AccessControlList *acl = [[KS3AccessControlList alloc] init];
+            [acl setContronAccess:KingSoftYun_Permission_Public_Read];
+            
+            KS3PutObjectRequest *putObjRequest = [[KS3PutObjectRequest alloc] initWithName:@"" withAcl:acl grantAcl:nil];
+            // token
+            [putObjRequest setStrKS3Token:[dic stringValueForKey:@"signature"]];
+            putObjRequest.filename = uploadFileName;
+            putObjRequest.data = fileData;
+            _fileSize = putObjRequest.data.length;
+            putObjRequest.delegate = self;
+            [putObjRequest setCompleteRequest];
+            self.videoLinkUrl = [NSString stringWithFormat:@"https://%@/%@",BUCKET_DOMAIN,uploadFileName];
+            KS3PutObjectResponse *response = [[KS3Client initialize] putObject:putObjRequest];
+            if (putObjRequest.delegate == nil) {
+                NSLog(@"%@",[[NSString alloc] initWithData:response.body encoding:NSUTF8StringEncoding]);
+                if (response.httpStatusCode == 200) {
+                    NSLog(@"Put object success");
+                }
+                else {
+                    NSLog(@"Put object failed");
+                }
+            }
+        }
+        else {
+            if (self.faliureCallback) {
+                self.faliureCallback(nil, MESSAGEKEY);
+            }
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        if (self.faliureCallback) {
+            self.faliureCallback(error, @"获取文件签名失败");
+        }
+    }];
+}
+
+- (void)uploadFile:(NSData *)fileData fileName:(NSString *)fileName fileSuffix:(NSString *)fileSuffix successCallback:(KSUploadSuccess)success faliure:(KSUploadFailer)faliure {
+    if (success) {
+        self.successCallback = success;
+    }
+    if (faliure) {
+        self.faliureCallback = faliure;
+    }
+    NSString *uploadFileName = [NSString stringWithFormat:@"%@%@%@",[NSDate getCurrentTimestamp], fileName,fileSuffix];
+    NSString *keyValue = uploadFileName;
+    [KSNetworkingManager getUploadSignRequest:KS_POST fileName:uploadFileName keyName:keyValue success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            KS3AccessControlList *acl = [[KS3AccessControlList alloc] init];
+            [acl setContronAccess:KingSoftYun_Permission_Public_Read];
+            
+            KS3PutObjectRequest *putObjRequest = [[KS3PutObjectRequest alloc] initWithName:@"" withAcl:acl grantAcl:nil];
+            // token
+            [putObjRequest setStrKS3Token:[dic stringValueForKey:@"signature"]];
+            putObjRequest.filename = uploadFileName;
+            putObjRequest.data = fileData;
+            [putObjRequest setCompleteRequest];
+            
+            KS3PutObjectResponse *response = [[KS3Client initialize] putObject:putObjRequest];
+            if (response.httpStatusCode == 200) {
+                if (response.error == nil) {
+                    if (self.successCallback) {
+                        NSMutableArray *fileUrlArray = [NSMutableArray array];
+                        [fileUrlArray addObject:[NSString stringWithFormat:@"https://%@/%@",BUCKET_DOMAIN,uploadFileName]];
+                        self.successCallback(fileUrlArray);
+                    }
+                }
+                else {
+                    if (self.faliureCallback) {
+                        self.faliureCallback(response.error, @"上传文件失败");
+                    }
+                }
+            }
+            else {
+                NSLog(@"Set object acl error: %@", response.error.description);
+                if (self.faliureCallback) {
+                    self.faliureCallback(response.error, @"上传文件失败");
+                }
+            }
+        }
+        else {
+            if (self.faliureCallback) {
+                self.faliureCallback(nil, MESSAGEKEY);
+            }
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        if (self.faliureCallback) {
+            self.faliureCallback(error, @"获取文件签名失败");
+        }
+    }];
+}
+
+- (void)request:(KS3ServiceRequest *)request didSendData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten totalBytesExpectedToWrite:(long long)totalBytesExpectedToWrite {
+    if ([request isKindOfClass:[KS3PutObjectRequest class]]) {
+        
+        long long alreadyTotalWriten = totalBytesWritten;
+        double progress = alreadyTotalWriten * 1.0  / _fileSize;
+        NSLog(@"upload progress: %f", progress);
+        if (self.uploadProgress) {
+            self.uploadProgress(bytesWritten, _fileSize);
+        }
+    }
+}
+- (void)request:(KS3Request *)request didReceiveResponse:(NSURLResponse *)response {
+    NSInteger statusCode = ((NSHTTPURLResponse*) response).statusCode;
+    if ( (statusCode>= 200 && statusCode <300) || statusCode == 304) {
+        NSLog(@"Put object success");
+        NSMutableArray *fileUrlArray = [NSMutableArray array];
+        [fileUrlArray addObject:self.videoLinkUrl];
+        self.successCallback(fileUrlArray);
+    }
+    else {
+        NSLog(@"Put object failed");
+        if (self.faliureCallback) {
+            self.faliureCallback(nil, @"上传文件失败");
+        }
+    }
+    
+}
+
+- (void)request:(KS3ServiceRequest *)request didFailWithError:(NSError *)error {
+    if (self.faliureCallback) {
+        self.faliureCallback(nil, @"上传文件失败");
+    }
+}
+
+@end

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Common/Define/PrefixHeader.pch

@@ -31,6 +31,8 @@
 #import "KSGifRefreshHeader.h"
 #import "KSGifRefreshFooter.h"
 
+#import "KSUploadManager.h"
+
 #import "UIView+SubViewExtension.h"
 #import "NSObject+KSDateFormatter.h"
 

+ 4 - 2
KulexiuForStudent/KulexiuForStudent/Common/Tools/Custom/KSChoosePicker.h

@@ -8,15 +8,17 @@
 
 #import <UIKit/UIKit.h>
 
-typedef void(^PickerChooseCallback)(NSString * _Nonnull returnValue, NSInteger chooseIndex);
 
+typedef void(^PickerChooseCallback)(NSString * _Nonnull returnValue, NSInteger chooseIndex);
+typedef void(^PickerCancelCallback)(void);
 NS_ASSUME_NONNULL_BEGIN
 
 @interface KSChoosePicker : UIView
 
-- (instancetype)initWithTitle:(NSString * __nullable)title sourceData:(NSArray *)sourceData chooseReturnWithBlock:(PickerChooseCallback)callback;
+- (instancetype)initWithTitle:(NSString * __nullable)title sourceData:(NSArray *)sourceData chooseReturnWithBlock:(PickerChooseCallback)callback cancel:(PickerCancelCallback)cancelCallback;
 
 - (void)showPicker;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 18 - 3
KulexiuForStudent/KulexiuForStudent/Common/Tools/Custom/KSChoosePicker.m

@@ -17,18 +17,21 @@
 @property (nonatomic, strong) UIPickerView *picker;   // 选择器
 
 @property (nonatomic, copy) PickerChooseCallback callback;
-
+@property (nonatomic, copy) PickerCancelCallback cancelCallback;
 @property (nonatomic, assign) NSInteger chooseIndex;
 
 @end
 
 @implementation KSChoosePicker
 
-- (instancetype)initWithTitle:(NSString * __nullable)title sourceData:(NSArray *)sourceData  chooseReturnWithBlock:(PickerChooseCallback)callback {
+- (instancetype)initWithTitle:(NSString * __nullable)title sourceData:(NSArray *)sourceData chooseReturnWithBlock:(PickerChooseCallback)callback cancel:(PickerCancelCallback)cancelCallback {
     if (self = [super init]) {
         if (callback) {
             self.callback = callback;
         }
+        if (cancelCallback) {
+            self.cancelCallback = cancelCallback;
+        }
         self.sourceData = sourceData;
         self.frame = CGRectMake(0, 0, kScreen_Width, kScreen_Height);
         self.backView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreen_Width, kScreen_Height)];
@@ -118,6 +121,9 @@
 }
 
 - (void)cancleButtonAction:(UIButton *)sender {
+    if (self.cancelCallback) {
+        self.cancelCallback();
+    }
     [UIView animateWithDuration:0.3f animations:^{
         self.displayView.frame = CGRectMake(0, kScreen_Height, kScreen_Width, 255);
     } completion:^(BOOL finished) {
@@ -138,7 +144,9 @@
 }
 
 - (void)tapAction:(UITapGestureRecognizer *)gesture {
-    
+    if (self.cancelCallback) {
+        self.cancelCallback();
+    }
     [UIView animateWithDuration:0.3f animations:^{
         self.displayView.frame = CGRectMake(0, kScreen_Height, kScreen_Width, 255);
     } completion:^(BOOL finished) {
@@ -146,6 +154,13 @@
     }];
 }
 
+- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
+    if ([touch.view isDescendantOfView:self.displayView]) {
+        return NO;
+    }
+    return YES;
+}
+
 - (void)showPicker {
     UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
     [window addSubview:self];

+ 7 - 0
KulexiuForStudent/KulexiuForStudent/Common/Tools/Custom/KSFullDatePicker.m

@@ -451,6 +451,13 @@ typedef NS_ENUM(NSInteger, PickViewTag) {
     }
 }
 
+- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
+    if ([touch.view isDescendantOfView:self.timeView]) {
+        return NO;
+    }
+    return YES;
+}
+
 
 - (void)show
 {

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Common/Tools/Custom/KeyChainTools.m

@@ -9,14 +9,14 @@
 #import "KeyChainTools.h"
 #import <Security/Security.h>
 
-NSString *const KEY_ASSESSGROUP = @"2K89M44X82.GuanYueMi";
+NSString *const KEY_ASSESSGROUP = @"2K89M44X82.Colexiu";
 
 @implementation KeyChainTools
 
 + (NSString *)getUUID {
 
     //定义存入keychain中的账号 也就是一个标识 表示是某个app存储的内容   bundle id就好
-    NSString * const KEY_UUID = @"com.DayaMusic.TeachersDaya.UUID";
+    NSString * const KEY_UUID = @"com.Colexiu.Kulexiu.UUID";
 
     // 测试用 清除keychain中的内容
 

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Common/Tools/Extension/NSDate+Extension.h

@@ -233,4 +233,6 @@
 + (NSString *)ymdHmsFormat;
 + (NSString *)yMFormat;
 
+// get current timestamp sice 1970
++ (NSString *)getCurrentTimestamp;
 @end

+ 10 - 0
KulexiuForStudent/KulexiuForStudent/Common/Tools/Extension/NSDate+Extension.m

@@ -695,4 +695,14 @@
                                       toDate:fromDate
                                      options:0];
 }
+
+// get current timestamp sice 1970
++ (NSString *)getCurrentTimestamp {
+    // 以下这个结果是10位数,interval得出的数会有6位小数,应该是精确到微秒
+    NSTimeInterval interval = [[NSDate date] timeIntervalSince1970] *1000;
+    NSInteger time = interval;
+    NSString *timestamp = [NSString stringWithFormat:@"%zd",time];
+    return timestamp;
+}
+
 @end

+ 3 - 0
KulexiuForStudent/KulexiuForStudent/Info.plist

@@ -12,10 +12,13 @@
 				<string>ColexiuStudent</string>
 			</array>
 		</dict>
+		<dict/>
 	</array>
 	<key>LSApplicationQueriesSchemes</key>
 	<array>
 		<string>alipays</string>
+		<string>weixin</string>
+		<string>weixinULAPI</string>
 	</array>
 	<key>NSAppTransportSecurity</key>
 	<dict>

+ 24 - 0
KulexiuForStudent/KulexiuForStudent/KulexiuForStudent.entitlements

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>com.apple.developer.associated-domains</key>
+	<array/>
+	<key>com.apple.developer.icloud-container-identifiers</key>
+	<array>
+		<string>iCloud.com.Colexiu.KulexiuForTeacher</string>
+	</array>
+	<key>com.apple.developer.icloud-services</key>
+	<array>
+		<string>CloudDocuments</string>
+	</array>
+	<key>com.apple.developer.ubiquity-container-identifiers</key>
+	<array>
+		<string>iCloud.com.Colexiu.KulexiuForTeacher</string>
+	</array>
+	<key>keychain-access-groups</key>
+	<array>
+		<string>$(AppIdentifierPrefix)com.Colexiu.Kulexiu</string>
+	</array>
+</dict>
+</plist>

+ 11 - 15
KulexiuForStudent/KulexiuForStudent/Module/Chat/Controller/KSChatConversationViewController.m

@@ -598,24 +598,20 @@
 
 
 - (void)submitFileWithMessage:(RCSightMessage *)sightMessage uploadListener:(RCUploadMediaStatusListener *)uploadListener {
-
-    NSData *fileData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:sightMessage.localPath]];
+    NSURL *fileUrl = [NSURL fileURLWithPath:sightMessage.localPath];
+    NSData *fileData = [NSData dataWithContentsOfURL:fileUrl];
+    
     if (fileData.length) {
-        [KSNetworkingManager videoFileUpload:KS_POST fileData:fileData progress:^(int64_t bytesWritten, int64_t totalBytes) {
+        NSString *suffix = [NSString stringWithFormat:@".%@",[fileUrl pathExtension]];
+        [[KSUploadManager shareInstance] videoUpload:fileData fileName:@"sightVideo" fileSuffix:suffix progress:^(int64_t bytesWritten, int64_t totalBytes) {
             int progress = (int)(bytesWritten / totalBytes * 100);
             uploadListener.updateBlock(progress);
-        } success:^(NSDictionary * _Nonnull dic) {
-            if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-                NSString *fileUrl = [[dic dictionaryValueForKey:@"data"] stringValueForKey:@"url"];
-                sightMessage.remoteUrl = fileUrl;
-                sightMessage.size = fileData.length;
-                uploadListener.successBlock(sightMessage);
-            }
-            else {
-                uploadListener.errorBlock(ERRORCODE_TIMEOUT);
-            }
-            
-        } faliure:^(NSError * _Nonnull error) {
+        } successCallback:^(NSMutableArray * _Nonnull fileUrlArray) {
+            NSString *videoUrl = [fileUrlArray lastObject];
+            sightMessage.remoteUrl = videoUrl;
+            sightMessage.size = fileData.length;
+            uploadListener.successBlock(sightMessage);
+        } faliure:^(NSError * _Nullable error, NSString * _Nullable descMessaeg) {
             uploadListener.errorBlock(ERRORCODE_TIMEOUT);
         }];
     }

+ 9 - 16
KulexiuForStudent/KulexiuForStudent/Module/Chat/Group/Controller/KSChatComplainController.m

@@ -68,24 +68,17 @@
         NSData *imgData = [UIImage turnsImaegDataByImage:image];
         [imageDataArray addObject:imgData];
     }
-    [KSNetworkingManager multiImageUpload:KS_POST imgDataArray:imageDataArray success:^(NSArray * _Nonnull dics) {
-        NSDictionary *dic = [dics lastObject];
-        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-            NSMutableArray *urlArray = [NSMutableArray array];
-            for (NSDictionary *result in dics) {
-                NSDictionary *parm = [result dictionaryValueForKey:@"data"];
-                NSString *avatar = [parm stringValueForKey:@"url"];
-                [urlArray addObject:avatar];
-            }
-            NSString *attachments = [urlArray componentsJoinedByString:@","];
-            [self uplodMessage:attachments content:content];
-        }
-        else {
-            [self removehub];
-            [self MBPShow:MESSAGEKEY];
+    
+    [[KSUploadManager shareInstance] mutilUploadImage:imageDataArray fileName:@"complainImg" successCallback:^(NSMutableArray * _Nonnull fileUrlArray) {
+        NSMutableArray *urlArray = [NSMutableArray array];
+        for (NSString *url in fileUrlArray) {
+            [urlArray addObject:url];
         }
-    } faliure:^(NSError * _Nonnull error) {
+        NSString *attachments = [urlArray componentsJoinedByString:@","];
+        [self uplodMessage:attachments content:content];
+    } faliure:^(NSError * _Nullable error, NSString * _Nullable descMessaeg) {
         [self removehub];
+        [self MBPShow:descMessaeg];
     }];
 }
 

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Chat/View/ChatAddressHeaderView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" 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="19519"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -122,7 +122,7 @@
                                 <constraint firstAttribute="height" constant="15" id="Ryq-hL-Hj7"/>
                             </constraints>
                         </imageView>
-                        <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入群聊/学员名称" adjustsFontSizeToFit="NO" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Ud0-St-B7w">
+                        <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入群聊/老师名称" adjustsFontSizeToFit="NO" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Ud0-St-B7w">
                             <rect key="frame" x="38" y="0.0" width="324" height="35"/>
                             <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                             <fontDescription key="fontDescription" type="system" pointSize="13"/>

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Chat/View/GroupCreateView.m

@@ -87,9 +87,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     return YES;
 }
 /*

+ 32 - 15
KulexiuForStudent/KulexiuForStudent/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m

@@ -62,8 +62,25 @@
 - (void)requestCourseInfoMessage {
     [self requestHomeworkMessage];
     [self requestEvaluateMessage];
+    [self requestRoomConfig];
 }
 
+- (void)requestRoomConfig {
+    [KSNetworkingManager selectRoomConfigRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSDictionary *result = [dic dictionaryValueForKey:@"data"];
+            self.joinRoomBeforeTime = [result integerValueForKey:@"practiceStartTime"];
+            self.quitRomeEndTime = [result integerValueForKey:@"practiceEndTime"];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        
+    }];
+}
+
+
 - (void)requestHomeworkMessage {
     [KSNetworkingManager homeworkDetailRequest:KS_GET courseId:self.courseId success:^(NSDictionary * _Nonnull dic) {
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
@@ -273,29 +290,29 @@
 #pragma mark --- 上传视频文件
 - (void)uploadVideoWithUrl:(NSString *)videoUrl {
     [self hudTipWillShow:YES];
-    NSData *fileData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:videoUrl]];
-    [KSNetworkingManager videoFileUpload:KS_POST fileData:fileData progress:^(int64_t bytesWritten, int64_t totalBytes) {
+    
+    NSURL *uploadFileUrl = [NSURL fileURLWithPath:videoUrl];
+    NSData *fileData = [NSData dataWithContentsOfURL:uploadFileUrl];
+    NSString *suffix = [NSString stringWithFormat:@".%@",[uploadFileUrl pathExtension]];
+    [[KSUploadManager shareInstance] videoUpload:fileData fileName:@"video" fileSuffix:suffix progress:^(int64_t bytesWritten, int64_t totalBytes) {
         dispatch_main_async_safe(^{
             // 显示进度
             if (self.HUD) {
                 self.HUD.progress = bytesWritten / totalBytes;// progress是回调进度
             }
         });
-    } success:^(NSDictionary * _Nonnull dic) {
+    } successCallback:^(NSMutableArray * _Nonnull fileUrlArray) {
         [self hudTipWillShow:NO];
-        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-            NSString *fileUrl = [[dic dictionaryValueForKey:@"data"] stringValueForKey:@"url"];
-            // 删除文件
-            [self removeVideoWithPath:videoUrl];
-            [self.fileArray addObject:fileUrl];
-            [self.tableView reloadData];
-        }
-        else {
-            [self MBPShow:MESSAGEKEY];
-            
-        }
-    } faliure:^(NSError * _Nonnull error) {
+        NSString *fileUrl = [fileUrlArray lastObject];
+        // 删除文件
+        [self removeVideoWithPath:videoUrl];
+        [self.fileArray addObject:fileUrl];
+        [self.tableView reloadData];
+    } faliure:^(NSError * _Nullable error, NSString * _Nullable descMessaeg) {
         [self hudTipWillShow:NO];
+        if ([NSString isEmptyString:descMessaeg]) {
+            [self MBPShow:descMessaeg];
+        }
     }];
 }
 

+ 2 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/Controller/CourseViewController.m

@@ -456,7 +456,8 @@
 
 - (void)liveCourseDetail:(NSString *)courseId courseGroupId:(NSString *)courseGroupId {
     KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
-    ctrl.url = [NSString stringWithFormat:@"%@%@",WEBHOST,@"/#/openLive"];
+    NSString *url = [NSString stringWithFormat:@"%@/#/liveDetail?groupId=%@&classId=%@", WEBHOST, courseGroupId,courseId];
+    ctrl.url = url;
     [self.navigationController pushViewController:ctrl animated:YES];
 }
 

+ 18 - 5
KulexiuForStudent/KulexiuForStudent/Module/Home/Controller/HomeViewController.m

@@ -120,9 +120,12 @@
     self.isChooseLive = YES;
     [self configNavView];
     [self configUI];
-    [self requestData];
+    [self requestUserInfo]; // 获取声部
+//    [self requestData];
 }
 
+
+
 - (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
 }
@@ -273,7 +276,6 @@
 }
 
 - (void)requestData {
-    [self requestUserInfo]; // 获取声部
     [self requestNewsList]; //
     [self requestCourseInfo];
     [self requestTeacherStyle];
@@ -482,9 +484,11 @@
     NSString *subjectName = @"";
     if ([NSString isEmptyString:self.mineInfo.subjectName]) {
         subjectName = @"请选择乐器";
+        [self showInstrumentView:YES];
     }
     else {
         subjectName = self.mineInfo.subjectName;
+        [self requestData];
     }
     self.navView.subjectName.text = subjectName;
 }
@@ -1095,7 +1099,7 @@
 
 - (void)navAction:(NAVACTION)action {
     if (action == NAVACTION_SUBJECT) {
-        [self showInstrumentView];;
+        [self showInstrumentView:NO];
     }
     else { // 消息中心
         NotiferMessageViewController *ctrl = [[NotiferMessageViewController alloc] init];
@@ -1103,13 +1107,22 @@
     }
 }
 
-- (void)showInstrumentView {
+- (void)showInstrumentView:(BOOL)hideBackButton {
     SubjectChooseViewController *ctrl = [[SubjectChooseViewController alloc] init];
     MJWeakSelf;
     [ctrl chooseSubjectCallback:^{
         [weakSelf requestUserInfo];
+        [weakSelf requestData];
     }];
-    [self.navigationController pushViewController:ctrl animated:YES];
+    if (hideBackButton) {
+        ctrl.isModalPresent = YES;
+        CustomNavViewController *navCrtl = [[CustomNavViewController alloc] initWithRootViewController:ctrl];
+        navCrtl.modalPresentationStyle = UIModalPresentationFullScreen;
+        [self.navigationController presentViewController:navCrtl animated:YES completion:nil];
+    }
+    else {
+        [self.navigationController pushViewController:ctrl animated:YES];
+    }
 }
 
 

+ 5 - 0
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeHotAlbumCell.xib

@@ -37,6 +37,11 @@
                             <constraint firstAttribute="height" constant="94" id="OYN-0Q-mPG"/>
                             <constraint firstAttribute="width" constant="94" id="wU7-tF-QtE"/>
                         </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                <real key="value" value="10"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
                     </imageView>
                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="萨克斯新手…" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1bh-Zm-ov0">
                         <rect key="frame" x="6" y="114" width="100" height="20"/>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeLiveCouseCell.m

@@ -36,7 +36,7 @@
 }
 
 - (void)configWithSource:(HomeLiveGroupModel *)source {
-    [self.coverImage sd_setImageWithURL:[NSURL URLWithString:[source.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:@"video_placeholder"]];
+    [self.coverImage sd_setImageWithURL:[NSURL URLWithString:[source.backgroundPic getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:@"video_placeholder"]];
     self.courseName.text = [NSString returnNoNullStringWithString:source.courseGroupName];
     
     if ([NSString isEmptyString:source.teacherName]) {

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/SubjectChooseViewController.h

@@ -14,6 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
 /// 声部选择
 @interface SubjectChooseViewController : KSBaseViewController
 
+@property (nonatomic, assign) BOOL isModalPresent;
+
 - (void)chooseSubjectCallback:(SubjectChooseCallback)callback;
 
 @end

+ 10 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/SubjectChooseViewController.m

@@ -46,6 +46,7 @@
     }
 }
 
+
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
@@ -271,6 +272,15 @@
         [self removehub];
     }];
 }
+
+- (void)backAction {
+    if (self.isModalPresent) {
+        [self.navigationController dismissViewControllerAnimated:YES completion:nil];
+    }
+    else {
+        [self.navigationController popViewControllerAnimated:YES];
+    }
+}
 /*
 #pragma mark - Navigation
 

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Login/View/FirstSettingBodyView.m

@@ -67,9 +67,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     
     return YES;
 }

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Login/View/LoginBodyView.m

@@ -99,9 +99,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     // 输入控制
     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
     if (newString.length > 11) {

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Login/View/PasswordBodyView.m

@@ -68,9 +68,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     // 输入控制
     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
     if (textField == self.phoneField) {

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mall/Controller/ShopMallViewController.m

@@ -16,6 +16,7 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
+    self.webBackButton.hidden = YES;
 }
 
 /*

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Mine/AddressList/View/AddressDetailBodyView.m

@@ -91,9 +91,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     
     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
     if (textField == self.phoneField) {

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/AddressList/View/MyAddressListCell.m

@@ -42,7 +42,7 @@
     else {
         self.phoneLabel.text = [NSString returnNoNullStringWithString:model.phoneNumber];
     }
-    self.detailAddress.text = [NSString returnNoNullStringWithString:model.detailAddress];
+    self.detailAddress.text = [NSString stringWithFormat:@"%@%@%@ %@", [NSString returnNoNullStringWithString:model.province], [NSString returnNoNullStringWithString:model.city], [NSString returnNoNullStringWithString:model.region], [NSString returnNoNullStringWithString:model.detailAddress]];
 }
 
 - (IBAction)modifyAction:(id)sender {

+ 14 - 15
KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/Controller/HomeworkDetailViewController.m

@@ -190,29 +190,28 @@
 #pragma mark --- 上传视频文件
 - (void)uploadVideoWithUrl:(NSString *)videoUrl {
     [self hudTipWillShow:YES];
-    NSData *fileData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:videoUrl]];
-    [KSNetworkingManager videoFileUpload:KS_POST fileData:fileData progress:^(int64_t bytesWritten, int64_t totalBytes) {
+    NSURL *uploadFileUrl = [NSURL fileURLWithPath:videoUrl];
+    NSData *fileData = [NSData dataWithContentsOfURL:uploadFileUrl];
+    NSString *suffix = [NSString stringWithFormat:@".%@",[uploadFileUrl pathExtension]];
+    [[KSUploadManager shareInstance] videoUpload:fileData fileName:@"video" fileSuffix:suffix progress:^(int64_t bytesWritten, int64_t totalBytes) {
         dispatch_main_async_safe(^{
             // 显示进度
             if (self.HUD) {
                 self.HUD.progress = bytesWritten / totalBytes;// progress是回调进度
             }
         });
-    } success:^(NSDictionary * _Nonnull dic) {
+    } successCallback:^(NSMutableArray * _Nonnull fileUrlArray) {
         [self hudTipWillShow:NO];
-        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-            NSString *fileUrl = [[dic dictionaryValueForKey:@"data"] stringValueForKey:@"url"];
-            // 删除文件
-            [self removeVideoWithPath:videoUrl];
-            [self.fileArray addObject:fileUrl];
-            [self.tableView reloadData];
-        }
-        else {
-            [self MBPShow:MESSAGEKEY];
-            
-        }
-    } faliure:^(NSError * _Nonnull error) {
+        NSString *fileUrl = [fileUrlArray lastObject];
+        // 删除文件
+        [self removeVideoWithPath:videoUrl];
+        [self.fileArray addObject:fileUrl];
+        [self.tableView reloadData];
+    } faliure:^(NSError * _Nullable error, NSString * _Nullable descMessaeg) {
         [self hudTipWillShow:NO];
+        if ([NSString isEmptyString:descMessaeg]) {
+            [self MBPShow:descMessaeg];
+        }
     }];
 }
 

+ 47 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/Controller/MyCourseViewController.m

@@ -19,6 +19,9 @@
 
 @property (nonatomic, strong) NSMutableArray *listViewArray;
 
+@property (nonatomic, strong) NSMutableArray *subjectList;
+
+
 @end
 
 @implementation MyCourseViewController
@@ -64,6 +67,7 @@
 - (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
     self.navigationController.interactivePopGestureRecognizer.enabled = YES;
+    [self requestSubjectList];
     if (self.listViewArray.count > self.categoryView.selectedIndex) {
         id value = self.listViewArray[self.categoryView.selectedIndex];
         if ([value isKindOfClass:[MyVideoCourseBodyView class]]) {
@@ -77,6 +81,43 @@
     }
 }
 
+- (void)requestSubjectList {
+    [KSNetworkingManager querySubjectItemRequest:KS_POST success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSArray *dataArray = [NSMutableArray array];
+            dataArray = [dic arrayValueForKey:@"data"];
+            NSMutableArray *subjectArray = [NSMutableArray array];
+            for (NSDictionary *parm in dataArray) {
+                NSMutableDictionary *subjectSource = [NSMutableDictionary dictionary];
+                [subjectSource setValue:[parm stringValueForKey:@"id"] forKey:@"subjectId"];
+                [subjectSource setValue:[parm stringValueForKey:@"name"] forKey:@"subjectName"];
+                [subjectArray addObject:subjectSource];
+            }
+            self.subjectList = [subjectArray mutableCopy];
+            [self refreshSubjectMessage];
+        }
+        else{
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        
+    }];
+}
+
+- (void)refreshSubjectMessage {
+    for (NSInteger index = 0; index < self.listViewArray.count; index++) {
+        id view = self.listViewArray[index];
+        if ([view isKindOfClass:[MyLessonBodyView class]]) {
+            MyLessonBodyView *courseView = (MyLessonBodyView *)view;
+            courseView.subjectList = [self.subjectList mutableCopy];
+        }
+        else if ([view isKindOfClass:[MyVideoCourseBodyView class]]) {
+            MyVideoCourseBodyView *videoCourseView = (MyVideoCourseBodyView *)view;
+            videoCourseView.subjectList = [self.subjectList mutableCopy];
+        }
+    }
+}
+
 - (void)viewDidAppear:(BOOL)animated {
     [super viewDidAppear:animated];
     self.navigationController.interactivePopGestureRecognizer.enabled = (self.categoryView.selectedIndex == 0);
@@ -116,6 +157,9 @@
         [self.listViewArray replaceObjectAtIndex:index withObject:listView];
         self.listViewArray[index] = listView;
         listView.selectIndex = index;
+        if (self.subjectList) {
+            listView.subjectList = [self.subjectList mutableCopy];
+        }
         [listView beginFirstRefresh];
         return listView;
     }
@@ -125,6 +169,9 @@
         [self.listViewArray replaceObjectAtIndex:index withObject:listView];
         self.listViewArray[index] = listView;
         listView.selectIndex = index;
+        if (self.subjectList) {
+            listView.subjectList = [self.subjectList mutableCopy];
+        }
         [listView beginFirstRefresh];
         return listView;
     }

+ 8 - 6
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/Model/LiveLessonModel.h

@@ -1,7 +1,7 @@
 //
 //  LiveLessonModel.h
 //
-//  Created by Steven  on 2022/4/20
+//  Created by Steven  on 2022/5/10
 //  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
 //
 
@@ -12,19 +12,21 @@
 @interface LiveLessonModel : NSObject <NSCoding, NSCopying>
 
 @property (nonatomic, strong) NSString *classDate;
-@property (nonatomic, strong) NSString *courseType;
+@property (nonatomic, strong) NSString *name;
+@property (nonatomic, strong) NSString *realName;
+@property (nonatomic, strong) NSString *imGroupId;
 @property (nonatomic, strong) NSString *subjectId;
 @property (nonatomic, strong) NSString *courseId;
-@property (nonatomic, strong) NSString *avatar;
 @property (nonatomic, strong) NSString *userId;
+@property (nonatomic, strong) NSString *avatar;
 @property (nonatomic, strong) NSString *endTime;
-@property (nonatomic, strong) NSString *courseGoupId;
-@property (nonatomic, strong) NSString *cover;
 @property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, strong) NSString *cover;
+@property (nonatomic, strong) NSString *courseGoupId;
 @property (nonatomic, strong) NSString *payCount;
 @property (nonatomic, strong) NSString *startTime;
 @property (nonatomic, strong) NSString *status;
-@property (nonatomic, strong) NSString *name;
+@property (nonatomic, strong) NSString *courseType;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 50 - 36
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/Model/LiveLessonModel.m

@@ -1,7 +1,7 @@
 //
 //  LiveLessonModel.m
 //
-//  Created by Steven  on 2022/4/20
+//  Created by Steven  on 2022/5/10
 //  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
 //
 
@@ -9,19 +9,21 @@
 
 
 NSString *const kLiveLessonModelClassDate = @"classDate";
-NSString *const kLiveLessonModelCourseType = @"courseType";
+NSString *const kLiveLessonModelName = @"name";
+NSString *const kLiveLessonModelRealName = @"realName";
+NSString *const kLiveLessonModelImGroupId = @"imGroupId";
 NSString *const kLiveLessonModelSubjectId = @"subjectId";
 NSString *const kLiveLessonModelCourseId = @"courseId";
-NSString *const kLiveLessonModelAvatar = @"avatar";
 NSString *const kLiveLessonModelUserId = @"userId";
+NSString *const kLiveLessonModelAvatar = @"avatar";
 NSString *const kLiveLessonModelEndTime = @"endTime";
-NSString *const kLiveLessonModelCourseGoupId = @"courseGoupId";
-NSString *const kLiveLessonModelCover = @"cover";
 NSString *const kLiveLessonModelSubjectName = @"subjectName";
+NSString *const kLiveLessonModelCover = @"cover";
+NSString *const kLiveLessonModelCourseGoupId = @"courseGoupId";
 NSString *const kLiveLessonModelPayCount = @"payCount";
 NSString *const kLiveLessonModelStartTime = @"startTime";
 NSString *const kLiveLessonModelStatus = @"status";
-NSString *const kLiveLessonModelName = @"name";
+NSString *const kLiveLessonModelCourseType = @"courseType";
 
 
 @interface LiveLessonModel ()
@@ -33,19 +35,21 @@ NSString *const kLiveLessonModelName = @"name";
 @implementation LiveLessonModel
 
 @synthesize classDate = _classDate;
-@synthesize courseType = _courseType;
+@synthesize name = _name;
+@synthesize realName = _realName;
+@synthesize imGroupId = _imGroupId;
 @synthesize subjectId = _subjectId;
 @synthesize courseId = _courseId;
-@synthesize avatar = _avatar;
 @synthesize userId = _userId;
+@synthesize avatar = _avatar;
 @synthesize endTime = _endTime;
-@synthesize courseGoupId = _courseGoupId;
-@synthesize cover = _cover;
 @synthesize subjectName = _subjectName;
+@synthesize cover = _cover;
+@synthesize courseGoupId = _courseGoupId;
 @synthesize payCount = _payCount;
 @synthesize startTime = _startTime;
 @synthesize status = _status;
-@synthesize name = _name;
+@synthesize courseType = _courseType;
 
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
@@ -61,19 +65,21 @@ NSString *const kLiveLessonModelName = @"name";
     // passed into the model class doesn't break the parsing.
     if(self && [dict isKindOfClass:[NSDictionary class]]) {
             self.classDate = [self objectOrNilForKey:kLiveLessonModelClassDate fromDictionary:dict];
-            self.courseType = [self objectOrNilForKey:kLiveLessonModelCourseType fromDictionary:dict];
+            self.name = [self objectOrNilForKey:kLiveLessonModelName fromDictionary:dict];
+            self.realName = [self objectOrNilForKey:kLiveLessonModelRealName fromDictionary:dict];
+            self.imGroupId = [self objectOrNilForKey:kLiveLessonModelImGroupId fromDictionary:dict];
             self.subjectId = [self objectOrNilForKey:kLiveLessonModelSubjectId fromDictionary:dict];
             self.courseId = [self objectOrNilForKey:kLiveLessonModelCourseId fromDictionary:dict];
-            self.avatar = [self objectOrNilForKey:kLiveLessonModelAvatar fromDictionary:dict];
             self.userId = [self objectOrNilForKey:kLiveLessonModelUserId fromDictionary:dict];
+            self.avatar = [self objectOrNilForKey:kLiveLessonModelAvatar fromDictionary:dict];
             self.endTime = [self objectOrNilForKey:kLiveLessonModelEndTime fromDictionary:dict];
-            self.courseGoupId = [self objectOrNilForKey:kLiveLessonModelCourseGoupId fromDictionary:dict];
-            self.cover = [self objectOrNilForKey:kLiveLessonModelCover fromDictionary:dict];
             self.subjectName = [self objectOrNilForKey:kLiveLessonModelSubjectName fromDictionary:dict];
+            self.cover = [self objectOrNilForKey:kLiveLessonModelCover fromDictionary:dict];
+            self.courseGoupId = [self objectOrNilForKey:kLiveLessonModelCourseGoupId fromDictionary:dict];
             self.payCount = [self objectOrNilForKey:kLiveLessonModelPayCount fromDictionary:dict];
             self.startTime = [self objectOrNilForKey:kLiveLessonModelStartTime fromDictionary:dict];
             self.status = [self objectOrNilForKey:kLiveLessonModelStatus fromDictionary:dict];
-            self.name = [self objectOrNilForKey:kLiveLessonModelName fromDictionary:dict];
+            self.courseType = [self objectOrNilForKey:kLiveLessonModelCourseType fromDictionary:dict];
 
     }
     
@@ -85,19 +91,21 @@ NSString *const kLiveLessonModelName = @"name";
 {
     NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
     [mutableDict setValue:self.classDate forKey:kLiveLessonModelClassDate];
-    [mutableDict setValue:self.courseType forKey:kLiveLessonModelCourseType];
+    [mutableDict setValue:self.name forKey:kLiveLessonModelName];
+    [mutableDict setValue:self.realName forKey:kLiveLessonModelRealName];
+    [mutableDict setValue:self.imGroupId forKey:kLiveLessonModelImGroupId];
     [mutableDict setValue:self.subjectId forKey:kLiveLessonModelSubjectId];
     [mutableDict setValue:self.courseId forKey:kLiveLessonModelCourseId];
-    [mutableDict setValue:self.avatar forKey:kLiveLessonModelAvatar];
     [mutableDict setValue:self.userId forKey:kLiveLessonModelUserId];
+    [mutableDict setValue:self.avatar forKey:kLiveLessonModelAvatar];
     [mutableDict setValue:self.endTime forKey:kLiveLessonModelEndTime];
-    [mutableDict setValue:self.courseGoupId forKey:kLiveLessonModelCourseGoupId];
-    [mutableDict setValue:self.cover forKey:kLiveLessonModelCover];
     [mutableDict setValue:self.subjectName forKey:kLiveLessonModelSubjectName];
+    [mutableDict setValue:self.cover forKey:kLiveLessonModelCover];
+    [mutableDict setValue:self.courseGoupId forKey:kLiveLessonModelCourseGoupId];
     [mutableDict setValue:self.payCount forKey:kLiveLessonModelPayCount];
     [mutableDict setValue:self.startTime forKey:kLiveLessonModelStartTime];
     [mutableDict setValue:self.status forKey:kLiveLessonModelStatus];
-    [mutableDict setValue:self.name forKey:kLiveLessonModelName];
+    [mutableDict setValue:self.courseType forKey:kLiveLessonModelCourseType];
 
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
@@ -126,19 +134,21 @@ NSString *const kLiveLessonModelName = @"name";
     self = [super init];
 
     self.classDate = [aDecoder decodeObjectForKey:kLiveLessonModelClassDate];
-    self.courseType = [aDecoder decodeObjectForKey:kLiveLessonModelCourseType];
+    self.name = [aDecoder decodeObjectForKey:kLiveLessonModelName];
+    self.realName = [aDecoder decodeObjectForKey:kLiveLessonModelRealName];
+    self.imGroupId = [aDecoder decodeObjectForKey:kLiveLessonModelImGroupId];
     self.subjectId = [aDecoder decodeObjectForKey:kLiveLessonModelSubjectId];
     self.courseId = [aDecoder decodeObjectForKey:kLiveLessonModelCourseId];
-    self.avatar = [aDecoder decodeObjectForKey:kLiveLessonModelAvatar];
     self.userId = [aDecoder decodeObjectForKey:kLiveLessonModelUserId];
+    self.avatar = [aDecoder decodeObjectForKey:kLiveLessonModelAvatar];
     self.endTime = [aDecoder decodeObjectForKey:kLiveLessonModelEndTime];
-    self.courseGoupId = [aDecoder decodeObjectForKey:kLiveLessonModelCourseGoupId];
-    self.cover = [aDecoder decodeObjectForKey:kLiveLessonModelCover];
     self.subjectName = [aDecoder decodeObjectForKey:kLiveLessonModelSubjectName];
+    self.cover = [aDecoder decodeObjectForKey:kLiveLessonModelCover];
+    self.courseGoupId = [aDecoder decodeObjectForKey:kLiveLessonModelCourseGoupId];
     self.payCount = [aDecoder decodeObjectForKey:kLiveLessonModelPayCount];
     self.startTime = [aDecoder decodeObjectForKey:kLiveLessonModelStartTime];
     self.status = [aDecoder decodeObjectForKey:kLiveLessonModelStatus];
-    self.name = [aDecoder decodeObjectForKey:kLiveLessonModelName];
+    self.courseType = [aDecoder decodeObjectForKey:kLiveLessonModelCourseType];
     return self;
 }
 
@@ -146,19 +156,21 @@ NSString *const kLiveLessonModelName = @"name";
 {
 
     [aCoder encodeObject:_classDate forKey:kLiveLessonModelClassDate];
-    [aCoder encodeObject:_courseType forKey:kLiveLessonModelCourseType];
+    [aCoder encodeObject:_name forKey:kLiveLessonModelName];
+    [aCoder encodeObject:_realName forKey:kLiveLessonModelRealName];
+    [aCoder encodeObject:_imGroupId forKey:kLiveLessonModelImGroupId];
     [aCoder encodeObject:_subjectId forKey:kLiveLessonModelSubjectId];
     [aCoder encodeObject:_courseId forKey:kLiveLessonModelCourseId];
-    [aCoder encodeObject:_avatar forKey:kLiveLessonModelAvatar];
     [aCoder encodeObject:_userId forKey:kLiveLessonModelUserId];
+    [aCoder encodeObject:_avatar forKey:kLiveLessonModelAvatar];
     [aCoder encodeObject:_endTime forKey:kLiveLessonModelEndTime];
-    [aCoder encodeObject:_courseGoupId forKey:kLiveLessonModelCourseGoupId];
-    [aCoder encodeObject:_cover forKey:kLiveLessonModelCover];
     [aCoder encodeObject:_subjectName forKey:kLiveLessonModelSubjectName];
+    [aCoder encodeObject:_cover forKey:kLiveLessonModelCover];
+    [aCoder encodeObject:_courseGoupId forKey:kLiveLessonModelCourseGoupId];
     [aCoder encodeObject:_payCount forKey:kLiveLessonModelPayCount];
     [aCoder encodeObject:_startTime forKey:kLiveLessonModelStartTime];
     [aCoder encodeObject:_status forKey:kLiveLessonModelStatus];
-    [aCoder encodeObject:_name forKey:kLiveLessonModelName];
+    [aCoder encodeObject:_courseType forKey:kLiveLessonModelCourseType];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -168,19 +180,21 @@ NSString *const kLiveLessonModelName = @"name";
     if (copy) {
 
         copy.classDate = [self.classDate copyWithZone:zone];
-        copy.courseType = [self.courseType copyWithZone:zone];
+        copy.name = [self.name copyWithZone:zone];
+        copy.realName = [self.realName copyWithZone:zone];
+        copy.imGroupId = [self.imGroupId copyWithZone:zone];
         copy.subjectId = [self.subjectId copyWithZone:zone];
         copy.courseId = [self.courseId copyWithZone:zone];
-        copy.avatar = [self.avatar copyWithZone:zone];
         copy.userId = [self.userId copyWithZone:zone];
+        copy.avatar = [self.avatar copyWithZone:zone];
         copy.endTime = [self.endTime copyWithZone:zone];
-        copy.courseGoupId = [self.courseGoupId copyWithZone:zone];
-        copy.cover = [self.cover copyWithZone:zone];
         copy.subjectName = [self.subjectName copyWithZone:zone];
+        copy.cover = [self.cover copyWithZone:zone];
+        copy.courseGoupId = [self.courseGoupId copyWithZone:zone];
         copy.payCount = [self.payCount copyWithZone:zone];
         copy.startTime = [self.startTime copyWithZone:zone];
         copy.status = [self.status copyWithZone:zone];
-        copy.name = [self.name copyWithZone:zone];
+        copy.courseType = [self.courseType copyWithZone:zone];
     }
     
     return copy;

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.h

@@ -14,6 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface MyLessonBodyView : KSJXBodyView
 
+@property (nonatomic, strong) NSMutableArray *subjectList;
 
 @end
 

+ 35 - 3
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.m

@@ -16,6 +16,7 @@
 #import "NewClassPopView.h"
 #import "KSFullDatePicker.h"
 #import "AccompanyDetailViewController.h"
+#import "KSChoosePicker.h"
 
 @interface MyLessonBodyView ()<UITableViewDelegate,UITableViewDataSource>
 
@@ -233,7 +234,35 @@
         [self.popView refreshWithSourceArray:@[@"全部",@"未开始",@"进行中",@"已结束"] preChooseIndex:_secondChooseIndex inView:self actionItem:1];
     }
     else if (type == SORT_TYPE_SUBJECT) {
-//        [self.popView refreshWithSourceArray:@[@"全部",@"请假",@"旷课",@"迟到",@"正常"] preChooseIndex:_thirdChooseIndex inView:self actionItem:2];
+        if (self.subjectList.count) {
+            NSMutableArray *nameArray = [NSMutableArray array];
+            [nameArray addObject:@"全部"];
+            for (NSDictionary *parm in self.subjectList) {
+                [nameArray addObject:[parm stringValueForKey:@"subjectName"]];
+            }
+            MJWeakSelf;
+            KSChoosePicker *picker = [[KSChoosePicker alloc] initWithTitle:@"声部筛选" sourceData:nameArray chooseReturnWithBlock:^(NSString * _Nonnull returnValue, NSInteger chooseIndex) {
+                if (chooseIndex == 0) {
+                    [weakSelf.sortView.thirdButton setTitle:@"全部声部" forState:UIControlStateNormal];
+                    weakSelf.subjectId = @"";
+                }
+                else {
+                    [weakSelf.sortView.thirdButton setTitle:returnValue forState:UIControlStateNormal];
+                    NSDictionary *parm = self.subjectList[chooseIndex-1];
+                    weakSelf.subjectId = [parm stringValueForKey:@"subjectId"];
+                }
+                self.sortView.thirdArrowUp = NO;
+                [weakSelf refreshAndRequestData];
+            } cancel:^{
+                self.sortView.thirdArrowUp = NO;
+            }];
+            [picker showPicker];
+        }
+        else {
+            [self MBPShow:@"无声部信息"];
+            self.sortView.thirdArrowUp = NO;
+        }
+
     }
     else {
         [self hiddenPopView];
@@ -414,7 +443,7 @@
 }
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
-    if (indexPath.row == 0) { // 进入陪练课详情
+    if (self.selectIndex == 0) { // 进入陪练课详情
         AccompanyLessonModel *model = self.dataArray[indexPath.row];
         [self showAccompanyDetail:model];
     }
@@ -496,7 +525,10 @@
     }
     return _dateFormatter;
 }
-
+- (void)setSubjectList:(NSMutableArray *)subjectList {
+    _subjectList = subjectList;
+    self.thirdChooseIndex = 0;
+}
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLiveCourseCell.m

@@ -36,11 +36,11 @@
     if (callback) {
         self.callback = callback;
     }
-    [self.courseCoverImage sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:@"video_placeholder"]];
+    [self.courseCoverImage sd_setImageWithURL:[NSURL URLWithString:[model.cover getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:@"video_placeholder"]];
     
     self.courseNameLabel.text = [NSString returnNoNullStringWithString:model.name];
     self.subjectName.text = [NSString returnNoNullStringWithString:model.subjectName];
-    self.targetId = model.courseGoupId;
+    self.targetId = model.imGroupId;
     // time
     NSDateFormatter *formatter = [NSObject getDateformatter];
     [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyVideoCourseBodyView.h

@@ -13,6 +13,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface MyVideoCourseBodyView : kSJXCollectionView
 
+@property (nonatomic, strong) NSMutableArray *subjectList;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyVideoCourseBodyView.m

@@ -9,6 +9,7 @@
 #import "VideoCourseCell.h"
 #import "VideoCourseModel.h"
 #import "KSBaseWKWebViewController.h"
+#import "KSChoosePicker.h"
 
 @interface MyVideoCourseBodyView ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
 

+ 15 - 15
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/FeedbackViewController.m

@@ -39,21 +39,21 @@
 }
 
 - (void)submitWithPhone:(NSString *)phone suggestion:(NSString *)suggession {
-//    [self showhud];
-//    [KSRequestManager suggestionAddRequest:KS_POST content:suggession mobileNo:phone success:^(NSDictionary * _Nonnull dic) {
-//        [self removehub];
-//        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-//            KSWeakSelf(weakSelf);
-//            [self KSShowMsg:@"提交成功" promptCompletion:^{
-//                [weakSelf.navigationController popViewControllerAnimated:YES];
-//            }];
-//        }
-//        else {
-//            [self MBPShow:MESSAGEKEY];
-//        }
-//    } faliure:^(NSError * _Nonnull error) {
-//        [self removehub];
-//    }];
+    [self showhud];
+    [KSNetworkingManager suggestionAddRequest:KS_POST content:suggession mobileNo:phone success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            KSWeakSelf(weakSelf);
+            [self KSShowMsg:@"提交成功" promptCompletion:^{
+                [weakSelf.navigationController popViewControllerAnimated:YES];
+            }];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
 }
 
 /*

+ 7 - 12
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/SettingViewController.m

@@ -16,7 +16,6 @@
 #import "ModifyNameViewController.h"
 #import "ModifyViewController.h"
 #import "ModifyPhoneCheckController.h"
-#import "KSChoosePicker.h"
 #import "KSMediaManager.h"
 #import "FeedbackViewController.h"
 #import "AboutUsViewController.h"
@@ -232,18 +231,14 @@
 
 - (void)updateWithUserLogo:(UIImage *)image {
     NSData *imgData = [UIImage turnsImaegDataByImage:image];
-    [KSNetworkingManager multiImageUpload:KS_POST imgDataArray:@[imgData] success:^(NSArray * _Nonnull dics) {
-        NSDictionary *dic = [dics lastObject];
-        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-            NSDictionary *result = [dic dictionaryValueForKey:@"data"];
-            NSString *avatar = [result stringValueForKey:@"url"];
-            [self modifyUserMessage:avatar gender:nil birthday:nil];
-        }
-        else {
-            [self MBPShow:MESSAGEKEY];
+    NSString *fileName = @"image";
+    [[KSUploadManager shareInstance] uploadImage:imgData fileName:fileName successCallback:^(NSMutableArray * _Nonnull fileUrlArray) {
+        NSString *avatarUrl = [fileUrlArray lastObject];
+        [self modifyUserMessage:avatarUrl gender:nil birthday:nil];
+    } faliure:^(NSError * _Nullable error, NSString *descMessaeg) {
+        if ([NSString isEmptyString:descMessaeg]) {
+            [self MBPShow:descMessaeg];
         }
-    } faliure:^(NSError * _Nonnull error) {
-
     }];
 }
 

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/FeedbackBodyView.m

@@ -99,9 +99,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     return YES;
 }
 

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/ModifyBodyView.m

@@ -84,9 +84,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     // 输入控制
     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
     if (textField == self.pwdField) {

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/PhoneChangeBodyView.m

@@ -72,9 +72,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
 
     // 输入控制
     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/PhoneCheckBodyView.m

@@ -62,9 +62,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     // 输入控制
     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
     if (textField == self.phoneField) {

+ 0 - 3
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/VeriCheckView.m

@@ -151,9 +151,6 @@
         [self endEditing:YES];
         return YES;
     }
-    if ([string isEqualToString:@""]) {
-        return YES;
-    }
     return YES;
 }
 /*

+ 6 - 11
KulexiuForStudent/KulexiuForStudent/Module/SealClass/Sections/NewWhiteboard/KSWhiteboardView.m

@@ -674,18 +674,13 @@
     }
     NSData *imgData = [UIImage compressImage:image maxLength:5];
     
-    [KSNetworkingManager multiImageUpload:KS_POST imgDataArray:@[imgData] success:^(NSArray * _Nonnull dics) {
-        NSDictionary *dic = [dics lastObject];
-        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-            NSDictionary *result = [dic dictionaryValueForKey:@"data"];
-            NSString *imgUrl = [result stringValueForKey:@"url"];
-            [self insertImageWithUrl:imgUrl size:image.size];
+    [[KSUploadManager shareInstance] uploadImage:imgData fileName:@"classroomPic" successCallback:^(NSMutableArray * _Nonnull fileUrlArray) {
+        NSString *imgUrl = [fileUrlArray lastObject];
+        [self insertImageWithUrl:imgUrl size:image.size];
+    } faliure:^(NSError * _Nullable error, NSString * _Nullable descMessaeg) {
+        if ([NSString isEmptyString:descMessaeg]) {
+            [self MBPShow:descMessaeg];
         }
-        else {
-            [self MBPShow:MESSAGEKEY];
-        }
-    } faliure:^(NSError * _Nonnull error) {
-        
     }];
 }
 

+ 1 - 0
KulexiuForStudent/Podfile

@@ -38,6 +38,7 @@ target 'KulexiuForStudent' do
   pod 'RongCloudRTC/RongRTCLib','~> 5.2.1'
 
   pod "iOS-KS3SDK", "~>1.0.5"
+  pod "WechatOpenSDK"
   # Pods for KulexiuForStudent
 
   target 'KulexiuForStudentTests' do

+ 5 - 1
KulexiuForStudent/Podfile.lock

@@ -79,6 +79,7 @@ PODS:
   - UMCommon (7.3.6):
     - UMDevice
   - UMDevice (2.2.1)
+  - WechatOpenSDK (1.8.7.1)
   - Whiteboard (2.16.0):
     - Whiteboard/Base (= 2.16.0)
     - Whiteboard/Converter (= 2.16.0)
@@ -131,6 +132,7 @@ DEPENDENCIES:
   - UMAPM
   - UMCommon
   - UMDevice
+  - WechatOpenSDK
   - Whiteboard
   - ZKCycleScrollView
 
@@ -160,6 +162,7 @@ SPEC REPOS:
     - UMAPM
     - UMCommon
     - UMDevice
+    - WechatOpenSDK
     - Whiteboard
     - YYModel
     - ZKCycleScrollView
@@ -189,10 +192,11 @@ SPEC CHECKSUMS:
   UMAPM: 5ab988b8bedfd090ee2307cb80530ba79b8ac264
   UMCommon: c61df8457c275afd4f8a2fca10c7446d66220ac0
   UMDevice: 053478c4b4d7292f31f0a275c227d3c4007a5571
+  WechatOpenSDK: 6a4d1436c15b3b5fe2a0bd383f3046010186da44
   Whiteboard: 16568e7e14f7f451d2aad2536f5fab9c06119934
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
   ZKCycleScrollView: 4b353d17b7f469b245a1c606d5a977e72b940895
 
-PODFILE CHECKSUM: 3fa48a0c876d24bb53478e9c3b6a588814a4b5df
+PODFILE CHECKSUM: 7315d7938368d41a9eb88802823178ff70f7a555
 
 COCOAPODS: 1.11.3

+ 5 - 1
KulexiuForStudent/Pods/Manifest.lock

@@ -79,6 +79,7 @@ PODS:
   - UMCommon (7.3.6):
     - UMDevice
   - UMDevice (2.2.1)
+  - WechatOpenSDK (1.8.7.1)
   - Whiteboard (2.16.0):
     - Whiteboard/Base (= 2.16.0)
     - Whiteboard/Converter (= 2.16.0)
@@ -131,6 +132,7 @@ DEPENDENCIES:
   - UMAPM
   - UMCommon
   - UMDevice
+  - WechatOpenSDK
   - Whiteboard
   - ZKCycleScrollView
 
@@ -160,6 +162,7 @@ SPEC REPOS:
     - UMAPM
     - UMCommon
     - UMDevice
+    - WechatOpenSDK
     - Whiteboard
     - YYModel
     - ZKCycleScrollView
@@ -189,10 +192,11 @@ SPEC CHECKSUMS:
   UMAPM: 5ab988b8bedfd090ee2307cb80530ba79b8ac264
   UMCommon: c61df8457c275afd4f8a2fca10c7446d66220ac0
   UMDevice: 053478c4b4d7292f31f0a275c227d3c4007a5571
+  WechatOpenSDK: 6a4d1436c15b3b5fe2a0bd383f3046010186da44
   Whiteboard: 16568e7e14f7f451d2aad2536f5fab9c06119934
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
   ZKCycleScrollView: 4b353d17b7f469b245a1c606d5a977e72b940895
 
-PODFILE CHECKSUM: 3fa48a0c876d24bb53478e9c3b6a588814a4b5df
+PODFILE CHECKSUM: 7315d7938368d41a9eb88802823178ff70f7a555
 
 COCOAPODS: 1.11.3

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


+ 11 - 4
KulexiuForStudent/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -179,33 +179,40 @@
 			<key>orderHint</key>
 			<integer>26</integer>
 		</dict>
+		<key>WechatOpenSDK.xcscheme</key>
+		<dict>
+			<key>isShown</key>
+			<false/>
+			<key>orderHint</key>
+			<integer>27</integer>
+		</dict>
 		<key>Whiteboard-Whiteboard.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>28</integer>
+			<integer>29</integer>
 		</dict>
 		<key>Whiteboard.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>27</integer>
+			<integer>28</integer>
 		</dict>
 		<key>YYModel.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>29</integer>
+			<integer>30</integer>
 		</dict>
 		<key>ZKCycleScrollView.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>30</integer>
+			<integer>31</integer>
 		</dict>
 		<key>dsBridge.xcscheme</key>
 		<dict>

BIN
KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_group_portrait.png


BIN
KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_group_portrait@2x.png


BIN
KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_group_portrait@3x.png


BIN
KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_portrait_msg.png


BIN
KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_portrait_msg@2x.png


BIN
KulexiuForStudent/Pods/RongCloudIM/RongCloudIM/RongCloud.bundle/default_portrait_msg@3x.png


+ 5 - 0
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests-acknowledgements.markdown

@@ -367,6 +367,11 @@ Copyright 2011 - 2021 umeng.com. All rights reserved.
 Copyright 2011 - 2021 umeng.com. All rights reserved.
 
 
+## WechatOpenSDK
+
+Copyright 2020 tencent.com. All rights reserved.
+
+
 ## Whiteboard
 
 Copyright (c) 2018 leavesster <a412739861@qq.com>

+ 11 - 0
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests-acknowledgements.plist

@@ -512,6 +512,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</string>
 		</dict>
 		<dict>
 			<key>FooterText</key>
+			<string>Copyright 2020 tencent.com. All rights reserved.
+</string>
+			<key>License</key>
+			<string>Copyright</string>
+			<key>Title</key>
+			<string>WechatOpenSDK</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
+		<dict>
+			<key>FooterText</key>
 			<string>Copyright (c) 2018 leavesster &lt;a412739861@qq.com&gt;
 
 Permission is hereby granted, free of charge, to any person obtaining a copy

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2 - 2
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests.debug.xcconfig


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2 - 2
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent-KulexiuForStudentUITests/Pods-KulexiuForStudent-KulexiuForStudentUITests.release.xcconfig


+ 5 - 0
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent-acknowledgements.markdown

@@ -367,6 +367,11 @@ Copyright 2011 - 2021 umeng.com. All rights reserved.
 Copyright 2011 - 2021 umeng.com. All rights reserved.
 
 
+## WechatOpenSDK
+
+Copyright 2020 tencent.com. All rights reserved.
+
+
 ## Whiteboard
 
 Copyright (c) 2018 leavesster <a412739861@qq.com>

+ 11 - 0
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent-acknowledgements.plist

@@ -512,6 +512,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</string>
 		</dict>
 		<dict>
 			<key>FooterText</key>
+			<string>Copyright 2020 tencent.com. All rights reserved.
+</string>
+			<key>License</key>
+			<string>Copyright</string>
+			<key>Title</key>
+			<string>WechatOpenSDK</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
+		<dict>
+			<key>FooterText</key>
 			<string>Copyright (c) 2018 leavesster &lt;a412739861@qq.com&gt;
 
 Permission is hereby granted, free of charge, to any person obtaining a copy

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2 - 2
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent.debug.xcconfig


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2 - 2
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudent/Pods-KulexiuForStudent.release.xcconfig


+ 2 - 2
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudentTests/Pods-KulexiuForStudentTests.debug.xcconfig

@@ -2,8 +2,8 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CHIPageControl" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/Whiteboard" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/ZKCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/dsBridge" "${PODS_CONFIGURATION_BUILD_DIR}/iOS-KS3SDK" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/RongCloudIM/RongCloudIM" "${PODS_ROOT}/RongCloudRTC/RongCloudRTC" "${PODS_ROOT}/UMAPM/UMAPM_1.5.6" "${PODS_ROOT}/UMCommon/UMCommon_7.3.6" "${PODS_ROOT}/UMDevice/UMDevice_2.2.1" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/ChatRoom" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/CustomerService" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Discussion" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMLib" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMLibCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Location" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/PublicService" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Sight" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudRTC/RongRTCLib"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CHIPageControl/CHIPageControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper/RSKImageCropper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Whiteboard/Whiteboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ZKCycleScrollView/ZKCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/dsBridge/dsBridge.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/iOS-KS3SDK/iOS_KS3SDK.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/JPush"
-OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"iconv" -l"icucore" -l"resolv" -l"sqlite3" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "CFNetwork" -framework "CHIPageControl" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreTelephony" -framework "Foundation" -framework "GLKit" -framework "IQKeyboardManager" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "RSKImageCropper" -framework "Reachability" -framework "RongChatRoom" -framework "RongCustomerService" -framework "RongDiscussion" -framework "RongIMKit" -framework "RongIMLib" -framework "RongIMLibCore" -framework "RongLocation" -framework "RongPublicService" -framework "RongRTCLib" -framework "RongSight" -framework "SDWebImage" -framework "SSZipArchive" -framework "Security" -framework "SocketRocket" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "Whiteboard" -framework "YYModel" -framework "ZKCycleScrollView" -framework "dsBridge" -framework "iOS_KS3SDK" -weak_framework "UserNotifications"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CHIPageControl/CHIPageControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper/RSKImageCropper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Whiteboard/Whiteboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ZKCycleScrollView/ZKCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/dsBridge/dsBridge.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/iOS-KS3SDK/iOS_KS3SDK.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/JPush" "${PODS_ROOT}/Headers/Public/WechatOpenSDK"
+OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"iconv" -l"icucore" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "CFNetwork" -framework "CHIPageControl" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreTelephony" -framework "Foundation" -framework "GLKit" -framework "IQKeyboardManager" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "RSKImageCropper" -framework "Reachability" -framework "RongChatRoom" -framework "RongCustomerService" -framework "RongDiscussion" -framework "RongIMKit" -framework "RongIMLib" -framework "RongIMLibCore" -framework "RongLocation" -framework "RongPublicService" -framework "RongRTCLib" -framework "RongSight" -framework "SDWebImage" -framework "SSZipArchive" -framework "Security" -framework "SocketRocket" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "Whiteboard" -framework "YYModel" -framework "ZKCycleScrollView" -framework "dsBridge" -framework "iOS_KS3SDK" -weak_framework "UserNotifications"
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

+ 2 - 2
KulexiuForStudent/Pods/Target Support Files/Pods-KulexiuForStudentTests/Pods-KulexiuForStudentTests.release.xcconfig

@@ -2,8 +2,8 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
 FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/CHIPageControl" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket" "${PODS_CONFIGURATION_BUILD_DIR}/Whiteboard" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/ZKCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/dsBridge" "${PODS_CONFIGURATION_BUILD_DIR}/iOS-KS3SDK" "${PODS_ROOT}/Bugly" "${PODS_ROOT}/RongCloudIM/RongCloudIM" "${PODS_ROOT}/RongCloudRTC/RongCloudRTC" "${PODS_ROOT}/UMAPM/UMAPM_1.5.6" "${PODS_ROOT}/UMCommon/UMCommon_7.3.6" "${PODS_ROOT}/UMDevice/UMDevice_2.2.1" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/ChatRoom" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/CustomerService" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Discussion" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMLib" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/IMLibCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Location" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/PublicService" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudIM/Sight" "${PODS_XCFRAMEWORKS_BUILD_DIR}/RongCloudRTC/RongRTCLib"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CHIPageControl/CHIPageControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper/RSKImageCropper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Whiteboard/Whiteboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ZKCycleScrollView/ZKCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/dsBridge/dsBridge.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/iOS-KS3SDK/iOS_KS3SDK.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/JPush"
-OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"iconv" -l"icucore" -l"resolv" -l"sqlite3" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "CFNetwork" -framework "CHIPageControl" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreTelephony" -framework "Foundation" -framework "GLKit" -framework "IQKeyboardManager" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "RSKImageCropper" -framework "Reachability" -framework "RongChatRoom" -framework "RongCustomerService" -framework "RongDiscussion" -framework "RongIMKit" -framework "RongIMLib" -framework "RongIMLibCore" -framework "RongLocation" -framework "RongPublicService" -framework "RongRTCLib" -framework "RongSight" -framework "SDWebImage" -framework "SSZipArchive" -framework "Security" -framework "SocketRocket" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "Whiteboard" -framework "YYModel" -framework "ZKCycleScrollView" -framework "dsBridge" -framework "iOS_KS3SDK" -weak_framework "UserNotifications"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/CHIPageControl/CHIPageControl.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper/RSKImageCropper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SocketRocket/SocketRocket.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Whiteboard/Whiteboard.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ZKCycleScrollView/ZKCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/dsBridge/dsBridge.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/iOS-KS3SDK/iOS_KS3SDK.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/JPush" "${PODS_ROOT}/Headers/Public/WechatOpenSDK"
+OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"iconv" -l"icucore" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "CFNetwork" -framework "CHIPageControl" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreTelephony" -framework "Foundation" -framework "GLKit" -framework "IQKeyboardManager" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "RSKImageCropper" -framework "Reachability" -framework "RongChatRoom" -framework "RongCustomerService" -framework "RongDiscussion" -framework "RongIMKit" -framework "RongIMLib" -framework "RongIMLibCore" -framework "RongLocation" -framework "RongPublicService" -framework "RongRTCLib" -framework "RongSight" -framework "SDWebImage" -framework "SSZipArchive" -framework "Security" -framework "SocketRocket" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" -framework "WebKit" -framework "Whiteboard" -framework "YYModel" -framework "ZKCycleScrollView" -framework "dsBridge" -framework "iOS_KS3SDK" -weak_framework "UserNotifications"
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/Assets.car


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/ChatAddressHeaderView.nib


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/Info.plist


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/KulexiuForStudent


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_group_portrait.png


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_group_portrait@2x.png


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_group_portrait@3x.png


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_portrait_msg.png


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_portrait_msg@2x.png


BIN
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/RongCloud.bundle/default_portrait_msg@3x.png


+ 76 - 21
KulexiuForStudent/build/Debug-iphonesimulator/KulexiuForStudent.app/_CodeSignature/CodeResources

@@ -66,7 +66,7 @@
 		</data>
 		<key>Assets.car</key>
 		<data>
-		qMpHN2/OxUwITqiOzNU5zm9xD7Q=
+		pb+h+Vqo+nZL/SGs+9biPsFO8eU=
 		</data>
 		<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib</key>
 		<data>
@@ -98,7 +98,7 @@
 		</data>
 		<key>ChatAddressHeaderView.nib</key>
 		<data>
-		FMPwM2NdSafUIxAevextFZgG3qs=
+		uQeeVv6/5pO1P7JigowP9/WG78Y=
 		</data>
 		<key>ChatComplainBodyView.nib</key>
 		<data>
@@ -981,6 +981,18 @@
 		<data>
 		11S9ull+RdyXGR71FaeupfkMkAU=
 		</data>
+		<key>Frameworks/iOS_KS3SDK.framework/Info.plist</key>
+		<data>
+		PsqhXu0Q2Q2xZyoaeYxxzoeld6g=
+		</data>
+		<key>Frameworks/iOS_KS3SDK.framework/_CodeSignature/CodeResources</key>
+		<data>
+		VcEsiqRrOSeGAGCvFp69a8TOTg0=
+		</data>
+		<key>Frameworks/iOS_KS3SDK.framework/iOS_KS3SDK</key>
+		<data>
+		VvBcZjxa98TCEfLnK3brcfVjNCo=
+		</data>
 		<key>GroupApplyChooseAllCell.nib</key>
 		<data>
 		4bahz95USq6F/xlJ3Ms8nMoqL7Q=
@@ -1035,11 +1047,11 @@
 		</data>
 		<key>HomeHotAlbumCell.nib/objects-12.3+.nib</key>
 		<data>
-		OVCjgc//7UFV4qa4yzBv/AMsgCw=
+		OufyVNvLjFcw/j1Tgpwn9yyx+3s=
 		</data>
 		<key>HomeHotAlbumCell.nib/runtime.nib</key>
 		<data>
-		FauplV0KEENFC6Cd/zf1OEZ1ubE=
+		JN5VCG5aGrWXojc5Jw6TGc3p8Zo=
 		</data>
 		<key>HomeHotAlbumView.nib</key>
 		<data>
@@ -1091,7 +1103,7 @@
 		</data>
 		<key>Info.plist</key>
 		<data>
-		jiUbrmG95pSXak7yXY6SRGS22xw=
+		1LG9h4oHZvzI2++UilkOr8ZlWM4=
 		</data>
 		<key>InstrumentChooseView.nib</key>
 		<data>
@@ -1193,6 +1205,14 @@
 		<data>
 		CrtWmQzSQtZUe7G/j8u4mYG4MhM=
 		</data>
+		<key>NotiferHeadView.nib</key>
+		<data>
+		S5KY7qkp7+cR7Sjx4oJM4Dyy/f4=
+		</data>
+		<key>NotiferMessageCell.nib</key>
+		<data>
+		wEt9g1vWhmb3DTXJryXj5l0gyVc=
+		</data>
 		<key>PasswordBodyView.nib</key>
 		<data>
 		/mVTnW3khVQBUk8PKUtApp2tVf8=
@@ -1691,15 +1711,15 @@
 		</data>
 		<key>RongCloud.bundle/default_group_portrait.png</key>
 		<data>
-		YBOUuDCREu+31U409zgcd/RZIm0=
+		+I7uxwOFpKJhPZPy1nKruw+nqjE=
 		</data>
 		<key>RongCloud.bundle/default_group_portrait@2x.png</key>
 		<data>
-		YBOUuDCREu+31U409zgcd/RZIm0=
+		2ZLtZXfQ+e9/Ru+pdF09qiBsaoU=
 		</data>
 		<key>RongCloud.bundle/default_group_portrait@3x.png</key>
 		<data>
-		GHwSe63hUaa+gq00IaBIpitrR6k=
+		1+4kYaMasQyeMqcEHgKKCUpVU6M=
 		</data>
 		<key>RongCloud.bundle/default_portrait.png</key>
 		<data>
@@ -1715,15 +1735,15 @@
 		</data>
 		<key>RongCloud.bundle/default_portrait_msg.png</key>
 		<data>
-		Mp4YM8oYtDRbFXvLHjCEuOtRGes=
+		3GOR2vFrsCuDkgSzcJVpVgjqRZo=
 		</data>
 		<key>RongCloud.bundle/default_portrait_msg@2x.png</key>
 		<data>
-		Mp4YM8oYtDRbFXvLHjCEuOtRGes=
+		hpdkI3uUbHlSsKP+OkB7DoRn+kE=
 		</data>
 		<key>RongCloud.bundle/default_portrait_msg@3x.png</key>
 		<data>
-		Ks8ADYMtz86qN4VtSXAwsaghk9E=
+		QNQgCyWEEDxycU4goXJT0NZXG9w=
 		</data>
 		<key>RongCloud.bundle/delete_message.png</key>
 		<data>
@@ -3847,7 +3867,7 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			rrF5cO9QE/6Ni7WDbi/IP6ZGRdJNMay8euF97AHxuoU=
+			2xb5gppuLWTSr49QJmlwxFCI5fbW9wqb3iNkgqotqF8=
 			</data>
 		</dict>
 		<key>Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib</key>
@@ -3903,7 +3923,7 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			IXG1UYv+BgAlSfIMsARM7alcWTvpH1XAY2f2tqn+y/o=
+			+lEBpoMins7NX0VtapGQ4srj+kpuoz5WiDdv9vx9IBM=
 			</data>
 		</dict>
 		<key>ChatComplainBodyView.nib</key>
@@ -5117,6 +5137,27 @@
 			bamziNbvVHUPkkqPM+M6YvnUhou9bFdZyhzOGucAy/A=
 			</data>
 		</dict>
+		<key>Frameworks/iOS_KS3SDK.framework/Info.plist</key>
+		<dict>
+			<key>hash2</key>
+			<data>
+			n6nZsZrqRPw7tGENA/aeU7Qnwu/PAny++T0jL9O7nd8=
+			</data>
+		</dict>
+		<key>Frameworks/iOS_KS3SDK.framework/_CodeSignature/CodeResources</key>
+		<dict>
+			<key>hash2</key>
+			<data>
+			5u6VND9kPN9qpN5PMWJGCcarzs4JawKCO1W0GXieDrA=
+			</data>
+		</dict>
+		<key>Frameworks/iOS_KS3SDK.framework/iOS_KS3SDK</key>
+		<dict>
+			<key>hash2</key>
+			<data>
+			OJ6AKoS5bmM5U5muFeP2sUvugnbLoLqdeWpqfvr376Y=
+			</data>
+		</dict>
 		<key>GroupApplyChooseAllCell.nib</key>
 		<dict>
 			<key>hash2</key>
@@ -5212,14 +5253,14 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			BevtexkPTrriE24YME7NiCd5XP1Vda7tE3DDTE/MM38=
+			fPdED6fdbt1iU1oRh9mjmWGZ1PADvXNKUuAd0wZ1Kw0=
 			</data>
 		</dict>
 		<key>HomeHotAlbumCell.nib/runtime.nib</key>
 		<dict>
 			<key>hash2</key>
 			<data>
-			l+uAesHAH1B27eEBqoC4Gwun1nVggMa2pxfelerYdVI=
+			xBSXL2n9zrS/RWCtSrzYOU1Zab62Rg2TcsgmVxN+Vp8=
 			</data>
 		</dict>
 		<key>HomeHotAlbumView.nib</key>
@@ -5481,6 +5522,20 @@
 			rm40JDktdr5vH3I8IPwYDC1xvnG4gCDQrc4wh3/tM3U=
 			</data>
 		</dict>
+		<key>NotiferHeadView.nib</key>
+		<dict>
+			<key>hash2</key>
+			<data>
+			hQ+XQ5+/pCVfD2JkSwM/CCvlc/29oissLEWCaFrGR0c=
+			</data>
+		</dict>
+		<key>NotiferMessageCell.nib</key>
+		<dict>
+			<key>hash2</key>
+			<data>
+			ktbej7p6AgVcig4z2noizUniXpmM8N4M8fxr5Dn9XAM=
+			</data>
+		</dict>
 		<key>PasswordBodyView.nib</key>
 		<dict>
 			<key>hash2</key>
@@ -6346,21 +6401,21 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			58FwdLOvDxc3sbp8xRlXV/l1Fbz19eRu5huqxVmXe6I=
+			S3eFNDb/9GVxYMg/929V4p/UeZtmyCu6LBCDEDUlOF8=
 			</data>
 		</dict>
 		<key>RongCloud.bundle/default_group_portrait@2x.png</key>
 		<dict>
 			<key>hash2</key>
 			<data>
-			58FwdLOvDxc3sbp8xRlXV/l1Fbz19eRu5huqxVmXe6I=
+			O77TiyjyDHiAyTZefJCqHrrBLs5DcQ5WwJ5ud+JTpAI=
 			</data>
 		</dict>
 		<key>RongCloud.bundle/default_group_portrait@3x.png</key>
 		<dict>
 			<key>hash2</key>
 			<data>
-			PFt2J6yqwf0n3aDiShvsKRbhMeMXtfqGGsS2bNvvLSI=
+			nSpAzUeCeiwkzSqwhY1Z+Onqgucf0vN6M9Ew5BKn7M4=
 			</data>
 		</dict>
 		<key>RongCloud.bundle/default_portrait.png</key>
@@ -6388,21 +6443,21 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			YZoY2hqvEZWO/wmYHD8luXD9dNhxSNnZfLwmDi8f0cs=
+			GMr4dMH302YdzW2PfzoS2SAVl9iUj7441WqmFnL6BVI=
 			</data>
 		</dict>
 		<key>RongCloud.bundle/default_portrait_msg@2x.png</key>
 		<dict>
 			<key>hash2</key>
 			<data>
-			YZoY2hqvEZWO/wmYHD8luXD9dNhxSNnZfLwmDi8f0cs=
+			rFifEFhjTgPxZiO/4OC/CZ3mkQqiyirbYpDvBmTNkv4=
 			</data>
 		</dict>
 		<key>RongCloud.bundle/default_portrait_msg@3x.png</key>
 		<dict>
 			<key>hash2</key>
 			<data>
-			v9uYSmd5+l0W/xPe/qyTcrbQScFHeNqtbn1Jd8FUnlY=
+			XT3x6rlgrBILb2/JblPv2ExslQGGgzMOO6NgjwmAA9Y=
 			</data>
 		</dict>
 		<key>RongCloud.bundle/delete_message.png</key>

BIN
KulexiuForStudent/build/Debug-iphonesimulator/Pods_KulexiuForStudent.framework/Pods_KulexiuForStudent


BIN
KulexiuForStudent/build/Debug-iphonesimulator/Pods_KulexiuForStudent.framework/_CodeSignature/CodeDirectory


BIN
KulexiuForStudent/build/Debug-iphonesimulator/Pods_KulexiuForStudent.framework/_CodeSignature/CodeRequirements-1


+ 18 - 0
KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/DerivedSources/Entitlements-Simulated.plist

@@ -4,5 +4,23 @@
 <dict>
 	<key>application-identifier</key>
 	<string>B2AP53HHTU.com.Colexiu.KulexiuForStudent</string>
+	<key>com.apple.developer.associated-domains</key>
+	<array/>
+	<key>com.apple.developer.icloud-container-identifiers</key>
+	<array>
+		<string>iCloud.com.Colexiu.KulexiuForTeacher</string>
+	</array>
+	<key>com.apple.developer.icloud-services</key>
+	<array>
+		<string>CloudDocuments</string>
+	</array>
+	<key>com.apple.developer.ubiquity-container-identifiers</key>
+	<array>
+		<string>iCloud.com.Colexiu.KulexiuForTeacher</string>
+	</array>
+	<key>keychain-access-groups</key>
+	<array>
+		<string>B2AP53HHTU.com.Colexiu.Kulexiu</string>
+	</array>
 </dict>
 </plist>

+ 1 - 0
KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/InputFileList-7FA65C60616F879A71C69DE3-Pods-KulexiuForStudent-frameworks-Debug-input-files-6f44eee03c36c5950be11e25ec226c7b-resolved.xcfilelist

@@ -17,6 +17,7 @@
 /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/build/Debug-iphonesimulator/YYModel/YYModel.framework
 /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/build/Debug-iphonesimulator/ZKCycleScrollView/ZKCycleScrollView.framework
 /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/build/Debug-iphonesimulator/dsBridge/dsBridge.framework
+/Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/build/Debug-iphonesimulator/iOS-KS3SDK/iOS_KS3SDK.framework
 /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/build/Debug-iphonesimulator/XCFrameworkIntermediates/RongCloudIM/ChatRoom/RongChatRoom.framework/RongChatRoom
 /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/build/Debug-iphonesimulator/XCFrameworkIntermediates/RongCloudIM/CustomerService/RongCustomerService.framework/RongCustomerService
 /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/build/Debug-iphonesimulator/XCFrameworkIntermediates/RongCloudIM/Discussion/RongDiscussion.framework/RongDiscussion

BIN
KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/KulexiuForStudent-project-headers.hmap


+ 18 - 0
KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/KulexiuForStudent.app-Simulated.xcent

@@ -4,5 +4,23 @@
 <dict>
 	<key>application-identifier</key>
 	<string>B2AP53HHTU.com.Colexiu.KulexiuForStudent</string>
+	<key>com.apple.developer.associated-domains</key>
+	<array/>
+	<key>com.apple.developer.icloud-container-identifiers</key>
+	<array>
+		<string>iCloud.com.Colexiu.KulexiuForTeacher</string>
+	</array>
+	<key>com.apple.developer.icloud-services</key>
+	<array>
+		<string>CloudDocuments</string>
+	</array>
+	<key>com.apple.developer.ubiquity-container-identifiers</key>
+	<array>
+		<string>iCloud.com.Colexiu.KulexiuForTeacher</string>
+	</array>
+	<key>keychain-access-groups</key>
+	<array>
+		<string>B2AP53HHTU.com.Colexiu.Kulexiu</string>
+	</array>
 </dict>
 </plist>

+ 1 - 0
KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/Objects-normal/x86_64/ALCalendarCell.d

@@ -31,6 +31,7 @@ dependencies: \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Module/SealClass/Util/Macro.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/GifRefresh/KSGifRefreshHeader.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/GifRefresh/KSGifRefreshFooter.h \
+  /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Base/KSUploadManager.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/Extension/UIView+SubViewExtension.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/Category/NSObject+KSDateFormatter.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/SafeControl/KSSafeObject.h \

+ 1 - 0
KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/Objects-normal/x86_64/ALCalendarCollectionView.d

@@ -31,6 +31,7 @@ dependencies: \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Module/SealClass/Util/Macro.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/GifRefresh/KSGifRefreshHeader.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/GifRefresh/KSGifRefreshFooter.h \
+  /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Base/KSUploadManager.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/Extension/UIView+SubViewExtension.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/Category/NSObject+KSDateFormatter.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/SafeControl/KSSafeObject.h \

+ 1 - 0
KulexiuForStudent/build/KulexiuForStudent.build/Debug-iphonesimulator/KulexiuForStudent.build/Objects-normal/x86_64/ALCalendarConfig.d

@@ -31,6 +31,7 @@ dependencies: \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Module/SealClass/Util/Macro.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/GifRefresh/KSGifRefreshHeader.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/GifRefresh/KSGifRefreshFooter.h \
+  /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Base/KSUploadManager.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/Extension/UIView+SubViewExtension.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/Category/NSObject+KSDateFormatter.h \
   /Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Tools/SafeControl/KSSafeObject.h \

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