Steven 2 năm trước cách đây
mục cha
commit
042baa0478
64 tập tin đã thay đổi với 1131 bổ sung140 xóa
  1. 48 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 197 37
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Auth_logo/teacherAuth_logo.imageset/teacherAuth_logo@2x.png
  5. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Auth_logo/teacherAuth_logo.imageset/teacherAuth_logo@3x.png
  6. 0 22
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add-1.imageset/Contents.json
  7. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add-1.imageset/image_add@2x.png
  8. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add-1.imageset/image_add@3x.png
  9. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add.imageset/image_add@2x.png
  10. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add.imageset/image_add@3x.png
  11. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/node_play.imageset/node_play@2x.png
  12. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/node_play.imageset/node_play@3x.png
  13. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/auth_tips.imageset/auth_tips@2x.png
  14. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/auth_tips.imageset/auth_tips@3x.png
  15. 17 2
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m
  16. 12 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h
  17. 14 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  18. 4 14
      KulexiuForTeacher/KulexiuForTeacher/Common/Define/PrefixHeader.pch
  19. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/ChatAddressViewController.m
  20. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/ChatViewController.m
  21. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatListViewController.m
  22. 5 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupSettingViewController.m
  23. 3 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/KSChatComplainController.m
  24. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/GroupSettingBodyView.xib
  25. 12 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/Model/GroupNoticeModel.m
  26. 2 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/View/GroupNoticeCell.m
  27. 4 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/View/GroupNoticeCell.xib
  28. 16 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m
  29. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.h
  30. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.m
  31. 6 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHeadView.h
  32. 6 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHeadView.m
  33. 14 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHeadView.xib
  34. 5 12
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeNavView.xib
  35. 7 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/CreateLiveViewController.m
  36. 4 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.h
  37. 26 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m
  38. 16 11
      KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/KSChatroomTextCell.m
  39. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfoManager.h
  40. 5 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/View/LoginBodyView.m
  41. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/View/PasswordBodyView.m
  42. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/View/VefiBodyView.m
  43. 2 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Controller/MineViewController.m
  44. 2 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveCourse/View/MyLiveCourseBodyView.m
  45. 0 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveList/View/FinishedLiveCell.m
  46. 5 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveList/View/FinishedLiveCell.xib
  47. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.h
  48. 5 5
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.m
  49. 33 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/Controller/SettingViewController.m
  50. 16 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/Controller/AccountDeleteViewController.h
  51. 203 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/Controller/AccountDeleteViewController.m
  52. 29 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/View/DeleteAccountBodyView.h
  53. 89 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/View/DeleteAccountBodyView.m
  54. 162 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/View/DeleteAccountBodyView.xib
  55. 4 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/SettingBodyView.h
  56. 13 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/SettingBodyView.m
  57. 124 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/SettingBodyView.xib
  58. 2 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/View/VideoListBodyView.m
  59. 3 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineNavView.xib
  60. 0 1
      KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Sections/NewWhiteboard/KSWhiteboardView.m
  61. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/ClassroomService.m
  62. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/Message/MemberChangeMessage.h
  63. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/Message/MemberChangeMessage.m
  64. 0 3
      KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/Model/Classroom.m

+ 48 - 0
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -549,6 +549,9 @@
 		BC5EB5C42804087000B4A3B0 /* MyStyleBottomView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB5C32804087000B4A3B0 /* MyStyleBottomView.m */; };
 		BC5EB5C62804087700B4A3B0 /* MyStyleBottomView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5EB5C52804087700B4A3B0 /* MyStyleBottomView.xib */; };
 		BC5FF91728293C5600854D37 /* ReceiveListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5FF91628293C5600854D37 /* ReceiveListModel.m */; };
+		BC60E3BD287D294C00B05441 /* AccountDeleteViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC60E3BC287D294C00B05441 /* AccountDeleteViewController.m */; };
+		BC60E3C0287D447F00B05441 /* DeleteAccountBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC60E3BF287D447F00B05441 /* DeleteAccountBodyView.m */; };
+		BC60E3C2287D448600B05441 /* DeleteAccountBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC60E3C1287D448600B05441 /* DeleteAccountBodyView.xib */; };
 		BC6C303A27F586A60044BC0F /* KSRCMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC6C303927F586A60044BC0F /* KSRCMessageModel.m */; };
 		BC73A1F42809693F00FA8F6F /* EvaluateSortView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC73A1F32809693F00FA8F6F /* EvaluateSortView.xib */; };
 		BC76146A280D4F670080FD1F /* HomeworkDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC761468280D4F660080FD1F /* HomeworkDetailModel.m */; };
@@ -1864,6 +1867,11 @@
 		BC5EB5C52804087700B4A3B0 /* MyStyleBottomView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleBottomView.xib; sourceTree = "<group>"; };
 		BC5FF91528293C5600854D37 /* ReceiveListModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReceiveListModel.h; sourceTree = "<group>"; };
 		BC5FF91628293C5600854D37 /* ReceiveListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReceiveListModel.m; sourceTree = "<group>"; };
+		BC60E3BB287D294C00B05441 /* AccountDeleteViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccountDeleteViewController.h; sourceTree = "<group>"; };
+		BC60E3BC287D294C00B05441 /* AccountDeleteViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AccountDeleteViewController.m; sourceTree = "<group>"; };
+		BC60E3BE287D447F00B05441 /* DeleteAccountBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeleteAccountBodyView.h; sourceTree = "<group>"; };
+		BC60E3BF287D447F00B05441 /* DeleteAccountBodyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DeleteAccountBodyView.m; sourceTree = "<group>"; };
+		BC60E3C1287D448600B05441 /* DeleteAccountBodyView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DeleteAccountBodyView.xib; sourceTree = "<group>"; };
 		BC6C303827F586A60044BC0F /* KSRCMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSRCMessageModel.h; sourceTree = "<group>"; };
 		BC6C303927F586A60044BC0F /* KSRCMessageModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSRCMessageModel.m; sourceTree = "<group>"; };
 		BC73A1F32809693F00FA8F6F /* EvaluateSortView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EvaluateSortView.xib; sourceTree = "<group>"; };
@@ -3984,6 +3992,7 @@
 		27F902EB27E8613D00C08A19 /* Setting */ = {
 			isa = PBXGroup;
 			children = (
+				BC60E3B7287D293600B05441 /* DeleteAccount */,
 				27F902EC27E8613D00C08A19 /* Controller */,
 				27F902ED27E8613D00C08A19 /* Model */,
 				27F902EE27E8613D00C08A19 /* View */,
@@ -4786,6 +4795,42 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		BC60E3B7287D293600B05441 /* DeleteAccount */ = {
+			isa = PBXGroup;
+			children = (
+				BC60E3B8287D293600B05441 /* Controller */,
+				BC60E3B9287D293600B05441 /* Model */,
+				BC60E3BA287D293600B05441 /* View */,
+			);
+			path = DeleteAccount;
+			sourceTree = "<group>";
+		};
+		BC60E3B8287D293600B05441 /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				BC60E3BB287D294C00B05441 /* AccountDeleteViewController.h */,
+				BC60E3BC287D294C00B05441 /* AccountDeleteViewController.m */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
+		BC60E3B9287D293600B05441 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		BC60E3BA287D293600B05441 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				BC60E3BE287D447F00B05441 /* DeleteAccountBodyView.h */,
+				BC60E3BF287D447F00B05441 /* DeleteAccountBodyView.m */,
+				BC60E3C1287D448600B05441 /* DeleteAccountBodyView.xib */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
 		BC7CFF992817CBC400CAEB21 /* WithDraw */ = {
 			isa = PBXGroup;
 			children = (
@@ -6262,6 +6307,7 @@
 				BCF1BA5B27F5CF3C00FA36C4 /* LiveSeatApplyCell.xib in Resources */,
 				2780C92427E4903500A95A4F /* PasswordBodyView.xib in Resources */,
 				27F902FF27E864AE00C08A19 /* KSNetworkAlert.xib in Resources */,
+				BC60E3C2287D448600B05441 /* DeleteAccountBodyView.xib in Resources */,
 				BC32E10E286AB326001434DD /* KSPublicAlertView.xib in Resources */,
 				BC7CFFAA2817E3BD00CAEB21 /* IncomeCountTopView.xib in Resources */,
 				BC0A22B82847523E0065C1AB /* MemberListCell.xib in Resources */,
@@ -6567,6 +6613,7 @@
 				BCC9F41127F69BD200647449 /* MessageCell.m in Sources */,
 				277935E227E327F00010E277 /* KSTabBarViewController.m in Sources */,
 				2779322727E30FC30010E277 /* KSInputView.m in Sources */,
+				BC60E3C0287D447F00B05441 /* DeleteAccountBodyView.m in Sources */,
 				2779320D27E30FC30010E277 /* ShopMessBtn.m in Sources */,
 				2779323C27E30FC30010E277 /* VoLRUManager.m in Sources */,
 				277935F027E32AE20010E277 /* KSWebBackButton.m in Sources */,
@@ -7000,6 +7047,7 @@
 				BCD6D15F281950F2009A773E /* UserBankCard.m in Sources */,
 				BC1191ED280E55CB00A716F7 /* EvaluateDetailModel.m in Sources */,
 				275E3DA927F45A8A0010EC30 /* KSLiveStreamVideo.m in Sources */,
+				BC60E3BD287D294C00B05441 /* AccountDeleteViewController.m in Sources */,
 				BCC9F43E27F69BD200647449 /* AccompanyDownloadMessage.m in Sources */,
 				277D431A27E9991200107DB7 /* ModifyViewController.m in Sources */,
 				277932EB27E310070010E277 /* TZProgressView.m in Sources */,

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


+ 197 - 37
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -186,8 +186,8 @@
             filePath = "KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1203"
-            endingLineNumber = "1203"
+            startingLineNumber = "1216"
+            endingLineNumber = "1216"
             landmarkName = "-documentPicker:didPickDocumentAtURL:"
             landmarkType = "7">
          </BreakpointContent>
@@ -394,8 +394,8 @@
             filePath = "KulexiuForTeacher/Module/SealClass/Services/Classroom/Message/MemberChangeMessage.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "34"
-            endingLineNumber = "34"
+            startingLineNumber = "35"
+            endingLineNumber = "35"
             landmarkName = "-decodeWithData:"
             landmarkType = "7">
          </BreakpointContent>
@@ -438,8 +438,8 @@
             filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1844"
-            endingLineNumber = "1844"
+            startingLineNumber = "1870"
+            endingLineNumber = "1870"
             landmarkName = "-showAnimationView:showMessag:"
             landmarkType = "7">
          </BreakpointContent>
@@ -569,8 +569,8 @@
             filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "624"
-            endingLineNumber = "624"
+            startingLineNumber = "635"
+            endingLineNumber = "635"
             landmarkName = "-IMConnetedCallback"
             landmarkType = "7">
          </BreakpointContent>
@@ -642,22 +642,6 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "E9236BDE-6CC1-4EC0-A183-45AA8D4266B0"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1755"
-            endingLineNumber = "1755"
-            landmarkName = "-refreshSeatArrayRemoveMember:member:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
             uuid = "4462B807-FAFE-4E5A-9F0D-450B5EE4A345"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
@@ -681,13 +665,13 @@
             filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1199"
-            endingLineNumber = "1199"
+            startingLineNumber = "1210"
+            endingLineNumber = "1210"
             landmarkName = "-didReceiveMessageNotification:"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "94CE73C4-2B00-4F52-83F1-11CEE46915D2 - ffb5e0723c52ba43"
+                  uuid = "94CE73C4-2B00-4F52-83F1-11CEE46915D2 - ffb5e0723c52bcde"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -697,12 +681,12 @@
                   urlString = "file:///Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1209"
-                  endingLineNumber = "1209"
+                  startingLineNumber = "1220"
+                  endingLineNumber = "1220"
                   offsetFromSymbolStart = "1104">
                </Location>
                <Location
-                  uuid = "94CE73C4-2B00-4F52-83F1-11CEE46915D2 - ffb5e0723c52ba43"
+                  uuid = "94CE73C4-2B00-4F52-83F1-11CEE46915D2 - ffb5e0723c52bcde"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -712,8 +696,8 @@
                   urlString = "file:///Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1209"
-                  endingLineNumber = "1209"
+                  startingLineNumber = "1220"
+                  endingLineNumber = "1220"
                   offsetFromSymbolStart = "1108">
                </Location>
             </Locations>
@@ -723,14 +707,14 @@
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
             uuid = "02023139-0168-42A5-A715-1A21596EF07F"
-            shouldBeEnabled = "Yes"
+            shouldBeEnabled = "No"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1104"
-            endingLineNumber = "1104"
+            startingLineNumber = "1115"
+            endingLineNumber = "1115"
             landmarkName = "-didReceiveMessageNotification:"
             landmarkType = "7">
          </BreakpointContent>
@@ -745,8 +729,8 @@
             filePath = "KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "677"
-            endingLineNumber = "677"
+            startingLineNumber = "688"
+            endingLineNumber = "688"
             landmarkName = "-liveroomQuit"
             landmarkType = "7">
          </BreakpointContent>
@@ -799,5 +783,181 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "B9E58B24-0565-4124-90AB-823797190B04"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/AppDelegate.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "569"
+            endingLineNumber = "569"
+            landmarkName = "-jpushNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "5F4760AC-7CFC-4AD6-9427-E86F62DA35FF"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Classroom/View/MemberList/MemberListCell.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "38"
+            endingLineNumber = "38"
+            landmarkName = "-setSourceModel:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "41CE37A7-F869-41CC-BE93-57C94C416436"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Classroom/View/VideoList/ClassVideoListCell.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "103"
+            endingLineNumber = "103"
+            landmarkName = "-setModel:showTeacherPrompt:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "E795AA93-C7FF-4350-9BBD-A231FA00D6BE"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/SealClass/Services/Classroom/Model/Classroom.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "96"
+            endingLineNumber = "96"
+            landmarkName = "-updateMember:forHandsUp:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "B6D2E808-39C5-473D-8E67-03880763556B"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/SealClass/Services/Classroom/Message/MemberChangeMessage.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "41"
+            endingLineNumber = "41"
+            landmarkName = "-decodeWithData:"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "B6D2E808-39C5-473D-8E67-03880763556B - 27aad4a77a979be0"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "-[MemberChangeMessage decodeWithData:]"
+                  moduleName = "KulexiuForTeacher"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/Message/MemberChangeMessage.m"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "41"
+                  endingLineNumber = "41"
+                  offsetFromSymbolStart = "880">
+               </Location>
+               <Location
+                  uuid = "B6D2E808-39C5-473D-8E67-03880763556B - 27aad4a77a979be0"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "-[MemberChangeMessage decodeWithData:]"
+                  moduleName = "KulexiuForTeacher"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/Message/MemberChangeMessage.m"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "41"
+                  endingLineNumber = "41"
+                  offsetFromSymbolStart = "896">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "0A5DB29F-9CA2-404D-A1FD-57E871DCA2A5"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Course/MusicRoom/View/MusicRoomCourseInfoCell.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "42"
+            endingLineNumber = "42"
+            landmarkName = "-configWithSource:chatAction:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "86CD897F-068F-415C-B5B1-5054D28F24A3"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Classroom/Controller/NewClassRoomViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "974"
+            endingLineNumber = "974"
+            landmarkName = "-renderMainContainerView"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "F6A33331-9D3A-46B4-9490-7E5073CE9305"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Chat/GroupNotice/Controller/GroupNoticeViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "91"
+            endingLineNumber = "91"
+            landmarkName = "-requestData"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "120EF888-B33A-40B3-AD68-AE093061823D"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Login/Model/UserInfoManager.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "133"
+            endingLineNumber = "133"
+            landmarkName = "-queryUserInfoConnectRongCloud:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Auth_logo/teacherAuth_logo.imageset/teacherAuth_logo@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Auth_logo/teacherAuth_logo.imageset/teacherAuth_logo@3x.png


+ 0 - 22
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add-1.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add-1.imageset/image_add@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add-1.imageset/image_add@3x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add.imageset/image_add@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/image_add.imageset/image_add@3x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/node_play.imageset/node_play@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/node_play.imageset/node_play@3x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/auth_tips.imageset/auth_tips@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/auth_tips.imageset/auth_tips@3x.png


+ 17 - 2
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.m

@@ -30,6 +30,7 @@
 #import "MusicRoomViewController.h"
 #import "LiveRoomViewController.h"
 
+#import "UserInfoManager.h"
 typedef NS_ENUM(NSInteger, CHOOSETYPE) {
     CHOOSETYPE_XML,
     CHOOSETYPE_MIDI,
@@ -538,6 +539,16 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
     else if ([[parm stringValueForKey:@"api"] isEqualToString:@"openPageSuccess"]) {
         [self backAction];
     }
+    else if ([[parm stringValueForKey:@"api"] isEqualToString:@"getVersion"]) {
+        NSDictionary *valueDic = [parm dictionaryValueForKey:@"content"];
+        NSMutableDictionary *sendParm = [NSMutableDictionary dictionary];
+        [parm setValue:@"getVersion" forKey:@"api"];
+        NSMutableDictionary *content = [NSMutableDictionary dictionary];
+        [content setValue:[USER_MANAGER getCurrentVersion] forKey:@"version"];
+        [content setValue:[valueDic stringValueForKey:@"uuid"] forKey:@"uuid"];
+        [sendParm setValue:content forKey:@"content"];
+        [self postMessage:sendParm];
+    }
 }
 
 
@@ -1095,7 +1106,9 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
         }
     } faliure:^(NSError * _Nullable error, NSString * _Nullable descMessaeg) {
         [self removehub];
-        [self MBPShow:descMessaeg];
+        if ([NSString isEmptyString:descMessaeg]) {
+            [self MBPShow:descMessaeg];
+        }
         [self fileChooseErrorCallback];
     }];
 }
@@ -1277,7 +1290,9 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
             }
         } faliure:^(NSError * _Nullable error, NSString * _Nullable descMessaeg) {
             [self removehub];
-            [self MBPShow:descMessaeg];
+            if ([NSString isEmptyString:descMessaeg]) {
+                [self MBPShow:descMessaeg];
+            }
             [self fileChooseErrorCallback];
         }];
     });

+ 12 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h

@@ -190,6 +190,17 @@ NS_ASSUME_NONNULL_BEGIN
  */
 + (void)logoutRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+
+// 注销账号功能
+// /auth-server/user/logoff/{smsCode}
+
+/// 注销账号
+/// @param get get
+/// @param smsCode 验证码
+/// @param success 成功
+/// @param faliure 失败
++ (void)logoffRequest:(NSString *)get smsCode:(NSString *)smsCode success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
 #pragma mark ---- 验证码服务
 
 // /api-teacher/code/sendSmsCode
@@ -199,7 +210,7 @@ NS_ASSUME_NONNULL_BEGIN
  
  @param post post
  @param mobile 手机号码
- @param type type    PASSWD  LOGIN BANK PHONE
+ @param type type    PASSWD  LOGIN BANK PHONE LOGOFF
  @param success 成功
  @param faliure 失败
  */

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

@@ -567,6 +567,20 @@
     [self request:get andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+// 注销账号功能
+// /api-auth/user/logoff/{smsCode}
+
+/// 注销账号
+/// @param get get
+/// @param smsCode 验证码
+/// @param success 成功
+/// @param faliure 失败
++ (void)logoffRequest:(NSString *)get smsCode:(NSString *)smsCode success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    
+    NSString *url = [NSString stringWithFormat:@"%@%@%@", hostURL, @"/api-auth/user/logoff/",smsCode];
+    [self request:get andWithUrl:url and:nil success:success faliure:faliure];
+}
+
 #pragma mark ---- 验证码服务
 
 // /api-teacher/code/sendSmsCode

+ 4 - 14
KulexiuForTeacher/KulexiuForTeacher/Common/Define/PrefixHeader.pch

@@ -119,27 +119,17 @@ shouldPrevent = NO; \
 #define hostURL (@"https://dev.colexiu.com")
 #define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
 #define WEBHOST (@"https://dev.colexiu.com/teacher")
-//#define WEBHOST (@"http://192.168.3.13:5002")
-//#define WEBHOST (@"http://192.168.3.63:5000")
 #define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
 #define JSPUSH_ENVIRONMENT (NO)
 #define RCIM_KEY (@"0vnjpoad0jbdz")
 #define SUBMIT_UUID (NO)
 
-//#define hostURL (@"https://test.dayaedu.com")
-//#define SEALCLASSHOST (@"https://test.dayaedu.com/api-classroom")
-//#define WEBHOST (@"http://mteatest.dayaedu.com")
-//#define SOCKET_URL (@"wss://mteatest.dayaedu.com/audioAnalysis")
-//#define JSPUSH_ENVIRONMENT (NO)
-//#define RCIM_KEY (@"0vnjpoad0jbdz")
-//#define SUBMIT_UUID (NO)
-
 //#else
 
-//#define hostURL (@"https://online.dayaedu.com")
-//#define SEALCLASSHOST (@"https://online.dayaedu.com/api-classroom")
-//#define WEBHOST (@"https://mteaonline.dayaedu.com")
-//#define SOCKET_URL (@"wss://mteaonline.dayaedu.com/audioAnalysis")
+//#define hostURL (@"https://online.colexiu.com")
+//#define SEALCLASSHOST (@"https://online.colexiu.com/api-classroom")
+//#define WEBHOST (@"https://online.colexiu.com/teacher")
+//#define SOCKET_URL (@"wss://online.colexiu.com/audioAnalysis")
 //#define JSPUSH_ENVIRONMENT (YES)
 //#define RCIM_KEY (@"6tnym1br6pv07")
 //#define SUBMIT_UUID (YES)

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

@@ -49,7 +49,7 @@
     self.categoryView.titleColorGradientEnabled = YES;
     self.categoryView.hidden = YES;
     _pagerView = [self preferredPagingView];
-    self.pagerView.frame = CGRectMake(0, 100, kScreenWidth, kScreenHeight - kNaviBarHeight-100);
+    self.pagerView.frame = CGRectMake(0, 100, kScreenWidth, kScreenHeight - kNaviBarHeight-100 - kTabBarHeight);
     self.pagerView.listContainerView.categoryNestPagingEnabled = YES;
     self.pagerView.mainTableView.gestureDelegate = self;
     self.pagerView.backgroundColor = [UIColor clearColor];

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

@@ -186,6 +186,7 @@
 - (JXCategoryListContainerView *)listContainerView {
     if (!_listContainerView) {
         _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self];
+        _listContainerView.scrollView.scrollEnabled = NO;
     }
     return _listContainerView;
 }

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatListViewController.m

@@ -52,6 +52,7 @@
         [self allocLeftButton];
         self.conversationListTableView.tableHeaderView = [UIView new];
     }
+    [self refreshConversationTableViewIfNeeded];
 }
 
 - (void)allocLeftButton {

+ 5 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupSettingViewController.m

@@ -214,9 +214,10 @@
             [self.navigationController pushViewController:ctrl animated:YES];
         }
             break;
-        case GROUPSETTING_DISMISS: // 解散群聊
+        case GROUPSETTING_DISMISS: // 解散群聊  暂不解散 直接返回发消息
         {
-            [self showDismissAlert];
+            [self backAction];
+//            [self showDismissAlert];
         }
             break;
         default:
@@ -234,11 +235,12 @@
 }
 
 - (void)dismissGroup {
-
+    
     [KSNetworkingManager imGroupDismiss:KS_POST groupId:self.groupId success:^(NSDictionary * _Nonnull dic) {
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
             MJWeakSelf;
             [self KSShowMsg:@"群已解散" promptCompletion:^{
+                [[RCIMClient sharedRCIMClient] removeConversation:ConversationType_GROUP targetId:self.groupId];
                 [weakSelf.navigationController popToRootViewControllerAnimated:YES];
             }];
         }

+ 3 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/KSChatComplainController.m

@@ -78,7 +78,9 @@
         [self uplodMessage:attachments content:content];
     } faliure:^(NSError * _Nullable error, NSString * _Nullable descMessaeg) {
         [self removehub];
-        [self MBPShow:descMessaeg];
+        if ([NSString isEmptyString:descMessaeg]) {
+            [self MBPShow:descMessaeg];
+        }
     }];
 }
 
@@ -151,7 +153,6 @@
         border.strokeColor = HexRGB(0xCFCFCF).CGColor;
         border.fillColor = nil;
         border.path = [UIBezierPath bezierPathWithRoundedRect:cameraButton.bounds cornerRadius:5.0f].CGPath;
-        ;
         border.frame = cameraButton.bounds;
         border.lineWidth = 1.f;
         border.lineCap = @"square";

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

@@ -368,7 +368,7 @@
                     <constraints>
                         <constraint firstAttribute="height" constant="44" id="zlf-6G-YkC"/>
                     </constraints>
-                    <state key="normal" title="解散群组"/>
+                    <state key="normal" title="发消息"/>
                     <userDefinedRuntimeAttributes>
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                             <real key="value" value="22"/>

+ 12 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/Model/GroupNoticeModel.m

@@ -38,7 +38,8 @@ NSString *const kGroupNoticeModelAvatar = @"avatar";
 @synthesize groupId = _groupId;
 @synthesize createTime = _createTime;
 @synthesize sentToNewMember = _sentToNewMember;
-
+@synthesize username = _username;
+@synthesize avatar = _avatar;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -62,6 +63,8 @@ NSString *const kGroupNoticeModelAvatar = @"avatar";
             self.groupId = [self objectOrNilForKey:kGroupNoticeModelGroupId fromDictionary:dict];
             self.createTime = [self objectOrNilForKey:kGroupNoticeModelCreateTime fromDictionary:dict];
             self.sentToNewMember = [[self objectOrNilForKey:kGroupNoticeModelSentToNewMember fromDictionary:dict] boolValue];
+        self.username = [self objectOrNilForKey:kGroupNoticeModelUsername fromDictionary:dict];
+        self.avatar = [self objectOrNilForKey:kGroupNoticeModelAvatar fromDictionary:dict];
 
     }
     
@@ -82,7 +85,8 @@ NSString *const kGroupNoticeModelAvatar = @"avatar";
     [mutableDict setValue:self.groupId forKey:kGroupNoticeModelGroupId];
     [mutableDict setValue:self.createTime forKey:kGroupNoticeModelCreateTime];
     [mutableDict setValue:[NSNumber numberWithBool:self.sentToNewMember] forKey:kGroupNoticeModelSentToNewMember];
-
+    [mutableDict setValue:self.username forKey:kGroupNoticeModelUsername];
+    [mutableDict setValue:self.avatar forKey:kGroupNoticeModelAvatar];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -119,6 +123,8 @@ NSString *const kGroupNoticeModelAvatar = @"avatar";
     self.groupId = [aDecoder decodeObjectForKey:kGroupNoticeModelGroupId];
     self.createTime = [aDecoder decodeObjectForKey:kGroupNoticeModelCreateTime];
     self.sentToNewMember = [aDecoder decodeBoolForKey:kGroupNoticeModelSentToNewMember];
+    self.username = [aDecoder decodeObjectForKey:kGroupNoticeModelUsername];
+    self.avatar = [aDecoder decodeObjectForKey:kGroupNoticeModelAvatar];
     return self;
 }
 
@@ -135,6 +141,8 @@ NSString *const kGroupNoticeModelAvatar = @"avatar";
     [aCoder encodeObject:_groupId forKey:kGroupNoticeModelGroupId];
     [aCoder encodeObject:_createTime forKey:kGroupNoticeModelCreateTime];
     [aCoder encodeBool:_sentToNewMember forKey:kGroupNoticeModelSentToNewMember];
+    [aCoder encodeObject:_username forKey:kGroupNoticeModelUsername];
+    [aCoder encodeObject:_avatar forKey:kGroupNoticeModelAvatar];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -153,6 +161,8 @@ NSString *const kGroupNoticeModelAvatar = @"avatar";
         copy.groupId = [self.groupId copyWithZone:zone];
         copy.createTime = [self.createTime copyWithZone:zone];
         copy.sentToNewMember = self.sentToNewMember;
+        copy.username = [self.username copyWithZone:zone];
+        copy.avatar = [self.avatar copyWithZone:zone];
     }
     
     return copy;

+ 2 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/View/GroupNoticeCell.m

@@ -48,7 +48,8 @@
     // 赋值
     if ([source isKindOfClass:[GroupNoticeModel class]]) {
         GroupNoticeModel *model = source;
-        self.userName.text = [NSString returnNoNullStringWithString:@""];
+        self.userName.text = [NSString returnNoNullStringWithString:model.username];
+        [self.userLogo sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USER_LOGO_RECTANGLE]];
         self.noticeTitle.text = [NSString returnNoNullStringWithString:model.title];
         self.noticeContent.text = [NSString returnNoNullStringWithString:model.content];
         self.focusLabel.hidden = model.top ? NO : YES;

+ 4 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/View/GroupNoticeCell.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" 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="19519"/>
+        <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="359" height="253"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="chat_group_Logo" translatesAutoresizingMaskIntoConstraints="NO" id="Gkn-L8-UCb">
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_avatarRectangle" translatesAutoresizingMaskIntoConstraints="NO" id="Gkn-L8-UCb">
                         <rect key="frame" x="16" y="15" width="60" height="60"/>
                         <constraints>
                             <constraint firstAttribute="height" constant="60" id="8bz-sK-gjT"/>
@@ -135,7 +135,7 @@
         </tableViewCell>
     </objects>
     <resources>
-        <image name="chat_group_Logo" width="44" height="44"/>
         <image name="notice_action" width="24" height="25"/>
+        <image name="user_avatarRectangle" width="44" height="44"/>
     </resources>
 </document>

+ 16 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m

@@ -31,6 +31,8 @@
 #import "KSPremissionAlert.h"
 #import "RecordCheckManager.h"
 
+#import "UserSettingViewController.h"
+
 @interface HomeViewController ()<SDCycleScrollViewDelegate>
 
 @property (nonatomic, strong) HomeNavView *navView;
@@ -193,7 +195,8 @@
     }];
     [self.view addSubview:self.navView];
     [self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.right.top.mas_equalTo(self.view);
+        make.width.mas_equalTo(110);
+        make.right.top.mas_equalTo(self.view);
         make.height.mas_equalTo(kNaviBarHeight);
     }];
     [self.view bringSubviewToFront:self.scrollView];
@@ -379,13 +382,23 @@
     if (!_headView) {
         _headView = [HomeHeadView shareInstance];
         MJWeakSelf;
-        [_headView operationCallback:^{
-            [weakSelf toAuthDetail];
+        [_headView operationCallback:^(HOMEHEADACTION action) {
+            if (action == HOMEHEADACTION_AUTH) {
+                [weakSelf toAuthDetail];
+            }
+            else {
+                [weakSelf toUserCenter];
+            }
         }];
     }
     return _headView;
 }
 
+- (void)toUserCenter {
+    UserSettingViewController *ctrl = [[UserSettingViewController alloc] init];
+    [self.navigationController pushViewController:ctrl animated:YES];
+}
+
 - (void)toAuthDetail {
     KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
     webCtrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/teacherCert"];

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.h

@@ -8,7 +8,7 @@
 #import <UIKit/UIKit.h>
 #import "HomeworkListModel.h"
 
-typedef void(^ChatGroupCallback)(NSString *targetId);
+typedef void(^ChatGroupCallback)(NSString * _Nonnull targetId);
 NS_ASSUME_NONNULL_BEGIN
 
 @interface MusicRoomHomeworkCell : UITableViewCell

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/View/MusicRoomHomeworkCell.m

@@ -47,7 +47,7 @@
     NSString *lessonEnd = [formatter stringFromDate:endDate];
     self.courseTimeLabel.text = [NSString stringWithFormat:@"%@~%@",[NSString returnNoNullStringWithString:lessonBegin],[NSString returnNoNullStringWithString:lessonEnd]];
     self.subjectName.text = [NSString returnNoNullStringWithString:sourceModel.subjectName];
-    self.courseName.text = [NSString stringWithFormat:@"%@第%.0f课",sourceModel.courseGroupName, sourceModel.classNum];
+    self.courseName.text = [NSString returnNoNullStringWithString:sourceModel.courseGroupName];
     // 判断是否布置了作业
     if ([NSString isEmptyString:sourceModel.decorateTime]) {
         self.statusLabel.hidden = YES;

+ 6 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHeadView.h

@@ -8,7 +8,12 @@
 #import <UIKit/UIKit.h>
 #import "TeacherInfo.h"
 
-typedef void(^HomeHeadCallback)(void);
+typedef NS_ENUM(NSInteger, HOMEHEADACTION) {
+    HOMEHEADACTION_USERCENTER,  // 用户设置
+    HOMEHEADACTION_AUTH,        // 认证
+};
+
+typedef void(^HomeHeadCallback)(HOMEHEADACTION action);
 NS_ASSUME_NONNULL_BEGIN
 
 @interface HomeHeadView : UIView

+ 6 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHeadView.m

@@ -152,7 +152,12 @@
 
 - (IBAction)authDetail:(id)sender {
     if (self.callback) {
-        self.callback();
+        self.callback(HOMEHEADACTION_AUTH);
+    }
+}
+- (IBAction)userCenter:(id)sender {
+    if (self.callback) {
+        self.callback(HOMEHEADACTION_USERCENTER);
     }
 }
 

+ 14 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHeadView.xib

@@ -1,6 +1,8 @@
 <?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>
@@ -285,6 +287,13 @@
                         <constraint firstAttribute="height" constant="22" id="84M-Rs-Qki"/>
                     </constraints>
                 </imageView>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6p5-cJ-ewl">
+                    <rect key="frame" x="14" y="4" width="52" height="52"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <connections>
+                        <action selector="userCenter:" destination="iN0-l3-epB" eventType="touchUpInside" id="2AR-n9-ABc"/>
+                    </connections>
+                </button>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
@@ -300,6 +309,8 @@
                 <constraint firstAttribute="bottom" secondItem="Keh-u1-LE5" secondAttribute="bottom" constant="-12" id="Lww-yr-BS1"/>
                 <constraint firstItem="X9B-Hy-SDf" firstAttribute="bottom" secondItem="Bxq-wl-TlW" secondAttribute="bottom" id="MBt-8Q-OOg"/>
                 <constraint firstItem="BgO-43-Wsb" firstAttribute="centerY" secondItem="xs8-aA-tdP" secondAttribute="centerY" id="OpO-ZU-93H"/>
+                <constraint firstItem="6p5-cJ-ewl" firstAttribute="top" secondItem="Vp5-5Y-h2u" secondAttribute="top" id="Vz7-SU-dzV"/>
+                <constraint firstItem="6p5-cJ-ewl" firstAttribute="leading" secondItem="Vp5-5Y-h2u" secondAttribute="leading" id="dKO-xa-zDy"/>
                 <constraint firstItem="xs8-aA-tdP" firstAttribute="top" secondItem="Vp5-5Y-h2u" secondAttribute="top" constant="6" id="fYJ-um-Z1x"/>
                 <constraint firstItem="QKO-WL-PjF" firstAttribute="leading" secondItem="ixV-E1-X1x" secondAttribute="leading" id="fga-xU-rvq"/>
                 <constraint firstItem="Vp5-5Y-h2u" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="gsT-nC-Tat"/>
@@ -307,10 +318,12 @@
                 <constraint firstItem="QKO-WL-PjF" firstAttribute="top" secondItem="Vp5-5Y-h2u" secondAttribute="bottom" constant="14" id="iD2-L2-kjs"/>
                 <constraint firstItem="X9B-Hy-SDf" firstAttribute="leading" secondItem="Bxq-wl-TlW" secondAttribute="leading" id="j4c-N7-Tei"/>
                 <constraint firstItem="QKO-WL-PjF" firstAttribute="trailing" secondItem="ixV-E1-X1x" secondAttribute="trailing" id="jHk-YK-tbB"/>
+                <constraint firstItem="6p5-cJ-ewl" firstAttribute="trailing" secondItem="Vp5-5Y-h2u" secondAttribute="trailing" id="ls2-RN-ZcX"/>
                 <constraint firstItem="X9B-Hy-SDf" firstAttribute="trailing" secondItem="Bxq-wl-TlW" secondAttribute="trailing" id="npl-9r-30v"/>
                 <constraint firstAttribute="trailing" secondItem="Keh-u1-LE5" secondAttribute="trailing" id="nwL-YU-oQl"/>
                 <constraint firstItem="X9B-Hy-SDf" firstAttribute="top" secondItem="Bxq-wl-TlW" secondAttribute="top" id="rFi-g4-TNx"/>
                 <constraint firstItem="QKO-WL-PjF" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="te7-6x-KAT"/>
+                <constraint firstItem="6p5-cJ-ewl" firstAttribute="bottom" secondItem="Vp5-5Y-h2u" secondAttribute="bottom" id="uXW-Xl-ZD0"/>
                 <constraint firstItem="QKO-WL-PjF" firstAttribute="bottom" secondItem="ixV-E1-X1x" secondAttribute="bottom" id="vVq-di-6L8"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
@@ -349,7 +362,7 @@
         <image name="auth_tips" width="185" height="26"/>
         <image name="home_ikon" width="228" height="162"/>
         <image name="musicianAuth_logo" width="61" height="22"/>
-        <image name="teacherAuth_logo" width="53" height="22"/>
+        <image name="teacherAuth_logo" width="54" height="22"/>
         <image name="user_default_avatal" width="52" height="52"/>
     </resources>
 </document>

+ 5 - 12
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeNavView.xib

@@ -10,17 +10,14 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="HomeNavView">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="76"/>
+            <rect key="frame" x="0.0" y="0.0" width="110" height="76"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vOh-9c-b3r">
-                    <rect key="frame" x="0.0" y="32" width="414" height="44"/>
+                    <rect key="frame" x="0.0" y="32" width="110" height="44"/>
                     <subviews>
-                        <imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_head_title" translatesAutoresizingMaskIntoConstraints="NO" id="dZB-va-AMI">
-                            <rect key="frame" x="14" y="11.5" width="75" height="21"/>
-                        </imageView>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qSz-FE-UVP">
-                            <rect key="frame" x="360" y="0.0" width="44" height="44"/>
+                            <rect key="frame" x="56" y="0.0" width="44" height="44"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="44" id="bCd-Ui-00e"/>
                             </constraints>
@@ -31,7 +28,7 @@
                             </connections>
                         </button>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="t1J-uq-ROg">
-                            <rect key="frame" x="390" y="10" width="8" height="8"/>
+                            <rect key="frame" x="86" y="10" width="8" height="8"/>
                             <subviews>
                                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="g4A-fh-p63">
                                     <rect key="frame" x="1" y="1" width="6" height="6"/>
@@ -59,11 +56,10 @@
                             </userDefinedRuntimeAttributes>
                         </view>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="q6l-Iv-Tbq">
-                            <rect key="frame" x="311" y="0.0" width="44" height="44"/>
+                            <rect key="frame" x="7" y="0.0" width="44" height="44"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="44" id="5RK-8c-0uc"/>
                                 <constraint firstAttribute="width" constant="44" id="UNi-JF-ydf"/>
-                                <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="44" id="WIj-bC-lz5"/>
                             </constraints>
                             <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                             <state key="normal" image="home_scan"/>
@@ -75,13 +71,11 @@
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
                         <constraint firstItem="qSz-FE-UVP" firstAttribute="leading" secondItem="q6l-Iv-Tbq" secondAttribute="trailing" constant="5" id="38X-Iz-sbM"/>
-                        <constraint firstItem="dZB-va-AMI" firstAttribute="centerY" secondItem="vOh-9c-b3r" secondAttribute="centerY" id="5Gz-Yr-ocE"/>
                         <constraint firstAttribute="trailing" secondItem="t1J-uq-ROg" secondAttribute="trailing" constant="16" id="81p-OQ-M7S"/>
                         <constraint firstItem="t1J-uq-ROg" firstAttribute="top" secondItem="vOh-9c-b3r" secondAttribute="top" constant="10" id="FcH-GF-jbv"/>
                         <constraint firstAttribute="trailing" secondItem="qSz-FE-UVP" secondAttribute="trailing" constant="10" id="Hpm-xn-doL"/>
                         <constraint firstAttribute="bottom" secondItem="qSz-FE-UVP" secondAttribute="bottom" id="N2N-9O-f5N"/>
                         <constraint firstItem="qSz-FE-UVP" firstAttribute="centerY" secondItem="q6l-Iv-Tbq" secondAttribute="centerY" id="Tpt-zB-iEz"/>
-                        <constraint firstItem="dZB-va-AMI" firstAttribute="leading" secondItem="vOh-9c-b3r" secondAttribute="leading" constant="14" id="ajM-qq-6hC"/>
                         <constraint firstAttribute="height" constant="44" id="cj7-26-Plu"/>
                         <constraint firstItem="qSz-FE-UVP" firstAttribute="top" secondItem="vOh-9c-b3r" secondAttribute="top" id="dgb-Bb-S6e"/>
                     </constraints>
@@ -103,7 +97,6 @@
         </view>
     </objects>
     <resources>
-        <image name="home_head_title" width="75" height="21"/>
         <image name="home_message" width="25" height="23"/>
         <image name="home_scan" width="22" height="22"/>
     </resources>

+ 7 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/CreateLiveViewController.m

@@ -90,11 +90,18 @@
     ctrl.roomId = roomId;
     ctrl.isTempRoom = YES;
     ctrl.liveContent = liveDesc;
+    MJWeakSelf;
+    [ctrl backRefreshCallback:^{
+        [weakSelf backAction];
+    }];
     CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:ctrl];
     navCtrl.modalPresentationStyle = UIModalPresentationFullScreen;
+    
+    
     [self.navigationController presentViewController:navCtrl animated:YES completion:nil];
 }
 
+
 /*
 #pragma mark - Navigation
 

+ 4 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.h

@@ -9,6 +9,8 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+typedef void(^LiveRoomBackAction)(void);
+
 @interface LiveRoomViewController : BaseViewController
 
 @property (nonatomic, strong) NSString *roomId; // 房间号
@@ -20,6 +22,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, strong) NSString *liveContent; // 直播内容
 
+- (void)backRefreshCallback:(LiveRoomBackAction)callback;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 26 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Live/Controller/LiveRoomViewController.m

@@ -151,12 +151,20 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
 /// 直播间自动关闭时间
 @property (nonatomic, assign) NSInteger expiredMinute;
 
+@property (nonatomic, copy) LiveRoomBackAction callback;
+
 @end
 
 
 
 @implementation LiveRoomViewController
 
+- (void)backRefreshCallback:(LiveRoomBackAction)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
@@ -237,6 +245,9 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
                 self.room = nil;
                 self.preVideoView = nil;
                 [[RCRTCEngine sharedInstance].defaultVideoStream stopCapture];
+                if (self.callback) {
+                    self.callback();
+                }
                 [self.navigationController dismissViewControllerAnimated:YES completion:nil];
             }
         }
@@ -1567,7 +1578,11 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
         [weakSelf closeRoomNotiferService];
         [weakSelf quitChatRoom];
         weakSelf.room = nil;
+        if (self.callback) {
+            self.callback();
+        }
         [weakSelf.navigationController dismissViewControllerAnimated:YES completion:nil];
+        
     }];
 }
 - (void)pauseLiveActionBack:(BOOL)backPreView {
@@ -1600,7 +1615,11 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
             self.room = nil;
             self.preVideoView = nil;
             [[RCRTCEngine sharedInstance].defaultVideoStream stopCapture];
+            if (self.callback) {
+                self.callback();
+            }
             [self.navigationController dismissViewControllerAnimated:YES completion:nil];
+            
         }
         else {
             MJWeakSelf;
@@ -1609,14 +1628,21 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
                 [weakSelf quitNotiferService];
                 [weakSelf quitChatRoom];
                 [weakSelf.moreView hideView];
+                if (self.callback) {
+                    self.callback();
+                }
                 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                     [weakSelf.navigationController dismissViewControllerAnimated:YES completion:nil];
+                    
                 });
             }];
         }
     }
 }
 
+
+
+
 - (KSLiveStreamVideo *)localVideo {
     if (!_localVideo) {
         _localVideo = [KSLiveStreamVideo LocalStreamVideo];

+ 16 - 11
KulexiuForTeacher/KulexiuForTeacher/Module/Live/View/KSChatroomTextCell.m

@@ -75,10 +75,11 @@
         RCUserInfo *userInfo = model.userInfo;
         NSString *userName = [userInfo.name stringByAppendingString:@""];
         NSString *localizedMessage = @"进入直播间";
-        NSString *str =[NSString stringWithFormat:@"%@%@%@",headString,userName,localizedMessage];
+        NSString *str =[NSString stringWithFormat:@"%@%@",headString,userName];
         NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:str];
         [attributedString addAttribute:NSForegroundColorAttributeName value:(THEMECOLOR) range:[str rangeOfString:userName]];
-        [attributedString addAttribute:NSForegroundColorAttributeName value:(HexRGB(0xffffff)) range:[str rangeOfString:localizedMessage]];
+        NSAttributedString *localizedStr = [[NSAttributedString alloc] initWithString:localizedMessage attributes:@{NSForegroundColorAttributeName:HexRGB(0xffffff)}];
+        [attributedString appendAttributedString:localizedStr];
         if (isCreator) {
             [self addAttachmentImg:attributedString imgName:creatorImg];
         }
@@ -99,7 +100,7 @@
         }
         else if (seatApply.type == SEATHANDLE_KICKSEAT) {
             userName = seatApply.teacherName;
-            localizedMessage = @"将你下麦";
+            localizedMessage = @"将你下麦";
         }
         else if (seatApply.type == SEATHANDLE_APPLY) {
             userName = seatApply.audienceName;
@@ -110,10 +111,11 @@
             localizedMessage = @"取消了连麦申请";
         }
         
-        NSString *str =[NSString stringWithFormat:@"%@%@%@",headString,userName,localizedMessage];
+        NSString *str =[NSString stringWithFormat:@"%@%@",headString,userName];
         NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:str];
         [attributedString addAttribute:NSForegroundColorAttributeName value:(THEMECOLOR) range:[str rangeOfString:userName]];
-        [attributedString addAttribute:NSForegroundColorAttributeName value:(HexRGB(0xffffff)) range:[str rangeOfString:localizedMessage]];
+        NSAttributedString *localizedStr = [[NSAttributedString alloc] initWithString:localizedMessage attributes:@{NSForegroundColorAttributeName:HexRGB(0xffffff)}];
+        [attributedString appendAttributedString:localizedStr];
         if (isCreator) {
             [self addAttachmentImg:attributedString imgName:creatorImg];
         }
@@ -139,10 +141,11 @@
             userName = seatResponse.audienceName;
             localizedMessage = @"拒绝了连麦邀请";
         }
-        NSString *str =[NSString stringWithFormat:@"%@%@%@",headString,userName,localizedMessage];
+        NSString *str =[NSString stringWithFormat:@"%@%@",headString,userName];
         NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:str];
         [attributedString addAttribute:NSForegroundColorAttributeName value:(THEMECOLOR) range:[str rangeOfString:userName]];
-        [attributedString addAttribute:NSForegroundColorAttributeName value:(HexRGB(0xffffff)) range:[str rangeOfString:localizedMessage]];
+        NSAttributedString *localizedStr = [[NSAttributedString alloc] initWithString:localizedMessage attributes:@{NSForegroundColorAttributeName:HexRGB(0xffffff)}];
+        [attributedString appendAttributedString:localizedStr];
         if (isCreator) {
             [self addAttachmentImg:attributedString imgName:creatorImg];
         }
@@ -153,11 +156,12 @@
         RCUserInfo *userInfo = model.userInfo;
         NSString *userName = [userInfo.name stringByAppendingString:@""];
         NSString *localizedMessage = [NSString stringWithFormat:@"给主讲人点了%d个赞",likeMessage.counts];
-        NSString *str =[NSString stringWithFormat:@"%@%@",userName,localizedMessage];
+        NSString *str =[NSString stringWithFormat:@"%@",userName];
         NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:str];
         
         [attributedString addAttribute:NSForegroundColorAttributeName value:(THEMECOLOR) range:[str rangeOfString:userName]];
-        [attributedString addAttribute:NSForegroundColorAttributeName value:(HexRGB(0xffffff)) range:[str rangeOfString:localizedMessage]];
+        NSAttributedString *localizedStr = [[NSAttributedString alloc] initWithString:localizedMessage attributes:@{NSForegroundColorAttributeName:HexRGB(0xffffff)}];
+        [attributedString appendAttributedString:localizedStr];
         [self.contentLabel setAttributedText:attributedString.copy];
         return;
     }
@@ -174,10 +178,11 @@
             NSString *localizedMessage = textMessage.content;
             RCUserInfo *userInfo = model.userInfo;
             NSString *userName = [userInfo.name stringByAppendingString:@":"];
-            NSString *str =[NSString stringWithFormat:@"%@%@%@",headString,userName,localizedMessage];
+            NSString *str =[NSString stringWithFormat:@"%@%@",headString,userName];
             NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:str];
             [attributedString addAttribute:NSForegroundColorAttributeName value:(THEMECOLOR) range:[str rangeOfString:userName]];
-            [attributedString addAttribute:NSForegroundColorAttributeName value:(HexRGB(0xffffff)) range:[str rangeOfString:localizedMessage]];
+            NSAttributedString *localizedStr = [[NSAttributedString alloc] initWithString:localizedMessage attributes:@{NSForegroundColorAttributeName:HexRGB(0xffffff)}];
+            [attributedString appendAttributedString:localizedStr];
             if (isCreator) {
                 [self addAttachmentImg:attributedString imgName:creatorImg];
             }

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

@@ -42,6 +42,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)connectionIMCallback:(ConnectIMCallback)callback;
 
+- (NSString *)getCurrentVersion;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 5 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Login/View/LoginBodyView.m

@@ -56,6 +56,7 @@
 
 
 - (IBAction)getVefiCode:(id)sender {
+    [self endEditing:YES];
     if ([NSString isEmptyString:self.phoneField.text]) {
         // 请输入手机号
         [self MBPShow:@"请输入手机号"];
@@ -72,23 +73,27 @@
 }
 
 - (IBAction)selectButtonAction:(id)sender {
+    [self endEditing:YES];
     self.sureButton.selected = !self.sureButton.selected;
     _isChooseProtocal = self.sureButton.isSelected;
 }
 
 - (IBAction)passwordLogin:(id)sender {
+    [self endEditing:YES];
     if (self.callback) {
         self.callback(LOGINACTION_PASSWORD, self.phoneField.text);
     }
 }
 
 - (IBAction)registerProtocal:(id)sender {
+    [self endEditing:YES];
     if (self.callback) {
         self.callback(LOGINACTION_REGPROTOCAL, @"");
     }
 }
 
 - (IBAction)privacyAction:(id)sender {
+    [self endEditing:YES];
     if (self.callback) {
         self.callback(LOGINACTION_PRIVACY, @"");
     }

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Login/View/PasswordBodyView.m

@@ -41,6 +41,7 @@
 }
 
 - (IBAction)loginAction:(id)sender {
+    [self endEditing:YES];
     if ([NSString isEmptyString:self.phoneField.text]) {
         [self MBPShow:@"请输入您的手机号"];
         return;
@@ -86,6 +87,7 @@
 }
 
 - (IBAction)backAction:(id)sender {
+    [self endEditing:YES];
     if (self.callback) {
         self.callback(PWDLOGIN_BACK,@{});
     }

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Login/View/VefiBodyView.m

@@ -158,6 +158,7 @@
 
 // 返回
 - (IBAction)backAction:(id)sender {
+    [self endEditing:YES];
     if (self.callback) {
         self.callback(VEFIACTION_BACK, @"");
     }

+ 2 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Controller/MineViewController.m

@@ -84,7 +84,8 @@
     
     [self.view addSubview:self.navView];
     [self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.right.top.mas_equalTo(self.view);
+        make.width.mas_equalTo(60);
+        make.right.top.mas_equalTo(self.view);
         make.height.mas_equalTo(kNaviBarHeight);
     }];
     

+ 2 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveCourse/View/MyLiveCourseBodyView.m

@@ -254,7 +254,8 @@
     }];
     [view addSubview:self.promptView];
     [self.promptView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.right.top.bottom.mas_equalTo(self);
+        make.left.right.mas_equalTo(self);
+        make.top.bottom.mas_equalTo(self.tableView);
     }];
 }
 

+ 0 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveList/View/FinishedLiveCell.m

@@ -15,8 +15,6 @@
 
 @property (weak, nonatomic) IBOutlet UILabel *endTimeLabel;
 
-@property (weak, nonatomic) IBOutlet UIImageView *liveImage;
-
 @property (nonatomic, strong) LiveListModel *sourceModel;
 
 @property (nonatomic, copy) LiveRecordCallback callback;

+ 5 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveList/View/FinishedLiveCell.xib

@@ -140,6 +140,11 @@
             </tableViewCellContentView>
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <connections>
+                <outlet property="endTimeLabel" destination="EzB-Nm-kvZ" id="M8b-cJ-ng8"/>
+                <outlet property="liveDesc" destination="aJw-hj-w8P" id="79Z-t7-XTo"/>
+                <outlet property="liveTitleLabel" destination="MNg-U0-vzY" id="1bU-Ux-Rya"/>
+            </connections>
             <point key="canvasLocation" x="175.36231884057972" y="102.79017857142857"/>
         </tableViewCell>
     </objects>

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.h

@@ -33,7 +33,7 @@
 @property (nonatomic, strong) NSString *subjectId;
 @property (nonatomic, strong) NSString *username;
 @property (nonatomic, strong) NSString *entryFlag;
-@property (nonatomic, assign) double gender;
+@property (nonatomic, strong) NSString *gender;
 @property (nonatomic, assign) double fansNum;
 @property (nonatomic, strong) NSString *musicianFlag;
 @property (nonatomic, strong) NSString * liveFlag;

+ 5 - 5
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.m

@@ -124,7 +124,7 @@ NSString *const kTeacherInfoUserId = @"userId";
             self.subjectId = [self objectOrNilForKey:kTeacherInfoSubjectId fromDictionary:dict];
             self.username = [self objectOrNilForKey:kTeacherInfoUsername fromDictionary:dict];
             self.entryFlag = [self objectOrNilForKey:kTeacherInfoEntryFlag fromDictionary:dict];
-            self.gender = [[self objectOrNilForKey:kTeacherInfoGender fromDictionary:dict] doubleValue];
+            self.gender = [self objectOrNilForKey:kTeacherInfoGender fromDictionary:dict];
             self.fansNum = [[self objectOrNilForKey:kTeacherInfoFansNum fromDictionary:dict] doubleValue];
             self.musicianFlag = [self objectOrNilForKey:kTeacherInfoMusicianFlag fromDictionary:dict];
             self.liveFlag = [self objectOrNilForKey:kTeacherInfoLiveFlag fromDictionary:dict];
@@ -169,7 +169,7 @@ NSString *const kTeacherInfoUserId = @"userId";
     [mutableDict setValue:self.subjectId forKey:kTeacherInfoSubjectId];
     [mutableDict setValue:self.username forKey:kTeacherInfoUsername];
     [mutableDict setValue:self.entryFlag forKey:kTeacherInfoEntryFlag];
-    [mutableDict setValue:[NSNumber numberWithDouble:self.gender] forKey:kTeacherInfoGender];
+    [mutableDict setValue:self.gender forKey:kTeacherInfoGender];
     [mutableDict setValue:[NSNumber numberWithDouble:self.fansNum] forKey:kTeacherInfoFansNum];
     [mutableDict setValue:self.musicianFlag forKey:kTeacherInfoMusicianFlag];
     [mutableDict setValue:self.liveFlag forKey:kTeacherInfoLiveFlag];
@@ -231,7 +231,7 @@ NSString *const kTeacherInfoUserId = @"userId";
     self.subjectId = [aDecoder decodeObjectForKey:kTeacherInfoSubjectId];
     self.username = [aDecoder decodeObjectForKey:kTeacherInfoUsername];
     self.entryFlag = [aDecoder decodeObjectForKey:kTeacherInfoEntryFlag];
-    self.gender = [aDecoder decodeDoubleForKey:kTeacherInfoGender];
+    self.gender = [aDecoder decodeObjectForKey:kTeacherInfoGender];
     self.fansNum = [aDecoder decodeDoubleForKey:kTeacherInfoFansNum];
     self.musicianFlag = [aDecoder decodeObjectForKey:kTeacherInfoMusicianFlag];
     self.liveFlag = [aDecoder decodeObjectForKey:kTeacherInfoLiveFlag];
@@ -272,7 +272,7 @@ NSString *const kTeacherInfoUserId = @"userId";
     [aCoder encodeObject:_subjectId forKey:kTeacherInfoSubjectId];
     [aCoder encodeObject:_username forKey:kTeacherInfoUsername];
     [aCoder encodeObject:_entryFlag forKey:kTeacherInfoEntryFlag];
-    [aCoder encodeDouble:_gender forKey:kTeacherInfoGender];
+    [aCoder encodeObject:_gender forKey:kTeacherInfoGender];
     [aCoder encodeDouble:_fansNum forKey:kTeacherInfoFansNum];
     [aCoder encodeObject:_musicianFlag forKey:kTeacherInfoMusicianFlag];
     [aCoder encodeObject:_liveFlag forKey:kTeacherInfoLiveFlag];
@@ -315,7 +315,7 @@ NSString *const kTeacherInfoUserId = @"userId";
         copy.subjectId = [self.subjectId copyWithZone:zone];
         copy.username = [self.username copyWithZone:zone];
         copy.entryFlag = [self.entryFlag copyWithZone:zone];
-        copy.gender = self.gender;
+        copy.gender = [self.gender copyWithZone:zone];
         copy.fansNum = self.fansNum;
         copy.musicianFlag = [self.musicianFlag copyWithZone:zone];
         copy.liveFlag = [self.liveFlag copyWithZone:zone];

+ 33 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/Controller/SettingViewController.m

@@ -19,6 +19,7 @@
 #import "AppDelegate.h"
 #import "CustomNavViewController.h"
 #import "JPUSHService.h"
+#import "AccountDeleteViewController.h"
 
 @interface SettingViewController ()
  
@@ -39,6 +40,20 @@
     [self configUI];
 }
 
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    [self requestUserMemo];
+}
+
+- (void)requestUserMemo {
+    [[UserInfoManager shareInstance] requsetconfigCallback:^(BOOL success) {
+        [self refreshBodyView:success];
+    }];
+}
+
+- (void)refreshBodyView:(BOOL)isMember {
+    self.bodyView.isMember = isMember;
+}
 
 
 - (void)configUI {
@@ -100,11 +115,29 @@
             [self logoutAction];
         }
             break;
+        case SETTINGACTION_DELETEACCOUNT:
+        {
+            [self toDelteAccountView];
+        }
+            break;
+        case SETTINGACTION_MUSICCHECK:
+        {
+            // /#/review-list
+            KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
+            ctrl.url = [NSString stringWithFormat:@"%@%@",WEBHOST, @"/#/review-list"];
+            [self.navigationController pushViewController:ctrl animated:YES];
+        }
+            break;
         default:
             break;
     }
 }
 
+- (void)toDelteAccountView {
+    AccountDeleteViewController *detailView = [[AccountDeleteViewController alloc] init];
+    [self.navigationController pushViewController:detailView animated:YES];
+}
+
 - (void)logoutAction {
     [KSNetworkingManager logoutRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
         [self clearSource];

+ 16 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/Controller/AccountDeleteViewController.h

@@ -0,0 +1,16 @@
+//
+//  AccountDeleteViewController.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/7/12.
+//
+
+#import "KSBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AccountDeleteViewController : KSBaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 203 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/Controller/AccountDeleteViewController.m

@@ -0,0 +1,203 @@
+//
+//  AccountDeleteViewController.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/7/12.
+//
+
+#import "AccountDeleteViewController.h"
+#import "DeleteAccountBodyView.h"
+#import "VeriCheckView.h"
+#import "LoginViewController.h"
+#import "AppDelegate.h"
+#import "CustomNavViewController.h"
+#import "JPUSHService.h"
+#import "RCConnectionManager.h"
+#import "NSString+phone.h"
+#import "KSPublicAlertView.h"
+
+@interface AccountDeleteViewController ()
+{
+    NSTimer *_time;
+    int _count;
+}
+@property (nonatomic, strong) DeleteAccountBodyView *bodyView;
+
+@property (nonatomic, strong) KSPublicAlertView *alertView;
+
+
+@end
+
+@implementation AccountDeleteViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"注销账号"];
+    [self configUI];
+}
+
+- (void)configUI {
+    self.bodyView = [DeleteAccountBodyView shareInstance];
+    [self.scrollView addSubview:_bodyView];
+    [_bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(self.scrollView.mas_top);
+        make.right.left.mas_equalTo(self.view);
+        make.height.mas_equalTo(kScreenHeight - kNaviBarHeight - iPhoneXSafeBottomMargin);
+    }];
+    MJWeakSelf;
+    [_bodyView deleteAccountCallback:^(DELETEACCOUNT action, NSDictionary * _Nonnull parm) {
+        [weakSelf operationWithAction:action parm:parm];
+    }];
+    
+}
+
+- (void)operationWithAction:(DELETEACCOUNT)action parm:(NSDictionary *)parm {
+    
+    if (action == DELETEACCOUNT_CODE) {
+        // 图形化验证
+        [self veriCheckWithParm:parm];
+    }
+    else if (action == DELETEACCOUNT_SURE) {
+        
+        MJWeakSelf;
+        self.alertView = [KSPublicAlertView shareInstanceWithTitle:@"提示" descMessage:@"注销账号后您所有的留存信息将被清空且无法恢复,请谨慎操作" leftTitle:@"取消" rightTitle:@"确定" cancelAction:^{
+            
+        } sureAction:^{
+            [weakSelf deleteAccount:[parm stringValueForKey:@"code"]];
+        }];
+        
+        
+    }
+}
+
+#pragma mark ----- 删除账号
+- (void)deleteAccount:(NSString *)code {
+    [self showhud];
+    [KSNetworkingManager logoffRequest:KS_GET smsCode:code success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            MJWeakSelf;
+            [self KSShowMsg:@"注销成功" promptCompletion:^{
+                [weakSelf successDeleteBack];
+            }];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+- (void)successDeleteBack {
+    
+    [RCConnectionManager shareManager].isNeedJoin = NO;
+    [RCConnectionManager shareManager].isNeedShowMessage = NO;
+    [[RCIM sharedRCIM] logout];
+    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
+    // 取消推送别名
+    [JPUSHService deleteAlias:nil seq:0];
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:TokenKey];
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:Token_type];
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:RefreshToken];
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:RongTokenKey];
+    [[NSUserDefaults standardUserDefaults] synchronize];
+    [KSNetworkingManager clearRequestHeader];
+    LoginViewController *loginVC = [[LoginViewController alloc] init];
+    CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:loginVC];
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    appDelegate.window.rootViewController = navCtrl;
+}
+
+#pragma mark --- 验证码
+- (void)veriCheckWithParm:(NSDictionary *)parm {
+    NSString *phoneNo = [parm stringValueForKey:@"phone"];
+    // 图形化验证
+    VeriCheckView *view = [VeriCheckView shareInstanceShowInView:self.view];
+    __weak typeof(view) weakView = view;
+    [view showViewCallback:^(NSDictionary * _Nonnull parm) {
+        [self veriImageCodeWithParm:parm checkView:weakView];
+    }];
+    [view disPlayImageWithPhone:phoneNo];
+}
+
+- (void)veriImageCodeWithParm:(NSDictionary *)parm checkView:(VeriCheckView *)checkView {
+    [self showhud];
+    [KSNetworkingManager verifyLoginImageRequest:KS_POST phone:[parm stringValueForKey:@"phone"] code:[parm stringValueForKey:@"code"] success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            [checkView hiddView];
+            [self sendSMSRequestWithParm:parm];
+        }
+        else {
+            [self removehub];
+            [self MBShowInWindow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+// 发送短信
+- (void)sendSMSRequestWithParm:(NSDictionary *)parm {
+    [KSNetworkingManager sendSmsRequest:KS_POST mobile:[parm stringValueForKey:@"phone"] type:@"LOGOFF" success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            [self MBPShow:@"验证码已发送"];
+            [self codeButtonCountDown];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+- (void)codeButtonCountDown {
+    _bodyView.codeButton.userInteractionEnabled = NO;
+    [_bodyView.codeButton setTitleColor:HexRGB(0xe5e5e5) forState:UIControlStateNormal];
+    __weak typeof(self) weakSelf = self;
+    _time = [NSTimer scheduledTimerWithTimeInterval:1 target:weakSelf selector:@selector(buttonChangeAction) userInfo:nil repeats:YES];
+    [[NSRunLoop mainRunLoop] addTimer:_time forMode:NSRunLoopCommonModes];
+    _count = 89;
+}
+
+- (void)clearButtonState {
+    [_time invalidate];
+    _time = nil;
+    _count = 0;
+    [_bodyView.codeButton setTitle:@"获取验证码" forState:UIControlStateNormal];
+    [_bodyView.codeButton setTitleColor:THEMECOLOR forState:UIControlStateNormal];
+    _bodyView.codeButton.userInteractionEnabled = YES;
+}
+
+#pragma mark  ---- 验证码按钮状态
+- (void)buttonChangeAction {
+    _bodyView.codeButton.userInteractionEnabled = NO;
+    NSString *title = [NSString stringWithFormat:@"%ds",_count];
+    [_bodyView.codeButton setTitle:title forState:UIControlStateNormal];
+    _count--;
+    if(_count == -1){
+        [_time invalidate];
+        _time = nil;
+        [_bodyView.codeButton setTitle:@"获取验证码" forState:UIControlStateNormal];
+        [_bodyView.codeButton setTitleColor:THEMECOLOR forState:UIControlStateNormal];
+        _bodyView.codeButton.userInteractionEnabled = YES;    }
+}
+
+- (void)dealloc {
+    [_time invalidate];
+    _time = nil;
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 29 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/View/DeleteAccountBodyView.h

@@ -0,0 +1,29 @@
+//
+//  DeleteAccountBodyView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/7/12.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, DELETEACCOUNT) {
+    DELETEACCOUNT_CODE,   // 获取验证码
+    DELETEACCOUNT_SURE,   // 注销账号
+};
+
+typedef void(^DeleteAccountBlock)(DELETEACCOUNT action, NSDictionary * _Nonnull parm);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface DeleteAccountBodyView : UIView
+
+@property (weak, nonatomic) IBOutlet UIButton *codeButton;
+
++ (instancetype)shareInstance;
+
+- (void)deleteAccountCallback:(DeleteAccountBlock)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 89 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/View/DeleteAccountBodyView.m

@@ -0,0 +1,89 @@
+//
+//  DeleteAccountBodyView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/7/12.
+//
+
+#import "DeleteAccountBodyView.h"
+
+@interface DeleteAccountBodyView ()<UITextFieldDelegate>
+
+@property (weak, nonatomic) IBOutlet UILabel *phoneDescLabel;
+
+@property (weak, nonatomic) IBOutlet UITextField *codeField;
+
+@property (nonatomic, copy) DeleteAccountBlock callback;
+
+@property (nonatomic, strong) NSString *phoneNo;
+
+@end
+
+@implementation DeleteAccountBodyView
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    self.codeField.delegate = self;
+    self.phoneNo = UserDefault(PHONEKEY);
+    
+    NSString *phoneDim = [self.phoneNo stringByReplacingCharactersInRange:NSMakeRange(3, 4) withString:@"****"];
+    self.phoneDescLabel.text = [NSString stringWithFormat:@"将%@所绑定的账号注销",phoneDim];    
+}
+
++ (instancetype)shareInstance {
+    DeleteAccountBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"DeleteAccountBodyView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)deleteAccountCallback:(DeleteAccountBlock)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+- (IBAction)sendCode:(id)sender {
+    [self endEditing:YES];
+    
+    if (self.callback) {
+        self.callback(DELETEACCOUNT_CODE, @{@"phone" : self.phoneNo});
+    }
+}
+
+- (IBAction)sureAction:(id)sender {
+    [self endEditing:YES];
+    
+    if ([NSString isEmptyString:self.codeField.text]) {
+        [self MBPShow:@"请输入短信验证码"];
+        return;
+    }
+    if (self.callback) {
+        self.callback(DELETEACCOUNT_SURE, @{@"phone" : self.phoneNo,
+                                           @"code" : self.codeField.text,
+                                           });
+    }
+}
+
+- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
+    if ([string isEqualToString:@"\n"]) {
+        [self endEditing:YES];
+        return YES;
+    }
+    // 输入控制
+    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
+    if (textField == self.codeField) {
+        if (newString.length > 6) {
+            return NO;
+        }
+    }
+    return YES;
+}
+
+@end

+ 162 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/DeleteAccount/View/DeleteAccountBodyView.xib

@@ -0,0 +1,162 @@
+<?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="System colors in document resources" minToolsVersion="11.0"/>
+        <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="DeleteAccountBodyView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="497"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="将***********所绑定的账号注销" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KTf-hd-DqL">
+                    <rect key="frame" x="80" y="40" width="254.5" height="24"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="24" id="shE-jI-SbL"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
+                    <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5vd-tZ-CWT">
+                    <rect key="frame" x="14" y="94" width="386" height="144.5"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注销后,您在相关产品/服务留存的信息将被清空切无法找回,具体包括:" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c7e-F8-dgF">
+                            <rect key="frame" x="12" y="15" width="362" height="33.5"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <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" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6u6-Ma-2KR">
+                            <rect key="frame" x="12" y="58.5" width="362" height="17"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <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" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="plu-48-YfS">
+                            <rect key="frame" x="12" y="85.5" width="362" height="17"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <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" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="czQ-5I-E7e">
+                            <rect key="frame" x="12" y="112.5" width="362" height="17"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstItem="c7e-F8-dgF" firstAttribute="top" secondItem="5vd-tZ-CWT" secondAttribute="top" constant="15" id="74w-wx-g4G"/>
+                        <constraint firstAttribute="trailing" secondItem="c7e-F8-dgF" secondAttribute="trailing" constant="12" id="AKi-Uc-c3h"/>
+                        <constraint firstAttribute="trailing" secondItem="plu-48-YfS" secondAttribute="trailing" constant="12" id="GNq-jw-Z22"/>
+                        <constraint firstItem="czQ-5I-E7e" firstAttribute="top" secondItem="plu-48-YfS" secondAttribute="bottom" constant="10" id="GZu-XY-X4l"/>
+                        <constraint firstItem="plu-48-YfS" firstAttribute="leading" secondItem="5vd-tZ-CWT" secondAttribute="leading" constant="12" id="JHb-9D-PwY"/>
+                        <constraint firstItem="6u6-Ma-2KR" firstAttribute="leading" secondItem="5vd-tZ-CWT" secondAttribute="leading" constant="12" id="MH2-cz-kST"/>
+                        <constraint firstItem="6u6-Ma-2KR" firstAttribute="top" secondItem="c7e-F8-dgF" secondAttribute="bottom" constant="10" id="MhW-PN-YDi"/>
+                        <constraint firstItem="czQ-5I-E7e" firstAttribute="leading" secondItem="5vd-tZ-CWT" secondAttribute="leading" constant="12" id="NJD-Xj-YMr"/>
+                        <constraint firstAttribute="trailing" secondItem="czQ-5I-E7e" secondAttribute="trailing" constant="12" id="RGt-dD-6zV"/>
+                        <constraint firstAttribute="bottom" secondItem="czQ-5I-E7e" secondAttribute="bottom" constant="15" id="Zxu-el-Q9z"/>
+                        <constraint firstItem="plu-48-YfS" firstAttribute="top" secondItem="6u6-Ma-2KR" secondAttribute="bottom" constant="10" id="hzW-RT-JQz"/>
+                        <constraint firstItem="c7e-F8-dgF" firstAttribute="leading" secondItem="5vd-tZ-CWT" secondAttribute="leading" constant="12" id="rBH-eL-pS0"/>
+                        <constraint firstAttribute="trailing" secondItem="6u6-Ma-2KR" secondAttribute="trailing" constant="12" id="toW-r2-je8"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mMv-gk-ABM">
+                    <rect key="frame" x="14" y="253.5" width="386" height="48"/>
+                    <subviews>
+                        <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入短信验证码" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="byh-5B-J1p">
+                            <rect key="frame" x="12" y="0.0" width="272" height="48"/>
+                            <color key="textColor" red="0.2666666667" green="0.2666666667" blue="0.2666666667" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <textInputTraits key="textInputTraits" keyboardType="numberPad" enablesReturnKeyAutomatically="YES"/>
+                        </textField>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="akE-r3-235">
+                            <rect key="frame" x="294" y="9" width="80" height="30"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="80" id="ZPH-DO-yJC"/>
+                                <constraint firstAttribute="height" constant="30" id="mdJ-zw-XGc"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <state key="normal" title="获取验证码">
+                                <color key="titleColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                            </state>
+                            <connections>
+                                <action selector="sendCode:" destination="iN0-l3-epB" eventType="touchUpInside" id="H9d-M4-iaP"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="byh-5B-J1p" firstAttribute="leading" secondItem="mMv-gk-ABM" secondAttribute="leading" constant="12" id="0cm-iw-BJ0"/>
+                        <constraint firstItem="akE-r3-235" firstAttribute="leading" secondItem="byh-5B-J1p" secondAttribute="trailing" constant="10" id="2QK-Zj-399"/>
+                        <constraint firstAttribute="height" constant="48" id="8GK-N2-btA"/>
+                        <constraint firstAttribute="trailing" secondItem="akE-r3-235" secondAttribute="trailing" constant="12" id="KAl-hV-nSe"/>
+                        <constraint firstItem="byh-5B-J1p" firstAttribute="top" secondItem="mMv-gk-ABM" secondAttribute="top" id="VVU-2V-Mc1"/>
+                        <constraint firstAttribute="bottom" secondItem="byh-5B-J1p" secondAttribute="bottom" id="us4-Ge-6Tm"/>
+                        <constraint firstItem="akE-r3-235" firstAttribute="centerY" secondItem="mMv-gk-ABM" secondAttribute="centerY" id="zZv-Ds-IBi"/>
+                    </constraints>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qi7-Np-SbU">
+                    <rect key="frame" x="14" y="427" width="386" height="50"/>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="50" id="Q5v-LL-ePg"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="注销账号">
+                        <color key="titleColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    </state>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                    <connections>
+                        <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="2MO-WT-9Dy"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="Qi7-Np-SbU" secondAttribute="trailing" constant="14" id="AFc-rt-tSu"/>
+                <constraint firstItem="mMv-gk-ABM" firstAttribute="top" secondItem="5vd-tZ-CWT" secondAttribute="bottom" constant="15" id="OLs-IR-ajo"/>
+                <constraint firstItem="mMv-gk-ABM" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="Pcw-R9-wV9"/>
+                <constraint firstItem="KTf-hd-DqL" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="XZr-bU-x53"/>
+                <constraint firstItem="5vd-tZ-CWT" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="d80-b8-FdW"/>
+                <constraint firstAttribute="bottom" secondItem="Qi7-Np-SbU" secondAttribute="bottom" constant="20" id="dOO-dg-7et"/>
+                <constraint firstAttribute="trailing" secondItem="5vd-tZ-CWT" secondAttribute="trailing" constant="14" id="gfd-ed-lOS"/>
+                <constraint firstItem="5vd-tZ-CWT" firstAttribute="top" secondItem="KTf-hd-DqL" secondAttribute="bottom" constant="30" id="ib6-Ic-OL6"/>
+                <constraint firstAttribute="trailing" secondItem="mMv-gk-ABM" secondAttribute="trailing" constant="14" id="rij-Zo-11s"/>
+                <constraint firstItem="Qi7-Np-SbU" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="v9U-R8-Lum"/>
+                <constraint firstItem="KTf-hd-DqL" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="40" id="xQA-iX-82Y"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="codeButton" destination="akE-r3-235" id="XHj-Ps-QHA"/>
+                <outlet property="codeField" destination="byh-5B-J1p" id="7om-O3-CaM"/>
+                <outlet property="phoneDescLabel" destination="KTf-hd-DqL" id="RxJ-6p-d9V"/>
+            </connections>
+            <point key="canvasLocation" x="131.8840579710145" y="-55.245535714285715"/>
+        </view>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 4 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/SettingBodyView.h

@@ -14,6 +14,8 @@ typedef NS_ENUM(NSInteger, SETTINGACTION) {
     SETTINGACTION_FEEEDBACK, // 反馈
     SETTINGACTION_ABOUTUS,  // 关于我们
     SETTINGACTION_LOGOUT,   // 退出
+    SETTINGACTION_DELETEACCOUNT,  // 注销账号
+    SETTINGACTION_MUSICCHECK,     // 曲谱审核
 };
 
 typedef void(^SettingCallback)(SETTINGACTION type);
@@ -22,6 +24,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface SettingBodyView : UIView
 
+@property (nonatomic, assign) BOOL isMember;
+
 @property (nonatomic, assign) BOOL enableCheck;
 
 + (instancetype)shareInstance;

+ 13 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/SettingBodyView.m

@@ -13,6 +13,8 @@
 
 @property (weak, nonatomic) IBOutlet UIButton *switchButton;
 
+@property (weak, nonatomic) IBOutlet UIView *checkView;
+
 @end
 
 @implementation SettingBodyView
@@ -53,6 +55,17 @@
         self.callback(SETTINGACTION_LOGOUT);
     }
 }
+
+- (void)setIsMember:(BOOL)isMember {
+    _isMember = isMember;
+    if (isMember) {
+        self.checkView.hidden = YES;
+    }
+    else {
+        self.checkView.hidden = NO;
+    }
+}
+
 /*
  // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 124 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/SettingBodyView.xib

@@ -4,6 +4,7 @@
     <dependencies>
         <deployment identifier="iOS"/>
         <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>
     <objects>
@@ -240,20 +241,130 @@
                         <action selector="logoutAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="ZoT-2t-9Bv"/>
                     </connections>
                 </button>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ati-b1-fi2">
+                    <rect key="frame" x="14" y="235" width="386" height="100"/>
+                    <subviews>
+                        <view tag="1013" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PIr-VF-ZVM">
+                            <rect key="frame" x="0.0" y="0.0" width="386" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注销账号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KgS-v0-eUA">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="4qc-9F-Lvz"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="5LL-kx-cVj">
+                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="6" id="A1h-E1-rmM"/>
+                                        <constraint firstAttribute="height" constant="11" id="qHe-RX-PDi"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ghs-BF-1Fg">
+                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="Fh8-yA-k0f"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="50" id="A7u-dD-1yj"/>
+                                <constraint firstItem="KgS-v0-eUA" firstAttribute="centerY" secondItem="PIr-VF-ZVM" secondAttribute="centerY" id="KuF-Ly-by9"/>
+                                <constraint firstItem="KgS-v0-eUA" firstAttribute="leading" secondItem="PIr-VF-ZVM" secondAttribute="leading" constant="12" id="Q6x-CL-Z1S"/>
+                                <constraint firstAttribute="trailing" secondItem="Ghs-BF-1Fg" secondAttribute="trailing" constant="9" id="TXR-Ij-hnE"/>
+                                <constraint firstAttribute="trailing" secondItem="5LL-kx-cVj" secondAttribute="trailing" constant="15" id="fqb-73-aep"/>
+                                <constraint firstAttribute="bottom" secondItem="Ghs-BF-1Fg" secondAttribute="bottom" id="kwo-6I-bxu"/>
+                                <constraint firstItem="5LL-kx-cVj" firstAttribute="centerY" secondItem="PIr-VF-ZVM" secondAttribute="centerY" id="ky2-lC-tKw"/>
+                                <constraint firstItem="Ghs-BF-1Fg" firstAttribute="leading" secondItem="PIr-VF-ZVM" secondAttribute="leading" constant="11" id="yLO-2z-1wh"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="d9P-Rg-qXu" appends="YES" id="xZg-b1-XFU"/>
+                            </connections>
+                        </view>
+                        <view tag="1014" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KAp-gi-RA0">
+                            <rect key="frame" x="0.0" y="50" width="386" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="曲谱审核" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z0o-TZ-vbx">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="5Ge-Vf-9jJ"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TLT-oo-y2v">
+                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="jfl-bw-ahn"/>
+                                    </constraints>
+                                </view>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="Qea-e4-CTm">
+                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="11" id="7NP-qr-zWb"/>
+                                        <constraint firstAttribute="width" constant="6" id="UIt-Hf-wsN"/>
+                                    </constraints>
+                                </imageView>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstItem="z0o-TZ-vbx" firstAttribute="centerY" secondItem="KAp-gi-RA0" secondAttribute="centerY" id="Ncx-XN-Xcf"/>
+                                <constraint firstAttribute="trailing" secondItem="Qea-e4-CTm" secondAttribute="trailing" constant="15" id="P9I-Nh-4b2"/>
+                                <constraint firstAttribute="trailing" secondItem="TLT-oo-y2v" secondAttribute="trailing" constant="9" id="PWG-kV-TsF"/>
+                                <constraint firstAttribute="height" constant="50" id="UgS-83-XG8"/>
+                                <constraint firstItem="Qea-e4-CTm" firstAttribute="centerY" secondItem="KAp-gi-RA0" secondAttribute="centerY" id="ZaD-vX-lHs"/>
+                                <constraint firstAttribute="bottom" secondItem="TLT-oo-y2v" secondAttribute="bottom" id="icP-t8-btq"/>
+                                <constraint firstItem="TLT-oo-y2v" firstAttribute="leading" secondItem="KAp-gi-RA0" secondAttribute="leading" constant="11" id="rbM-3P-UaC"/>
+                                <constraint firstItem="z0o-TZ-vbx" firstAttribute="leading" secondItem="KAp-gi-RA0" secondAttribute="leading" constant="12" id="sAe-xu-c8t"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="fBl-f6-lyL" appends="YES" id="f2X-oH-mtT"/>
+                            </connections>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="PIr-VF-ZVM" secondAttribute="trailing" id="Az1-9Q-WZ8"/>
+                        <constraint firstItem="PIr-VF-ZVM" firstAttribute="top" secondItem="ati-b1-fi2" secondAttribute="top" id="KAX-5y-ecf"/>
+                        <constraint firstItem="PIr-VF-ZVM" firstAttribute="leading" secondItem="ati-b1-fi2" secondAttribute="leading" id="N6f-fD-BjU"/>
+                        <constraint firstAttribute="bottom" secondItem="KAp-gi-RA0" secondAttribute="bottom" id="ddp-lq-Aoe"/>
+                        <constraint firstItem="KAp-gi-RA0" firstAttribute="top" secondItem="PIr-VF-ZVM" secondAttribute="bottom" id="ruF-00-Wen"/>
+                        <constraint firstItem="KAp-gi-RA0" firstAttribute="leading" secondItem="ati-b1-fi2" secondAttribute="leading" id="vsz-L9-Yer"/>
+                        <constraint firstAttribute="trailing" secondItem="KAp-gi-RA0" secondAttribute="trailing" id="zAL-Sf-Sm7"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
                 <constraint firstAttribute="trailing" secondItem="HJB-ze-JOs" secondAttribute="trailing" constant="14" id="4uG-et-3Ez"/>
                 <constraint firstItem="bvI-vo-wNV" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="15" id="97b-yw-a9c"/>
+                <constraint firstAttribute="trailing" secondItem="ati-b1-fi2" secondAttribute="trailing" constant="14" id="MBz-DM-ZGB"/>
+                <constraint firstItem="ati-b1-fi2" firstAttribute="top" secondItem="bvI-vo-wNV" secondAttribute="bottom" constant="12" id="QYk-Wn-P8U"/>
                 <constraint firstAttribute="bottom" secondItem="HJB-ze-JOs" secondAttribute="bottom" constant="20" id="TCM-BH-MBQ"/>
                 <constraint firstItem="HJB-ze-JOs" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="j2A-un-7By"/>
                 <constraint firstItem="bvI-vo-wNV" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="lgX-k4-l1q"/>
+                <constraint firstItem="ati-b1-fi2" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="tL0-mv-TIo"/>
                 <constraint firstAttribute="trailing" secondItem="bvI-vo-wNV" secondAttribute="trailing" constant="14" id="yFd-X3-TR5"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
+                <outlet property="checkView" destination="ati-b1-fi2" id="HzA-TH-NjK"/>
                 <outlet property="switchButton" destination="ZKM-lu-myi" id="Gli-bu-Kkp"/>
             </connections>
             <point key="canvasLocation" x="131.8840579710145" y="78.348214285714278"/>
@@ -278,9 +389,22 @@
                 <action selector="tapAction:" destination="iN0-l3-epB" id="oQQ-9p-gfF"/>
             </connections>
         </tapGestureRecognizer>
+        <tapGestureRecognizer id="d9P-Rg-qXu">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="xgA-1L-wVq"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="fBl-f6-lyL">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="WeX-gt-n5o"/>
+            </connections>
+        </tapGestureRecognizer>
     </objects>
     <resources>
         <image name="setting_next" width="6" height="11"/>
         <image name="switch_on" width="47" height="24"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
     </resources>
 </document>

+ 2 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/View/VideoListBodyView.m

@@ -238,7 +238,8 @@
     }];
     [view addSubview:self.promptView];
     [self.promptView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.right.top.bottom.mas_equalTo(self);
+        make.left.right.mas_equalTo(self);
+        make.top.bottom.mas_equalTo(self.collectionView);
     }];
 }
 

+ 3 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineNavView.xib

@@ -10,11 +10,11 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="MineNavView">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="87"/>
+            <rect key="frame" x="0.0" y="0.0" width="60" height="87"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="o7c-br-wf5">
-                    <rect key="frame" x="364" y="47" width="40" height="40"/>
+                    <rect key="frame" x="10" y="47" width="40" height="40"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="40" id="He1-cX-k8M"/>
                         <constraint firstAttribute="width" constant="40" id="S21-d9-pEr"/>
@@ -34,7 +34,7 @@
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
-            <point key="canvasLocation" x="131.8840579710145" y="-96.763392857142847"/>
+            <point key="canvasLocation" x="348.55072463768118" y="-96.763392857142847"/>
         </view>
     </objects>
     <resources>

+ 0 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Sections/NewWhiteboard/KSWhiteboardView.m

@@ -817,7 +817,6 @@
 
 - (void)uploadImage:(UIImage *)image scaleWidth:(BOOL)needScaleWidth {
     // 上传图片 回调显示
-    // 如果需要旋转图片
     
     NSData *imgData = [UIImage compressImage:image maxLength:5];
     NSString *fileName = @"whiteboardImage";

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/ClassroomService.m

@@ -480,7 +480,7 @@ isAudience:(BOOL)audience
                 mem.microphoneEnable = msg.microphone;
                 mem.handUpOn = msg.handUpOn;
                 mem.enable = msg.metronomeSwitch;
-
+                mem.headUrl = msg.avatar;
                 if ([self.currentRoom addMemeber:mem]) {
                     [self.classroomDelegate memberDidJoin:mem];
                 }

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/Message/MemberChangeMessage.h

@@ -34,5 +34,7 @@ typedef NS_ENUM(NSUInteger, MemberChangeAction) {
 @property (nonatomic, assign) BOOL microphone;
 @property (nonatomic, assign) BOOL camera;
 @property (nonatomic, assign) BOOL examSongSwitch;
+@property (nonatomic, strong) NSString *avatar;
+
 @end
 

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/Message/MemberChangeMessage.m

@@ -20,6 +20,7 @@
         self.userId = [member stringValueForKey:@"userId"];
         self.userName = [member stringValueForKey:@"username"];
         self.role = [member intValueForKey:@"role"];
+        self.avatar = [member stringValueForKey:@"avatar"];
         NSString *roleString = [dic stringValueForKey:@"changedEnum"];
         if ([roleString isEqualToString:@"LEAVE"]) {
             self.action = MemberChangeActionLeave;

+ 0 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/SealClass/Services/Classroom/Model/Classroom.m

@@ -91,9 +91,6 @@
 }
 
 - (void)updateMember:(NSString *)userId forHandsUp:(BOOL)enable {
-    if ([userId isEqualToString:self.currentDisplayURI]) {
-        return;
-    }
     RoomMember *member = [self getMember:userId];
     member.handUpOn = enable;
     [self updateMemeber:member];