Browse Source

首页显示审核版本+ 直播关闭退出消息

Steven 2 years ago
parent
commit
b28aaf3cb9
30 changed files with 593 additions and 875 deletions
  1. 10 6
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 112 67
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m
  5. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  6. 4 0
      KulexiuForTeacher/KulexiuForTeacher/Info.plist
  7. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatConversationViewController.m
  8. 3 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/GroupSettingBodyView.xib
  9. 4 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Classroom/View/DownloadView/DownloadStatusCell.xib
  10. 4 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Classroom/View/MemberList/MemberListCell.xib
  11. 17 44
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m
  12. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/MyVideoCourseBodyView.m
  13. 32 32
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/NotiferMessage/Controller/NotiferMessageViewController.m
  14. 2 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/ScanView/Controller/KSScanViewController.m
  15. 26 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeActionView.h
  16. 53 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeActionView.m
  17. 108 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeActionView.xib
  18. 4 15
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeBodyView.h
  19. 132 39
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeBodyView.m
  20. 0 600
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeBodyView.xib
  21. 18 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m
  22. 0 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/LiveRoomMessage/KSChatroomMessageCenter.h
  23. 0 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/LiveRoomMessage/KSChatroomMessageCenter.m
  24. 0 17
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/LiveRoomMessage/RCChatroomClose.h
  25. 0 32
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/LiveRoomMessage/RCChatroomClose.m
  26. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/LiveSeatApplyView.m
  27. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfoManager.h
  28. 53 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfoManager.m
  29. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/Controller/VideoCourseViewController.m
  30. 3 0
      README.md

+ 10 - 6
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -436,7 +436,6 @@
 		BC023803286594EA005560CA /* KSTipsAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = BC023800286594EA005560CA /* KSTipsAlert.m */; };
 		BC0238062865C4F6005560CA /* KSLiveChatroomMemberUp.m in Sources */ = {isa = PBXBuildFile; fileRef = BC0238052865C4F6005560CA /* KSLiveChatroomMemberUp.m */; };
 		BC0238092865C601005560CA /* KSRCShopRushMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = BC0238082865C601005560CA /* KSRCShopRushMessage.m */; };
-		BC02380C2865C610005560CA /* RCChatroomClose.m in Sources */ = {isa = PBXBuildFile; fileRef = BC02380B2865C610005560CA /* RCChatroomClose.m */; };
 		BC02380F2865C6F9005560CA /* RCChatroomLikeCount.m in Sources */ = {isa = PBXBuildFile; fileRef = BC02380D2865C6F9005560CA /* RCChatroomLikeCount.m */; };
 		BC063D842823CEFE000EB350 /* AddressListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC063D822823CEFD000EB350 /* AddressListModel.m */; };
 		BC0A2282284751DF0065C1AB /* MetronomeAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC0A2278284751DF0065C1AB /* MetronomeAlertView.m */; };
@@ -556,6 +555,8 @@
 		BC76146D280D571B0080FD1F /* HomeworkVideoView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC76146C280D571B0080FD1F /* HomeworkVideoView.m */; };
 		BC76146F280D57220080FD1F /* HomeworkVideoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC76146E280D57220080FD1F /* HomeworkVideoView.xib */; };
 		BC7663092827C95200C91A1D /* KSUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7663082827C95200C91A1D /* KSUploadManager.m */; };
+		BC7705FD287676D3003EFA7F /* HomeActionView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7705FC287676D3003EFA7F /* HomeActionView.m */; };
+		BC7705FF287676DC003EFA7F /* HomeActionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7705FE287676DC003EFA7F /* HomeActionView.xib */; };
 		BC7CFF9F2817CBD400CAEB21 /* WithdrawViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7CFF9E2817CBD400CAEB21 /* WithdrawViewController.m */; };
 		BC7CFFA22817D72200CAEB21 /* IncomeListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7CFFA02817D72100CAEB21 /* IncomeListModel.m */; };
 		BC7CFFA52817E37300CAEB21 /* IncomeCountViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7CFFA42817E37300CAEB21 /* IncomeCountViewController.m */; };
@@ -1672,8 +1673,6 @@
 		BC0238052865C4F6005560CA /* KSLiveChatroomMemberUp.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSLiveChatroomMemberUp.m; sourceTree = "<group>"; };
 		BC0238072865C600005560CA /* KSRCShopRushMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSRCShopRushMessage.h; sourceTree = "<group>"; };
 		BC0238082865C601005560CA /* KSRCShopRushMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSRCShopRushMessage.m; sourceTree = "<group>"; };
-		BC02380A2865C610005560CA /* RCChatroomClose.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCChatroomClose.h; sourceTree = "<group>"; };
-		BC02380B2865C610005560CA /* RCChatroomClose.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCChatroomClose.m; sourceTree = "<group>"; };
 		BC02380D2865C6F9005560CA /* RCChatroomLikeCount.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCChatroomLikeCount.m; sourceTree = "<group>"; };
 		BC02380E2865C6F9005560CA /* RCChatroomLikeCount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCChatroomLikeCount.h; sourceTree = "<group>"; };
 		BC063D822823CEFD000EB350 /* AddressListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddressListModel.m; sourceTree = "<group>"; };
@@ -1875,6 +1874,9 @@
 		BC76146E280D57220080FD1F /* HomeworkVideoView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeworkVideoView.xib; sourceTree = "<group>"; };
 		BC7663072827C95200C91A1D /* KSUploadManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSUploadManager.h; sourceTree = "<group>"; };
 		BC7663082827C95200C91A1D /* KSUploadManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSUploadManager.m; sourceTree = "<group>"; };
+		BC7705FB287676D3003EFA7F /* HomeActionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeActionView.h; sourceTree = "<group>"; };
+		BC7705FC287676D3003EFA7F /* HomeActionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeActionView.m; sourceTree = "<group>"; };
+		BC7705FE287676DC003EFA7F /* HomeActionView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeActionView.xib; sourceTree = "<group>"; };
 		BC7CFF9D2817CBD400CAEB21 /* WithdrawViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WithdrawViewController.h; sourceTree = "<group>"; };
 		BC7CFF9E2817CBD400CAEB21 /* WithdrawViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WithdrawViewController.m; sourceTree = "<group>"; };
 		BC7CFFA02817D72100CAEB21 /* IncomeListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncomeListModel.m; sourceTree = "<group>"; };
@@ -2593,8 +2595,6 @@
 				BCD457BD2865694A0010B493 /* KSRCPauseLiveMessage.m */,
 				BC0238072865C600005560CA /* KSRCShopRushMessage.h */,
 				BC0238082865C601005560CA /* KSRCShopRushMessage.m */,
-				BC02380A2865C610005560CA /* RCChatroomClose.h */,
-				BC02380B2865C610005560CA /* RCChatroomClose.m */,
 				BC02380E2865C6F9005560CA /* RCChatroomLikeCount.h */,
 				BC02380D2865C6F9005560CA /* RCChatroomLikeCount.m */,
 			);
@@ -3691,6 +3691,9 @@
 				2723B68527F1642B00E0B90B /* HomeBodyView.h */,
 				2723B68627F1642B00E0B90B /* HomeBodyView.m */,
 				2723B68827F1643B00E0B90B /* HomeBodyView.xib */,
+				BC7705FB287676D3003EFA7F /* HomeActionView.h */,
+				BC7705FC287676D3003EFA7F /* HomeActionView.m */,
+				BC7705FE287676DC003EFA7F /* HomeActionView.xib */,
 				2723B68A27F1685500E0B90B /* HomeNavView.h */,
 				2723B68B27F1685500E0B90B /* HomeNavView.m */,
 				2723B68D27F1686100E0B90B /* HomeNavView.xib */,
@@ -6208,6 +6211,7 @@
 				BC7CFFB62817E90700CAEB21 /* KSSegView.xib in Resources */,
 				2779362227E334470010E277 /* KSUpdateAlert.xib in Resources */,
 				277D433127E9A50800107DB7 /* PhoneCheckBodyView.xib in Resources */,
+				BC7705FF287676DC003EFA7F /* HomeActionView.xib in Resources */,
 				BC5EB5C12804085500B4A3B0 /* MyStyleVideoCell.xib in Resources */,
 				BC4BCE772823AA3F00522C8B /* areainfo.json in Resources */,
 				BCF1BA5627F5CBA100FA36C4 /* LiveSeatApplyView.xib in Resources */,
@@ -6577,7 +6581,6 @@
 				2779361227E32BFE0010E277 /* CourseViewController.m in Sources */,
 				2755C07027EC7F21007D9070 /* ChatComplainBodyView.m in Sources */,
 				2755C06727EC71BB007D9070 /* GroupSettingBodyView.m in Sources */,
-				BC02380C2865C610005560CA /* RCChatroomClose.m in Sources */,
 				BCA353DF285976CF00377661 /* MusicRoomCourseInfoCell.m in Sources */,
 				BCA9CE2E27FD8A9200D558C6 /* AccompanyNavView.m in Sources */,
 				BCC9F44727F69BD200647449 /* ClassSongMessage.m in Sources */,
@@ -6746,6 +6749,7 @@
 				BC1365C4280D44EB00EB03E2 /* NotiferMessageViewController.m in Sources */,
 				27A54CF127E9BD3B007309A3 /* FeedbackViewController.m in Sources */,
 				277932E527E310070010E277 /* TZVideoCropController.m in Sources */,
+				BC7705FD287676D3003EFA7F /* HomeActionView.m in Sources */,
 				275E3DE127F467410010EC30 /* KSChatInputView.m in Sources */,
 				2779335527E316DD0010E277 /* WMPlayerModel.m in Sources */,
 				BCA7C34328476533009D20EC /* KSBoardAddStaffView.m in Sources */,

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


+ 112 - 67
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -607,8 +607,8 @@
             filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1828"
-            endingLineNumber = "1828"
+            startingLineNumber = "1844"
+            endingLineNumber = "1844"
             landmarkName = "-showAnimationView:showMessag:"
             landmarkType = "7">
          </BreakpointContent>
@@ -632,22 +632,6 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "F7171A21-1BB6-44FD-88C5-DDEDFC27482C"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "613"
-            endingLineNumber = "613"
-            landmarkName = "-chooseMediaWithType:maxCount:bucket:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
             uuid = "A2B1BE97-A470-4E36-A860-CEC997E807A0"
             shouldBeEnabled = "No"
             ignoreCount = "0"
@@ -751,14 +735,11 @@
             symbolName = "*0x1dc7f5eb4">
             <Locations>
                <Location
-                  uuid = "856137FD-FD7E-4836-B7BA-53ECC0F6F050 - 383cc73525a6ee0a"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "_os_unfair_lock_corruption_abort"
-                  moduleName = "libsystem_platform.dylib"
                   usesParentBreakpointCondition = "Yes"
-                  offsetFromSymbolStart = "52">
+                  offsetFromSymbolStart = "0">
                </Location>
             </Locations>
          </BreakpointContent>
@@ -798,31 +779,31 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "BCEF1D87-B72E-46C8-A8E9-2F911ACE628F"
+            uuid = "A6E13BFE-9049-4248-AA95-75744735E63C"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m"
+            filePath = "KulexiuForTeacher/Module/Mine/LiveList/Controller/LiveRecordViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "537"
-            endingLineNumber = "537"
-            landmarkName = "-handleScriptMessageSource:"
+            startingLineNumber = "32"
+            endingLineNumber = "32"
+            landmarkName = "-requestData"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "A6E13BFE-9049-4248-AA95-75744735E63C"
-            shouldBeEnabled = "Yes"
+            uuid = "22B509ED-2A9F-4D2C-857A-4518277045D3"
+            shouldBeEnabled = "No"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Mine/LiveList/Controller/LiveRecordViewController.m"
+            filePath = "KulexiuForTeacher/Module/Home/Homework/View/HomeworkBodyView.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "32"
-            endingLineNumber = "32"
+            startingLineNumber = "111"
+            endingLineNumber = "111"
             landmarkName = "-requestData"
             landmarkType = "7">
          </BreakpointContent>
@@ -830,112 +811,176 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "22B509ED-2A9F-4D2C-857A-4518277045D3"
+            uuid = "E460B4E7-C941-40E4-BCBF-5810C73A6B49"
             shouldBeEnabled = "No"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/Homework/View/HomeworkBodyView.m"
+            filePath = "KulexiuForTeacher/Module/Mine/LiveList/View/LiveVideoListView.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "111"
-            endingLineNumber = "111"
-            landmarkName = "-requestData"
+            startingLineNumber = "90"
+            endingLineNumber = "90"
+            landmarkName = "-collectionView:didSelectItemAtIndexPath:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "26167999-CC0F-4181-993A-4D5DC14B0B56"
+            uuid = "9022CD2A-1D2F-452B-A763-71F6310561C8"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMienBodyView.m"
+            filePath = "KulexiuForTeacher/Module/Home/NotiferMessage/Controller/NotiferMessageViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "79"
-            endingLineNumber = "79"
-            landmarkName = "-requestData"
+            startingLineNumber = "226"
+            endingLineNumber = "226"
+            landmarkName = "-toDetailViewWithTypeString:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "E460B4E7-C941-40E4-BCBF-5810C73A6B49"
+            uuid = "DA157C6E-1086-4E8C-A158-8DE61D47470C"
             shouldBeEnabled = "No"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Mine/LiveList/View/LiveVideoListView.m"
+            filePath = "KulexiuForTeacher/Module/Home/Music/View/MyMusicBodyView.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "90"
-            endingLineNumber = "90"
-            landmarkName = "-collectionView:didSelectItemAtIndexPath:"
+            startingLineNumber = "114"
+            endingLineNumber = "114"
+            landmarkName = "-requestData"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "4DFAF400-D712-455F-909E-F2148BC26510"
+            uuid = "E9236BDE-6CC1-4EC0-A183-45AA8D4266B0"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/NotiferMessage/Controller/NotiferMessageViewController.m"
+            filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "154"
-            endingLineNumber = "154"
-            landmarkName = "-requestData"
+            startingLineNumber = "1755"
+            endingLineNumber = "1755"
+            landmarkName = "-refreshSeatArrayRemoveMember:member:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "9022CD2A-1D2F-452B-A763-71F6310561C8"
+            uuid = "314A1800-5434-452D-B489-CCF5DE5F1D5F"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/NotiferMessage/Controller/NotiferMessageViewController.m"
+            filePath = "KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "226"
-            endingLineNumber = "226"
-            landmarkName = "-toDetailViewWithTypeString:"
+            startingLineNumber = "583"
+            endingLineNumber = "583"
+            landmarkName = "-chooseFileWithType:maxNumber:bucket:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "DA157C6E-1086-4E8C-A158-8DE61D47470C"
-            shouldBeEnabled = "No"
+            uuid = "214D9110-EB2F-40D9-91D1-2CB0E5D5FDCB"
+            shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/Music/View/MyMusicBodyView.m"
+            filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "114"
-            endingLineNumber = "114"
-            landmarkName = "-requestData"
+            startingLineNumber = "1299"
+            endingLineNumber = "1299"
+            landmarkName = "-quitClassroomNotifer"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "E9236BDE-6CC1-4EC0-A183-45AA8D4266B0"
+            uuid = "4462B807-FAFE-4E5A-9F0D-450B5EE4A345"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Live/LiveRoomMessage/RCChatroomClose.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "14"
+            endingLineNumber = "14"
+            landmarkName = "-encode"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "94CE73C4-2B00-4F52-83F1-11CEE46915D2"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1739"
-            endingLineNumber = "1739"
-            landmarkName = "-refreshSeatArrayRemoveMember:member:"
+            startingLineNumber = "1199"
+            endingLineNumber = "1199"
+            landmarkName = "-didReceiveMessageNotification:"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "94CE73C4-2B00-4F52-83F1-11CEE46915D2 - ffb5e0723c52ba43"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "-[LiveRoomViewController didReceiveMessageNotification:]"
+                  moduleName = "KulexiuForTeacher"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1209"
+                  endingLineNumber = "1209"
+                  offsetFromSymbolStart = "1104">
+               </Location>
+               <Location
+                  uuid = "94CE73C4-2B00-4F52-83F1-11CEE46915D2 - ffb5e0723c52ba43"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "-[LiveRoomViewController didReceiveMessageNotification:]"
+                  moduleName = "KulexiuForTeacher"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1209"
+                  endingLineNumber = "1209"
+                  offsetFromSymbolStart = "1108">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "02023139-0168-42A5-A715-1A21596EF07F"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "1104"
+            endingLineNumber = "1104"
+            landmarkName = "-didReceiveMessageNotification:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

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

@@ -534,7 +534,7 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
         }
     }
     else if ([[parm stringValueForKey:@"api"] isEqualToString:@"openPageSuccess"]) {
-//        [self backAction];
+        [self backAction];
     }
 }
 

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

@@ -1193,7 +1193,7 @@
     [parm setValue:coverPic forKey:@"coverPic"];
     [parm setValue:liveRemark forKey:@"liveRemark"];
     [parm setValue:roomTitle forKey:@"roomTitle"];
-    [parm setValue:@(liveTime) forKey:@"liveTime"];
+    [parm setValue:@(5) forKey:@"liveTime"];
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 

+ 4 - 0
KulexiuForTeacher/KulexiuForTeacher/Info.plist

@@ -72,5 +72,9 @@
 		<key>NSAllowsArbitraryLoads</key>
 		<true/>
 	</dict>
+	<key>UIBackgroundModes</key>
+	<array>
+		<string>remote-notification</string>
+	</array>
 </dict>
 </plist>

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

@@ -100,7 +100,7 @@
     [self leftRightButton];
     [self refreshUserInfoOrGroupInfo];
     self.isFirstLoad = YES;
-    [self.chatSessionInputBarControl.pluginBoardView removeItemAtIndex:2];
+//    [self.chatSessionInputBarControl.pluginBoardView removeItemAtIndex:2];
 }
 
 - (void)viewWillAppear:(BOOL)animated {

+ 3 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/GroupSettingBodyView.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="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -364,7 +364,7 @@
                 </view>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9Zk-Ss-xf8">
                     <rect key="frame" x="28" y="643" width="358" height="44"/>
-                    <color key="backgroundColor" red="0.0039215686269999999" green="0.75686274509999996" blue="0.70980392160000005" alpha="1" colorSpace="calibratedRGB"/>
+                    <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="calibratedRGB"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="44" id="zlf-6G-YkC"/>
                     </constraints>

+ 4 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Classroom/View/DownloadView/DownloadStatusCell.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17126"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -17,7 +17,7 @@
                 <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="student_logo" translatesAutoresizingMaskIntoConstraints="NO" id="8v7-43-QLC">
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="8v7-43-QLC">
                         <rect key="frame" x="15" y="4" width="36" height="36"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="36" id="0MC-zZ-22w"/>
@@ -67,6 +67,6 @@
         </tableViewCell>
     </objects>
     <resources>
-        <image name="student_logo" width="42" height="42"/>
+        <image name="user_default_avatal" width="52" height="52"/>
     </resources>
 </document>

+ 4 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Classroom/View/MemberList/MemberListCell.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="18122" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="18093"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -17,7 +17,7 @@
                 <rect key="frame" x="0.0" y="0.0" width="320" height="50"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="student_logo" translatesAutoresizingMaskIntoConstraints="NO" id="ojL-FB-WJJ">
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="ojL-FB-WJJ">
                         <rect key="frame" x="10" y="5" width="40" height="40"/>
                         <constraints>
                             <constraint firstAttribute="height" constant="40" id="w92-Ae-u7g"/>
@@ -83,6 +83,6 @@
     <resources>
         <image name="handup_image" width="22" height="22"/>
         <image name="memberMic_on" width="22" height="22"/>
-        <image name="student_logo" width="42" height="42"/>
+        <image name="user_default_avatal" width="52" height="52"/>
     </resources>
 </document>

+ 17 - 44
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m

@@ -173,51 +173,8 @@
 }
 
 - (void)configHeadSource:(NSDictionary *)parm {
-    self.bodyView.hideCount = NO;
-    
-    NSInteger courseCount = [parm integerValueForKey:@"courseSchedule"];
-    NSString *courseCountContent = [NSString stringWithFormat:@"%zd 课时",courseCount];
-    BOOL needCourseTips = courseCount == 0 ? NO : YES;
-    self.bodyView.courseCountLabel.attributedText = [self createAttrStringWithDesc:courseCountContent valueString:[NSString stringWithFormat:@"%zd",courseCount] needTips:needCourseTips];
-    
-    NSInteger courseHomework = [parm integerValueForKey:@"courseHomework"];
-    NSString *courseHomeworkContent = [NSString stringWithFormat:@"本周共 %zd 节课",courseHomework];
-    BOOL needHomeworkTips = courseHomework == 0 ? NO : YES;
-    self.bodyView.homeworkCount.attributedText = [self createAttrStringWithDesc:courseHomeworkContent valueString:[NSString stringWithFormat:@"%zd",courseHomework] needTips:needHomeworkTips];
-    
-    NSInteger courseScheduleReplied = [parm integerValueForKey:@"courseScheduleReplied"];
-    NSString *courseScheduleRepliedContent = [NSString stringWithFormat:@"剩余 %zd 节",courseScheduleReplied];
-    BOOL needEvaluateTips = courseScheduleReplied == 0 ? NO : YES;
-    self.bodyView.evaluateCountLabel.attributedText = [self createAttrStringWithDesc:courseScheduleRepliedContent valueString:[NSString stringWithFormat:@"%zd",courseScheduleReplied] needTips:needEvaluateTips];
-    
-    NSInteger musicSheet = [parm integerValueForKey:@"musicSheet"];
-    NSString *musicSheetContent = [NSString stringWithFormat:@"共 %zd 支",musicSheet];
-    BOOL needMusicSheetTips = musicSheet == 0 ? NO : YES;
-    self.bodyView.musicCountLabel.attributedText = [self createAttrStringWithDesc:musicSheetContent valueString:[NSString stringWithFormat:@"%zd",musicSheet] needTips:needMusicSheetTips];
-    
-    NSInteger studentReplied = [parm integerValueForKey:@"studentReplied"];
-    NSString *studentRepliedContent = [NSString stringWithFormat:@"%zd 个评价",studentReplied];
-    BOOL needStudentRepliedTips = studentReplied == 0 ? NO : YES;
-    self.bodyView.receiveCountLabel.attributedText = [self createAttrStringWithDesc:studentRepliedContent valueString:[NSString stringWithFormat:@"%zd",studentReplied] needTips:needStudentRepliedTips];
-    
-    double decimal = [parm doubleValueForKey:@"decimal"];
-    NSString *decimalContent = [NSString stringWithFormat:@"%.2f 元",decimal];
-    BOOL needDecimalTips = decimal == 0 ? NO : YES;
-    self.bodyView.amountLabel.attributedText = [self createAttrStringWithDesc:decimalContent valueString:[NSString stringWithFormat:@"%.2f",decimal] needTips:needDecimalTips];
-    
-    NSInteger pianoTime = [parm integerValueForKey:@"pianoTime"];
-    NSString *pianoTimeContent = [NSString stringWithFormat:@"%zd 分钟",pianoTime];
-    BOOL needPianoTimeTips = pianoTime == 0 ? NO : YES;
-    self.bodyView.timeCountLabel.attributedText = [self createAttrStringWithDesc:pianoTimeContent valueString:[NSString stringWithFormat:@"%zd",pianoTime] needTips:needPianoTimeTips];
-    
-}
 
-- (NSMutableAttributedString *)createAttrStringWithDesc:(NSString *)desc valueString:(NSString *)valueString needTips:(BOOL)needTips {
-    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12.0f], NSForegroundColorAttributeName:HexRGB(0x999999)}];
-    if (needTips) {
-        [attr addAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xff5106)} range:[desc rangeOfString:valueString]];
-    }
-    return attr;
+    [self.bodyView configSource:parm];
 }
 
 
@@ -296,6 +253,7 @@
 - (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
     [self requestUserInfo];
+    [self requestUserMemo];
     [self requestCountMessage];
     [self requestNotice];
     [self requestRecentCourse];
@@ -310,6 +268,21 @@
     [appDelegate appTrackActionAuth];
 }
 
+
+- (void)requestUserMemo {
+    [[UserInfoManager shareInstance] requsetconfigCallback:^(BOOL success) {
+        [self refreshBodyView:success];
+    }];
+}
+
+- (void)refreshBodyView:(BOOL)isMemo {
+    self.bodyView.isMemo = isMemo;
+    CGFloat contentMinHeight = [_bodyView getViewHeight];
+    [self.bodyView mas_updateConstraints:^(MASConstraintMaker *make) {
+        make.height.mas_equalTo(contentMinHeight);
+    }];
+}
+
 - (void)requestUnreadCount {
     [KSNetworkingManager queryCountOfUnreadRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/MyVideoCourseBodyView.m

@@ -377,7 +377,7 @@
         return @"您已提交认证申请,请耐心等待审核结果~";
     }
     else {
-        return @"您还没有完成老师认证,认证后才可创建直播课哦~";
+        return @"您还没有完成老师认证,认证后才可创建视频课哦~";
     }
 }
 

+ 32 - 32
KulexiuForTeacher/KulexiuForTeacher/Module/Home/NotiferMessage/Controller/NotiferMessageViewController.m

@@ -224,41 +224,41 @@
 
 - (void)toDetailViewWithTypeString:(NSString *)memo {
     if (![NSString isEmptyString:memo]) {
-        NSString *headStr = [[memo componentsSeparatedByString:@"?"] firstObject];
-        if ([headStr isEqualToString:@"buyPractice"] || [headStr isEqualToString:@"courseRemind"]) { // 课表
-            [self toCourseTable];
-        }
-        else if ([headStr isEqualToString:@"evaluate"]) { // 评价页面
-            ReceiveEvaluateListController *ctrl = [[ReceiveEvaluateListController alloc] init];
-            [self.navigationController pushViewController:ctrl animated:YES];
-        }
-        else if ([headStr isEqualToString:@"H5"]) { // web
-            NSString *valueStr = [[memo componentsSeparatedByString:@"H5?"] lastObject];
-            KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
-            webCtrl.url = valueStr;
-            CustomNavViewController *navCtrl = self.tabBarController.selectedViewController;
-            [navCtrl pushViewController:webCtrl animated:YES];
-        }
-        else if ([headStr isEqualToString:@"homework"]) { // 作业详情
-            NSString *valueStr = [[memo componentsSeparatedByString:@"homework?"] lastObject];
-            NSArray *parmArray = [valueStr componentsSeparatedByString:@"&"];
-            NSString *courseId = nil;
-            NSString *studentId = nil;
-            for (NSString *subStr in parmArray) {
-                if ([subStr containsString:@"courseId"]) {
-                    courseId = [[subStr componentsSeparatedByString:@"="] lastObject];
+        NSData *jsonData = [memo mj_JSONData];
+        NSError *error;
+        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
+        if (!error) {
+            NSString *action = [dict stringValueForKey:@"action"];
+            if ([action isEqualToString:@"app"]) {
+                NSString *pageType = [dict stringValueForKey:@"pageTag"];
+                if ([pageType isEqualToString:@"buyPractice"] || [pageType isEqualToString:@"courseRemind"]) {
+                    [self toCourseTable];
+                }
+                else if ([pageType isEqualToString:@"evaluate"]) {
+                    ReceiveEvaluateListController *ctrl = [[ReceiveEvaluateListController alloc] init];
+                    [self.navigationController pushViewController:ctrl animated:YES];
                 }
-                if ([subStr containsString:@"studentId"]) {
-                    studentId = [[subStr componentsSeparatedByString:@"="] lastObject];
+                else if ([pageType isEqualToString:@"homework"]) {
+                    NSString *parmString = [dict stringValueForKey:@"params"];
+                    NSData *parmData = [parmString mj_JSONData];
+                    NSDictionary *parm = [NSJSONSerialization JSONObjectWithData:parmData options:NSJSONReadingMutableContainers error:&error];
+                    if (!error) {
+                        HomeworkDetailViewController *detailVC = [[HomeworkDetailViewController alloc] init];
+                        detailVC.courseId = [parm stringValueForKey:@"courseId"];
+                        detailVC.studentId = [parm stringValueForKey:@"studentId"];
+                        [self.navigationController pushViewController:detailVC animated:YES];
+                    }
+                }
+            }
+            else {
+                NSString *webUrl = [dict stringValueForKey:@"url"];
+                if (![NSString isEmptyString:webUrl]) {
+                    KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
+                    webCtrl.url = webUrl;
+                    CustomNavViewController *navCtrl = self.tabBarController.selectedViewController;
+                    [navCtrl pushViewController:webCtrl animated:YES];
                 }
             }
-            HomeworkDetailViewController *detailVC = [[HomeworkDetailViewController alloc] init];
-            detailVC.courseId = courseId;
-            detailVC.studentId = studentId;
-            [self.navigationController pushViewController:detailVC animated:YES];
-        }
-        else if ([headStr isEqualToString:@"homework"]) {
-            
         }
     }
 }

+ 2 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Home/ScanView/Controller/KSScanViewController.m

@@ -94,7 +94,7 @@
 
 - (void)dealWithCheckSource:(NSString *)result {
     if (result) {
-        if ([result containsString:@"http://"] || [result containsString:@"https://"]) {
+        if ([result containsString:hostURL]) {
             KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
             webCtrl.url = result;
             [self.navigationController pushViewController:webCtrl animated:YES];
@@ -107,7 +107,7 @@
 
 - (void)backPreView {
     MJWeakSelf;
-    [self KSShowMsg:@"无法识别" promptCompletion:^{
+    [self KSShowMsg:@"请扫描酷乐秀二维码" promptCompletion:^{
         [weakSelf.navigationController popViewControllerAnimated:YES];
     }];
 }

+ 26 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeActionView.h

@@ -0,0 +1,26 @@
+//
+//  HomeActionView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/7/7.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef void(^HomeActionCallback)(NSInteger actionIndex);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HomeActionView : UIView
+
+
+@property (weak, nonatomic) IBOutlet UILabel *firstDescLabel;
+
+
++ (instancetype)shareInstance;
+
+- (void)configWithName:(NSString *)actionName firstDesc:(NSString *)firstDesc imageName:(NSString *)actionImage index:(NSInteger)actionIndex callback:(HomeActionCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 53 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeActionView.m

@@ -0,0 +1,53 @@
+//
+//  HomeActionView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/7/7.
+//
+
+#import "HomeActionView.h"
+
+@interface HomeActionView ()
+
+@property (weak, nonatomic) IBOutlet UILabel *actionNameLabel;
+
+@property (weak, nonatomic) IBOutlet UIImageView *actionImage;
+
+@property (weak, nonatomic) IBOutlet UIButton *actionButton;
+
+@property (nonatomic, copy) HomeActionCallback callback;
+@end
+
+@implementation HomeActionView
+
++ (instancetype)shareInstance {
+    HomeActionView *view = [[[NSBundle mainBundle] loadNibNamed:@"HomeActionView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)configWithName:(NSString *)actionName firstDesc:(NSString *)firstDesc imageName:(NSString *)actionImage index:(NSInteger)actionIndex callback:(HomeActionCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+    self.actionNameLabel.text = actionName;
+    self.firstDescLabel.text = firstDesc;
+    self.actionButton.tag = actionIndex;
+    [self.actionImage setImage:[UIImage imageNamed:actionImage]];
+}
+
+
+- (IBAction)buttonAction:(UIButton *)sender {
+    if (self.callback) {
+        self.callback(sender.tag);
+    }
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 108 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeActionView.xib

@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="HomeActionView">
+            <rect key="frame" x="0.0" y="0.0" width="237" height="108"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view tag="1001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pQ0-TQ-uPq">
+                    <rect key="frame" x="0.0" y="0.0" width="237" height="108"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fnl-QH-dOV">
+                            <rect key="frame" x="18" y="18" width="66" height="22"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="22" id="vqK-NA-LWL"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
+                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本周剩余0课时" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GHA-bT-pct">
+                            <rect key="frame" x="18" y="43" width="81.5" height="17"/>
+                            <constraints>
+                                <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="17" id="kNf-q6-MSu"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_course" translatesAutoresizingMaskIntoConstraints="NO" id="3Uw-Mk-bBF">
+                            <rect key="frame" x="157" y="13.5" width="80" height="81"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="81" id="6Mi-1G-DCy"/>
+                                <constraint firstAttribute="width" constant="80" id="oxn-xx-2Ff"/>
+                            </constraints>
+                        </imageView>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="y3F-ra-2Yw">
+                            <rect key="frame" x="0.0" y="0.0" width="237" height="108"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <connections>
+                                <action selector="buttonAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Hdj-fV-Dde"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <gestureRecognizers/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="3Uw-Mk-bBF" secondAttribute="trailing" id="0GV-N5-p00"/>
+                        <constraint firstAttribute="trailing" secondItem="y3F-ra-2Yw" secondAttribute="trailing" id="Cnt-UU-EOG"/>
+                        <constraint firstItem="3Uw-Mk-bBF" firstAttribute="centerY" secondItem="pQ0-TQ-uPq" secondAttribute="centerY" id="GTs-V9-WIA"/>
+                        <constraint firstItem="Fnl-QH-dOV" firstAttribute="leading" secondItem="pQ0-TQ-uPq" secondAttribute="leading" constant="18" id="NMT-0v-e0s"/>
+                        <constraint firstItem="Fnl-QH-dOV" firstAttribute="top" secondItem="pQ0-TQ-uPq" secondAttribute="top" constant="18" id="Qng-3N-rFr"/>
+                        <constraint firstItem="y3F-ra-2Yw" firstAttribute="leading" secondItem="pQ0-TQ-uPq" secondAttribute="leading" id="UB3-NU-ny7"/>
+                        <constraint firstAttribute="bottom" secondItem="y3F-ra-2Yw" secondAttribute="bottom" id="YCy-Nc-XAq"/>
+                        <constraint firstItem="GHA-bT-pct" firstAttribute="top" secondItem="Fnl-QH-dOV" secondAttribute="bottom" constant="3" id="mUS-ce-m5a"/>
+                        <constraint firstItem="GHA-bT-pct" firstAttribute="leading" secondItem="Fnl-QH-dOV" secondAttribute="leading" id="mcj-bm-kit"/>
+                        <constraint firstItem="y3F-ra-2Yw" firstAttribute="top" secondItem="pQ0-TQ-uPq" secondAttribute="top" id="zmv-QN-Qj0"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
+                            <size key="value" width="0.0" height="2"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
+                            <real key="value" value="1"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
+                            <real key="value" value="2"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
+                            <color key="value" red="0.61568627450000002" green="0.61568627450000002" blue="0.61568627450000002" alpha="0.11" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="pQ0-TQ-uPq" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="McD-tf-WwP"/>
+                <constraint firstAttribute="bottom" secondItem="pQ0-TQ-uPq" secondAttribute="bottom" id="NcS-gf-C9b"/>
+                <constraint firstItem="pQ0-TQ-uPq" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Skb-W9-1UT"/>
+                <constraint firstAttribute="trailing" secondItem="pQ0-TQ-uPq" secondAttribute="trailing" id="sEv-ZH-kfu"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="actionButton" destination="y3F-ra-2Yw" id="PsU-eI-iSw"/>
+                <outlet property="actionImage" destination="3Uw-Mk-bBF" id="Uxu-V5-lIr"/>
+                <outlet property="actionNameLabel" destination="Fnl-QH-dOV" id="5pJ-DA-jyw"/>
+                <outlet property="firstDescLabel" destination="GHA-bT-pct" id="a0B-Si-Jww"/>
+            </connections>
+            <point key="canvasLocation" x="258.69565217391306" y="-56.919642857142854"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="home_course" width="80" height="81"/>
+    </resources>
+</document>

+ 4 - 15
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeBodyView.h

@@ -13,8 +13,8 @@ typedef NS_ENUM(NSInteger, HOMEBODYACTION) {
     HOMEBODYACTION_EVALUATE,
     HOMEBODYACTION_MUSIC,
     HOMEBODYACTION_RECEIVE,
-    HOMEBODYACTION_INCOME,
     HOMEBODYACTION_MUSICROOM, // 琴房
+    HOMEBODYACTION_INCOME,
 };
 
 typedef void(^HomeBodyViewCallback)(HOMEBODYACTION action);
@@ -22,24 +22,13 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface HomeBodyView : UIView
 
-@property (weak, nonatomic) IBOutlet UILabel *courseCountLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *homeworkCount;
-
-@property (weak, nonatomic) IBOutlet UILabel *evaluateCountLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *musicCountLabel;
+@property (nonatomic, assign) BOOL isMemo;
 
-@property (weak, nonatomic) IBOutlet UILabel *receiveCountLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *amountLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *timeCountLabel;
-
-@property (nonatomic, assign) BOOL hideCount;
 
 + (instancetype)shareInstance;
 
+- (void)configSource:(NSDictionary *)parm;
+
 - (void)homebodyViewAction:(HomeBodyViewCallback)callback;
 
 - (CGFloat)getViewHeight;

+ 132 - 39
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeBodyView.m

@@ -6,6 +6,7 @@
 //
 
 #import "HomeBodyView.h"
+#import "HomeActionView.h"
 
 @interface HomeBodyView ()
 @property (weak, nonatomic) IBOutlet UILabel *courseDesc;
@@ -18,70 +19,162 @@
 
 @property (nonatomic, copy) HomeBodyViewCallback callback;
 
+@property (nonatomic, strong) NSArray *imageArray;
+
+@property (nonatomic, strong) NSArray *actionTagArray;
+
+@property (nonatomic, strong) NSMutableArray *firstDescArray;
+
+@property (nonatomic, strong) NSMutableArray *actionViewArray;
+
 @end
 
 @implementation HomeBodyView
 - (void)awakeFromNib {
     [super awakeFromNib];
-    self.hideCount = YES;
 }
 
 + (instancetype)shareInstance {
     HomeBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"HomeBodyView" owner:nil options:nil] firstObject];
+    [view configUI];
     return view;
 }
 
-- (void)homebodyViewAction:(HomeBodyViewCallback)callback {
-    if (callback) {
-        self.callback = callback;
+- (void)configUI {
+    self.imageArray = @[@"home_course",@"home_homework",@"home_evaluate",@"home_music",@"home_receivedEvaluate",@"home_musicRoom",@"home_income"];
+    self.actionTagArray = @[@"我的课程",@"课后作业",@"课后评价",@"我的乐谱",@"我收到的评价",@"云酷琴房",@"我的收入"];
+    self.firstDescArray = [NSMutableArray arrayWithArray:@[@"",@"",@"",@"",@"",@"",@""]];
+    
+    for (NSInteger i = 0; i < self.imageArray.count; i++) {
+        
+        HomeActionView *actionView = [HomeActionView shareInstance];
+        NSInteger index = 1001+i;
+        MJWeakSelf;
+        [actionView configWithName:self.actionTagArray[i] firstDesc:self.firstDescArray[i] imageName:self.imageArray[i] index:index callback:^(NSInteger actionIndex) {
+            [weakSelf viewAction:actionIndex];
+        }];
+        [self.actionViewArray addObject:actionView];
     }
 }
 
-
-- (IBAction)tapAction:(UITapGestureRecognizer *)sender {
-    NSInteger index = sender.view.tag;
+- (void)viewAction:(NSInteger)actionTag {
     if (self.callback) {
-        self.callback(index);
+        self.callback(actionTag);
+    }
+}
+
+- (void)configSource:(NSDictionary *)parm {
+    
+    NSInteger courseCount = [parm integerValueForKey:@"courseSchedule"];
+    NSString *courseCountContent = [NSString stringWithFormat:@"本周剩余\n%zd 课时",courseCount];
+    BOOL needCourseTips = courseCount == 0 ? NO : YES;
+    HomeActionView *courseView = self.actionViewArray[0];
+    courseView.firstDescLabel.attributedText = [self createAttrStringWithDesc:courseCountContent valueString:[NSString stringWithFormat:@"%zd",courseCount] needTips:needCourseTips];
+    
+    NSInteger courseHomework = [parm integerValueForKey:@"courseHomework"];
+    NSString *courseHomeworkContent = [NSString stringWithFormat:@"本周共 %zd 节课\n未布置作业",courseHomework];
+    BOOL needHomeworkTips = courseHomework == 0 ? NO : YES;
+    HomeActionView *homeworkView = self.actionViewArray[1];
+    homeworkView.firstDescLabel.attributedText = [self createAttrStringWithDesc:courseHomeworkContent valueString:[NSString stringWithFormat:@"%zd",courseHomework] needTips:needHomeworkTips];
+    
+    NSInteger courseScheduleReplied = [parm integerValueForKey:@"courseScheduleReplied"];
+    NSString *courseScheduleRepliedContent = [NSString stringWithFormat:@"剩余 %zd 节\n尚未评价",courseScheduleReplied];
+    BOOL needEvaluateTips = courseScheduleReplied == 0 ? NO : YES;
+    HomeActionView *evaluateView = self.actionViewArray[2];
+    evaluateView.firstDescLabel.attributedText = [self createAttrStringWithDesc:courseScheduleRepliedContent valueString:[NSString stringWithFormat:@"%zd",courseScheduleReplied] needTips:needEvaluateTips];
+    
+    NSInteger musicSheet = [parm integerValueForKey:@"musicSheet"];
+    NSString *musicSheetContent = [NSString stringWithFormat:@"共 %zd 支\n乐谱",musicSheet];
+    BOOL needMusicSheetTips = musicSheet == 0 ? NO : YES;
+    HomeActionView *musicView = self.actionViewArray[3];
+    musicView.firstDescLabel.attributedText =[self createAttrStringWithDesc:musicSheetContent valueString:[NSString stringWithFormat:@"%zd",musicSheet] needTips:needMusicSheetTips];
+    
+    NSInteger studentReplied = [parm integerValueForKey:@"studentReplied"];
+    NSString *studentRepliedContent = [NSString stringWithFormat:@"本周收到\n%zd 个评价",studentReplied];
+    BOOL needStudentRepliedTips = studentReplied == 0 ? NO : YES;
+    HomeActionView *studentRepliedView = self.actionViewArray[4];
+    studentRepliedView.firstDescLabel.attributedText = [self createAttrStringWithDesc:studentRepliedContent valueString:[NSString stringWithFormat:@"%zd",studentReplied] needTips:needStudentRepliedTips];
+    
+    NSInteger pianoTime = [parm integerValueForKey:@"pianoTime"];
+    NSString *pianoTimeContent = [NSString stringWithFormat:@"剩余\n%zd 分钟",pianoTime];
+    BOOL needPianoTimeTips = pianoTime == 0 ? NO : YES;
+    HomeActionView *pianoTimeView = self.actionViewArray[5];
+    pianoTimeView.firstDescLabel.attributedText = [self createAttrStringWithDesc:pianoTimeContent valueString:[NSString stringWithFormat:@"%zd",pianoTime] needTips:needPianoTimeTips];
+    
+    double decimal = [parm doubleValueForKey:@"decimal"];
+    NSString *decimalContent = [NSString stringWithFormat:@"本月收入\n%.2f 元",decimal];
+    BOOL needDecimalTips = decimal == 0 ? NO : YES;
+    HomeActionView *decimalView = self.actionViewArray[6];
+    decimalView.firstDescLabel.attributedText = [self createAttrStringWithDesc:decimalContent valueString:[NSString stringWithFormat:@"%.2f",decimal] needTips:needDecimalTips];
+    [self refreshView];
+}
+
+
+- (NSMutableAttributedString *)createAttrStringWithDesc:(NSString *)desc valueString:(NSString *)valueString needTips:(BOOL)needTips {
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    [paragraphStyle setLineSpacing:4];//调整行间距
+    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12.0f], NSForegroundColorAttributeName:HexRGB(0x999999),NSParagraphStyleAttributeName:paragraphStyle}];
+    if (needTips) {
+        [attr addAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xff5106)} range:[desc rangeOfString:valueString]];
+    }
+    return attr;
+}
+
+- (void)refreshView {
+    [self removeAllSubViews];
+    for (NSInteger i = 0; i < self.actionViewArray.count; i++) {
+        CGFloat leftSpace = 11.0f;
+        CGFloat width = (KPortraitWidth - 28 - leftSpace) / 2.0f;
+        CGFloat height = 105.0f;
+        CGFloat verticalSpace = 12.0f;
+        
+        if (self.isMemo == NO) {
+            if (i == 6) {
+                HomeActionView *actionView = self.actionViewArray[i];
+                actionView.frame = CGRectMake(14 + (5 % 2) * (width + leftSpace), verticalSpace + (5 / 2) * (height + verticalSpace) , width, height);
+                [self addSubview:actionView];
+            }
+            else if (i != 5) {
+                HomeActionView *actionView = self.actionViewArray[i];
+                actionView.frame = CGRectMake(14 + (i % 2) * (width + leftSpace), verticalSpace + (i / 2) * (height + verticalSpace) , width, height);
+                [self addSubview:actionView];
+            }
+        }
+        else {
+            HomeActionView *actionView = self.actionViewArray[i];
+            actionView.frame = CGRectMake(14 + (i % 2) * (width + leftSpace), verticalSpace + (i / 2) * (height + verticalSpace) , width, height);
+            [self addSubview:actionView];
+        }
+            
+    }
+}
+
+
+- (void)homebodyViewAction:(HomeBodyViewCallback)callback {
+    if (callback) {
+        self.callback = callback;
     }
 }
 
 - (CGFloat)getViewHeight {
-    return 480;
+    return self.isMemo ? 480 : 360;
 }
 
-- (void)setHideCount:(BOOL)hideCount {
-    _hideCount = hideCount;
-    if (hideCount) {
-        self.courseCountLabel.hidden = YES;
-        self.courseDesc.hidden = YES;
-        self.homeworkCount.hidden = YES;
-        self.homeworkDesc.hidden = YES;
-        self.evaluateCountLabel.hidden = YES;
-        self.evaluateDesc.hidden = YES;
-        self.musicCountLabel.hidden = YES;
-        self.musicDesc.hidden = YES;
-        self.receiveCountLabel.hidden = YES;
-        self.receiveDesc.hidden = YES;
-        self.amountLabel.hidden = YES;
-        self.amountDesc.hidden = YES;
-        self.timeDesc.hidden = YES;
+
+- (NSMutableArray *)firstDescArray {
+    if (!_firstDescArray) {
+        _firstDescArray = [NSMutableArray array];
     }
-    else {
-        self.courseCountLabel.hidden = NO;
-        self.courseDesc.hidden = NO;
-        self.homeworkCount.hidden = NO;
-        self.homeworkDesc.hidden = NO;
-        self.evaluateCountLabel.hidden = NO;
-        self.evaluateDesc.hidden = NO;
-        self.musicCountLabel.hidden = NO;
-        self.musicDesc.hidden = NO;
-        self.receiveCountLabel.hidden = NO;
-        self.receiveDesc.hidden = NO;
-        self.amountLabel.hidden = NO;
-        self.amountDesc.hidden = NO;
-        self.timeDesc.hidden = NO;
+    return _firstDescArray;
+}
+
+- (NSMutableArray *)actionViewArray {
+    if (!_actionViewArray) {
+        _actionViewArray = [NSMutableArray array];
     }
+    return _actionViewArray;
 }
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 0 - 600
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeBodyView.xib

@@ -12,611 +12,11 @@
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="HomeBodyView">
             <rect key="frame" x="0.0" y="0.0" width="414" height="480"/>
             <autoresizingMask key="autoresizingMask"/>
-            <subviews>
-                <view tag="1001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gMi-q0-ask">
-                    <rect key="frame" x="14" y="12" width="187.5" height="105"/>
-                    <subviews>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u6l-sN-Air">
-                            <rect key="frame" x="18" y="18" width="66" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="OFL-8b-jan"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                            <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本周剩余" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oVx-ca-Ghb">
-                            <rect key="frame" x="18" y="43" width="50" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="0eu-Ae-5Nj"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0课时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gjM-0G-5wl">
-                            <rect key="frame" x="18" y="60" width="33" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="Oea-Bo-9VD"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_course" translatesAutoresizingMaskIntoConstraints="NO" id="ecv-Po-USZ">
-                            <rect key="frame" x="107.5" y="12" width="80" height="81"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="80" id="62T-Rj-bHw"/>
-                                <constraint firstAttribute="height" constant="81" id="iL5-dH-8zU"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstItem="gjM-0G-5wl" firstAttribute="top" secondItem="oVx-ca-Ghb" secondAttribute="bottom" id="12T-vh-eRT"/>
-                        <constraint firstItem="gjM-0G-5wl" firstAttribute="leading" secondItem="oVx-ca-Ghb" secondAttribute="leading" id="1lG-P2-DIF"/>
-                        <constraint firstItem="u6l-sN-Air" firstAttribute="leading" secondItem="gMi-q0-ask" secondAttribute="leading" constant="18" id="28i-G3-dzj"/>
-                        <constraint firstItem="ecv-Po-USZ" firstAttribute="centerY" secondItem="gMi-q0-ask" secondAttribute="centerY" id="Fct-w2-VDQ"/>
-                        <constraint firstItem="oVx-ca-Ghb" firstAttribute="top" secondItem="u6l-sN-Air" secondAttribute="bottom" constant="3" id="Nc5-ca-Biv"/>
-                        <constraint firstAttribute="trailing" secondItem="ecv-Po-USZ" secondAttribute="trailing" id="Tlr-yU-Lei"/>
-                        <constraint firstItem="u6l-sN-Air" firstAttribute="top" secondItem="gMi-q0-ask" secondAttribute="top" constant="18" id="bbh-BB-3ac"/>
-                        <constraint firstItem="oVx-ca-Ghb" firstAttribute="leading" secondItem="u6l-sN-Air" secondAttribute="leading" id="gWE-GE-Dec"/>
-                        <constraint firstAttribute="height" constant="105" id="nYG-hV-HR2"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.61568627450980395" green="0.61568627450980395" blue="0.61568627450980395" alpha="0.11" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="tvD-fE-luX" appends="YES" id="fmi-4x-0Ls"/>
-                    </connections>
-                </view>
-                <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dgM-A4-8mE">
-                    <rect key="frame" x="212.5" y="12" width="187.5" height="105"/>
-                    <subviews>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="课后作业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pBj-fc-NFE">
-                            <rect key="frame" x="18" y="18" width="66" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="THZ-tR-a0k"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本周共0节课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d8W-zM-YSf">
-                            <rect key="frame" x="18" y="43" width="69" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="fC9-Gg-EPo"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="未布置作业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Oj-o0-cys">
-                            <rect key="frame" x="18" y="60" width="61.5" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="kf1-2b-bJQ"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_homework" translatesAutoresizingMaskIntoConstraints="NO" id="Bo7-3L-hMF">
-                            <rect key="frame" x="107.5" y="12" width="80" height="81"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="81" id="8rk-lL-fKG"/>
-                                <constraint firstAttribute="width" constant="80" id="ZzQ-hr-e1v"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstItem="2Oj-o0-cys" firstAttribute="leading" secondItem="d8W-zM-YSf" secondAttribute="leading" id="ADq-uN-MdB"/>
-                        <constraint firstItem="d8W-zM-YSf" firstAttribute="leading" secondItem="pBj-fc-NFE" secondAttribute="leading" id="DLK-XN-JQG"/>
-                        <constraint firstItem="Bo7-3L-hMF" firstAttribute="centerY" secondItem="dgM-A4-8mE" secondAttribute="centerY" id="DxN-M4-4Qc"/>
-                        <constraint firstItem="pBj-fc-NFE" firstAttribute="leading" secondItem="dgM-A4-8mE" secondAttribute="leading" constant="18" id="QKs-5k-8eD"/>
-                        <constraint firstAttribute="trailing" secondItem="Bo7-3L-hMF" secondAttribute="trailing" id="pUG-iS-FYm"/>
-                        <constraint firstItem="2Oj-o0-cys" firstAttribute="top" secondItem="d8W-zM-YSf" secondAttribute="bottom" id="qjJ-fD-oiM"/>
-                        <constraint firstItem="d8W-zM-YSf" firstAttribute="top" secondItem="pBj-fc-NFE" secondAttribute="bottom" constant="3" id="ssS-SW-gmD"/>
-                        <constraint firstItem="pBj-fc-NFE" firstAttribute="top" secondItem="dgM-A4-8mE" secondAttribute="top" constant="18" id="zXQ-Oz-71z"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.61568627450980395" green="0.61568627450980395" blue="0.61568627450980395" alpha="0.11" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="I8f-yB-Nwl" appends="YES" id="SfJ-sf-7qh"/>
-                    </connections>
-                </view>
-                <view tag="1003" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Isr-v7-smA">
-                    <rect key="frame" x="14" y="129" width="187.5" height="105"/>
-                    <subviews>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="课后评价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F0A-xe-x04">
-                            <rect key="frame" x="18" y="18" width="66" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="zBV-gx-9h2"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="剩余0节" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="a0b-W1-IsU">
-                            <rect key="frame" x="18" y="43" width="44.5" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="spL-kw-8nm"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="尚未评价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hnO-me-wU1">
-                            <rect key="frame" x="18" y="60" width="49.5" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="JsR-Tu-dln"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_evaluate" translatesAutoresizingMaskIntoConstraints="NO" id="ImM-iy-7c8">
-                            <rect key="frame" x="107.5" y="12" width="80" height="81"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="80" id="Y6e-fy-gdb"/>
-                                <constraint firstAttribute="height" constant="81" id="oxp-LD-bpz"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstItem="hnO-me-wU1" firstAttribute="leading" secondItem="a0b-W1-IsU" secondAttribute="leading" id="3bz-6w-0DF"/>
-                        <constraint firstItem="hnO-me-wU1" firstAttribute="top" secondItem="a0b-W1-IsU" secondAttribute="bottom" id="C81-t5-dL2"/>
-                        <constraint firstItem="ImM-iy-7c8" firstAttribute="centerY" secondItem="Isr-v7-smA" secondAttribute="centerY" id="DGw-Mg-FZd"/>
-                        <constraint firstItem="a0b-W1-IsU" firstAttribute="leading" secondItem="F0A-xe-x04" secondAttribute="leading" id="DVN-UF-055"/>
-                        <constraint firstItem="F0A-xe-x04" firstAttribute="leading" secondItem="Isr-v7-smA" secondAttribute="leading" constant="18" id="K4C-zZ-vQr"/>
-                        <constraint firstAttribute="trailing" secondItem="ImM-iy-7c8" secondAttribute="trailing" id="cTV-cw-OhQ"/>
-                        <constraint firstItem="F0A-xe-x04" firstAttribute="top" secondItem="Isr-v7-smA" secondAttribute="top" constant="18" id="swl-vl-kRw"/>
-                        <constraint firstItem="a0b-W1-IsU" firstAttribute="top" secondItem="F0A-xe-x04" secondAttribute="bottom" constant="3" id="wxA-fp-WCA"/>
-                        <constraint firstAttribute="height" constant="105" id="wyt-IY-8dw"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.61568627450980395" green="0.61568627450980395" blue="0.61568627450980395" alpha="0.11" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="jyB-yw-R6D" appends="YES" id="lh4-Gy-BQY"/>
-                    </connections>
-                </view>
-                <view tag="1004" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Xa4-Xe-PMH">
-                    <rect key="frame" x="212.5" y="129" width="187.5" height="105"/>
-                    <subviews>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的乐谱" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CFS-ON-GiK">
-                            <rect key="frame" x="18" y="18" width="66" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="cby-IX-3oC"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="共0支" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4P3-ma-o7o">
-                            <rect key="frame" x="18" y="43" width="32.5" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="vWe-1f-wyq"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="乐谱" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4tw-Od-8ks">
-                            <rect key="frame" x="18" y="60" width="25" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="3bz-aT-5lA"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_music" translatesAutoresizingMaskIntoConstraints="NO" id="FaP-vE-WYK">
-                            <rect key="frame" x="107.5" y="12" width="80" height="81"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="81" id="OnF-Ys-2qs"/>
-                                <constraint firstAttribute="width" constant="80" id="TOW-eb-64f"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstItem="CFS-ON-GiK" firstAttribute="leading" secondItem="Xa4-Xe-PMH" secondAttribute="leading" constant="18" id="3Mv-e8-aCm"/>
-                        <constraint firstItem="CFS-ON-GiK" firstAttribute="top" secondItem="Xa4-Xe-PMH" secondAttribute="top" constant="18" id="3hY-vk-i8l"/>
-                        <constraint firstItem="4tw-Od-8ks" firstAttribute="top" secondItem="4P3-ma-o7o" secondAttribute="bottom" id="7RN-4K-0E8"/>
-                        <constraint firstItem="FaP-vE-WYK" firstAttribute="centerY" secondItem="Xa4-Xe-PMH" secondAttribute="centerY" id="Cno-f6-UCq"/>
-                        <constraint firstAttribute="trailing" secondItem="FaP-vE-WYK" secondAttribute="trailing" id="HL5-G7-QSv"/>
-                        <constraint firstItem="4P3-ma-o7o" firstAttribute="leading" secondItem="CFS-ON-GiK" secondAttribute="leading" id="I4G-Pn-sZl"/>
-                        <constraint firstItem="4P3-ma-o7o" firstAttribute="top" secondItem="CFS-ON-GiK" secondAttribute="bottom" constant="3" id="JzL-3i-E2E"/>
-                        <constraint firstItem="4tw-Od-8ks" firstAttribute="leading" secondItem="4P3-ma-o7o" secondAttribute="leading" id="S5o-YQ-kOu"/>
-                        <constraint firstAttribute="height" constant="105" id="TQ5-iD-ZYS"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.61568627450000002" green="0.61568627450000002" blue="0.61568627450000002" alpha="0.11" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="EYk-rZ-zzc" appends="YES" id="149-8l-yhQ"/>
-                    </connections>
-                </view>
-                <view tag="1005" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eJG-dH-vO4">
-                    <rect key="frame" x="14" y="246" width="187.5" height="105"/>
-                    <subviews>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我收到的评价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f0X-7x-Raz">
-                            <rect key="frame" x="18" y="18" width="98" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="QGH-al-uvL"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本周收到" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5oS-sy-fYb">
-                            <rect key="frame" x="18" y="43" width="50" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="eeg-mw-l3G"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0个评价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VdL-wz-T2w">
-                            <rect key="frame" x="18" y="60" width="44.5" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="cO0-sA-Pqe"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_receivedEvaluate" translatesAutoresizingMaskIntoConstraints="NO" id="azH-FZ-GiM">
-                            <rect key="frame" x="107.5" y="12" width="80" height="81"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="81" id="Njm-XX-mBD"/>
-                                <constraint firstAttribute="width" constant="80" id="XdD-Dw-3t9"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstItem="azH-FZ-GiM" firstAttribute="centerY" secondItem="eJG-dH-vO4" secondAttribute="centerY" id="0DV-py-xme"/>
-                        <constraint firstAttribute="trailing" secondItem="azH-FZ-GiM" secondAttribute="trailing" id="4I4-L0-8s8"/>
-                        <constraint firstItem="5oS-sy-fYb" firstAttribute="top" secondItem="f0X-7x-Raz" secondAttribute="bottom" constant="3" id="M3C-0z-M8N"/>
-                        <constraint firstItem="f0X-7x-Raz" firstAttribute="top" secondItem="eJG-dH-vO4" secondAttribute="top" constant="18" id="MI1-ID-GiX"/>
-                        <constraint firstItem="VdL-wz-T2w" firstAttribute="leading" secondItem="5oS-sy-fYb" secondAttribute="leading" id="cJA-Fl-Dlk"/>
-                        <constraint firstAttribute="height" constant="105" id="eKO-aB-Abr"/>
-                        <constraint firstItem="5oS-sy-fYb" firstAttribute="leading" secondItem="f0X-7x-Raz" secondAttribute="leading" id="lOT-AA-cgO"/>
-                        <constraint firstItem="f0X-7x-Raz" firstAttribute="leading" secondItem="eJG-dH-vO4" secondAttribute="leading" constant="18" id="rtf-zQ-e17"/>
-                        <constraint firstItem="VdL-wz-T2w" firstAttribute="top" secondItem="5oS-sy-fYb" secondAttribute="bottom" id="thg-eZ-x0f"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.61568627450000002" green="0.61568627450000002" blue="0.61568627450000002" alpha="0.11" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="ZXG-4s-RpH" appends="YES" id="n0n-0f-4TP"/>
-                    </connections>
-                </view>
-                <view tag="1007" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RWx-Ju-LwS">
-                    <rect key="frame" x="212.5" y="246" width="187.5" height="105"/>
-                    <subviews>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="云酷琴房" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bL2-yK-zCx">
-                            <rect key="frame" x="18" y="18" width="66" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="bHT-5U-8HQ"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="剩余" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wzw-Br-OUX">
-                            <rect key="frame" x="18" y="43" width="25" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="EJ6-9J-G86"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0 分钟" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="U2e-AK-Ago">
-                            <rect key="frame" x="18" y="60" width="35.5" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="gxr-M9-4rz"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_musicRoom" translatesAutoresizingMaskIntoConstraints="NO" id="CId-eu-jPR">
-                            <rect key="frame" x="107.5" y="12" width="80" height="81"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="80" id="Bo5-Ub-wGL"/>
-                                <constraint firstAttribute="height" constant="81" id="nQE-eo-XF3"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstItem="U2e-AK-Ago" firstAttribute="top" secondItem="Wzw-Br-OUX" secondAttribute="bottom" id="6Fx-tD-U4G"/>
-                        <constraint firstItem="Wzw-Br-OUX" firstAttribute="top" secondItem="bL2-yK-zCx" secondAttribute="bottom" constant="3" id="DN2-Rh-V2l"/>
-                        <constraint firstAttribute="height" constant="105" id="QLR-j8-HxT"/>
-                        <constraint firstAttribute="trailing" secondItem="CId-eu-jPR" secondAttribute="trailing" id="QR1-F4-wYc"/>
-                        <constraint firstItem="U2e-AK-Ago" firstAttribute="leading" secondItem="Wzw-Br-OUX" secondAttribute="leading" id="XzM-dD-sM9"/>
-                        <constraint firstItem="CId-eu-jPR" firstAttribute="centerY" secondItem="RWx-Ju-LwS" secondAttribute="centerY" id="akb-Zt-imj"/>
-                        <constraint firstItem="bL2-yK-zCx" firstAttribute="leading" secondItem="RWx-Ju-LwS" secondAttribute="leading" constant="18" id="bYA-in-Gzb"/>
-                        <constraint firstItem="bL2-yK-zCx" firstAttribute="top" secondItem="RWx-Ju-LwS" secondAttribute="top" constant="18" id="eJ8-iG-jGm"/>
-                        <constraint firstItem="Wzw-Br-OUX" firstAttribute="leading" secondItem="bL2-yK-zCx" secondAttribute="leading" id="fTm-vC-VWh"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.61568627450000002" green="0.61568627450000002" blue="0.61568627450000002" alpha="0.11" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="ixo-BG-R4v" appends="YES" id="Bw1-Na-Xag"/>
-                    </connections>
-                </view>
-                <view tag="1006" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="j5P-U8-GaL">
-                    <rect key="frame" x="14" y="363" width="187.5" height="105"/>
-                    <subviews>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的收入" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gjG-Vi-gCj">
-                            <rect key="frame" x="18" y="18" width="66" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="1X6-fy-KEc"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本月收入" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3zz-By-8Im">
-                            <rect key="frame" x="18" y="43" width="50" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="IaU-V8-FUI"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0.00元" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="46w-g4-E2D">
-                            <rect key="frame" x="18" y="60" width="38" height="17"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="17" id="fjw-kr-2uE"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_income" translatesAutoresizingMaskIntoConstraints="NO" id="9NA-1h-swa">
-                            <rect key="frame" x="107.5" y="12" width="80" height="81"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="80" id="JKI-Se-hbT"/>
-                                <constraint firstAttribute="height" constant="81" id="ShN-hz-DU3"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstItem="46w-g4-E2D" firstAttribute="top" secondItem="3zz-By-8Im" secondAttribute="bottom" id="322-dZ-Qap"/>
-                        <constraint firstAttribute="height" constant="105" id="FD9-Db-sXj"/>
-                        <constraint firstAttribute="trailing" secondItem="9NA-1h-swa" secondAttribute="trailing" id="Icw-Ig-FdT"/>
-                        <constraint firstItem="gjG-Vi-gCj" firstAttribute="leading" secondItem="j5P-U8-GaL" secondAttribute="leading" constant="18" id="P5c-0F-rgc"/>
-                        <constraint firstItem="gjG-Vi-gCj" firstAttribute="top" secondItem="j5P-U8-GaL" secondAttribute="top" constant="18" id="Ror-o2-mqK"/>
-                        <constraint firstItem="3zz-By-8Im" firstAttribute="leading" secondItem="gjG-Vi-gCj" secondAttribute="leading" id="YDh-Dz-g2y"/>
-                        <constraint firstItem="3zz-By-8Im" firstAttribute="top" secondItem="gjG-Vi-gCj" secondAttribute="bottom" constant="3" id="ZO4-m5-lUA"/>
-                        <constraint firstItem="9NA-1h-swa" firstAttribute="centerY" secondItem="j5P-U8-GaL" secondAttribute="centerY" id="mkK-Cq-HNf"/>
-                        <constraint firstItem="46w-g4-E2D" firstAttribute="leading" secondItem="3zz-By-8Im" secondAttribute="leading" id="n5u-Z8-m3L"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.61568627450000002" green="0.61568627450000002" blue="0.61568627450000002" alpha="0.11" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="hGO-sJ-BbZ" appends="YES" id="vKf-hG-aqB"/>
-                    </connections>
-                </view>
-            </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-            <constraints>
-                <constraint firstItem="Isr-v7-smA" firstAttribute="width" secondItem="gMi-q0-ask" secondAttribute="width" id="5vH-SS-sdi"/>
-                <constraint firstItem="eJG-dH-vO4" firstAttribute="width" secondItem="gMi-q0-ask" secondAttribute="width" id="B5I-MT-RHa"/>
-                <constraint firstItem="dgM-A4-8mE" firstAttribute="leading" secondItem="gMi-q0-ask" secondAttribute="trailing" constant="11" id="C7a-07-Qss"/>
-                <constraint firstItem="dgM-A4-8mE" firstAttribute="height" secondItem="gMi-q0-ask" secondAttribute="height" id="FpQ-63-EVS"/>
-                <constraint firstItem="Isr-v7-smA" firstAttribute="leading" secondItem="gMi-q0-ask" secondAttribute="leading" id="Ih0-Aj-tJN"/>
-                <constraint firstItem="RWx-Ju-LwS" firstAttribute="height" secondItem="dgM-A4-8mE" secondAttribute="height" id="Joo-pD-djP"/>
-                <constraint firstItem="j5P-U8-GaL" firstAttribute="top" secondItem="eJG-dH-vO4" secondAttribute="bottom" constant="12" id="QO4-lR-wPK"/>
-                <constraint firstItem="Isr-v7-smA" firstAttribute="height" secondItem="gMi-q0-ask" secondAttribute="height" id="QR4-fT-T7u"/>
-                <constraint firstAttribute="trailing" secondItem="dgM-A4-8mE" secondAttribute="trailing" constant="14" id="SQP-8B-mFt"/>
-                <constraint firstItem="Xa4-Xe-PMH" firstAttribute="height" secondItem="dgM-A4-8mE" secondAttribute="height" id="TLd-gK-fGZ"/>
-                <constraint firstItem="j5P-U8-GaL" firstAttribute="width" secondItem="eJG-dH-vO4" secondAttribute="width" id="TxU-iA-FnQ"/>
-                <constraint firstItem="RWx-Ju-LwS" firstAttribute="trailing" secondItem="dgM-A4-8mE" secondAttribute="trailing" id="UsC-MJ-Bgu"/>
-                <constraint firstItem="Isr-v7-smA" firstAttribute="top" secondItem="gMi-q0-ask" secondAttribute="bottom" constant="12" id="VHF-Iz-FkN"/>
-                <constraint firstItem="gMi-q0-ask" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="W4n-qu-b6O"/>
-                <constraint firstItem="j5P-U8-GaL" firstAttribute="leading" secondItem="eJG-dH-vO4" secondAttribute="leading" id="XuM-hc-ykO"/>
-                <constraint firstItem="RWx-Ju-LwS" firstAttribute="width" secondItem="dgM-A4-8mE" secondAttribute="width" id="ZB5-gr-pnA"/>
-                <constraint firstItem="eJG-dH-vO4" firstAttribute="leading" secondItem="gMi-q0-ask" secondAttribute="leading" id="gEp-Hf-oJU"/>
-                <constraint firstItem="gMi-q0-ask" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="12" id="hdi-Re-fGp"/>
-                <constraint firstItem="dgM-A4-8mE" firstAttribute="width" secondItem="gMi-q0-ask" secondAttribute="width" id="hni-TH-a0d"/>
-                <constraint firstItem="eJG-dH-vO4" firstAttribute="top" secondItem="Isr-v7-smA" secondAttribute="bottom" constant="12" id="nhp-eY-dyA"/>
-                <constraint firstItem="Xa4-Xe-PMH" firstAttribute="trailing" secondItem="dgM-A4-8mE" secondAttribute="trailing" id="o4C-Ki-Kl5"/>
-                <constraint firstItem="dgM-A4-8mE" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="12" id="ot3-nF-ufG"/>
-                <constraint firstItem="RWx-Ju-LwS" firstAttribute="top" secondItem="Xa4-Xe-PMH" secondAttribute="bottom" constant="12" id="rqt-X3-NJ1"/>
-                <constraint firstItem="eJG-dH-vO4" firstAttribute="height" secondItem="gMi-q0-ask" secondAttribute="height" id="s4s-3Y-nR6"/>
-                <constraint firstItem="Xa4-Xe-PMH" firstAttribute="top" secondItem="dgM-A4-8mE" secondAttribute="bottom" constant="12" id="x56-Bd-Oa0"/>
-                <constraint firstItem="Xa4-Xe-PMH" firstAttribute="width" secondItem="dgM-A4-8mE" secondAttribute="width" id="yLd-74-Zdi"/>
-            </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
-            <connections>
-                <outlet property="amountDesc" destination="3zz-By-8Im" id="wrS-y7-O34"/>
-                <outlet property="amountLabel" destination="46w-g4-E2D" id="lWJ-XC-aBE"/>
-                <outlet property="courseCountLabel" destination="gjM-0G-5wl" id="2s1-8S-td6"/>
-                <outlet property="courseDesc" destination="oVx-ca-Ghb" id="lmE-1t-EUS"/>
-                <outlet property="evaluateCountLabel" destination="a0b-W1-IsU" id="H9c-FI-Zrb"/>
-                <outlet property="evaluateDesc" destination="hnO-me-wU1" id="Qal-nh-4ea"/>
-                <outlet property="homeworkCount" destination="d8W-zM-YSf" id="igK-Vz-92F"/>
-                <outlet property="homeworkDesc" destination="2Oj-o0-cys" id="Sj9-0M-1AZ"/>
-                <outlet property="musicCountLabel" destination="4P3-ma-o7o" id="AQX-h5-o36"/>
-                <outlet property="musicDesc" destination="4tw-Od-8ks" id="IZw-sg-8H5"/>
-                <outlet property="receiveCountLabel" destination="VdL-wz-T2w" id="vB2-QR-Nhs"/>
-                <outlet property="receiveDesc" destination="5oS-sy-fYb" id="DEE-I1-HAx"/>
-                <outlet property="timeCountLabel" destination="U2e-AK-Ago" id="SYO-2O-OUh"/>
-                <outlet property="timeDesc" destination="Wzw-Br-OUX" id="j58-sm-Gfz"/>
-            </connections>
             <point key="canvasLocation" x="131.8840579710145" y="-42.857142857142854"/>
         </view>
-        <tapGestureRecognizer id="tvD-fE-luX">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="ZBp-gX-V5D"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="I8f-yB-Nwl">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="8Ao-mJ-KNk"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="jyB-yw-R6D">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="UTi-nG-71Y"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="EYk-rZ-zzc">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="GZ1-y4-esf"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="ZXG-4s-RpH">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="eXB-Wx-Zx4"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="hGO-sJ-BbZ">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="DGA-b7-5re"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="ixo-BG-R4v">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="XyU-eB-hSf"/>
-            </connections>
-        </tapGestureRecognizer>
     </objects>
-    <resources>
-        <image name="home_course" width="80" height="81"/>
-        <image name="home_evaluate" width="80" height="81"/>
-        <image name="home_homework" width="80" height="81"/>
-        <image name="home_income" width="80" height="81"/>
-        <image name="home_music" width="80" height="81"/>
-        <image name="home_musicRoom" width="80" height="81"/>
-        <image name="home_receivedEvaluate" width="80" height="81"/>
-    </resources>
 </document>

+ 18 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m

@@ -1194,7 +1194,7 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
                 else if ([rcMessage.content isMemberOfClass:[RCTextMessage class]]) {
                     [__blockSelf insertMessage:rcMessage userInfo:notification.userInfo];
                 }
-                else if ([rcMessage.content isMemberOfClass:[RCChatroomClose class]]) { // 直播间已关闭
+                else if ([rcMessage.content isMemberOfClass:[KSLiveChatroomClose class]]) { // 直播间已关闭
                     
                     [__blockSelf MBPShow:@"直播已结束"];
                     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
@@ -1227,6 +1227,16 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
     return NO;
 }
 
+- (NSInteger)queryConnectingCount {
+    NSInteger count = 0;
+    for (LiveSeatMember *member in self.seatApplyArray) {
+        if (member.isConnected) {
+            count++;
+        }
+    }
+    return count;
+}
+
 - (void)removeMember:(NSString *)memberId {
     for (LiveSeatMember *member in self.seatApplyArray) {
         if ([member.userId isEqualToString:memberId]) {
@@ -1285,7 +1295,7 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
 
 #pragma mark ----- time manager delegate
 - (void)quitClassroomNotifer {
-    [self MBPShow:@"直播已结束!"];
+    [self MBPShow:@"直播已结束!"];
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [self quitRoomBackPreView:NO];
     });
@@ -1681,6 +1691,12 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
     switch (action) {
         case LIVESEATACTION_APPROVE: // 同意
         {
+            // 判断连麦人数超过4人 无法点击
+            NSInteger count = [self queryConnectingCount];
+            if (count >= 4) {
+                [self MBPShow:@"最多可连麦4人"];
+                return;
+            }
             KSLiveChatroomSeatResponse *responseMessage = [[KSLiveChatroomSeatResponse alloc] init];
             responseMessage.type = SEATRESPONSE_TEACHERAPPROVE;
             responseMessage.teacherId = self.createrId;

+ 0 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Live/LiveRoomMessage/KSChatroomMessageCenter.h

@@ -21,7 +21,6 @@
 #import "KSLiveChatroomKickOut.h"
 #import "KSRCPauseLiveMessage.h"
 #import "KSLiveChatroomMemberUp.h"
-#import "RCChatroomClose.h"
 #import "KSRCShopRushMessage.h"
 #import "RCChatroomLikeCount.h"
 

+ 0 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Live/LiveRoomMessage/KSChatroomMessageCenter.m

@@ -40,7 +40,6 @@
     [[RCIM sharedRCIM] registerMessageType:[KSRCPauseLiveMessage class]];
     [[RCIM sharedRCIM] registerMessageType:[KSLiveChatroomMemberUp class]];
     [[RCIM sharedRCIM] registerMessageType:[KSRCShopRushMessage class]];
-    [[RCIM sharedRCIM] registerMessageType:[RCChatroomClose class]];
     [[RCIM sharedRCIM] registerMessageType:[RCChatroomLikeCount class]];
     
 }

+ 0 - 17
KulexiuForTeacher/KulexiuForTeacher/Module/Live/LiveRoomMessage/RCChatroomClose.h

@@ -1,17 +0,0 @@
-//
-//  RCChatroomClose.h
-//  StudentDaya
-//
-//  Created by Kyle on 2022/2/24.
-//  Copyright © 2022 DayaMusic. All rights reserved.
-//
-
-#import <RongIMLibCore/RongIMLibCore.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface RCChatroomClose : RCMessageContent
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 32
KulexiuForTeacher/KulexiuForTeacher/Module/Live/LiveRoomMessage/RCChatroomClose.m

@@ -1,32 +0,0 @@
-//
-//  RCChatroomClose.m
-//  StudentDaya
-//
-//  Created by Kyle on 2022/2/24.
-//  Copyright © 2022 DayaMusic. All rights reserved.
-//
-
-#import "RCChatroomClose.h"
-
-@implementation RCChatroomClose
-
-- (NSData *)encode {
-    return [NSJSONSerialization dataWithJSONObject:@{} options:kNilOptions error:nil];
-}
-
-- (void)decodeWithData:(NSData *)data {
-}
-
-+ (NSString *)getObjectName {
-  return @"RC:ForcedOffline";
-}
-
-- (NSArray<NSString *> *)getSearchableWords {
-  return nil;
-}
-
-+ (RCMessagePersistent)persistentFlag {
-  return MessagePersistent_NONE;
-}
-
-@end

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/LiveSeatApplyView.m

@@ -49,7 +49,7 @@
     [self.tableContainerView addSubview:self.tableView];
     [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.top.mas_equalTo(self.tableContainerView);
-        make.height.mas_equalTo(50);
+        make.bottom.mas_equalTo(self.tableContainerView.mas_bottom);
     }];
 }
 

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfoManager.h

@@ -29,6 +29,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 + (instancetype)shareInstance;
 
+- (void)requsetconfigCallback:(void(^)(BOOL success))callback;
+
 // 获取信息回调
 - (void)queryUserInfoCallback:(UserInfoCallback)callback;
 

+ 53 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfoManager.m

@@ -270,6 +270,59 @@
     }];
 }
 
+- (NSString *)getCurrentVersion {
+    return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
+}
+
+- (void)requsetconfigCallback:(void(^)(BOOL success))callback {
+    [KSNetworkingManager appVersionInfoRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSString *serviceVersion = [[dic dictionaryValueForKey:@"data"] stringValueForKey:@"version"];
+            NSString *currentVersion = [self getCurrentVersion];
+            if ([self isLowerVersionCompareLocalVersion:currentVersion serviceVersion:serviceVersion]) {
+                callback(YES);
+            }
+            else {
+                callback(NO);
+            }
+        }
+        else {
+            callback(NO);
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        callback(NO);
+    }];
+}
+
+
+- (BOOL)isLowerVersionCompareLocalVersion:(NSString *)localVersion serviceVersion:(NSString *)version {
+    localVersion = [localVersion stringByReplacingOccurrencesOfString:@"." withString:@""];
+    if (localVersion.length == 3) {
+        localVersion  = [localVersion stringByAppendingString:@"0"];
+    }
+    else if (localVersion.length==2) {
+        localVersion  = [localVersion stringByAppendingString:@"00"];
+    }else if (localVersion.length==1){
+        localVersion  = [localVersion stringByAppendingString:@"000"];
+    }
+    
+    version = [version stringByReplacingOccurrencesOfString:@"." withString:@""];
+    if (version.length == 3) {
+        version  = [version stringByAppendingString:@"0"];
+    }
+    else if (version.length==2) {
+        version  = [version stringByAppendingString:@"00"];
+    }else if (version.length==1){
+        version  = [version stringByAppendingString:@"000"];
+    }
+    if (([localVersion floatValue] > [version floatValue])) {
+        return NO;
+    }
+    else {
+        return YES;
+    }
+}
+
 - (void)dealloc {
     [[NSNotificationCenter defaultCenter] removeObserver:self];
 }

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/Controller/VideoCourseViewController.m

@@ -103,7 +103,7 @@
         [self.navigationController pushViewController:webCtrl animated:YES];
     }
     else {
-        [self MBPShow:@"您还没有完成老师认证,认证后才可创建直播课哦~"];
+        [self MBPShow:@"您还没有完成老师认证,认证后才可创建视频课哦~"];
     }
     
 }

+ 3 - 0
README.md

@@ -0,0 +1,3 @@
+#  Bugly 执行
+
+java -jar buglyqq-upload-symbol.jar -appid 9c0fc0b6b7 -appkey 3851db8a-41d7-41a3-8d06-43f28d8b93b3 -bundleid com.DayaMusic.TeachersDaya -version 3.5.1 -platform IOS -inputSymbol /Users/wangzhi/Desktop/管乐迷教师端.app.dSYM