Browse Source

no message

HF_Q 4 years ago
parent
commit
e4fea04a12
79 changed files with 3782 additions and 453 deletions
  1. 24 0
      smartRhino.xcodeproj/project.pbxproj
  2. BIN
      smartRhino.xcworkspace/xcuserdata/niuzhen.xcuserdatad/UserInterfaceState.xcuserstate
  3. 48 0
      smartRhino.xcworkspace/xcuserdata/niuzhen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 12 4
      smartRhino/AppConfig.h
  5. 24 24
      smartRhino/AppDelegate.m
  6. 22 0
      smartRhino/Assets.xcassets/ChatMsg/clear_audio.imageset/Contents.json
  7. BIN
      smartRhino/Assets.xcassets/ChatMsg/clear_audio.imageset/clear_audio@2x.png
  8. BIN
      smartRhino/Assets.xcassets/ChatMsg/clear_audio.imageset/clear_audio@3x.png
  9. 22 0
      smartRhino/Assets.xcassets/ChatMsg/clear_video.imageset/Contents.json
  10. BIN
      smartRhino/Assets.xcassets/ChatMsg/clear_video.imageset/clear_video@2x.png
  11. BIN
      smartRhino/Assets.xcassets/ChatMsg/clear_video.imageset/clear_video@3x.png
  12. 22 0
      smartRhino/Assets.xcassets/default_audio.imageset/Contents.json
  13. BIN
      smartRhino/Assets.xcassets/default_audio.imageset/default_audio@2x.png
  14. BIN
      smartRhino/Assets.xcassets/default_audio.imageset/default_audio@3x.png
  15. 22 0
      smartRhino/Assets.xcassets/default_video.imageset/Contents.json
  16. BIN
      smartRhino/Assets.xcassets/default_video.imageset/default_video@2x.png
  17. BIN
      smartRhino/Assets.xcassets/default_video.imageset/default_video@3x.png
  18. 3 2
      smartRhino/FwzAppConfig.h
  19. 1 1
      smartRhino/Info.plist
  20. 53 11
      smartRhino/Project/VCModel/ChatMessage/Chat/EMChatViewController.m
  21. 38 6
      smartRhino/Project/VCModel/ChatMessage/Chat/MessageCell/BubbleView/EMMsgExtSmartBubbleView.m
  22. 30 11
      smartRhino/Project/VCModel/ChatMessage/Controller/ChatMsg/Controller/ChatMsgDetailChatInfoVC.m
  23. 1 0
      smartRhino/Project/VCModel/ChatMessage/Controller/ChatMsg/Model/chatInfoGroupChatModel.h
  24. 4 0
      smartRhino/Project/VCModel/ChatMessage/Controller/ChatMsgNotice/Controller/MoveViewController.m
  25. 36 1
      smartRhino/Project/VCModel/ChatMessage/Controller/MailList/Controller/MailChatVC.m
  26. 44 0
      smartRhino/Project/VCModel/ChatMessage/Controller/MailList/Controller/MailGroupVC.m
  27. 4 4
      smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/Cell/ChatNewRowCell.xib
  28. 20 2
      smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/Cell/TDGroupInfoListCell.m
  29. 1 0
      smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/Model/TDGroupInfoListModel.h
  30. 62 4
      smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/VC/TDGroupInfoDetailVC.m
  31. 7 6
      smartRhino/Project/VCModel/ChatMessage/Controller/TDInternalLeter/contoller/TDInterLeterHomeViewController.m
  32. 32 10
      smartRhino/Project/VCModel/Home/OtherHomeVC/MyTDTopic/VC/MyTDTopicCreateVC.m
  33. 454 20
      smartRhino/Project/VCModel/Home/VC/BookStore/BookDetail.storyboard
  34. 1 1
      smartRhino/Project/VCModel/Home/VC/BookStore/BookStore.storyboard
  35. 4 2
      smartRhino/Project/VCModel/Home/VC/BookStore/Model/BookListenModel.h
  36. 2 0
      smartRhino/Project/VCModel/Home/VC/BookStore/Model/BookListenSubModel.h
  37. 20 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookCustomListVC.h
  38. 164 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookCustomListVC.m
  39. 6 2
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookListDetailVC.m
  40. 41 29
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookListenVC.m
  41. 1 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookMingDetailVC.m
  42. 1 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookPlayListVC.h
  43. 11 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookPlayListVC.m
  44. 3 1
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookRead/viewcontroller/BookReadVC.h
  45. 59 19
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookRead/viewcontroller/BookReadVC.m
  46. 25 19
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookRead/viewcontroller/DCContentVC.m
  47. 1 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookStoreHome.m
  48. 18 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookTeacherDetailVC.h
  49. 1206 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookTeacherDetailVC.m
  50. 1 0
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookWCDetailVC.h
  51. 60 64
      smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookWCDetailVC.m
  52. 2 0
      smartRhino/Project/VCModel/Home/VC/BookStore/View/BookHotSearchCell.h
  53. 7 0
      smartRhino/Project/VCModel/Home/VC/BookStore/View/BookHotSearchCell.m
  54. 28 0
      smartRhino/Project/VCModel/Home/VC/BookStore/View/BookTeacherHeadCell.h
  55. 55 0
      smartRhino/Project/VCModel/Home/VC/BookStore/View/BookTeacherHeadCell.m
  56. 140 0
      smartRhino/Project/VCModel/Home/VC/BookStore/View/BookTeacherHeadCell.xib
  57. 62 1
      smartRhino/Project/VCModel/Home/VC/SubVC/HomeMingShiVC.m
  58. 1 0
      smartRhino/Project/VCModel/Home/VC/View/Cell/HomeWeiCousreCell.h
  59. 24 3
      smartRhino/Project/VCModel/Home/VC/View/Cell/HomeWeiCousreCell.m
  60. 5 5
      smartRhino/Project/VCModel/Home/VC/View/Cell/HomeWeiCousreCell.xib
  61. 14 7
      smartRhino/Project/VCModel/My_Center/Controller/ColletionVC/Controller/MyFavoriteEditSearchVC.m
  62. 42 11
      smartRhino/Project/VCModel/My_Center/Controller/ColletionVC/Controller/MyFavoriteSearchVC.m
  63. 92 21
      smartRhino/Project/VCModel/My_Center/Controller/ColletionVC/Controller/MyFavoriteVC.m
  64. 95 21
      smartRhino/Project/VCModel/My_Center/Controller/ColletionVC/Controller/OtherFavoriteVC.m
  65. 1 5
      smartRhino/Project/VCModel/My_Center/Controller/MyInfoVC.m
  66. 1 0
      smartRhino/Project/VCModel/My_Center/Controller/MyUserIconVC.h
  67. 66 38
      smartRhino/Project/VCModel/My_Center/Controller/MyUserIconVC.m
  68. 6 18
      smartRhino/Project/VCModel/My_Center/Controller/My_CenterVC.m
  69. 2 0
      smartRhino/Project/VCModel/My_Center/Controller/NoteBook/Controller/NoteBookEditSearchVC.m
  70. 17 0
      smartRhino/Project/VCModel/My_Center/Controller/NoteBook/Controller/NoteBookSearchVC.m
  71. 17 0
      smartRhino/Project/VCModel/My_Center/Controller/NoteBook/Controller/NoteBookVC.m
  72. 17 0
      smartRhino/Project/VCModel/My_Center/Controller/NoteBook/Controller/OtherNoteBookVC.m
  73. 33 1
      smartRhino/Project/VCModel/My_Center/Controller/NoteBook/View/NoteBookCell.m
  74. 2 2
      smartRhino/Project/VCModel/My_Center/Controller/NoteBook/View/NoteBookCell.xib
  75. 94 2
      smartRhino/Project/VCModel/common/Controller/CommomSearchVC.m
  76. 63 30
      smartRhino/Project/VCModel/common/Controller/CommonHomeVC.m
  77. 1 1
      smartRhino/Project/VCModel/common/View/CommonListCell.h
  78. 256 15
      smartRhino/Project/VCModel/common/View/CommonListCell.m
  79. 29 29
      smartRhino/Project/VCModel/common/View/CommonListCell.xib

+ 24 - 0
smartRhino.xcodeproj/project.pbxproj

@@ -1307,6 +1307,10 @@
 		EBC2E143243C2DF30054E422 /* EMMsgExtSmartBubbleView.m in Sources */ = {isa = PBXBuildFile; fileRef = EBC2E142243C2DF30054E422 /* EMMsgExtSmartBubbleView.m */; };
 		EBC2E146243C70520054E422 /* msg_bg_app@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = EBC2E144243C70520054E422 /* msg_bg_app@3x.png */; };
 		EBC2E147243C70520054E422 /* msg_bg_app@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EBC2E145243C70520054E422 /* msg_bg_app@2x.png */; };
+		EBC34D802511B41E00A4F133 /* BookTeacherDetailVC.m in Sources */ = {isa = PBXBuildFile; fileRef = EBC34D7E2511B41E00A4F133 /* BookTeacherDetailVC.m */; };
+		EBC34D842511EABD00A4F133 /* BookTeacherHeadCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EBC34D822511EABD00A4F133 /* BookTeacherHeadCell.m */; };
+		EBC34D852511EABD00A4F133 /* BookTeacherHeadCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = EBC34D832511EABD00A4F133 /* BookTeacherHeadCell.xib */; };
+		EBC34D8825121CD000A4F133 /* BookCustomListVC.m in Sources */ = {isa = PBXBuildFile; fileRef = EBC34D8725121CCF00A4F133 /* BookCustomListVC.m */; };
 		EBC4866424B301CC0013AEF7 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBC4866324B301CC0013AEF7 /* QuickLook.framework */; };
 		EBC4866724B3128B0013AEF7 /* BookMeidaModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EBC4866624B3128B0013AEF7 /* BookMeidaModel.m */; };
 		EBC64DD123C6B78D00558368 /* SelectSaveVC.m in Sources */ = {isa = PBXBuildFile; fileRef = EBC64DD023C6B78D00558368 /* SelectSaveVC.m */; };
@@ -3731,6 +3735,13 @@
 		EBC2E142243C2DF30054E422 /* EMMsgExtSmartBubbleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EMMsgExtSmartBubbleView.m; sourceTree = "<group>"; };
 		EBC2E144243C70520054E422 /* msg_bg_app@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "msg_bg_app@3x.png"; sourceTree = "<group>"; };
 		EBC2E145243C70520054E422 /* msg_bg_app@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "msg_bg_app@2x.png"; sourceTree = "<group>"; };
+		EBC34D7E2511B41E00A4F133 /* BookTeacherDetailVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BookTeacherDetailVC.m; sourceTree = "<group>"; };
+		EBC34D7F2511B41E00A4F133 /* BookTeacherDetailVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BookTeacherDetailVC.h; sourceTree = "<group>"; };
+		EBC34D812511EABD00A4F133 /* BookTeacherHeadCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BookTeacherHeadCell.h; sourceTree = "<group>"; };
+		EBC34D822511EABD00A4F133 /* BookTeacherHeadCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BookTeacherHeadCell.m; sourceTree = "<group>"; };
+		EBC34D832511EABD00A4F133 /* BookTeacherHeadCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BookTeacherHeadCell.xib; sourceTree = "<group>"; };
+		EBC34D8625121CCF00A4F133 /* BookCustomListVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BookCustomListVC.h; sourceTree = "<group>"; };
+		EBC34D8725121CCF00A4F133 /* BookCustomListVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BookCustomListVC.m; sourceTree = "<group>"; };
 		EBC4866324B301CC0013AEF7 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; };
 		EBC4866524B3128B0013AEF7 /* BookMeidaModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BookMeidaModel.h; sourceTree = "<group>"; };
 		EBC4866624B3128B0013AEF7 /* BookMeidaModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BookMeidaModel.m; sourceTree = "<group>"; };
@@ -7754,8 +7765,12 @@
 				EB1E0F76246CE49100D4C3DE /* BookContentNavVC.m */,
 				EB6E84E0246FDF2400BE0524 /* BookPlayListVC.h */,
 				EB6E84E1246FDF2400BE0524 /* BookPlayListVC.m */,
+				EBC34D8625121CCF00A4F133 /* BookCustomListVC.h */,
+				EBC34D8725121CCF00A4F133 /* BookCustomListVC.m */,
 				EBF7175524722D4B00ED1838 /* BookWCDetailVC.h */,
 				EBF7175624722D4B00ED1838 /* BookWCDetailVC.m */,
+				EBC34D7F2511B41E00A4F133 /* BookTeacherDetailVC.h */,
+				EBC34D7E2511B41E00A4F133 /* BookTeacherDetailVC.m */,
 				EB6F002B2473B19300808484 /* BookWeiCourseListVC.h */,
 				EB6F002C2473B19300808484 /* BookWeiCourseListVC.m */,
 				EBCE637224AF388D004C9B3B /* BookChanelSubListVC.h */,
@@ -7897,6 +7912,9 @@
 				EB9F24DF2509CDD90017479A /* PlayModelCell.h */,
 				EB9F24E02509CDD90017479A /* PlayModelCell.m */,
 				EB9F24E12509CDD90017479A /* PlayModelCell.xib */,
+				EBC34D812511EABD00A4F133 /* BookTeacherHeadCell.h */,
+				EBC34D822511EABD00A4F133 /* BookTeacherHeadCell.m */,
+				EBC34D832511EABD00A4F133 /* BookTeacherHeadCell.xib */,
 				EB9F24DC2509CD0C0017479A /* PlayModelVC.h */,
 				EB9F24DD2509CD0C0017479A /* PlayModelVC.m */,
 				EB9F24E42509F3EF0017479A /* CusPopoverBackgroundView.h */,
@@ -9295,6 +9313,7 @@
 				EB8E2D81239666A900CDFBDA /* msg_recv_audio02@2x.png in Resources */,
 				C7799F1823AB849F00270988 /* WorkFlowPersonnelListCell.xib in Resources */,
 				C752D21623751FB200913F97 /* NextApprovalViewController.xib in Resources */,
+				EBC34D852511EABD00A4F133 /* BookTeacherHeadCell.xib in Resources */,
 				C72F3903236DADDC00933828 /* SettingCell.xib in Resources */,
 				EB8E2CEA239666A900CDFBDA /* search_gray@2x.png in Resources */,
 				EB8143BE2440502B00C439A9 /* HomeListWorkCell.xib in Resources */,
@@ -9754,6 +9773,7 @@
 				C7D6BC96235DA1CE00770E7C /* PersonalCertificationViewController.m in Sources */,
 				C6F2E19D236C3444009E6903 /* UtilsTools.m in Sources */,
 				C751012F2383BEA200E4429B /* FormFieldsModel.m in Sources */,
+				EBC34D8825121CD000A4F133 /* BookCustomListVC.m in Sources */,
 				C75F9F2C236875CB002867A2 /* ComentSubCell.m in Sources */,
 				C76745162373A6C4001675FA /* WorkFLowCollectionSelectView.m in Sources */,
 				EB6A3D5224A864740067DBFA /* HomeProblemVC.m in Sources */,
@@ -9791,6 +9811,7 @@
 				327E375D23A9C86600842F47 /* NoteBookCell.m in Sources */,
 				EB7DD2382462AB5B00C6048F /* GroupSquareVC.m in Sources */,
 				EB1D052A24A9EA6C00796A7E /* BookNavModel.m in Sources */,
+				EBC34D842511EABD00A4F133 /* BookTeacherHeadCell.m in Sources */,
 				C7D6BBA4235DA18A00770E7C /* NSString+HTML.m in Sources */,
 				C6F2E186236C26EC009E6903 /* MyInfoCell.m in Sources */,
 				EB8E2D51239666A900CDFBDA /* EMChatBarEmoticonView.m in Sources */,
@@ -10539,6 +10560,7 @@
 				EB0F64D323AA096A00AD56A0 /* MyTDTopicGroupUserVC.m in Sources */,
 				EB8E2D1D239666A900CDFBDA /* UIViewController+Search.m in Sources */,
 				EB8E2D0D239666A900CDFBDA /* SDWebImageDecoder.m in Sources */,
+				EBC34D802511B41E00A4F133 /* BookTeacherDetailVC.m in Sources */,
 				C783741B23AA48F50096AFE2 /* HistoricalWorkFlowDetailsBaseCell.m in Sources */,
 				C622709D236C09FC00E2E3BF /* GHRefreshHeader.m in Sources */,
 				EB9D6591248DE60600636BAC /* BookReadStlyeAlert.m in Sources */,
@@ -10853,6 +10875,7 @@
 				CODE_SIGN_ENTITLEMENTS = "smartRhino/泰德信源.entitlements";
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1.0;
 				DEVELOPMENT_TEAM = 6L67QMCKYQ;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -10953,6 +10976,7 @@
 				CODE_SIGN_ENTITLEMENTS = "smartRhino/泰德信源.entitlements";
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1.0;
 				DEVELOPMENT_TEAM = 6L67QMCKYQ;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",

BIN
smartRhino.xcworkspace/xcuserdata/niuzhen.xcuserdatad/UserInterfaceState.xcuserstate


+ 48 - 0
smartRhino.xcworkspace/xcuserdata/niuzhen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -47,5 +47,53 @@
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "2AA3D6D6-44C2-492E-A478-192BA6B3481F"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "smartRhino/Project/VCModel/Home/OtherHomeVC/MyTDTopic/VC/MyTDTopicCreateVC.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "1580"
+            endingLineNumber = "1580"
+            landmarkName = "-submitMeeting:"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "2AA3D6D6-44C2-492E-A478-192BA6B3481F - 88bb64c0abc4ce50"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "-[MyTDTopicCreateVC submitMeeting:]"
+                  moduleName = "&#x6cf0;&#x5fb7;&#x4fe1;&#x6e90;"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/tederen/Desktop/Tederen_c/smartRhino/Project/VCModel/Home/OtherHomeVC/MyTDTopic/VC/MyTDTopicCreateVC.m"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1580"
+                  endingLineNumber = "1580"
+                  offsetFromSymbolStart = "1332">
+               </Location>
+               <Location
+                  uuid = "2AA3D6D6-44C2-492E-A478-192BA6B3481F - 800e9c333ed83594"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "__35-[MyTDTopicCreateVC submitMeeting:]_block_invoke"
+                  moduleName = "&#x6cf0;&#x5fb7;&#x4fe1;&#x6e90;"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/tederen/Desktop/Tederen_c/smartRhino/Project/VCModel/Home/OtherHomeVC/MyTDTopic/VC/MyTDTopicCreateVC.m"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1581"
+                  endingLineNumber = "1581"
+                  offsetFromSymbolStart = "64">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 12 - 4
smartRhino/AppConfig.h

@@ -19,7 +19,7 @@
 #define kIsVip [[NSUserDefaults standardUserDefaults] boolForKey:@"isVip"]
 #define kToken USERDEFAULTSGET(@"LOGINTOKEN")
 #define kSchedule USERDEFAULTSGET(@"kSchedule")
-#define kPlaceHolderImage [UIImage imageNamed:@"占位图"]
+#define kPlaceHolderImage [UIImage imageNamed:@"img_placeHolder"]
 #define kRegisterId USERDEFAULTSGET(@"registerId")
 #define kisApprove USERDEFAULTSGET(@"kisApprove")
 /**
@@ -135,8 +135,8 @@ return;\
 //#define HtmlUrl @"http://192.168.0.113:8081"
 //#define HtmlUrl @"http://192.168.0.114:8081"
 
-#define BaseUrl @"https://apk.tederen.com/service"
-#define HtmlUrl @"https://apk.tederen.com"
+#define BaseUrl       @"https://apk.tederen.com/service"
+#define HtmlUrl       @"https://apk.tederen.com"
 #define MyChannelUrl  @"/api/v1/channels/1"
 #define ContentUrl    @"/api/v1/contents/1"
 #define MainSearchUrl @"/api/v1/contents/1325"
@@ -212,9 +212,11 @@ return;\
 
 #define API_APP_Media_Audio                   @"/api/app/media/audio/"
 #define API_APP_Media_Video                   @"/api/app/media/video/"
-
 #define API_APP_Media_Recommend               @"/api/app/media/recommend"
 
+#define API_APP_Teacher                       @"/api/app/teacher/"
+#define API_APP_Media_Teacher                 @"/api/app/media/teacher"
+
 #pragma mark - 小组
 #define API_APP_GROUP_Group_Category           @"/api/app/group/group-category/"
 #define API_APP_GROUP_Category_list            @"/api/app/group/category-list/"
@@ -404,6 +406,12 @@ return;\
 #define APP_Group_Detail    @"/api/app/group/detail"
 ///修改小组信息
 #define APP_Group_Update    @"/api/app/group/update"
+
+#define APP_Group_Contacts  @"/api/app/group/contacts/"
+
+#define APP_Group_Chat_Contacts  @"/api/app/group-chat/contacts/"
+
+
 ///退出小组
 #define APP_Group_DELETE    @"/api/app/group/"
 ///添加小组成员

+ 24 - 24
smartRhino/AppDelegate.m

@@ -74,37 +74,37 @@
     [UMConfigure initWithAppkey:UMengAppKey channel:nil];
 
     /* 设置微信的appKey和appSecret */
-    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:wxAppKey appSecret:wxAppSecret redirectURL:@"http://mobile.umeng.com/social"];
+    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:wxAppKey appSecret:wxAppSecret redirectURL:@"https://apk.tederen.com"];
     
-    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatTimeLine appKey:wxAppKey appSecret:wxAppSecret redirectURL:@"http://mobile.umeng.com/social"];
+    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatTimeLine appKey:wxAppKey appSecret:wxAppSecret redirectURL:@"https://apk.tederen.com"];
 
     /* 设置分享到QQ互联的appID
      * U-Share SDK为了兼容大部分平台命名,统一用appKey和appSecret进行参数设置,而QQ平台仅需将appID作为U-Share的appKey参数传进即可。
     */
-    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:QQAppKey/*设置QQ平台的appID*/  appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
+    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:QQAppKey/*设置QQ平台的appID*/  appSecret:nil redirectURL:@"https://apk.tederen.com"];
 
     /* 设置新浪的appKey和appSecret */
-    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:WBAppKey  appSecret:WBAppSecret redirectURL:@"http://mobile.umeng.com/social"];
-}
-- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
-{
-    NSString * str = [url absoluteString];
-    if ([str hasPrefix:@"iostedeapp"]) {
-        if (![UserManager checkStringNull:kToken]){
-            str = [str substringFromIndex:17];
-            NSArray *array = [str componentsSeparatedByString:@"&"];
-            NSLog(@"%@",array);
-            NSDictionary * dict= @{@"Id":array[0],@"type":array[1],@"userId":array[2],@"name":array[3],@"describe":array[4]};
-            [self pushVC:dict];
-        }else{
-            UIWindow *window = [UtilsTools getWindow];
-            window.rootViewController = [StoryboardManager shared].login.instantiateInitialViewController;
-            [window makeKeyAndVisible];
-        }
-        return YES;
-    }
-    return [WXApi handleOpenURL:url delegate:self];
+    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:WBAppKey  appSecret:WBAppSecret redirectURL:@"https://apk.tederen.com"];
 }
+//- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
+//{
+//    NSString * str = [url absoluteString];
+//    if ([str hasPrefix:@"iostedeapp"]) {
+//        if (![UserManager checkStringNull:kToken]){
+//            str = [str substringFromIndex:17];
+//            NSArray *array = [str componentsSeparatedByString:@"&"];
+//            NSLog(@"%@",array);
+//            NSDictionary * dict= @{@"Id":array[0],@"type":array[1],@"userId":array[2],@"name":array[3],@"describe":array[4]};
+//            [self pushVC:dict];
+//        }else{
+//            UIWindow *window = [UtilsTools getWindow];
+//            window.rootViewController = [StoryboardManager shared].login.instantiateInitialViewController;
+//            [window makeKeyAndVisible];
+//        }
+//        return YES;
+//    }
+//    return [WXApi handleOpenURL:url delegate:self];
+//}
 /// 分享回调
 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
 {
@@ -145,7 +145,7 @@
 }
 
 + (instancetype)appdelegate {
-    return [UIApplication sharedApplication].delegate;
+    return (AppDelegate *)[UIApplication sharedApplication].delegate;
 }
 
 - (void)applicationWillResignActive:(UIApplication *)application {

+ 22 - 0
smartRhino/Assets.xcassets/ChatMsg/clear_audio.imageset/Contents.json

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

BIN
smartRhino/Assets.xcassets/ChatMsg/clear_audio.imageset/clear_audio@2x.png


BIN
smartRhino/Assets.xcassets/ChatMsg/clear_audio.imageset/clear_audio@3x.png


+ 22 - 0
smartRhino/Assets.xcassets/ChatMsg/clear_video.imageset/Contents.json

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

BIN
smartRhino/Assets.xcassets/ChatMsg/clear_video.imageset/clear_video@2x.png


BIN
smartRhino/Assets.xcassets/ChatMsg/clear_video.imageset/clear_video@3x.png


+ 22 - 0
smartRhino/Assets.xcassets/default_audio.imageset/Contents.json

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

BIN
smartRhino/Assets.xcassets/default_audio.imageset/default_audio@2x.png


BIN
smartRhino/Assets.xcassets/default_audio.imageset/default_audio@3x.png


+ 22 - 0
smartRhino/Assets.xcassets/default_video.imageset/Contents.json

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

BIN
smartRhino/Assets.xcassets/default_video.imageset/default_video@2x.png


BIN
smartRhino/Assets.xcassets/default_video.imageset/default_video@3x.png


+ 3 - 2
smartRhino/FwzAppConfig.h

@@ -306,7 +306,7 @@ typedef enum ChatMsgNoticeType_Source{
 /// 2话题 3 收藏 4笔记 5通知 6站内信 7小组  12 收藏文件夹 13笔记文件夹 14工作流审批  21 新版话题 100 文章 300 文件 301图片 400会议纪要 500会议详情 601 财务报表 602人事报表 603 出版报表
 typedef enum CollectModelType{
     CollectModel_Text = 1,
-    CollectModel_Toipc  = 2,
+    CollectModel_Toipc = 2,
     CollectModel_Collect = 3,
     CollectModel_NoteBook = 4,
     CollectModel_Notice = 5,
@@ -321,9 +321,10 @@ typedef enum CollectModelType{
     CollectModel_NewTopic = -4,
     CollectModel_TopicBooK = 41,
     CollectModel_TopicSubBooK = 42,
+    CollectModel_Aritle = 100,
     CollectModel_CollectFileAll = 120,
     CollectModel_NoteFileAll = 130,
-    CollectModel_Aritle = 100,
+    CollectModel_Teacher = 180,
     CollectModel_file = 300,
     CollectModel_Image = 301,
 //    CollectModel_meetMian  = 8,

+ 1 - 1
smartRhino/Info.plist

@@ -130,7 +130,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>1</string>
+	<string>$(CURRENT_PROJECT_VERSION)</string>
 	<key>LSApplicationQueriesSchemes</key>
 	<array>
 		<string>wechat</string>

+ 53 - 11
smartRhino/Project/VCModel/ChatMessage/Chat/EMChatViewController.m

@@ -49,6 +49,8 @@
 #import "NoteBookShareVC.h"
 #import "MoveViewController.h"
 #import "CountDataVC.h"
+#import "BookWCDetailVC.h"
+#import "BookListenVC.h"
 
 @interface EMChatViewController ()<UIScrollViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, EMMultiDevicesDelegate, EMChatManagerDelegate, EMGroupManagerDelegate, EMChatroomManagerDelegate, EMChatBarDelegate, EMMessageCellDelegate, EMChatBarEmoticonViewDelegate, EMChatBarRecordAudioViewDelegate,EMMoreFunctionViewDelegate,EMReadReceiptMsgDelegate,NoteBookShareVCDelegate>
 
@@ -392,6 +394,8 @@
             ||[self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"SourceHomeVC")]
             ||[self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"MyInfoVC")]
             ||[self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"MyFavoriteVC")]
+            ||[self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"BookWCDetailVC")]
+            ||[self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"BookListenVC")]
             ||[self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"CommonHomeVC")]) {
             [self.navigationController popToViewController:self.navigationController.viewControllers[i] animated:YES];
             return;
@@ -471,8 +475,9 @@
         // Configure the cell...
         if (cell == nil || !cell) {
             cell = [[EMMessageCell alloc] initWithDirection:model.direction type:model.type];
-            cell.delegate = self;
         }
+        cell.delegate = self;
+
         if (self.chatType == ChatType_SingleChat) {
             if (model.emModel.direction == EMMessageDirectionSend){
                 [cell setIconUrl:[AppUserModel sharedAppUserModel].AvatarUrl];
@@ -1217,6 +1222,21 @@
             vc.TodoId = Id;
             [self.navigationController pushViewController:vc animated:YES];
         }break;
+        case CollectModel_StoreSound:
+        {
+            BookListenVC * vc = [BookListenVC initBookListenVC];
+            vc.Id = Id;
+            vc.MediaType = MediaMusicType;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            BookWCDetailVC * vc = [BookWCDetailVC initBookWCDetailVC];
+            vc.Id = Id;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
         case CollectModel_meetMian:{
             MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
             vc.type = CollectModel_meetMian;
@@ -2179,6 +2199,12 @@
             [self shareHander];
         }
             break;
+        case EMMessageTypeFile:
+        {
+            EMFileMessageBody *body = (EMFileMessageBody *)model.emModel.body;
+            NSLog(@"%@",body.localPath);
+        }
+            break;
         default:
             break;
     }
@@ -2883,6 +2909,32 @@
                 }];
             }
                 break;
+            case CollectModel_StoreSound:///文本
+            {
+                [self _sendTextAction:@"音频" ext:@{@"app":@(YES),
+                                                   @"app_type":@(CollectModel_StoreSound),
+                                                   @"app_title":self.sendModel.Title,
+                                                   @"app_id":@(self.sendModel.SoureId),
+                                                   @"app_content":ISEmpty(self.sendModel.Author) ? @"" : self.sendModel.Author,
+                                                   @"app_sourceUserId":@(self.sendModel.SourceUserId),
+                                                   @"app_min_url":self.sendModel.MinUrl,
+                                                   @"app_url":self.sendModel.Url
+                }];
+            }
+                break;
+            case CollectModel_StoreVideo:///文本
+            {
+                [self _sendTextAction:@"视频" ext:@{@"app":@(YES),
+                                                   @"app_type":@(CollectModel_StoreVideo),
+                                                   @"app_title":self.sendModel.Title,
+                                                   @"app_id":@(self.sendModel.SoureId),
+                                                   @"app_content":ISEmpty(self.sendModel.Author) ? @"" : self.sendModel.Author,
+                                                   @"app_sourceUserId":@(self.sendModel.SourceUserId),
+                                                   @"app_min_url":self.sendModel.MinUrl,
+                                                   @"app_url":self.sendModel.Url
+                }];
+            }
+                break;
             default:
             {
                 [self _sendTextAction:@"出版统计" ext:@{@"app":@(YES),
@@ -3163,16 +3215,6 @@
 {
     MyTDTopicCreateVC * vc = [MyTDTopicCreateVC initMyTDTopicCreateVC];
     vc.type = CollectModel_NewTopic;
-    //    if (self.IsShareText) {
-    //        model.Title = self.shareText;
-    //        model.SoureTypeId = 1;
-    //    }else{
-    //        model.SoureId = self.Id;
-    //        model.SoureTypeId = self.type;
-    //        model.Title = self.currentNoteModel.Title;
-    //        model.Author = self.currentNoteModel.UserName;
-    //        vc.type = CollectModel_NewTopic;
-    //    }
     vc.sendModel = self.sendModel;
     vc.sendImage = self.sendImage;
     vc.isReturn = YES;

+ 38 - 6
smartRhino/Project/VCModel/ChatMessage/Chat/MessageCell/BubbleView/EMMsgExtSmartBubbleView.m

@@ -25,9 +25,11 @@
 - (void)_setupSubviews
 {
     [self setupAppBackgroundImage];
-    
+
     self.iconView = [[UIImageView alloc] init];
-    self.iconView.contentMode = UIViewContentModeScaleAspectFit;
+    self.iconView.contentMode = UIViewContentModeScaleAspectFill;
+    self.iconView.layer.cornerRadius = 4.f;
+    self.iconView.layer.masksToBounds = YES;
     self.iconView.clipsToBounds = YES;
     [self addSubview:self.iconView];
     
@@ -49,12 +51,11 @@
         make.right.equalTo(self.textLabel);
     }];
     if (self.direction == EMMessageDirectionSend) {
-//        self.iconView.image = [UIImage imageNamed:@"msg_file_white"];
         [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(self).offset(10);
             make.left.equalTo(self).offset(10);
             make.centerY.equalTo(self);
             make.width.equalTo(@40);
+            make.height.equalTo(@40);
         }];
         [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(self).offset(10);
@@ -62,12 +63,11 @@
             make.right.equalTo(self).offset(-15);
         }];
     } else {
-//        self.iconView.image = [UIImage imageNamed:@"msg_file"];
         [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(self).offset(10);
             make.left.equalTo(self).offset(13);
             make.centerY.equalTo(self);
             make.width.equalTo(@40);
+            make.height.equalTo(@40);
         }];
         [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) {
             make.top.equalTo(self).offset(10);
@@ -82,11 +82,16 @@
 
 - (void)setModel:(EMMessageModel *)model
 {
+    if (model.type != EMMessageTypeExtApp) {
+        return;
+    }
+    WS(weakSelf);
     NSDictionary * extDcit = model.emModel.ext;
     NSString * imageStr = [ZYCTool getFileNameImage:[extDcit objectForKey:@"app_title"]];
     self.textLabel.text = [extDcit objectForKey:@"app_title"];
     NSString * detail = [extDcit objectForKey:@"app_content"];
     self.detailLabel.text = detail;
+    [self.iconView removeAllSubviews];
     switch ([[extDcit objectForKey:@"app_type"] integerValue]) {
         case CollectModel_Aritle:
         {
@@ -169,6 +174,33 @@
             self.iconView.image = IMG(@"审批");
         }
             break;
+        case CollectModel_StoreSound:
+        {
+            
+            [self.iconView sd_setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholderImage:IMG(@"default_audio")];
+            if ([[extDcit objectForKey:@"app_min_url"] length] > 0) {
+                UIImageView * clearV = [UIImageView new];
+                [self.iconView addSubview:clearV];
+                clearV.image = IMG(@"clear_audio");
+                [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                    make.edges.mas_equalTo(self.iconView);
+                }];
+            }
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            [self.iconView sd_setImageWithURL:[NSURL URLWithString:[extDcit objectForKey:@"app_min_url"]] placeholderImage:IMG(@"default_video")];
+            if ([[extDcit objectForKey:@"app_min_url"] length] > 0) {
+                UIImageView * clearV = [UIImageView new];
+                [self.iconView addSubview:clearV];
+                clearV.image = IMG(@"clear_video");
+                [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                    make.edges.mas_equalTo(self.iconView);
+                }];
+            }
+        }
+            break;
         case CollectModel_financeCount:
         {
             self.iconView.image = IMG(@"报表");

+ 30 - 11
smartRhino/Project/VCModel/ChatMessage/Controller/ChatMsg/Controller/ChatMsgDetailChatInfoVC.m

@@ -81,6 +81,7 @@
         weakSelf.IsAdmin = [responseObject[@"IsAdmin"] boolValue];
         weakSelf.IsTop = [responseObject[@"IsTop"] boolValue];
         weakSelf.IsDisturb = [responseObject[@"IsDisturb"] boolValue];
+
         for (NSInteger i = 0; i < weakSelf.allUserArray.count; i++) {
             if (weakSelf.IsAdmin) {
                 if (i > 17) {
@@ -148,7 +149,8 @@
         weakSelf.model.IsAdmin = [[groupChatDict objectForKey:@"IsAdmin"] boolValue];
         weakSelf.model.IsWords = [[groupChatDict objectForKey:@"IsWords"] boolValue];
         weakSelf.model.IsOpenQrCoder = [[groupChatDict objectForKey:@"IsOpenQrCoder"] boolValue];
-        
+        weakSelf.model.IsContacts = [[groupChatDict objectForKey:@"IsContacts"] boolValue];
+
         dispatch_async(dispatch_get_main_queue(), ^{
             [weakSelf.tableView reloadData];
             [weakSelf.collectionView reloadData];
@@ -178,11 +180,7 @@
 }
 
 -(void)initTableView{
-    if (@available(iOS 11.0, *)) {
-        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-    } else {
-        self.automaticallyAdjustsScrollViewInsets = NO;
-    }
+    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
     self.tableView.delegate = self;
     self.tableView.dataSource = self;
     self.tableView.backgroundColor = [UIColor clearColor];
@@ -222,7 +220,7 @@
             }
         }break;
         case 2:{
-            return 2;
+            return 3;
         }break;
         case 3:{
             return 2;
@@ -316,6 +314,9 @@
                 case 1:{
                     return [ChatMsgDetailChatInfoCell configCell2Height];
                 }break;
+                case 2:{
+                    return [ChatMsgDetailChatInfoCell configCell2Height];
+                }break;
                 default:
                     break;
             }
@@ -339,6 +340,7 @@
 }
  
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    WS(weakSelf);
      switch (indexPath.section) {
          case 0:{
              switch (indexPath.row) {
@@ -380,7 +382,6 @@
                      cell.cell2Switch.enabled = self.IsAdmin;
                      [cell.cell2Switch setOn:self.model.IsOpenQrCoder];
                      [cell.cell2Switch setBlockForControlEvents:UIControlEventValueChanged block:^(id  _Nonnull sender) {
-                         WS(weakSelf);
                          NSString * url = [NSString stringWithFormat:@"%@%ld",Host(API_App_Group_Chat),(long)weakSelf.model.GroupChatImId];
                          [[HttpManager sharedHttpManager] PUTUrl:url parameters:@{} success:^(id  _Nonnull responseObject) {
                              dispatch_async(dispatch_get_main_queue(), ^{
@@ -396,7 +397,6 @@
                      if (self.model.IsOpenQrCoder) {
                          ChatMsgDetailChatInfoCell *cell = [ChatMsgDetailChatInfoCell configCell3:tableView indexPath:indexPath];
                          cell.cell3TitleLabel.text = @"二维码";
-                         WS(weakSelf);
                          cell.cell3ShareBtn.hidden = YES;
                          [cell.cell3ShareBtn setAction:^{
                              [weakSelf shareHander];
@@ -449,7 +449,6 @@
                      cell.cell2Switch.enabled = YES;
                      [cell.cell2Switch setOn:self.IsDisturb];
                      [cell.cell2Switch setBlockForControlEvents:UIControlEventValueChanged block:^(id  _Nonnull sender) {
-                         WS(weakSelf);
                          [[HttpManager sharedHttpManager] POSTUrl:Host(Group_Chat_User_is_disturb) parameters:@{@"GroupChatId":@(weakSelf.model.Id),@"UserId":@([AppUserModel sharedAppUserModel].Id)} responseStyle:DATA success:^(id  _Nonnull responseObject) {
                              dispatch_async(dispatch_get_main_queue(), ^{
                                  [weakSelf netWorking];
@@ -469,7 +468,6 @@
                      cell.cell2Switch.enabled = YES;
                      [cell.cell2Switch setOn:self.IsTop];
                      [cell.cell2Switch setBlockForControlEvents:UIControlEventValueChanged block:^(id  _Nonnull sender) {
-                         WS(weakSelf);
                          [[HttpManager sharedHttpManager] POSTUrl:Host(Group_Chat_User_is_top) parameters:@{@"IsTop":@(!weakSelf.IsTop),@"GroupChatId":@(weakSelf.model.Id),@"UserId":@([AppUserModel sharedAppUserModel].Id)} responseStyle:DATA success:^(id  _Nonnull responseObject) {
                              weakSelf.IsTop = !weakSelf.IsTop;
                              dispatch_async(dispatch_get_main_queue(), ^{
@@ -482,6 +480,27 @@
                      return cell;
                  }break;
                  default:
+                 {
+                     ChatMsgDetailChatInfoCell *cell = [ChatMsgDetailChatInfoCell configCell2:tableView indexPath:indexPath];
+                     cell.cell2TitleLabel.text = @"保存到通讯录";
+                     cell.cell2ValueLabel.hidden = YES;
+                     cell.cell2RightArrowImg.hidden = YES;
+                     cell.cell2Switch.hidden = NO;
+                     cell.cell2Switch.enabled = YES;
+                     [cell.cell2Switch setOn:self.model.IsContacts];
+                     [cell.cell2Switch setBlockForControlEvents:UIControlEventValueChanged block:^(id  _Nonnull sender) {
+                         NSString * url = [NSString stringWithFormat:@"%@%ld",Host(APP_Group_Chat_Contacts),weakSelf.model.Id];
+                         [[HttpManager sharedHttpManager] PUTUrl:url parameters:@{} responseStyle:DATA success:^(id  _Nonnull responseObject) {
+                             weakSelf.model.IsContacts = !weakSelf.model.IsContacts;
+                             dispatch_async(dispatch_get_main_queue(), ^{
+                                 [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
+                             });
+                         } failure:^(NSError * _Nonnull error) {
+                             SHOWERROR([ZYCTool handerResultData:error]);
+                         }];
+                     }];
+                     return cell;
+                 }
                      break;
              }
          }break;

+ 1 - 0
smartRhino/Project/VCModel/ChatMessage/Controller/ChatMsg/Model/chatInfoGroupChatModel.h

@@ -18,6 +18,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (copy,nonatomic) NSString *Introduce;
 @property (assign,nonatomic) BOOL IsAdmin;
 @property (assign,nonatomic) BOOL IsWords;
+@property (assign,nonatomic) BOOL IsContacts;
 @property (assign,nonatomic) BOOL IsOpenQrCoder;
 @property (copy,nonatomic) NSString *LastModifiedDate;
 @property (copy,nonatomic) NSString *Name;

+ 4 - 0
smartRhino/Project/VCModel/ChatMessage/Controller/ChatMsgNotice/Controller/MoveViewController.m

@@ -482,6 +482,10 @@
                 || [vc isKindOfClass:NSClassFromString(@"MyFavoriteVC")]
                 || [vc isKindOfClass:NSClassFromString(@"OtherNoteBookVC")]
                 || [vc isKindOfClass:NSClassFromString(@"OtherFavoriteVC")]
+                || [vc isKindOfClass:NSClassFromString(@"BookListenVC")]
+                || [vc isKindOfClass:NSClassFromString(@"BookWCDetailVC")]
+                || [vc isKindOfClass:NSClassFromString(@"IndexViewController")]
+                || [vc isKindOfClass:NSClassFromString(@"BookTeacherDetailVC")]
                 || [vc isKindOfClass:NSClassFromString(@"TDInterLeterHomeViewController")]
                 || [vc isKindOfClass:NSClassFromString(@"NewMeetingFecordDetailsController")]
                 || [vc isKindOfClass:NSClassFromString(@"CommonHomeVC")]

+ 36 - 1
smartRhino/Project/VCModel/ChatMessage/Controller/MailList/Controller/MailChatVC.m

@@ -183,6 +183,7 @@
 }
 - (void)getData{
     WS(weakSelf);
+    [self.dataArray removeAllObjects];
     [[HttpManager sharedHttpManager] GETUrl:Host(API_APP_User_Chat_List_Contacts) parameters:@{} responseStyle:JOSN success:^(id  _Nonnull responseObject) {
         NSLog(@"%@",responseObject);
         for (NSDictionary * dic in responseObject) {
@@ -291,7 +292,41 @@
         [self.navigationController pushViewController:vc animated:YES];
     }
 }
-
+#pragma Mark 左滑按钮 iOS8以上
+- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos){
+    WS(weakSelf);
+    MailChatModel *model = [self.dataArray objectAtIndex:indexPath.row];
+    UIContextualAction *action1 = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"不再保存" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
+        [tableView setEditing:NO animated:YES];
+        UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:nil message:@"是否不再保存" preferredStyle:UIAlertControllerStyleAlert];
+        UIAlertAction *ok = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+            
+        }];
+        [ok setValue:k9 forKey:@"_titleTextColor"];
+        UIAlertAction *noOk = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+            [weakSelf quitGroup:model.Id];
+        }];
+        [alertVC addAction:ok];
+        [alertVC addAction:noOk];
+        completionHandler(YES);
+        [weakSelf presentViewController:alertVC animated:YES completion:nil];
+    }];
+    action1.backgroundColor = RGB(255, 59, 47);
+    UISwipeActionsConfiguration *actions = [UISwipeActionsConfiguration configurationWithActions:@[action1]];
+    actions.performsFirstActionWithFullSwipe = NO;
+    return actions;
+    
+}
+- (void)quitGroup:(NSInteger)Id
+{
+    WS(weakSelf);
+    NSString * url = [NSString stringWithFormat:@"%@%ld",Host(APP_Group_Chat_Contacts),Id];
+    [[HttpManager sharedHttpManager] PUTUrl:url parameters:@{} responseStyle:DATA success:^(id  _Nonnull responseObject) {
+        [weakSelf getData];
+    } failure:^(NSError * _Nonnull error) {
+        SHOWERROR([ZYCTool handerResultData:error]);
+    }];
+}
 - (UIButton *)allSelectBtn
 {
     if (!_allSelectBtn) {

+ 44 - 0
smartRhino/Project/VCModel/ChatMessage/Controller/MailList/Controller/MailGroupVC.m

@@ -185,6 +185,7 @@
 //                                @"PerPage":@(20),
                                 @"Sort":@""
     };
+    [self.dataArray removeAllObjects];
     [[HttpManager sharedHttpManager] POSTUrl:Host(APP_Group_Find) parameters:paraDict responseStyle:JOSN success:^(id  _Nonnull responseObject) {
         NSLog(@"%@",responseObject);
         NoticeListModel *listModel = [[NoticeListModel alloc] initWithDictionary:responseObject error:nil];
@@ -544,6 +545,49 @@
         }
     }
 }
+#pragma Mark 左滑按钮 iOS8以上
+- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos){
+    WS(weakSelf);
+    NoticeModel *model = [self.dataArray objectAtIndex:indexPath.row];
+    switch (model.AttributeValue) {
+        case 1:{
+            UIContextualAction *action1 = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"不再保存" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
+                [tableView setEditing:NO animated:YES];
+                UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:nil message:@"是否不再保存" preferredStyle:UIAlertControllerStyleAlert];
+                UIAlertAction *ok = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+                    
+                }];
+                [ok setValue:k9 forKey:@"_titleTextColor"];
+                UIAlertAction *noOk = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                    [weakSelf quitGroup:model.Id];
+                }];
+                [alertVC addAction:ok];
+                [alertVC addAction:noOk];
+                completionHandler(YES);
+                [weakSelf presentViewController:alertVC animated:YES completion:nil];
+            }];
+            action1.backgroundColor = RGB(255, 59, 47);
+            UISwipeActionsConfiguration *actions = [UISwipeActionsConfiguration configurationWithActions:@[action1]];
+            actions.performsFirstActionWithFullSwipe = NO;
+            return actions;
+        }break;
+        default:{
+            UISwipeActionsConfiguration *actions = [UISwipeActionsConfiguration configurationWithActions:@[]];
+            actions.performsFirstActionWithFullSwipe = NO;
+            return actions;
+        }break;
+    }
+}
+- (void)quitGroup:(NSInteger)Id
+{
+    WS(weakSelf);
+    NSString * url = [NSString stringWithFormat:@"%@%ld",Host(APP_Group_Contacts),Id];
+    [[HttpManager sharedHttpManager] PUTUrl:url parameters:@{} responseStyle:DATA success:^(id  _Nonnull responseObject) {
+        [weakSelf getData];
+    } failure:^(NSError * _Nonnull error) {
+        SHOWERROR([ZYCTool handerResultData:error]);
+    }];
+}
 
 - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
     return self.IsSelect ? !tableView.editing : tableView.editing;

+ 4 - 4
smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/Cell/ChatNewRowCell.xib

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.2" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.3" 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"/>
@@ -65,7 +65,7 @@
                 <rect key="frame" x="0.0" y="0.0" width="320" height="69"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="find_1" translatesAutoresizingMaskIntoConstraints="NO" id="dok-bS-6aW">
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="find_1" translatesAutoresizingMaskIntoConstraints="NO" id="dok-bS-6aW">
                         <rect key="frame" x="16.5" y="17" width="41" height="35"/>
                         <constraints>
                             <constraint firstAttribute="height" constant="35" id="A4H-L0-9oN"/>
@@ -244,7 +244,7 @@
                         <state key="normal" image="sendinfo_no"/>
                         <state key="selected" image="sendinfo_yes"/>
                     </button>
-                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="find_1" translatesAutoresizingMaskIntoConstraints="NO" id="Oaj-Ul-JPu">
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="find_1" translatesAutoresizingMaskIntoConstraints="NO" id="Oaj-Ul-JPu">
                         <rect key="frame" x="46" y="17" width="41" height="35"/>
                         <constraints>
                             <constraint firstAttribute="height" constant="35" id="btf-ha-QWB"/>
@@ -434,7 +434,7 @@
                 <rect key="frame" x="0.0" y="0.0" width="320" height="69"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="find_1" translatesAutoresizingMaskIntoConstraints="NO" id="fea-kV-FEJ">
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="find_1" translatesAutoresizingMaskIntoConstraints="NO" id="fea-kV-FEJ">
                         <rect key="frame" x="16.5" y="17" width="41" height="35"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="41" id="4lB-N4-huU"/>

+ 20 - 2
smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/Cell/TDGroupInfoListCell.m

@@ -118,12 +118,30 @@
             break;
         case CollectModel_StoreSound:
         {
-            [iconV sd_setImageWithURL:[NSURL URLWithString:model.File] placeholderImage:IMG(@"icon_weizhiwenjian")];
+            [iconV sd_setImageWithURL:[NSURL URLWithString:model.File] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_audio");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(iconV);
+                    }];
+                });
+            }];
         }
             break;
         case CollectModel_StoreVideo:
         {
-            [iconV sd_setImageWithURL:[NSURL URLWithString:model.File] placeholderImage:IMG(@"icon_weizhiwenjian")];
+            [iconV sd_setImageWithURL:[NSURL URLWithString:model.File] placeholderImage:IMG(@"default_video") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_video");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(iconV);
+                    }];
+                });
+            }];
         }
             break;
         case CollectModel_Toipc:

+ 1 - 0
smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/Model/TDGroupInfoListModel.h

@@ -18,6 +18,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic , assign) NSInteger              GroupFolderId;
 @property (nonatomic , assign) BOOL                   IsAdmin;
 @property (nonatomic , assign) BOOL                   IsUser;
+@property (nonatomic , assign) BOOL                   IsContacts;
 @property (nonatomic , assign) BOOL                   IsUDisturb;
 @property (nonatomic , assign) BOOL                   IsWords;
 @property (nonatomic , assign) BOOL                   IsShow;

+ 62 - 4
smartRhino/Project/VCModel/ChatMessage/Controller/MyTDGroup/VC/TDGroupInfoDetailVC.m

@@ -101,13 +101,13 @@
     if (section == 0) {
         switch (self.listModel.GroupUserRoleId) {
             case 1:
-                return 5;
+                return 6;
                 break;
             case 2:
-                return 5;
+                return 6;
                 break;
             default:
-                return 3;
+                return 4;
                 break;
         }
     }else{
@@ -158,6 +158,26 @@
                         return cell;
                     }
                         break;
+                    
+                    case 4:
+                    {
+                        TDGroupInfoDetailCell *cell = [TDGroupInfoDetailCell configCell2:tableView indexPath:indexPath];
+                        cell.cell2TitleL.text = @"保存到通讯录";
+                        [cell.cell2Switch setBlockForControlEvents:UIControlEventValueChanged block:^(id  _Nonnull sender) {
+                            NSString * url = [NSString stringWithFormat:@"%@%ld",Host(APP_Group_Contacts),weakSelf.GroupId];
+                            [[HttpManager sharedHttpManager] PUTUrl:url parameters:@{} responseStyle:DATA success:^(id  _Nonnull responseObject) {
+                                weakSelf.listModel.IsContacts = !weakSelf.listModel.IsContacts;
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
+                                });
+                            } failure:^(NSError * _Nonnull error) {
+                                SHOWERROR([ZYCTool handerResultData:error]);
+                            }];
+                        }];
+                        [cell.cell2Switch setOn:self.listModel.IsContacts];
+                        return cell;
+                    }
+                        break;
                     default:
                     {
                         ChatGroupAddVC *vc = [[ChatGroupAddVC alloc] init];
@@ -231,6 +251,25 @@
                         return cell;
                     }
                         break;
+                    case 4:
+                    {
+                        TDGroupInfoDetailCell *cell = [TDGroupInfoDetailCell configCell2:tableView indexPath:indexPath];
+                        cell.cell2TitleL.text = @"保存到通讯录";
+                        [cell.cell2Switch setBlockForControlEvents:UIControlEventValueChanged block:^(id  _Nonnull sender) {
+                            NSString * url = [NSString stringWithFormat:@"%@%ld",Host(APP_Group_Contacts),weakSelf.GroupId];
+                            [[HttpManager sharedHttpManager] PUTUrl:url parameters:@{} responseStyle:DATA success:^(id  _Nonnull responseObject) {
+                                weakSelf.listModel.IsContacts = !weakSelf.listModel.IsContacts;
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
+                                });
+                            } failure:^(NSError * _Nonnull error) {
+                                SHOWERROR([ZYCTool handerResultData:error]);
+                            }];
+                        }];
+                        [cell.cell2Switch setOn:self.listModel.IsContacts];
+                        return cell;
+                    }
+                        break;
                     default:
                     {
                         TDGroupInfoDetailCell *cell = [TDGroupInfoDetailCell configCell3:tableView indexPath:indexPath];
@@ -290,13 +329,32 @@
                         return cell;
                     }
                         break;
-                    default:
+                    case 2:
                     {
                         TDGroupInfoDetailCell *cell = [TDGroupInfoDetailCell configCell1:tableView indexPath:indexPath];
                         cell.cell1TitleL.text = @"小组标签";
                         return cell;
                     }
                         break;
+                    default:
+                    {
+                        TDGroupInfoDetailCell *cell = [TDGroupInfoDetailCell configCell2:tableView indexPath:indexPath];
+                        cell.cell2TitleL.text = @"保存到通讯录";
+                        [cell.cell2Switch setBlockForControlEvents:UIControlEventValueChanged block:^(id  _Nonnull sender) {
+                            NSString * url = [NSString stringWithFormat:@"%@%ld",Host(APP_Group_Contacts),weakSelf.GroupId];
+                            [[HttpManager sharedHttpManager] PUTUrl:url parameters:@{} responseStyle:DATA success:^(id  _Nonnull responseObject) {
+                                weakSelf.listModel.IsContacts = !weakSelf.listModel.IsContacts;
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
+                                });
+                            } failure:^(NSError * _Nonnull error) {
+                                SHOWERROR([ZYCTool handerResultData:error]);
+                            }];
+                        }];
+                        [cell.cell2Switch setOn:self.listModel.IsContacts];
+                        return cell;
+                    }
+                        break;
                 }
             }
                 break;

+ 7 - 6
smartRhino/Project/VCModel/ChatMessage/Controller/TDInternalLeter/contoller/TDInterLeterHomeViewController.m

@@ -113,7 +113,7 @@
         vc.type = weakSelf.pageType;
         [weakSelf.navigationController pushViewController:vc animated:YES];
     }];
-    
+    [self addRefresh];
     [self.view addSubview:self.tableView];
     [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.mas_equalTo(self.view);
@@ -284,9 +284,9 @@
     self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
         [weakSelf headRefresh];
     }];
-//    self.tableView.mj_footer = [MJRefreshBackStateFooter footerWithRefreshingBlock:^{
-//        [weakSelf footerRefresh];
-//    }];
+    self.tableView.mj_footer = [MJRefreshBackStateFooter footerWithRefreshingBlock:^{
+        [weakSelf footerRefresh];
+    }];
 }
 - (void)removeRefresh
 {
@@ -320,15 +320,15 @@
         [self changeBarBtn:NO];
     }
     [dict setObject:@(self.currentPage) forKey:@"Page"];
-    [dict setObject:@"99999999" forKey:@"PerPage"];
+    [dict setObject:@(10) forKey:@"PerPage"];
     [dict setObject:@(self.pageType) forKey:@"SearchType"];
     [dict setObject:@"" forKey:@"Keyword"];
     [dict setObject:@(self.interLeterFolderId) forKey:@"NoticeFolderId"];
     WS(weakSelf);
     SHOWLOADING
+    [[HttpManager sharedHttpManager] cancelRequest];
     [[HttpManager sharedHttpManager] POSTUrl:Host(API_NOTICE_LIST) parameters:dict responseStyle:JOSN success:^(id  _Nonnull responseObject) {
         NSLog(@"站内信返回数据%@",responseObject);
-        REMOVESHOW
         NoticeListModel *listModel = [[NoticeListModel alloc] initWithDictionary:responseObject error:nil];
         [weakSelf.tableView.mj_header endRefreshing];
         [weakSelf.tableView.mj_footer endRefreshing];
@@ -338,6 +338,7 @@
             [weakSelf.tableView.mj_footer resetNoMoreData];
             [weakSelf.tableView.mj_footer endRefreshingWithNoMoreData];
         }
+        REMOVESHOW
         [weakSelf.tableView reloadData];
     } failure:^(NSError * _Nonnull error) {
         REMOVESHOW

+ 32 - 10
smartRhino/Project/VCModel/Home/OtherHomeVC/MyTDTopic/VC/MyTDTopicCreateVC.m

@@ -733,6 +733,15 @@
                 }else if(fileType == CollectModel_Toipc){
                     NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%d','%@','%ld','%@','%@','%@','%ld','%@','%ld')",CollectModel_Toipc,model.Title,(long)model.SoureId, model.Author.length > 0 ? model.Author : @"",model.MinUrl,model.Url,model.SourceUserId,model.GroupName,model.GroupId];
                     [weakSelf upDateAction:jsonString];
+                }else if(fileType == CollectModel_StoreSound){
+                    NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%d','%@','%ld','%@','%@','%@','%ld','%@','%ld')",CollectModel_StoreSound,model.Title,(long)model.SoureId, model.Author.length > 0 ? model.Author : @"",model.MinUrl,model.Url,model.SourceUserId,model.GroupName,model.GroupId];
+                    [weakSelf upDateAction:jsonString];
+                }else if(fileType == CollectModel_StoreVideo){
+                    NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%d','%@','%ld','%@','%@','%@','%ld','%@','%ld')",CollectModel_StoreVideo,model.Title,(long)model.SoureId, model.Author.length > 0 ? model.Author : @"",model.MinUrl,model.Url,model.SourceUserId,model.GroupName,model.GroupId];
+                    [weakSelf upDateAction:jsonString];
+                }else if(fileType == CollectModel_Group){
+                    NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%d','%@','%ld','%@','%@','%@','%ld')",CollectModel_Toipc,model.Title,(long)model.SoureId,model.Author.length > 0 ? model.Author : @"",model.MinUrl,model.Url,model.SourceUserId];
+                    [weakSelf upDateAction:jsonString];
                 }else{
                     NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)model.SoureTypeId,model.Title,(long)model.SoureId,model.Author.length > 0 ? model.Author : @"",model.MinUrl,model.Url,model.SourceUserId];
                     [weakSelf upDateAction:jsonString];
@@ -772,18 +781,11 @@
             NSDictionary * dict = message.body;
             NSString * html = @"";
             NSString * Title = @"";
-//            if (html.length > 0 || Title.length > 0) {
-//                self.isNull = NO;
-//                [self.DoneBtn setEnabled:YES];
-//            }else{
-//                self.isNull = YES;
-//                [self.DoneBtn setEnabled:NO];
-//            }
             if (![dict[@"html"] isKindOfClass:[NSNull class]]) {
                 html = dict[@"html"];
             }
             if (![dict[@"Title"] isKindOfClass:[NSNull class]]) {
-                html = dict[@"Title"];
+                Title = dict[@"Title"];
             }
             if ([Title length] > 0 || [html length] > 0 ) {
                 self.isNull = NO;
@@ -1194,6 +1196,20 @@
                     author = dataModel.Data.Author.length > 0 ? [NSString stringWithFormat:@"来自-%@的话题本",dataModel.Data.Author] : @"";
                 }
                     break;
+                case CollectModel_StoreSound:
+                {
+                    dataModel.Data.MinFile = dataModel.Data.ArticleImgUrl.firstObject;
+                    dataModel.Data.File = dataModel.Data.ArticleImgUrl.firstObject;
+                    author = dataModel.Data.Author.length > 0 ? dataModel.Data.Author : @"";
+                }
+                    break;
+                case CollectModel_StoreVideo:
+                {
+                    dataModel.Data.MinFile = dataModel.Data.ArticleImgUrl.firstObject;
+                    dataModel.Data.File = dataModel.Data.ArticleImgUrl.firstObject;
+                    author = dataModel.Data.Author.length > 0 ? dataModel.Data.Author : @"";
+                }
+                    break;
                 default:
                 {
                     author = dataModel.Data.Author.length > 0 ? dataModel.Data.Author : @"";
@@ -1209,7 +1225,7 @@
                                  @"smallurl":dataModel.Data.MinFile,
                                  @"bigurl":dataModel.Data.File,
                                  @"userId":@(dataModel.SourceUserId == 0 ? dataModel.UserId : dataModel.SourceUserId),
-                                 @"groupName":dataModel.Data.GroupName,
+                                 @"groupName":dataModel.Data.GroupName ? dataModel.Data.GroupName : @"",
                                  @"groupId":@(dataModel.Data.GroupId)
             }];
         }else{
@@ -1222,7 +1238,7 @@
                                  @"smallurl":@"",
                                  @"bigurl":@"",
                                  @"userId":@(dataModel.SourceUserId == 0 ? dataModel.UserId : dataModel.SourceUserId),
-                                 @"groupName":dataModel.Data.GroupName,
+                                 @"groupName":dataModel.Data.GroupName ? dataModel.Data.GroupName : @"",
                                  @"groupId":@(dataModel.Data.GroupId)
             }];
         }
@@ -1258,6 +1274,7 @@
   //去除掉首尾的空白字符和换行字符
     newString = [newString stringByReplacingOccurrencesOfString:@"\r" withString:@""];
     newString = [newString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
+    newString = [newString stringByReplacingOccurrencesOfString:@"\\b" withString:@""];
     newString = [newString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];  //去除掉首尾的空白字符和换行字符使用
     newString = [newString stringByReplacingOccurrencesOfString:@" " withString:@""];
     return newString;
@@ -1382,6 +1399,11 @@
                     [self submitNotice:dict];
                 }
                     break;
+                case CollectModel_NoSignMail:
+                {
+                    [self submitNotice:dict];
+                }
+                    break;
                 default:
                     break;
             }

+ 454 - 20
smartRhino/Project/VCModel/Home/VC/BookStore/BookDetail.storyboard

@@ -100,21 +100,21 @@
                                     <rect key="frame" x="0.0" y="0.0" width="414" height="483"/>
                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                     <subviews>
-                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uHW-Ry-BlU">
-                                            <rect key="frame" x="15" y="26" width="384" height="21.666666666666671"/>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uHW-Ry-BlU">
+                                            <rect key="frame" x="15" y="26" width="384" height="0.0"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="18"/>
                                             <color key="textColor" red="0.20784313725490194" green="0.23529411764705882" blue="0.27450980392156865" alpha="1" colorSpace="calibratedRGB"/>
                                             <nil key="highlightedColor"/>
                                         </label>
                                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="1fX-1o-DjY">
-                                            <rect key="frame" x="151.66666666666666" y="67.666666666666686" width="110.99999999999997" height="148"/>
+                                            <rect key="frame" x="151.66666666666666" y="46" width="110.99999999999997" height="148"/>
                                             <constraints>
                                                 <constraint firstAttribute="width" constant="111" id="8dH-Vs-AO3"/>
                                                 <constraint firstAttribute="height" constant="148" id="uNG-pM-6xe"/>
                                             </constraints>
                                         </imageView>
                                         <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="afv-St-q0b">
-                                            <rect key="frame" x="18" y="238.66666666666663" width="378" height="38"/>
+                                            <rect key="frame" x="18" y="217" width="378" height="38"/>
                                             <subviews>
                                                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PCc-Tj-5uT">
                                                     <rect key="frame" x="0.0" y="0.0" width="75.666666666666671" height="38"/>
@@ -127,7 +127,7 @@
                                                             </constraints>
                                                         </imageView>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="缓存" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1cg-E4-3p3">
-                                                            <rect key="frame" x="27.333333333333336" y="26.000000000000028" width="20.666666666666664" height="12"/>
+                                                            <rect key="frame" x="27.333333333333336" y="26" width="20.666666666666664" height="12"/>
                                                             <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                                             <color key="textColor" red="0.36470588235294116" green="0.39215686274509803" blue="0.43137254901960786" alpha="1" colorSpace="calibratedRGB"/>
                                                             <nil key="highlightedColor"/>
@@ -159,7 +159,7 @@
                                                             </constraints>
                                                         </imageView>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="背景乐" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eO7-R9-Ei9">
-                                                            <rect key="frame" x="22.333333333333329" y="26.000000000000028" width="30.666666666666671" height="12"/>
+                                                            <rect key="frame" x="22.333333333333329" y="26" width="30.666666666666671" height="12"/>
                                                             <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                                             <color key="textColor" red="0.36470588240000001" green="0.3921568627" blue="0.43137254899999999" alpha="1" colorSpace="calibratedRGB"/>
                                                             <nil key="highlightedColor"/>
@@ -191,7 +191,7 @@
                                                             </constraints>
                                                         </imageView>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="定时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jFU-Wv-bf7">
-                                                            <rect key="frame" x="27.333333333333314" y="26.000000000000028" width="20.666666666666671" height="12"/>
+                                                            <rect key="frame" x="27.333333333333314" y="26" width="20.666666666666671" height="12"/>
                                                             <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                                             <color key="textColor" red="0.36470588240000001" green="0.3921568627" blue="0.43137254899999999" alpha="1" colorSpace="calibratedRGB"/>
                                                             <nil key="highlightedColor"/>
@@ -223,7 +223,7 @@
                                                             </constraints>
                                                         </imageView>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="AI男声" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u4c-Gs-WvE">
-                                                            <rect key="frame" x="22.666666666666657" y="26.000000000000028" width="30.333333333333329" height="12"/>
+                                                            <rect key="frame" x="22.666666666666657" y="26" width="30.333333333333329" height="12"/>
                                                             <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                                             <color key="textColor" red="0.36470588240000001" green="0.3921568627" blue="0.43137254899999999" alpha="1" colorSpace="calibratedRGB"/>
                                                             <nil key="highlightedColor"/>
@@ -255,7 +255,7 @@
                                                             </constraints>
                                                         </imageView>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.5 X" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4oN-ek-E3u">
-                                                            <rect key="frame" x="26" y="26.000000000000028" width="23.666666666666671" height="12"/>
+                                                            <rect key="frame" x="26" y="26" width="23.666666666666671" height="12"/>
                                                             <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                                             <color key="textColor" red="0.36470588240000001" green="0.3921568627" blue="0.43137254899999999" alpha="1" colorSpace="calibratedRGB"/>
                                                             <nil key="highlightedColor"/>
@@ -282,7 +282,7 @@
                                             </constraints>
                                         </stackView>
                                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yb9-UF-Wn0">
-                                            <rect key="frame" x="12" y="291.66666666666669" width="40" height="40"/>
+                                            <rect key="frame" x="12" y="270" width="40" height="40"/>
                                             <constraints>
                                                 <constraint firstAttribute="width" constant="40" id="MPQ-K6-T4h"/>
                                                 <constraint firstAttribute="height" constant="40" id="aeX-2g-2PM"/>
@@ -290,7 +290,7 @@
                                             <state key="normal" image="Book_listen_leftTime_Icon"/>
                                         </button>
                                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uns-BW-3x2">
-                                            <rect key="frame" x="362" y="291.66666666666669" width="40" height="40"/>
+                                            <rect key="frame" x="362" y="270" width="40" height="40"/>
                                             <constraints>
                                                 <constraint firstAttribute="height" constant="40" id="uBm-a8-alK"/>
                                                 <constraint firstAttribute="width" constant="40" id="v62-8h-W69"/>
@@ -298,40 +298,40 @@
                                             <state key="normal" image="Book_listen_rightTime_Icon"/>
                                         </button>
                                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nlb-xS-SnT">
-                                            <rect key="frame" x="54" y="291.66666666666669" width="306" height="40"/>
+                                            <rect key="frame" x="54" y="270" width="306" height="40"/>
                                             <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                                             <constraints>
                                                 <constraint firstAttribute="height" constant="40" id="w93-OO-tuA"/>
                                             </constraints>
                                         </view>
                                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QOS-nx-QpJ">
-                                            <rect key="frame" x="177.66666666666666" y="342.66666666666669" width="59" height="63.333333333333314"/>
+                                            <rect key="frame" x="177.66666666666666" y="321" width="59" height="85"/>
                                             <state key="normal" image="Book_listen_play_Icon"/>
                                         </button>
                                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Abo-zm-zBG">
-                                            <rect key="frame" x="261.66666666666669" y="362" width="25" height="25"/>
+                                            <rect key="frame" x="261.66666666666669" y="351" width="25" height="25"/>
                                             <state key="normal" image="Book_listen_downNext_Icon"/>
                                         </button>
                                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="shL-bM-YhB">
-                                            <rect key="frame" x="127.66666666666669" y="362" width="25" height="25"/>
+                                            <rect key="frame" x="127.66666666666669" y="351" width="25" height="25"/>
                                             <state key="normal" image="Book_listen_upNext_Icon"/>
                                         </button>
                                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ixK-b2-tQM">
-                                            <rect key="frame" x="27.666666666666671" y="351.66666666666669" width="25" height="25"/>
+                                            <rect key="frame" x="27.666666666666671" y="330" width="25" height="25"/>
                                             <state key="normal" image="Book_listen_random_Icon"/>
                                         </button>
                                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LnC-D0-dzE">
-                                            <rect key="frame" x="361.66666666666669" y="351.66666666666669" width="25" height="25"/>
+                                            <rect key="frame" x="361.66666666666669" y="330" width="25" height="25"/>
                                             <state key="normal" image="Book_listen_playlist_Icon"/>
                                         </button>
                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="随机播放" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="omx-b1-CWH">
-                                            <rect key="frame" x="19.666666666666671" y="380.33333333333331" width="41" height="12"/>
+                                            <rect key="frame" x="19.666666666666671" y="358.66666666666669" width="41" height="12"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                             <color key="textColor" red="0.36470588240000001" green="0.3921568627" blue="0.43137254899999999" alpha="1" colorSpace="calibratedRGB"/>
                                             <nil key="highlightedColor"/>
                                         </label>
                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="播放列表" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tEd-M3-fXs">
-                                            <rect key="frame" x="353.66666666666669" y="380.33333333333331" width="41" height="12"/>
+                                            <rect key="frame" x="353.66666666666669" y="358.66666666666669" width="41" height="12"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                             <color key="textColor" red="0.36470588240000001" green="0.3921568627" blue="0.43137254899999999" alpha="1" colorSpace="calibratedRGB"/>
                                             <nil key="highlightedColor"/>
@@ -675,9 +675,443 @@
             </objects>
             <point key="canvasLocation" x="-252.17391304347828" y="95.380434782608702"/>
         </scene>
+        <!--Book Teacher DetailVC-->
+        <scene sceneID="KFf-R7-aXF">
+            <objects>
+                <viewController storyboardIdentifier="BookTeacherDetailVC" id="8iQ-9n-tIi" customClass="BookTeacherDetailVC" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="Hol-8b-Ix8">
+                        <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GdV-0j-3YV" customClass="WQNavigationBar">
+                                <rect key="frame" x="0.0" y="0.0" width="414" height="64"/>
+                                <subviews>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iCX-zQ-Hin">
+                                        <rect key="frame" x="0.0" y="20" width="414" height="44"/>
+                                        <subviews>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QdP-EO-sKU">
+                                                <rect key="frame" x="0.0" y="0.0" width="50" height="44"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="50" id="Nwy-17-67N"/>
+                                                    <constraint firstAttribute="height" constant="44" id="rTx-PQ-o4R"/>
+                                                </constraints>
+                                                <state key="normal" image="back_black_icon"/>
+                                                <connections>
+                                                    <action selector="backAction:" destination="8iQ-9n-tIi" eventType="touchUpInside" id="cHa-Ps-xYx"/>
+                                                </connections>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="leading" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cxA-WV-nzA">
+                                                <rect key="frame" x="50" y="0.0" width="35" height="44"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="35" id="CFn-cu-ReV"/>
+                                                    <constraint firstAttribute="height" constant="44" id="kYR-nx-wFU"/>
+                                                </constraints>
+                                                <state key="normal" image="menu_black_icon"/>
+                                                <connections>
+                                                    <action selector="menuAction:" destination="8iQ-9n-tIi" eventType="touchUpInside" id="yUP-J0-BcZ"/>
+                                                </connections>
+                                            </button>
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="名师详情" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V2T-14-HY6">
+                                                <rect key="frame" x="170.33333333333334" y="11.33333333333333" width="73.666666666666657" height="21.666666666666671"/>
+                                                <fontDescription key="fontDescription" type="system" pointSize="18"/>
+                                                <color key="textColor" red="0.039215686274509803" green="0.039215686274509803" blue="0.039215686274509803" alpha="1" colorSpace="calibratedRGB"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                        </subviews>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstItem="cxA-WV-nzA" firstAttribute="top" secondItem="QdP-EO-sKU" secondAttribute="top" id="2dS-kw-iCg"/>
+                                            <constraint firstItem="QdP-EO-sKU" firstAttribute="leading" secondItem="iCX-zQ-Hin" secondAttribute="leading" id="5Bd-Hj-dqI"/>
+                                            <constraint firstAttribute="height" constant="44" id="FNv-wE-gSm"/>
+                                            <constraint firstItem="V2T-14-HY6" firstAttribute="centerX" secondItem="iCX-zQ-Hin" secondAttribute="centerX" id="I0O-WJ-7n9"/>
+                                            <constraint firstItem="cxA-WV-nzA" firstAttribute="bottom" secondItem="QdP-EO-sKU" secondAttribute="bottom" id="I5P-CY-4Ia"/>
+                                            <constraint firstAttribute="bottom" secondItem="QdP-EO-sKU" secondAttribute="bottom" id="QqB-RK-p2y"/>
+                                            <constraint firstItem="V2T-14-HY6" firstAttribute="centerY" secondItem="iCX-zQ-Hin" secondAttribute="centerY" id="cg1-sQ-azx"/>
+                                            <constraint firstItem="cxA-WV-nzA" firstAttribute="leading" secondItem="QdP-EO-sKU" secondAttribute="trailing" id="it8-Wt-o4y"/>
+                                        </constraints>
+                                    </view>
+                                </subviews>
+                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstItem="iCX-zQ-Hin" firstAttribute="trailing" secondItem="nhs-mN-4Ir" secondAttribute="trailing" id="0LN-Gw-4jm"/>
+                                    <constraint firstItem="iCX-zQ-Hin" firstAttribute="leading" secondItem="nhs-mN-4Ir" secondAttribute="leading" id="Bei-TO-CDh"/>
+                                    <constraint firstAttribute="height" constant="64" id="KOx-D4-EGo"/>
+                                    <constraint firstItem="nhs-mN-4Ir" firstAttribute="bottom" secondItem="iCX-zQ-Hin" secondAttribute="bottom" id="Lv3-D9-gcD"/>
+                                </constraints>
+                                <viewLayoutGuide key="safeArea" id="nhs-mN-4Ir"/>
+                                <connections>
+                                    <outlet property="height" destination="KOx-D4-EGo" id="k2p-6G-IS9"/>
+                                </connections>
+                            </view>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="wIA-Q2-9p0">
+                                <rect key="frame" x="0.0" y="64" width="414" height="614"/>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                            </tableView>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="REM-Od-qjm">
+                                <rect key="frame" x="0.0" y="678" width="414" height="58"/>
+                                <subviews>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZMI-iP-LS6">
+                                        <rect key="frame" x="0.0" y="0.0" width="414" height="0.66666666666666663"/>
+                                        <color key="backgroundColor" red="0.8980392157" green="0.8980392157" blue="0.8980392157" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="0.5" id="OSZ-3B-e6L"/>
+                                            <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="0.5" id="eeF-bP-ZrQ"/>
+                                        </constraints>
+                                    </view>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bIM-H0-YZR">
+                                        <rect key="frame" x="20" y="8" width="177" height="42"/>
+                                        <subviews>
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="说点什么..." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GUk-Jz-UGT">
+                                                <rect key="frame" x="10" y="14" width="60" height="14.333333333333336"/>
+                                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="l5s-s6-b5h">
+                                                <rect key="frame" x="140.66666666666666" y="5" width="0.33333333333334281" height="32"/>
+                                                <color key="backgroundColor" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="calibratedRGB"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="0.5" id="bEL-Dn-ApS"/>
+                                                </constraints>
+                                            </view>
+                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8AY-Yn-wL6">
+                                                <rect key="frame" x="141" y="5" width="31" height="32"/>
+                                                <subviews>
+                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="评论" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LGI-QV-IF3">
+                                                        <rect key="frame" x="0.0" y="0.0" width="31" height="32"/>
+                                                        <fontDescription key="fontDescription" type="system" pointSize="8"/>
+                                                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                                        <nil key="highlightedColor"/>
+                                                    </label>
+                                                </subviews>
+                                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                <constraints>
+                                                    <constraint firstItem="LGI-QV-IF3" firstAttribute="top" secondItem="8AY-Yn-wL6" secondAttribute="top" id="6f7-0D-sH9"/>
+                                                    <constraint firstAttribute="width" constant="31" id="FQK-qV-zIa"/>
+                                                    <constraint firstAttribute="bottom" secondItem="LGI-QV-IF3" secondAttribute="bottom" id="LdM-oi-Wo0"/>
+                                                    <constraint firstItem="LGI-QV-IF3" firstAttribute="leading" secondItem="8AY-Yn-wL6" secondAttribute="leading" id="fNg-BN-JkZ"/>
+                                                    <constraint firstAttribute="trailing" secondItem="LGI-QV-IF3" secondAttribute="trailing" id="qkG-H4-Uzk"/>
+                                                </constraints>
+                                            </view>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8Vk-hT-eLl">
+                                                <rect key="frame" x="0.0" y="0.0" width="141" height="42"/>
+                                                <color key="tintColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                <state key="normal">
+                                                    <color key="titleColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                </state>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O1g-lD-nvs">
+                                                <rect key="frame" x="141" y="0.0" width="36" height="42"/>
+                                                <color key="tintColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                <state key="normal">
+                                                    <color key="titleColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                </state>
+                                            </button>
+                                        </subviews>
+                                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                                        <constraints>
+                                            <constraint firstAttribute="trailing" secondItem="8AY-Yn-wL6" secondAttribute="trailing" constant="5" id="3t4-J3-DIb"/>
+                                            <constraint firstItem="GUk-Jz-UGT" firstAttribute="leading" secondItem="bIM-H0-YZR" secondAttribute="leading" constant="10" id="BJX-Ou-NWW"/>
+                                            <constraint firstItem="l5s-s6-b5h" firstAttribute="top" secondItem="bIM-H0-YZR" secondAttribute="top" constant="5" id="BXo-dr-oWP"/>
+                                            <constraint firstItem="GUk-Jz-UGT" firstAttribute="centerY" secondItem="bIM-H0-YZR" secondAttribute="centerY" id="MqS-rb-GSR"/>
+                                            <constraint firstItem="8AY-Yn-wL6" firstAttribute="leading" secondItem="l5s-s6-b5h" secondAttribute="trailing" id="Q1L-PE-1zO"/>
+                                            <constraint firstItem="8AY-Yn-wL6" firstAttribute="top" secondItem="bIM-H0-YZR" secondAttribute="top" constant="5" id="RkP-ov-8iq"/>
+                                            <constraint firstAttribute="trailing" secondItem="O1g-lD-nvs" secondAttribute="trailing" id="WOV-Ak-QaB"/>
+                                            <constraint firstItem="8Vk-hT-eLl" firstAttribute="leading" secondItem="bIM-H0-YZR" secondAttribute="leading" id="Yiy-N1-jSr"/>
+                                            <constraint firstItem="O1g-lD-nvs" firstAttribute="top" secondItem="bIM-H0-YZR" secondAttribute="top" id="f8m-zn-n8Q"/>
+                                            <constraint firstAttribute="bottom" secondItem="l5s-s6-b5h" secondAttribute="bottom" constant="5" id="fDV-eU-WyO"/>
+                                            <constraint firstItem="O1g-lD-nvs" firstAttribute="leading" secondItem="l5s-s6-b5h" secondAttribute="trailing" id="g4t-qJ-Ubi"/>
+                                            <constraint firstItem="l5s-s6-b5h" firstAttribute="trailing" secondItem="8Vk-hT-eLl" secondAttribute="trailing" id="nX2-SP-WD0"/>
+                                            <constraint firstAttribute="bottom" secondItem="8AY-Yn-wL6" secondAttribute="bottom" constant="5" id="qgJ-XI-ytt"/>
+                                            <constraint firstAttribute="bottom" secondItem="8Vk-hT-eLl" secondAttribute="bottom" id="r0u-xg-Qjg"/>
+                                            <constraint firstItem="8Vk-hT-eLl" firstAttribute="top" secondItem="bIM-H0-YZR" secondAttribute="top" id="vLO-ZJ-uT9"/>
+                                            <constraint firstAttribute="bottom" secondItem="O1g-lD-nvs" secondAttribute="bottom" id="yW2-Pz-hEn"/>
+                                        </constraints>
+                                    </view>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1n2-C6-PQC" userLabel="First">
+                                        <rect key="frame" x="217" y="0.0" width="187" height="58"/>
+                                        <subviews>
+                                            <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" baselineRelativeArrangement="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sss-05-ion">
+                                                <rect key="frame" x="0.0" y="0.0" width="187" height="58"/>
+                                                <subviews>
+                                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Pbn-w0-J5s">
+                                                        <rect key="frame" x="0.0" y="0.0" width="62.333333333333336" height="58"/>
+                                                        <subviews>
+                                                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="zan_no" translatesAutoresizingMaskIntoConstraints="NO" id="w31-PA-3Oz">
+                                                                <rect key="frame" x="12.333333333333343" y="20" width="18" height="18"/>
+                                                                <constraints>
+                                                                    <constraint firstAttribute="width" constant="18" id="K59-Jt-lkB"/>
+                                                                    <constraint firstAttribute="width" secondItem="w31-PA-3Oz" secondAttribute="height" multiplier="1:1" id="LwL-0f-NET"/>
+                                                                </constraints>
+                                                            </imageView>
+                                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PCV-CS-cPQ">
+                                                                <rect key="frame" x="35.333333333333343" y="12" width="0.0" height="0.0"/>
+                                                                <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                                <nil key="highlightedColor"/>
+                                                            </label>
+                                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tgn-sm-AGM">
+                                                                <rect key="frame" x="0.0" y="0.0" width="62.333333333333336" height="58"/>
+                                                                <color key="tintColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                                <state key="normal">
+                                                                    <color key="titleColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                                </state>
+                                                            </button>
+                                                        </subviews>
+                                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        <constraints>
+                                                            <constraint firstItem="w31-PA-3Oz" firstAttribute="top" secondItem="Pbn-w0-J5s" secondAttribute="top" constant="20" id="2IK-vZ-h70"/>
+                                                            <constraint firstItem="tgn-sm-AGM" firstAttribute="leading" secondItem="Pbn-w0-J5s" secondAttribute="leading" id="Hx5-LA-Ggy"/>
+                                                            <constraint firstAttribute="bottom" secondItem="tgn-sm-AGM" secondAttribute="bottom" id="IAJ-JL-uXE"/>
+                                                            <constraint firstItem="w31-PA-3Oz" firstAttribute="centerX" secondItem="Pbn-w0-J5s" secondAttribute="centerX" constant="-10" id="Jto-14-L3l"/>
+                                                            <constraint firstItem="tgn-sm-AGM" firstAttribute="top" secondItem="Pbn-w0-J5s" secondAttribute="top" id="Wkh-cq-o02"/>
+                                                            <constraint firstItem="PCV-CS-cPQ" firstAttribute="top" secondItem="w31-PA-3Oz" secondAttribute="top" constant="-8" id="cV0-F6-seV"/>
+                                                            <constraint firstItem="PCV-CS-cPQ" firstAttribute="trailing" secondItem="w31-PA-3Oz" secondAttribute="trailing" constant="5" id="gdM-fL-VAN"/>
+                                                            <constraint firstAttribute="trailing" secondItem="tgn-sm-AGM" secondAttribute="trailing" id="hJI-Wt-EpL"/>
+                                                            <constraint firstItem="w31-PA-3Oz" firstAttribute="centerY" secondItem="Pbn-w0-J5s" secondAttribute="centerY" id="pKA-j6-JAn"/>
+                                                        </constraints>
+                                                    </view>
+                                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tE4-Nn-WSL">
+                                                        <rect key="frame" x="62.333333333333314" y="0.0" width="62.333333333333343" height="58"/>
+                                                        <subviews>
+                                                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="收藏五角星" translatesAutoresizingMaskIntoConstraints="NO" id="yTR-4O-kfx">
+                                                                <rect key="frame" x="11.666666666666686" y="20" width="19" height="18"/>
+                                                            </imageView>
+                                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IHr-c7-6zy">
+                                                                <rect key="frame" x="35.666666666666686" y="12" width="0.0" height="0.0"/>
+                                                                <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                                <nil key="highlightedColor"/>
+                                                            </label>
+                                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="g3t-g1-qmK">
+                                                                <rect key="frame" x="0.0" y="0.0" width="62.333333333333336" height="58"/>
+                                                                <color key="tintColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                                <state key="normal">
+                                                                    <color key="titleColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                                </state>
+                                                            </button>
+                                                        </subviews>
+                                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        <constraints>
+                                                            <constraint firstAttribute="trailing" secondItem="g3t-g1-qmK" secondAttribute="trailing" id="G8C-ui-gfR"/>
+                                                            <constraint firstItem="yTR-4O-kfx" firstAttribute="centerY" secondItem="tE4-Nn-WSL" secondAttribute="centerY" id="NS0-kD-eKo"/>
+                                                            <constraint firstItem="IHr-c7-6zy" firstAttribute="trailing" secondItem="yTR-4O-kfx" secondAttribute="trailing" constant="5" id="OiS-K9-fk8"/>
+                                                            <constraint firstItem="g3t-g1-qmK" firstAttribute="top" secondItem="tE4-Nn-WSL" secondAttribute="top" id="UIg-1T-buq"/>
+                                                            <constraint firstAttribute="bottom" secondItem="g3t-g1-qmK" secondAttribute="bottom" id="dgB-rq-6EY"/>
+                                                            <constraint firstItem="yTR-4O-kfx" firstAttribute="centerX" secondItem="tE4-Nn-WSL" secondAttribute="centerX" constant="-10" id="l0t-zd-O0i"/>
+                                                            <constraint firstItem="g3t-g1-qmK" firstAttribute="leading" secondItem="tE4-Nn-WSL" secondAttribute="leading" id="n7V-cf-aRG"/>
+                                                            <constraint firstItem="IHr-c7-6zy" firstAttribute="top" secondItem="yTR-4O-kfx" secondAttribute="top" constant="-8" id="nXO-H0-9Nd"/>
+                                                            <constraint firstItem="yTR-4O-kfx" firstAttribute="top" secondItem="tE4-Nn-WSL" secondAttribute="top" constant="20" id="zdL-wE-GHw"/>
+                                                        </constraints>
+                                                    </view>
+                                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZOR-Xi-dNd">
+                                                        <rect key="frame" x="124.66666666666667" y="0.0" width="62.333333333333329" height="58"/>
+                                                        <subviews>
+                                                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_share" translatesAutoresizingMaskIntoConstraints="NO" id="H3j-MH-NpX">
+                                                                <rect key="frame" x="11.666666666666629" y="20" width="19" height="18"/>
+                                                            </imageView>
+                                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EcD-ev-tI7">
+                                                                <rect key="frame" x="38.666666666666629" y="12" width="0.0" height="0.0"/>
+                                                                <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                                <nil key="highlightedColor"/>
+                                                            </label>
+                                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Oyi-59-pkD">
+                                                                <rect key="frame" x="0.0" y="0.0" width="62.333333333333336" height="58"/>
+                                                                <color key="tintColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                                <state key="normal">
+                                                                    <color key="titleColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                                </state>
+                                                            </button>
+                                                        </subviews>
+                                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        <constraints>
+                                                            <constraint firstItem="EcD-ev-tI7" firstAttribute="top" secondItem="H3j-MH-NpX" secondAttribute="top" constant="-8" id="GUS-uC-6VN"/>
+                                                            <constraint firstItem="EcD-ev-tI7" firstAttribute="trailing" secondItem="H3j-MH-NpX" secondAttribute="trailing" constant="8" id="HZX-ER-xx7"/>
+                                                            <constraint firstItem="H3j-MH-NpX" firstAttribute="centerX" secondItem="ZOR-Xi-dNd" secondAttribute="centerX" constant="-10" id="Qrk-rd-oj1"/>
+                                                            <constraint firstAttribute="bottom" secondItem="Oyi-59-pkD" secondAttribute="bottom" id="SPA-o3-opJ"/>
+                                                            <constraint firstItem="H3j-MH-NpX" firstAttribute="top" secondItem="ZOR-Xi-dNd" secondAttribute="top" constant="20" id="SpO-C0-i9c"/>
+                                                            <constraint firstItem="H3j-MH-NpX" firstAttribute="centerY" secondItem="ZOR-Xi-dNd" secondAttribute="centerY" id="XVz-bY-h7c"/>
+                                                            <constraint firstItem="Oyi-59-pkD" firstAttribute="top" secondItem="ZOR-Xi-dNd" secondAttribute="top" id="jib-Vk-MbC"/>
+                                                            <constraint firstItem="Oyi-59-pkD" firstAttribute="leading" secondItem="ZOR-Xi-dNd" secondAttribute="leading" id="ndx-je-yUd"/>
+                                                            <constraint firstAttribute="trailing" secondItem="Oyi-59-pkD" secondAttribute="trailing" id="xsC-dP-tYJ"/>
+                                                        </constraints>
+                                                    </view>
+                                                </subviews>
+                                            </stackView>
+                                        </subviews>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstItem="sss-05-ion" firstAttribute="leading" secondItem="1n2-C6-PQC" secondAttribute="leading" id="Gyj-kO-JkL"/>
+                                            <constraint firstAttribute="trailing" secondItem="sss-05-ion" secondAttribute="trailing" id="HfS-1t-0Q4"/>
+                                            <constraint firstAttribute="bottom" secondItem="sss-05-ion" secondAttribute="bottom" id="SmJ-29-3cD"/>
+                                            <constraint firstItem="sss-05-ion" firstAttribute="top" secondItem="1n2-C6-PQC" secondAttribute="top" id="lmo-jt-vKg"/>
+                                        </constraints>
+                                    </view>
+                                </subviews>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstAttribute="bottom" secondItem="1n2-C6-PQC" secondAttribute="bottom" id="387-Jf-Gke"/>
+                                    <constraint firstItem="bIM-H0-YZR" firstAttribute="leading" secondItem="REM-Od-qjm" secondAttribute="leading" constant="20" id="6AR-oH-CUd"/>
+                                    <constraint firstItem="bIM-H0-YZR" firstAttribute="width" secondItem="REM-Od-qjm" secondAttribute="width" multiplier="0.5" constant="-30" id="Di9-Mh-OLf"/>
+                                    <constraint firstItem="1n2-C6-PQC" firstAttribute="leading" secondItem="bIM-H0-YZR" secondAttribute="trailing" constant="20" id="DnS-C6-vwt"/>
+                                    <constraint firstAttribute="bottom" secondItem="bIM-H0-YZR" secondAttribute="bottom" constant="8" id="K1E-yQ-Kfs"/>
+                                    <constraint firstAttribute="trailing" secondItem="ZMI-iP-LS6" secondAttribute="trailing" id="V4X-dP-chs"/>
+                                    <constraint firstItem="ZMI-iP-LS6" firstAttribute="top" secondItem="REM-Od-qjm" secondAttribute="top" id="d5H-oh-jXb"/>
+                                    <constraint firstAttribute="height" constant="58" id="g3u-yt-i0M"/>
+                                    <constraint firstItem="bIM-H0-YZR" firstAttribute="top" secondItem="REM-Od-qjm" secondAttribute="top" constant="8" id="gTk-9X-CVJ"/>
+                                    <constraint firstItem="1n2-C6-PQC" firstAttribute="top" secondItem="REM-Od-qjm" secondAttribute="top" id="hMb-bt-wUC"/>
+                                    <constraint firstAttribute="trailing" secondItem="1n2-C6-PQC" secondAttribute="trailing" constant="10" id="r0j-BZ-jlx"/>
+                                    <constraint firstItem="ZMI-iP-LS6" firstAttribute="leading" secondItem="REM-Od-qjm" secondAttribute="leading" id="tvk-aT-lWc"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                        <constraints>
+                            <constraint firstItem="wIA-Q2-9p0" firstAttribute="leading" secondItem="kkE-2f-FQW" secondAttribute="leading" id="Akt-Pt-yKR"/>
+                            <constraint firstItem="kkE-2f-FQW" firstAttribute="trailing" secondItem="wIA-Q2-9p0" secondAttribute="trailing" id="BMd-gu-iJX"/>
+                            <constraint firstItem="REM-Od-qjm" firstAttribute="top" secondItem="wIA-Q2-9p0" secondAttribute="bottom" id="DY8-eY-p6X"/>
+                            <constraint firstItem="GdV-0j-3YV" firstAttribute="trailing" secondItem="kkE-2f-FQW" secondAttribute="trailing" id="Fut-SV-zkn"/>
+                            <constraint firstItem="GdV-0j-3YV" firstAttribute="leading" secondItem="kkE-2f-FQW" secondAttribute="leading" id="Glz-PX-sRt"/>
+                            <constraint firstItem="REM-Od-qjm" firstAttribute="bottom" secondItem="kkE-2f-FQW" secondAttribute="bottom" id="X43-t1-0y1"/>
+                            <constraint firstItem="REM-Od-qjm" firstAttribute="trailing" secondItem="kkE-2f-FQW" secondAttribute="trailing" id="gXk-2O-sqT"/>
+                            <constraint firstItem="REM-Od-qjm" firstAttribute="leading" secondItem="kkE-2f-FQW" secondAttribute="leading" id="kDh-TE-Zca"/>
+                            <constraint firstItem="GdV-0j-3YV" firstAttribute="top" secondItem="Hol-8b-Ix8" secondAttribute="top" id="ldj-de-XiC"/>
+                            <constraint firstItem="wIA-Q2-9p0" firstAttribute="top" secondItem="GdV-0j-3YV" secondAttribute="bottom" id="zam-yZ-asz"/>
+                        </constraints>
+                        <viewLayoutGuide key="safeArea" id="kkE-2f-FQW"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="EDZ-fF-hAR"/>
+                    <connections>
+                        <outlet property="BottomView" destination="REM-Od-qjm" id="h0I-zm-TjN"/>
+                        <outlet property="TalkView" destination="bIM-H0-YZR" id="yQI-Vp-Oks"/>
+                        <outlet property="collectButton" destination="g3t-g1-qmK" id="vF1-55-mJT"/>
+                        <outlet property="collectImgV" destination="yTR-4O-kfx" id="sUD-wX-UxB"/>
+                        <outlet property="collectL" destination="IHr-c7-6zy" id="gSM-cs-pdR"/>
+                        <outlet property="commentButton" destination="8Vk-hT-eLl" id="zqm-1A-fak"/>
+                        <outlet property="commentCountL" destination="LGI-QV-IF3" id="n8X-CI-H2i"/>
+                        <outlet property="commentScrollBtn" destination="O1g-lD-nvs" id="kDR-V3-zg8"/>
+                        <outlet property="shareButton" destination="Oyi-59-pkD" id="7WN-TY-s9v"/>
+                        <outlet property="shareCountL" destination="EcD-ev-tI7" id="Z5d-hK-oF8"/>
+                        <outlet property="shareImgV" destination="H3j-MH-NpX" id="EpB-WL-usc"/>
+                        <outlet property="tableView" destination="wIA-Q2-9p0" id="Awk-To-qN0"/>
+                        <outlet property="zanButton" destination="tgn-sm-AGM" id="lNc-cZ-dL2"/>
+                        <outlet property="zanCountL" destination="PCV-CS-cPQ" id="2zP-lM-E9w"/>
+                        <outlet property="zanImgV" destination="w31-PA-3Oz" id="Iza-xz-tuj"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Ukv-mg-HR5" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="505.79710144927537" y="94.565217391304358"/>
+        </scene>
+        <!--Book Custom ListVC-->
+        <scene sceneID="gYs-aj-3EO">
+            <objects>
+                <viewController storyboardIdentifier="BookCustomListVC" id="i4d-ff-fX9" customClass="BookCustomListVC" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="4T8-fZ-nha">
+                        <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EgR-1f-VfT" customClass="WQNavigationBar">
+                                <rect key="frame" x="0.0" y="0.0" width="414" height="64"/>
+                                <subviews>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="d6G-vl-Egn">
+                                        <rect key="frame" x="0.0" y="20" width="414" height="44"/>
+                                        <subviews>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ze0-La-4XQ">
+                                                <rect key="frame" x="0.0" y="0.0" width="50" height="44"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="50" id="Kq0-KN-wgY"/>
+                                                    <constraint firstAttribute="height" constant="44" id="h2b-dk-x2D"/>
+                                                </constraints>
+                                                <state key="normal" image="back_black_icon"/>
+                                                <connections>
+                                                    <action selector="backAction:" destination="i4d-ff-fX9" eventType="touchUpInside" id="Z9s-dE-WhW"/>
+                                                </connections>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="leading" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Zah-s3-ker">
+                                                <rect key="frame" x="50" y="0.0" width="35" height="44"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="44" id="ok2-al-vvc"/>
+                                                    <constraint firstAttribute="width" constant="35" id="wGC-q0-w3i"/>
+                                                </constraints>
+                                                <state key="normal" image="menu_black_icon"/>
+                                                <connections>
+                                                    <action selector="menuAction:" destination="i4d-ff-fX9" eventType="touchUpInside" id="Ox9-JW-WCw"/>
+                                                </connections>
+                                            </button>
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S1p-jo-WEs">
+                                                <rect key="frame" x="207" y="22" width="0.0" height="0.0"/>
+                                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                                <color key="textColor" red="0.039215686270000001" green="0.039215686270000001" blue="0.039215686270000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Yv5-hH-rhH">
+                                                <rect key="frame" x="0.0" y="43.666666666666664" width="414" height="0.3333333333333357"/>
+                                                <color key="backgroundColor" red="0.8980392157" green="0.8980392157" blue="0.8980392157" alpha="1" colorSpace="calibratedRGB"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="0.5" id="dCW-OQ-Fc7"/>
+                                                </constraints>
+                                            </view>
+                                        </subviews>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstAttribute="bottom" secondItem="Ze0-La-4XQ" secondAttribute="bottom" id="1aO-D7-BwR"/>
+                                            <constraint firstAttribute="trailing" secondItem="Yv5-hH-rhH" secondAttribute="trailing" id="SVB-xc-Va9"/>
+                                            <constraint firstItem="S1p-jo-WEs" firstAttribute="centerY" secondItem="Ze0-La-4XQ" secondAttribute="centerY" id="Zl2-X7-KXd"/>
+                                            <constraint firstItem="Ze0-La-4XQ" firstAttribute="leading" secondItem="d6G-vl-Egn" secondAttribute="leading" id="fYr-sg-2Sl"/>
+                                            <constraint firstItem="Yv5-hH-rhH" firstAttribute="leading" secondItem="d6G-vl-Egn" secondAttribute="leading" id="fdg-6x-v0L"/>
+                                            <constraint firstItem="Zah-s3-ker" firstAttribute="bottom" secondItem="Ze0-La-4XQ" secondAttribute="bottom" id="h7C-UI-Yhz"/>
+                                            <constraint firstItem="S1p-jo-WEs" firstAttribute="centerX" secondItem="d6G-vl-Egn" secondAttribute="centerX" id="iRI-kw-moY"/>
+                                            <constraint firstItem="Zah-s3-ker" firstAttribute="leading" secondItem="Ze0-La-4XQ" secondAttribute="trailing" id="inb-fo-356"/>
+                                            <constraint firstAttribute="bottom" secondItem="Yv5-hH-rhH" secondAttribute="bottom" id="lau-AG-BeV"/>
+                                            <constraint firstAttribute="height" constant="44" id="nCs-yh-G1q"/>
+                                            <constraint firstItem="Zah-s3-ker" firstAttribute="top" secondItem="Ze0-La-4XQ" secondAttribute="top" id="qW7-Ij-hxV"/>
+                                        </constraints>
+                                    </view>
+                                </subviews>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <constraints>
+                                    <constraint firstItem="d6G-vl-Egn" firstAttribute="leading" secondItem="0su-th-084" secondAttribute="leading" id="Gyk-z6-AWL"/>
+                                    <constraint firstItem="d6G-vl-Egn" firstAttribute="trailing" secondItem="0su-th-084" secondAttribute="trailing" id="PcH-aK-HnI"/>
+                                    <constraint firstItem="0su-th-084" firstAttribute="bottom" secondItem="d6G-vl-Egn" secondAttribute="bottom" id="m3w-uT-OpN"/>
+                                    <constraint firstAttribute="height" constant="64" id="pwF-Yw-RgV"/>
+                                </constraints>
+                                <viewLayoutGuide key="safeArea" id="0su-th-084"/>
+                                <connections>
+                                    <outlet property="height" destination="pwF-Yw-RgV" id="WmD-qS-FTh"/>
+                                </connections>
+                            </view>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="5Dj-4S-fYh">
+                                <rect key="frame" x="0.0" y="64" width="414" height="672"/>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                        <constraints>
+                            <constraint firstItem="5Dj-4S-fYh" firstAttribute="leading" secondItem="fTj-f4-TTG" secondAttribute="leading" id="04P-JP-5qi"/>
+                            <constraint firstItem="fTj-f4-TTG" firstAttribute="bottom" secondItem="5Dj-4S-fYh" secondAttribute="bottom" id="GDL-q2-PPF"/>
+                            <constraint firstItem="EgR-1f-VfT" firstAttribute="top" secondItem="4T8-fZ-nha" secondAttribute="top" id="V3S-fe-G8z"/>
+                            <constraint firstItem="EgR-1f-VfT" firstAttribute="leading" secondItem="fTj-f4-TTG" secondAttribute="leading" id="feI-rh-TA8"/>
+                            <constraint firstItem="5Dj-4S-fYh" firstAttribute="top" secondItem="EgR-1f-VfT" secondAttribute="bottom" id="lbV-sP-wDh"/>
+                            <constraint firstItem="fTj-f4-TTG" firstAttribute="trailing" secondItem="5Dj-4S-fYh" secondAttribute="trailing" id="oab-if-XNk"/>
+                            <constraint firstItem="EgR-1f-VfT" firstAttribute="trailing" secondItem="fTj-f4-TTG" secondAttribute="trailing" id="xFz-Va-2ec"/>
+                        </constraints>
+                        <viewLayoutGuide key="safeArea" id="fTj-f4-TTG"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="bbL-3m-WuI"/>
+                    <connections>
+                        <outlet property="tableView" destination="5Dj-4S-fYh" id="Qwq-k9-KBM"/>
+                        <outlet property="titleL" destination="S1p-jo-WEs" id="0NW-Rz-XYZ"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="v28-ZL-Dqb" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1235" y="95"/>
+        </scene>
     </scenes>
     <resources>
-        <image name="Book_Search_Icon" width="17" height="16"/>
+        <image name="Book_Search_Icon" width="16" height="15"/>
         <image name="Book_listen_downNext_Icon" width="25" height="25"/>
         <image name="Book_listen_huatong_Icon" width="25" height="25"/>
         <image name="Book_listen_leftTime_Icon" width="25" height="25"/>

+ 1 - 1
smartRhino/Project/VCModel/Home/VC/BookStore/BookStore.storyboard

@@ -2852,7 +2852,7 @@
         <image name="Book_Artice_listIcon" width="25" height="25"/>
         <image name="Book_Artice_listenIcon" width="17.666666030883789" height="17"/>
         <image name="Book_Artice_shareIcon" width="19" height="17"/>
-        <image name="Book_Search_Icon" width="17" height="16"/>
+        <image name="Book_Search_Icon" width="16" height="15"/>
         <image name="Book_Share_Icon" width="20" height="18"/>
         <image name="Book_shaisuan_right" width="17" height="15.666666984558105"/>
         <image name="back_black_icon" width="11" height="20"/>

+ 4 - 2
smartRhino/Project/VCModel/Home/VC/BookStore/Model/BookListenModel.h

@@ -15,11 +15,13 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,copy) NSString *        AddDate;
 @property (nonatomic,copy) NSString *        Author;
 @property (nonatomic,copy) NSString *        ImageUrls;
+@property (nonatomic,copy) NSString *        ImageUrl;
 @property (nonatomic,copy) NSString *        Blocks;
 @property (nonatomic,copy) NSString *        Press;
 @property (nonatomic,copy) NSString *        PublishTime;
 @property (nonatomic,copy) NSString *        Source;
 @property (nonatomic,copy) NSString *        Summary;
+@property (nonatomic,copy) NSString *        Name;
 @property (nonatomic,copy) NSString *        Title;
 
 @property (nonatomic,assign) NSInteger       CollectCount;
@@ -42,8 +44,8 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,assign) BOOL            IsRecommend;
 @property (nonatomic,assign) BOOL            IsRetransmission;
 
-@property (nonatomic,strong) NSArray  <BookListenSubModel *> * MediaLibraryResults;
-@property (nonatomic,strong) NSDictionary                    * PraisePagedList;
+@property (nonatomic,strong) NSArray         * MediaLibraryResults;
+@property (nonatomic,strong) NSDictionary    * PraisePagedList;
 
 @end
 

+ 2 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/Model/BookListenSubModel.h

@@ -14,9 +14,11 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,copy) NSString *  Duration;
 @property (nonatomic,copy) NSString *  FileUrl;
 @property (nonatomic,copy) NSString *  Name;
+@property (nonatomic,copy) NSString *  Author;
 @property (nonatomic,copy) NSString *  SectionName;
 @property (nonatomic,copy) NSString *  VideoImage;
 @property (nonatomic,assign) NSInteger  MediaId;
+@property (nonatomic,assign) NSInteger  Id;
 @property (nonatomic,assign) NSInteger  MediaType;
 @property (nonatomic,assign) NSInteger  SectionId;
 @property (nonatomic,assign) NSInteger  Sort;

+ 20 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookCustomListVC.h

@@ -0,0 +1,20 @@
+//
+//  BookCustomListVC.h
+//  smartRhino
+//
+//  Created by niuzhen on 2020/5/16.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface BookCustomListVC : BaseViewController
+@property (nonatomic, copy) NSString         * Author;
+@property (nonatomic, assign) MediaType        type;
+@property (nonatomic, assign) NSInteger        Id;
++(BookCustomListVC *)initBookCustomListVC;
+@end
+
+NS_ASSUME_NONNULL_END

+ 164 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookCustomListVC.m

@@ -0,0 +1,164 @@
+//
+//  BookCustomListVC.m
+//  smartRhino
+//
+//  Created by niuzhen on 2020/5/16.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "BookCustomListVC.h"
+#import "HomeWeiCousreCell.h"
+#import "BookWCDetailVC.h"
+#import "BookHotSearchCell.h"
+#import "BookWCDetailVC.h"
+#import "BookListDetailVC.h"
+
+@interface BookCustomListVC ()<UITableViewDelegate,UITableViewDataSource>
+@property (weak, nonatomic) IBOutlet UITableView *tableView;
+@property (weak, nonatomic) IBOutlet UILabel *titleL;
+@property (strong, nonatomic) NSMutableArray *dataArray;
+@property (nonatomic,assign) NSInteger   currentPage;
+@property (nonatomic,assign) NSInteger   Total;
+@end
+
+@implementation BookCustomListVC
++(BookCustomListVC *)initBookCustomListVC{
+    BookCustomListVC *controller = [StoryboardManager.shared.BookDetail instantiateViewControllerWithIdentifier:@"BookCustomListVC"];
+    return controller;
+}
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.fd_prefersNavigationBarHidden = YES;
+    self.tableView.delegate = self;
+    self.tableView.dataSource = self;
+    switch (self.type) {
+        case MediaBookType:
+        {
+            self.titleL.text = [NSString stringWithFormat:@"%@的书籍",self.Author];
+        }
+            break;
+        case MediaVideoType:
+        {
+            self.titleL.text = [NSString stringWithFormat:@"%@的课程",self.Author];
+        }
+            break;
+        default:
+            break;
+    }
+    [self headRefresh];
+    WS(weakSelf);
+    self.tableView.mj_footer = [MJRefreshBackStateFooter footerWithRefreshingBlock:^{
+        [weakSelf footerRefresh];
+    }];
+}
+- (void)headRefresh
+{
+    self.currentPage = 1;
+    self.Total = 0;
+    [self.dataArray removeAllObjects];
+    [self getData];
+}
+- (void)footerRefresh
+{
+    self.currentPage += 1;
+    if (self.dataArray.count == self.Total) {
+        self.tableView.mj_footer.hidden = YES;
+        [self.tableView.mj_footer resetNoMoreData];
+        return;
+    }
+    [self getData];
+}
+- (void)getData
+{
+    NSDictionary * CDict = @{@"teacherId":@(self.Id),
+                             @"typeValue":@(self.type),
+                             @"page":@(self.currentPage),
+                             @"perPage":@(20)
+    };
+    WS(weakSelf);
+    [[HttpManager sharedHttpManager] GETUrl:Host(API_APP_Media_Teacher) parameters:CDict responseStyle:JOSN success:^(id  _Nonnull responseObject) {
+        NSLog(@"%@",responseObject);
+        if ([responseObject isKindOfClass:[NSDictionary class]]) {
+            for (NSDictionary * dataDict in responseObject[@"Items"]) {
+                BookRecommendModel * remodel = [BookRecommendModel modelWithDictionary:dataDict];
+                [weakSelf.dataArray addObject:remodel];
+            }
+        }
+        weakSelf.Total = [responseObject[@"Total"] integerValue];
+        [weakSelf.tableView.mj_footer endRefreshing];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [weakSelf.tableView reloadData];
+        });
+    } failure:^(NSError * _Nonnull error) {
+
+    }];
+}
+- (NSMutableArray *)dataArray
+{
+    if (!_dataArray) {
+        _dataArray = [NSMutableArray array];
+    }
+    return _dataArray;
+}
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+    return self.dataArray.count;
+}
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    return UITableViewAutomaticDimension;
+}
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    BookRecommendModel * model = [self.dataArray objectAtIndex:indexPath.row];
+    switch (model.MediaType) {
+        case MediaBookType:
+        {
+            BookHotSearchCell * cell = [BookHotSearchCell configCell:tableView indexPath:indexPath];
+            [cell setDataWithRecommendModel:model];
+            return cell;
+        }
+            break;
+        case MediaVideoType:
+        {
+            HomeWeiCousreCell * cell = [HomeWeiCousreCell configCell4:tableView indexPath:indexPath];
+            [cell setDataWithRecommendModel:model];
+            return cell;
+        }
+            break;
+        default:{
+            BookHotSearchCell * cell = [BookHotSearchCell configCell:tableView indexPath:indexPath];
+            [cell setDataWithRecommendModel:model];
+            return cell;
+        }
+            break;
+    }
+}
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    [tableView deselectRowAtIndexPath:indexPath animated:YES];
+    BookRecommendModel * model = [self.dataArray objectAtIndex:indexPath.row];
+    switch (model.MediaType) {
+        case MediaBookType:
+        {
+            BookListDetailVC * vc = [BookListDetailVC initBookListDetailVC];
+            vc.Id = model.Id;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+        case MediaVideoType:
+        {
+            BookWCDetailVC * vc = [BookWCDetailVC initBookWCDetailVC];
+            vc.Id = model.Id;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+        default:{
+            BookListDetailVC * vc = [BookListDetailVC initBookListDetailVC];
+            vc.Id = model.Id;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+    }
+}
+@end

+ 6 - 2
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookListDetailVC.m

@@ -16,6 +16,7 @@
 #import "BookMeidaModel.h"
 #import "BookListenVC.h"
 #import "BookListModel.h"
+#import "BookReadVC.h"
 
 @interface BookListDetailVC ()<UITableViewDelegate,UITableViewDataSource>
 @property (weak, nonatomic) IBOutlet UIView *navBar;
@@ -473,7 +474,7 @@
 }
 - (void)clickBtnAction:(UIButton *)sender
 {
-    switch (self.selectIndex) {
+    switch (sender.tag) {
         case 0:
         {
             BookListenVC * vc = [BookListenVC initBookListenVC];
@@ -484,7 +485,10 @@
             break;
         case 1:
         {
-            
+            BookReadVC * vc = [[BookReadVC alloc] init];
+            vc.dataArray = self.listArray;
+            vc.Id = self.Id;
+            [self.navigationController pushViewController:vc animated:YES];
         }
             break;
         default:

+ 41 - 29
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookListenVC.m

@@ -1449,42 +1449,49 @@ NSString* SN = @"7aec3327-527082a8-0795-00bc-28f63-00";
 
 - (void)returnToWechatSession
 {
-    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatSession title:self.model.Title desc:self.model.Summary url:[self returnUrl] img:[self returnImage]];
+    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatSession title:self.model.Title desc:self.model.Author url:[self returnUrl] img:[self returnImage]];
 }
 - (void)returnToWechatTimeLine
 {
-    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatTimeLine title:self.model.Title desc:self.model.Summary url:[self returnUrl] img:[self returnImage]];
+    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatTimeLine title:self.model.Title desc:self.model.Author url:[self returnUrl] img:[self returnImage]];
 }
 - (void)returnToSina
 {
-    [self shareWebPageToPlatformType:UMSocialPlatformType_Sina title:self.model.Title desc:self.model.Summary url:[self returnUrl] img:[self returnImage]];
+    [self shareWebPageToPlatformType:UMSocialPlatformType_Sina title:self.model.Title desc:self.model.Author url:[self returnUrl] img:[self returnImage]];
 }
 - (void)returnToQQ
 {
-    [self shareWebPageToPlatformType:UMSocialPlatformType_QQ title:self.model.Title desc:self.model.Summary url:[self returnUrl] img:[self returnImage]];
+    [self shareWebPageToPlatformType:UMSocialPlatformType_QQ title:self.model.Title desc:self.model.Author url:[self returnUrl] img:[self returnImage]];
 }
 
-- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType title:(NSString *)title desc:(NSString *)desc url:(NSString *)url img:(UIImage *)image
+- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType title:(NSString *)title desc:(NSString *)desc url:(NSString *)url img:(NSString *)imageName
 {
-    //创建分享消息对象
-    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
-    
-    messageObject.title = title;
-    //创建网页内容对象
-    UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:desc thumImage:image];
-    //设置网页地址
-    shareObject.webpageUrl = url;
-    
-    //分享消息对象设置分享内容对象
-    messageObject.shareObject = shareObject;
-    
-    //调用分享接口
-    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
-        if (error) {
-            NSLog(@"************Share fail with error %@*********",error);
-        }else{
-            NSLog(@"response data is %@",data);
-        }
+    UIImageView * imgV = [UIImageView new];
+    SHOWLOADING
+    [imgV sd_setImageWithURL:[NSURL URLWithString:imageName] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+        REMOVESHOW
+        dispatch_async(dispatch_get_main_queue(), ^{
+
+            UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
+            
+            messageObject.title = title;
+            //创建网页内容对象
+            UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:desc thumImage:error ? IMG(@"default_audio") : image];
+            //设置网页地址
+            shareObject.webpageUrl = url;
+            
+            //分享消息对象设置分享内容对象
+            messageObject.shareObject = shareObject;
+            
+            //调用分享接口
+            [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
+                if (error) {
+                    NSLog(@"************Share fail with error %@*********",error);
+                }else{
+                    NSLog(@"response data is %@",data);
+                }
+            }];
+        });
     }];
 }
 - (NSString *)returnUrl
@@ -1492,12 +1499,9 @@ NSString* SN = @"7aec3327-527082a8-0795-00bc-28f63-00";
     NSString * url = [NSString stringWithFormat:@"%@%ld",ShareHost(@"mobile/topicDetailsWx?"),(long)self.model.Id];
     return url;
 }
-- (UIImage *)returnImage
+- (NSString *)returnImage
 {
-    BookListenSubModel * model = self.model.MediaLibraryResults.firstObject;
-    UIImageView * imgV = [UIImageView new];
-    [imgV sd_setImageWithURL:[NSURL URLWithString:model.VideoImage]];
-    return imgV.image;
+    return self.model.ImageUrls;
 }
 
 - (void)returnToMessage
@@ -1508,6 +1512,8 @@ NSString* SN = @"7aec3327-527082a8-0795-00bc-28f63-00";
     model.SoureTypeId = CollectModel_StoreSound;
     model.Title = self.model.Title;
     model.Author = self.model.Author;
+    model.MinUrl = self.model.ImageUrls;
+    model.Url = self.model.ImageUrls;
     vc.sendModel = model;
     vc.isReturn = YES;
     [self.navigationController pushViewController:vc animated:YES];
@@ -1521,6 +1527,8 @@ NSString* SN = @"7aec3327-527082a8-0795-00bc-28f63-00";
     model.SoureTypeId = CollectModel_StoreSound;
     model.Title = self.model.Title;
     model.Author = self.model.Author;
+    model.MinUrl = self.model.ImageUrls;
+    model.Url = self.model.ImageUrls;
     vc.sendModel = model;
     vc.isReturn = YES;
     [self.navigationController pushViewController:vc animated:YES];
@@ -1538,6 +1546,8 @@ NSString* SN = @"7aec3327-527082a8-0795-00bc-28f63-00";
     model.SoureTypeId = CollectModel_StoreSound;
     model.Title = self.model.Title;
     model.Author = self.model.Author;
+    model.MinUrl = self.model.ImageUrls;
+    model.Url = self.model.ImageUrls;
     vc.type = CollectModel_NoteBook;
     vc.sendModel = model;
     vc.isReturn = YES;
@@ -1552,6 +1562,8 @@ NSString* SN = @"7aec3327-527082a8-0795-00bc-28f63-00";
     model.SoureTypeId = CollectModel_StoreSound;
     model.Title = self.model.Title;
     model.Author = self.model.Author;
+    model.MinUrl = self.model.ImageUrls;
+    model.Url = self.model.ImageUrls;
     vc.type = CollectModel_NewTopic;
     vc.sendModel = model;
     vc.isReturn = YES;

+ 1 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookMingDetailVC.m

@@ -102,6 +102,7 @@
         };
         weakSelf.drawerView.frame = CGRectMake(0,0, SCREEN_WIDTH, SCREEN_HEIGHT);// - kNavigationHeight
     }];
+    
     [self getHeadData];
 }
 - (void)addHeadView

+ 1 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookPlayListVC.h

@@ -11,6 +11,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 @interface BookPlayListVC : BaseViewController
+@property (nonatomic, copy) NSString         * Author;
 @property (nonatomic, strong) NSMutableArray * dataArray;
 +(BookPlayListVC *)initBookPlayListVC;
 @end

+ 11 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookPlayListVC.m

@@ -8,6 +8,7 @@
 
 #import "BookPlayListVC.h"
 #import "HomeWeiCousreCell.h"
+#import "BookWCDetailVC.h"
 
 @interface BookPlayListVC ()<UITableViewDelegate,UITableViewDataSource>
 @property (weak, nonatomic) IBOutlet UIButton *buyBtn;
@@ -37,8 +38,18 @@
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
     BookListenSubModel * model = [self.dataArray objectAtIndex:indexPath.row];
+    model.Author = self.Author;
     HomeWeiCousreCell * cell = [HomeWeiCousreCell configCell0:tableView indexPath:indexPath];
     [cell setDataWithSubModel:model];
     return cell;
 }
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    [tableView deselectRowAtIndexPath:indexPath animated:YES];
+    BookListenSubModel * model = [self.dataArray objectAtIndex:indexPath.row];
+    BookWCDetailVC * vc = [BookWCDetailVC initBookWCDetailVC];
+    vc.Id = model.MediaId;
+    vc.selectId = model.Id;
+    [self.navigationController pushViewController:vc animated:YES];
+}
 @end

+ 3 - 1
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookRead/viewcontroller/BookReadVC.h

@@ -11,7 +11,9 @@
 NS_ASSUME_NONNULL_BEGIN
 
 @interface BookReadVC : BaseViewController
-@property (nonatomic,copy) NSString *filePath;
+@property (nonatomic,copy) NSString            *filePath;
+@property (nonatomic,strong) NSMutableArray    *dataArray;
+@property (nonatomic,assign) NSInteger          Id;
 @end
 
 NS_ASSUME_NONNULL_END

+ 59 - 19
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookRead/viewcontroller/BookReadVC.m

@@ -22,6 +22,7 @@
 #import "BookPlayAlert.h"
 #import "BookCardPayAlert.h"
 #import "SSScrollViewController.h"
+#import "BookListModel.h"
 
 @interface BookReadVC () <UIPageViewControllerDelegate, UIPageViewControllerDataSource,DCPageBottomViewDelegate,DCPageTopViewDelegate,DCBookListViewDelgate,UIGestureRecognizerDelegate,SSScrollViewControllerDelegate>
 {
@@ -40,7 +41,7 @@
 @property (nonatomic,strong) BookReadSearchAlert *searchAlert;
 @property (nonatomic,strong) BookReadFontAlert   *fontAlert;
 @property (nonatomic,strong) NSArray        *list; //目录
-@property (nonatomic,strong) NSArray        *chapterArr;//拆分成章节的数组
+@property (nonatomic,strong) NSMutableArray *chapterArr;//拆分成章节的数组
 @property (nonatomic,strong) NSMutableArray *stlyeArray;//翻页模式
 @property (nonatomic,strong) NSMutableArray *fontArray;//字体
 @property (nonatomic,strong) NSMutableArray *listArray;//字体
@@ -77,9 +78,6 @@
     [self loadData];
 
     //添加UI
-    NSString * stlyeStr = [[NSUserDefaults standardUserDefaults]objectForKey:DCStlyeStauts];
-
-    [self setUpPageViewController:[stlyeStr integerValue]];
 
     [self.view addSubview:self.topView];
     [self.view addSubview:self.bottomView];
@@ -519,29 +517,57 @@
 #pragma mark  - private
 -(void)loadData
 {
-    NSString *string;
-    if(self.filePath)
-    {
-        string = [DCFileTool transcodingWithPath:self.filePath];
+//    if(self.filePath)
+//    {
+//        string = [DCFileTool transcodingWithPath:self.filePath];
+//    }
+
+//    self.list = [DCFileTool getBookListWithText:string];
+//    self.chapterArr = [DCFileTool getChapterArrWithString:string];
+    NSMutableArray * array = [NSMutableArray array];
+    for (BookListModel * model in self.dataArray) {
+        [array addObject:model.CatalogNameg];
     }
-    
-    self.list = [DCFileTool getBookListWithText:string];
-    self.chapterArr = [DCFileTool getChapterArrWithString:string];
-    self.listView.list = self.list;
+    self.listView.list = array;
     //加载第一章文字
-    [self loadChapterContentWithIndex:_currentChapter];
+    [self getData];
     
 }
+- (void)getData
+{
+    WS(weakSelf);
+    BookListModel * model = self.dataArray.firstObject;
+    NSDictionary * paraDict = @{@"MediaId":@(self.Id),
+                                @"CatalogNameg":model.CatalogNameg,
+                                @"CatalogId":model.CatalogId
+    };
+    [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_Media_Book_Content) parameters:paraDict responseStyle:JOSN success:^(id  _Nonnull responseObject) {
+        NSLog(@"%@",responseObject);
+        [weakSelf.chapterArr addObject:responseObject[@"Data"]];
+        NSString * stlyeStr = [[NSUserDefaults standardUserDefaults]objectForKey:DCStlyeStauts];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [weakSelf loadChapterContentWithIndex:weakSelf.currentChapter];
+            [weakSelf setUpPageViewController:[stlyeStr integerValue]];
+        });
+    } failure:^(NSError * _Nonnull error) {
+        
+    }];
+}
 -(void)loadChapterContentWithIndex:(NSInteger )index
 {
-    NSArray *arr =  [self pagingWithContentString:self.chapterArr[index] contentSize:_contentSize textAttribute:self.attributeDict];
+    NSMutableDictionary * attrDict = [NSMutableDictionary dictionaryWithDictionary:self.attributeDict];
+    [attrDict setObject:[UIColor blackColor] forKey:NSForegroundColorAttributeName];
+    NSArray *arr =  [self pagingWithContentString:self.chapterArr[index] contentSize:_contentSize textAttribute:attrDict];
     self.pageContentArray = arr;
 }
 -(NSArray *)pagingWithContentString:(NSString *)contentString contentSize:(CGSize)contentSize textAttribute:(NSDictionary *)textAttribute
 {
+    if (contentString.length == 0) {
+        return @[];
+    }
     
     NSMutableArray *pageArray = [NSMutableArray array];
-    NSMutableAttributedString *orginAttributeString = [[NSMutableAttributedString alloc]initWithString:contentString attributes:textAttribute];
+    NSMutableAttributedString *orginAttributeString = [[NSMutableAttributedString alloc] initWithAttributedString:[self attributeStringByHtmlString:contentString Attribute:textAttribute]];
     NSTextStorage *textStorage = [[NSTextStorage alloc]initWithAttributedString:orginAttributeString];
     NSLayoutManager *layoutManager = [[NSLayoutManager alloc]init];
     [textStorage addLayoutManager:layoutManager];
@@ -557,12 +583,10 @@
             break;
         }
         NSString *str = [contentString substringWithRange:rang];
-        NSMutableAttributedString *attstr = [[NSMutableAttributedString alloc]initWithString:str attributes:textAttribute];
+        NSMutableAttributedString *attstr = [[NSMutableAttributedString alloc] initWithAttributedString:[self attributeStringByHtmlString:str Attribute:textAttribute]];
         [pageArray addObject:attstr];
     }
-    
     return pageArray;
-    
 }
 - (DCContentVC *)viewControllerAtIndex:(NSUInteger)index {
     if (([self.pageContentArray count] == 0) || (index >= [self.pageContentArray count])) {
@@ -589,7 +613,16 @@
     self.currentVC = contentVC;
     return contentVC;
 }
-
+- (NSMutableAttributedString *)attributeStringByHtmlString:(NSString *)htmlString Attribute:(NSDictionary *)textAttribute{
+    NSData *htmlData = [htmlString dataUsingEncoding:NSUTF8StringEncoding];
+    NSDictionary *importParams = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
+                                   NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]
+    };
+    NSError*error = nil;
+    NSMutableAttributedString * attributeString = [[NSMutableAttributedString alloc] initWithData:htmlData options:importParams documentAttributes:NULL error:&error];
+    [attributeString addAttributes:textAttribute range:NSMakeRange(0, attributeString.length)];
+    return attributeString;
+}
 #pragma mark  - public
 
 #pragma mark  - setter or getter
@@ -740,4 +773,11 @@
     }
     return _listArray;
 }
+- (NSMutableArray *)chapterArr
+{
+    if (!_chapterArr) {
+        _chapterArr = [NSMutableArray array];
+    }
+    return _chapterArr;
+}
 @end

+ 25 - 19
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookRead/viewcontroller/DCContentVC.m

@@ -35,11 +35,12 @@
     [self.view addSubview: self.buyView];
     [self addUserView];
     [self addBuyView];
+    WS(weakSelf);
     self.textView.ClickMenuBlock = ^(NSInteger index) {
         NSLog(@"%ld",index);
-        NSString * str = [self.textView textInRange:self.textView.selectedTextRange];
+        NSString * str = [weakSelf.textView textInRange:weakSelf.textView.selectedTextRange];
         NSLog(@"%@",str);
-        [self.textView setSelectedRange:NSMakeRange(0, self.textView.text.length)];
+        [weakSelf.textView setSelectedRange:NSMakeRange(0, weakSelf.textView.text.length)];
     };
 }
 
@@ -147,23 +148,28 @@
 }
 -(void)updateUI
 {
-    NSString *readMode = [[NSUserDefaults standardUserDefaults] objectForKey:DCReadMode];
-    if([readMode isEqualToString:DCReadDefaultMode])
-    {
-        self.view.backgroundColor = UIColorHex(0xF8F8FA);
-        [self.content addAttribute:NSForegroundColorAttributeName value:[UIColor darkGrayColor] range:NSMakeRange(0, self.content.length)];
-        self.textView.attributedText = self.content;
-        self.bottomLeftL.textColor = [UIColor grayColor];
-        self.bottomRightL.textColor = [UIColor grayColor];
-
-    }else
-    {
-        self.view.backgroundColor = [UIColor colorWithRed:109/255.0 green:109/255.0 blue:111/255.0 alpha:1];
-        [self.content addAttribute:NSForegroundColorAttributeName value:[UIColor lightTextColor] range:NSMakeRange(0, self.content.length)];
-        self.textView.attributedText = self.content;
-        self.bottomLeftL.textColor = [UIColor lightTextColor];
-        self.bottomRightL.textColor = [UIColor lightTextColor];
-    }
+//  NSString *readMode = [[NSUserDefaults standardUserDefaults] objectForKey:DCReadMode];
+    self.view.backgroundColor = UIColorHex(0xF8F8FA);
+    [self.content addAttribute:NSForegroundColorAttributeName value:UIColorHex(0x000000) range:NSMakeRange(0, self.content.length)];
+    self.textView.attributedText = self.content;
+    self.bottomLeftL.textColor = [UIColor grayColor];
+    self.bottomRightL.textColor = [UIColor grayColor];
+//    if([readMode isEqualToString:DCReadDefaultMode])
+//    {
+//        self.view.backgroundColor = UIColorHex(0xF8F8FA);
+//        [self.content addAttribute:NSForegroundColorAttributeName value:UIColorHex(0x000000) range:NSMakeRange(0, self.content.length)];
+//        self.textView.attributedText = self.content;
+//        self.bottomLeftL.textColor = [UIColor grayColor];
+//        self.bottomRightL.textColor = [UIColor grayColor];
+//
+//    }else
+//    {
+//        self.view.backgroundColor = [UIColor colorWithRed:109/255.0 green:109/255.0 blue:111/255.0 alpha:1];
+//        [self.content addAttribute:NSForegroundColorAttributeName value:[UIColor lightTextColor] range:NSMakeRange(0, self.content.length)];
+//        self.textView.attributedText = self.content;
+//        self.bottomLeftL.textColor = [UIColor lightTextColor];
+//        self.bottomRightL.textColor = [UIColor lightTextColor];
+//    }
 }
 - (CGFloat)getCurrentBatteryLevel
 {

+ 1 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookStoreHome.m

@@ -475,6 +475,7 @@
 }
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
     [tableView deselectRowAtIndexPath:indexPath animated:YES];
+
 }
 - (void)pushBookListVC:(NSInteger)Id type:(MediaType)type
 {

+ 18 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookTeacherDetailVC.h

@@ -0,0 +1,18 @@
+//
+//  BookTeacherDetailVC.h
+//  smartRhino
+//
+//  Created by niuzhen on 2020/5/18.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface BookTeacherDetailVC : BaseViewController
+@property (nonatomic, assign) NSInteger   Id;
++(BookTeacherDetailVC *)initBookTeacherDetailVC;
+@end
+
+NS_ASSUME_NONNULL_END

File diff suppressed because it is too large
+ 1206 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookTeacherDetailVC.m


+ 1 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookWCDetailVC.h

@@ -12,6 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface BookWCDetailVC : BaseViewController
 @property (nonatomic, assign) NSInteger   Id;
+@property (nonatomic, assign) NSInteger   selectId;
 +(BookWCDetailVC *)initBookWCDetailVC;
 @end
 

+ 60 - 64
smartRhino/Project/VCModel/Home/VC/BookStore/VC/BookWCDetailVC.m

@@ -206,11 +206,16 @@
             NSLog(@"%@",responseObject);
             BookListenModel * model = [BookListenModel modelWithDictionary:responseObject];
             NSMutableArray * subArray = [NSMutableArray array];
-            for (id data in model.MediaLibraryResults) {
-                if ([data isKindOfClass:[NSDictionary class]]) {
-                    BookListenSubModel * subModel = [BookListenSubModel modelWithDictionary:(NSDictionary *)data];
-                    [subArray addObject:subModel];
+            for (NSInteger i = 0; i < model.MediaLibraryResults.count; i ++) {
+                BookListenSubModel * subModel = [BookListenSubModel modelWithDictionary:model.MediaLibraryResults[i]];
+                if (weakSelf.selectId == 0) {
+                    subModel.isSelect = i == 0 ? YES : NO;
+                }else{
+                    if (weakSelf.selectId == subModel.Id) {
+                        subModel.isSelect = YES;
+                    }
                 }
+                [subArray addObject:subModel];
             }
             model.MediaLibraryResults = subArray.modelCopy;
             weakSelf.model = model;
@@ -471,7 +476,8 @@
             UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithActionBlock:^(id  _Nonnull sender) {
                 if (self.model.MediaLibraryResults.count > 0) {
                     BookPlayListVC * vc = [BookPlayListVC initBookPlayListVC];
-                    vc.dataArray = self.model.MediaLibraryResults.mutableCopy;
+                    vc.Author = weakSelf.model.Author;
+                    vc.dataArray = weakSelf.model.MediaLibraryResults.mutableCopy;
                     [weakSelf.navigationController pushViewController:vc animated:YES];
                 }
             }];
@@ -567,14 +573,10 @@
         case 1:
         {
             HomeWeiCousreCell * cell = [HomeWeiCousreCell configCell1:tableView indexPath:indexPath];
-            NSMutableArray * array = [NSMutableArray array];
-            for (BookListenSubModel * subModel in self.model.MediaLibraryResults) {
-                if (subModel.MediaId == self.Id) {
-                    subModel.isSelect = YES;
-                }
-                [array addObject:subModel];
-            }
-            [cell setCollDataArray:array];
+            [cell setCollDataArray:self.model.MediaLibraryResults];
+            cell.ClickItemBlock = ^(BookListenSubModel * _Nonnull model) {
+                [weakSelf setupPlayer:model];
+            };
             return cell;
         }
             break;
@@ -1365,67 +1367,51 @@
     }
 }
 
-- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType title:(NSString *)title desc:(NSString *)desc url:(NSString *)url
-{
-    //创建分享消息对象
-    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
-    
-    messageObject.title = title;
-    //创建网页内容对象
-    UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:desc thumImage:IMG(@"logo_60")];
-    //设置网页地址
-    shareObject.webpageUrl = url;
-    
-    //分享消息对象设置分享内容对象
-    messageObject.shareObject = shareObject;
-    
-    //调用分享接口
-    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
-        if (error) {
-            NSLog(@"************Share fail with error %@*********",error);
-        }else{
-            NSLog(@"response data is %@",data);
-        }
-    }];
-}
 - (void)returnToWechatSession
 {
-    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatSession title:self.model.Title desc:self.model.Summary url:[self returnUrl] img:[self returnImage]];
+    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatSession title:self.model.Title desc:self.model.Author url:[self returnUrl] img:[self returnImage]];
 }
 - (void)returnToWechatTimeLine
 {
-    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatTimeLine title:self.model.Title desc:self.model.Summary url:[self returnUrl] img:[self returnImage]];
+    [self shareWebPageToPlatformType:UMSocialPlatformType_WechatTimeLine title:self.model.Title desc:self.model.Author url:[self returnUrl] img:[self returnImage]];
 }
 - (void)returnToSina
 {
-    [self shareWebPageToPlatformType:UMSocialPlatformType_Sina title:self.model.Title desc:self.model.Summary url:[self returnUrl] img:[self returnImage]];
+    [self shareWebPageToPlatformType:UMSocialPlatformType_Sina title:self.model.Title desc:self.model.Author url:[self returnUrl] img:[self returnImage]];
 }
 - (void)returnToQQ
 {
-    [self shareWebPageToPlatformType:UMSocialPlatformType_QQ title:self.model.Title desc:self.model.Summary url:[self returnUrl] img:[self returnImage]];
+    [self shareWebPageToPlatformType:UMSocialPlatformType_QQ title:self.model.Title desc:self.model.Author url:[self returnUrl] img:[self returnImage]];
 }
 
-- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType title:(NSString *)title desc:(NSString *)desc url:(NSString *)url img:(UIImage *)image
+- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType title:(NSString *)title desc:(NSString *)desc url:(NSString *)url img:(NSString *)imageName
 {
-    //创建分享消息对象
-    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
-    
-    messageObject.title = title;
-    //创建网页内容对象
-    UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:desc thumImage:image];
-    //设置网页地址
-    shareObject.webpageUrl = url;
-    
-    //分享消息对象设置分享内容对象
-    messageObject.shareObject = shareObject;
-    
-    //调用分享接口
-    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
-        if (error) {
-            NSLog(@"************Share fail with error %@*********",error);
-        }else{
-            NSLog(@"response data is %@",data);
-        }
+    UIImageView * imgV = [UIImageView new];
+    SHOWLOADING
+    [imgV sd_setImageWithURL:[NSURL URLWithString:imageName] placeholderImage:IMG(@"default_video") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+        REMOVESHOW
+        dispatch_async(dispatch_get_main_queue(), ^{
+
+            UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
+            
+            messageObject.title = title;
+            //创建网页内容对象
+            UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:desc thumImage:error ? IMG(@"default_audio") : image];
+            //设置网页地址
+            shareObject.webpageUrl = url;
+            
+            //分享消息对象设置分享内容对象
+            messageObject.shareObject = shareObject;
+            
+            //调用分享接口
+            [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
+                if (error) {
+                    NSLog(@"************Share fail with error %@*********",error);
+                }else{
+                    NSLog(@"response data is %@",data);
+                }
+            }];
+        });
     }];
 }
 - (NSString *)returnUrl
@@ -1433,12 +1419,10 @@
     NSString * url = [NSString stringWithFormat:@"%@%ld",ShareHost(@"mobile/topicDetailsWx?"),(long)self.model.Id];
     return url;
 }
-- (UIImage *)returnImage
+- (NSString *)returnImage
 {
     BookListenSubModel * model = self.model.MediaLibraryResults.firstObject;
-    UIImageView * imgV = [UIImageView new];
-    [imgV sd_setImageWithURL:[NSURL URLWithString:model.VideoImage]];
-    return imgV.image;
+    return model.VideoImage;
 }
 
 - (void)returnToMessage
@@ -1449,6 +1433,9 @@
     model.SoureTypeId = CollectModel_StoreVideo;
     model.Title = self.model.Title;
     model.Author = self.model.Author;
+    BookListenSubModel * submodel = self.model.MediaLibraryResults.firstObject;
+    model.MinUrl = submodel.VideoImage;
+    model.Url = submodel.VideoImage;
     vc.sendModel = model;
     vc.isReturn = YES;
     [self.navigationController pushViewController:vc animated:YES];
@@ -1462,6 +1449,9 @@
     model.SoureTypeId = CollectModel_StoreVideo;
     model.Title = self.model.Title;
     model.Author = self.model.Author;
+    BookListenSubModel * submodel = self.model.MediaLibraryResults.firstObject;
+    model.MinUrl = submodel.VideoImage;
+    model.Url = submodel.VideoImage;
     vc.sendModel = model;
     vc.isReturn = YES;
     [self.navigationController pushViewController:vc animated:YES];
@@ -1479,6 +1469,9 @@
     model.SoureTypeId = CollectModel_StoreVideo;
     model.Title = self.model.Title;
     model.Author = self.model.Author;
+    BookListenSubModel * submodel = self.model.MediaLibraryResults.firstObject;
+    model.MinUrl = submodel.VideoImage;
+    model.Url = submodel.VideoImage;
     vc.type = CollectModel_NoteBook;
     vc.sendModel = model;
     vc.isReturn = YES;
@@ -1493,6 +1486,9 @@
     model.SoureTypeId = CollectModel_StoreVideo;
     model.Title = self.model.Title;
     model.Author = self.model.Author;
+    BookListenSubModel * submodel = self.model.MediaLibraryResults.firstObject;
+    model.MinUrl = submodel.VideoImage;
+    model.Url = submodel.VideoImage;
     vc.type = CollectModel_NewTopic;
     vc.sendModel = model;
     vc.isReturn = YES;

+ 2 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/View/BookHotSearchCell.h

@@ -7,6 +7,7 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "BookRecommendModel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -19,6 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic) IBOutlet UIView *lineV;
 
 + (BookHotSearchCell *)configCell:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath;
+- (void)setDataWithRecommendModel:(BookRecommendModel *)model;
 @end
 
 NS_ASSUME_NONNULL_END

+ 7 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/View/BookHotSearchCell.m

@@ -29,4 +29,11 @@
     }
     return cell;
 }
+- (void)setDataWithRecommendModel:(BookRecommendModel *)model
+{
+    [self.imagV sd_setImageWithURL:[NSURL URLWithString:model.ImageUrls] placeholderImage:kPlaceHolderImage];
+    self.titleL.text = model.Title;
+    self.desL.text = model.Summary;
+    self.subTitleL.text = model.Author;
+}
 @end

+ 28 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/View/BookTeacherHeadCell.h

@@ -0,0 +1,28 @@
+//
+//  BookTeacherHeadCell.h
+//  smartRhino
+//
+//  Created by niuzhen on 2020/9/16.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "BookListenModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface BookTeacherHeadCell : UITableViewCell
+@property (weak, nonatomic) IBOutlet UIImageView *imgV;
+@property (weak, nonatomic) IBOutlet UILabel *nameL;
+@property (weak, nonatomic) IBOutlet UILabel *subL;
+@property (weak, nonatomic) IBOutlet UILabel *contentL;
+@property (weak, nonatomic) IBOutlet UIButton *hiddenBtn;
+@property (weak, nonatomic) IBOutlet UIImageView *upV;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *BtnContant;
+@property (weak, nonatomic) IBOutlet UILabel *collectNumL;
+@property (weak, nonatomic) IBOutlet UIButton *collectBtn;
++ (BookTeacherHeadCell *)configCell:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath;
+- (void)setData:(BookListenModel *)model isShow:(BOOL)hidden;
+@end
+
+NS_ASSUME_NONNULL_END

+ 55 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/View/BookTeacherHeadCell.m

@@ -0,0 +1,55 @@
+//
+//  BookTeacherHeadCell.m
+//  smartRhino
+//
+//  Created by niuzhen on 2020/9/16.
+//  Copyright © 2020 tederen. All rights reserved.
+//
+
+#import "BookTeacherHeadCell.h"
+
+@implementation BookTeacherHeadCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    self.collectBtn.layer.cornerRadius = 4.f;
+    self.collectBtn.layer.masksToBounds = YES;
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+}
++ (BookTeacherHeadCell *)configCell:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath
+{
+    static NSString *cellIdentifer = @"BookTeacherHeadCell";
+    BookTeacherHeadCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifer];
+    if (cell == nil) {
+        cell = [[[NSBundle mainBundle] loadNibNamed:@"BookTeacherHeadCell" owner:nil options:nil] objectAtIndex:0];
+    }
+    return cell;
+}
+- (void)setData:(BookListenModel *)model isShow:(BOOL)show
+{
+    if (model.IsCollect) {
+        [self.collectBtn setTitle:@"已收藏" forState:UIControlStateNormal];
+        self.collectBtn.backgroundColor = [UIColor lightGrayColor];
+    }else{
+        [self.collectBtn setTitle:@"收藏" forState:UIControlStateNormal];
+        self.collectBtn.backgroundColor = UIColorHex(0x3979D3);
+    }
+    if (show) {
+        [self.hiddenBtn setTitle:@"收起" forState:UIControlStateNormal];
+        self.upV.image = IMG(@"chatmsg_notice_hideAll_icon");
+        self.contentL.numberOfLines = 0;
+    }else{
+        [self.hiddenBtn setTitle:@"打开" forState:UIControlStateNormal];
+        self.upV.image = IMG(@"chatmsg_notice_showAll_icon");
+        self.contentL.numberOfLines = 3;
+    }
+    [self.imgV sd_setImageWithURL:[NSURL URLWithString:model.ImageUrl] placeholderImage:kPlaceHolderImage];
+    self.nameL.text = model.Name;
+    self.subL.text = model.Summary;
+    self.collectNumL.text = [NSString stringWithFormat:@"被收藏:%ld",model.CollectCount];
+    self.contentL.text = model.Summary;
+}
+@end

+ 140 - 0
smartRhino/Project/VCModel/Home/VC/BookStore/View/BookTeacherHeadCell.xib

@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.3" 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="16087"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.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"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" rowHeight="352" id="KGk-i7-Jjw" customClass="BookTeacherHeadCell">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="352"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="320" height="352"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VLU-VB-Y5d">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="157"/>
+                        <constraints>
+                            <constraint firstAttribute="width" secondItem="VLU-VB-Y5d" secondAttribute="height" multiplier="375:184" id="dM3-tz-oFN"/>
+                        </constraints>
+                    </imageView>
+                    <view alpha="0.5" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kam-iA-r8l">
+                        <rect key="frame" x="0.0" y="101" width="320" height="56"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bt0-gF-fwU">
+                                <rect key="frame" x="13" y="11" width="37.5" height="18"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="E4T-NU-Emh">
+                                <rect key="frame" x="13" y="31" width="197" height="15"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0da-VV-w66">
+                                <rect key="frame" x="225" y="31" width="80" height="15"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="80" id="quv-48-YmI"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="0da-VV-w66" secondAttribute="trailing" constant="15" id="CeZ-Qe-ahf"/>
+                            <constraint firstAttribute="height" constant="56" id="I3a-xi-JNr"/>
+                            <constraint firstItem="0da-VV-w66" firstAttribute="centerY" secondItem="E4T-NU-Emh" secondAttribute="centerY" id="Y6x-6W-iIq"/>
+                            <constraint firstItem="0da-VV-w66" firstAttribute="leading" secondItem="E4T-NU-Emh" secondAttribute="trailing" constant="15" id="b6i-t7-8i1"/>
+                            <constraint firstItem="E4T-NU-Emh" firstAttribute="leading" secondItem="Kam-iA-r8l" secondAttribute="leading" constant="13" id="caT-Aw-u8b"/>
+                            <constraint firstItem="Bt0-gF-fwU" firstAttribute="top" secondItem="Kam-iA-r8l" secondAttribute="top" constant="11" id="thc-tz-Y0K"/>
+                            <constraint firstItem="Bt0-gF-fwU" firstAttribute="leading" secondItem="Kam-iA-r8l" secondAttribute="leading" constant="13" id="wEx-jR-wq1"/>
+                            <constraint firstAttribute="bottom" secondItem="E4T-NU-Emh" secondAttribute="bottom" constant="10" id="wRS-b0-Xm6"/>
+                        </constraints>
+                    </view>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="名师简介" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wZe-pO-tf7">
+                        <rect key="frame" x="14" y="171" width="66" height="105.5"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                        <color key="textColor" red="0.13333333333333333" green="0.13333333333333333" blue="0.13333333333333333" alpha="1" colorSpace="calibratedRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nZp-65-pfK">
+                        <rect key="frame" x="14" y="291.5" width="292" height="20.5"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WPX-OP-WGy">
+                        <rect key="frame" x="140" y="312" width="30" height="40"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="40" id="fKp-tq-lPa"/>
+                        </constraints>
+                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                        <state key="normal" title="收起">
+                            <color key="titleColor" red="0.22352941176470587" green="0.47450980392156861" blue="0.82745098039215681" alpha="1" colorSpace="calibratedRGB"/>
+                        </state>
+                    </button>
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="chatmsg_notice_hideAll_icon" translatesAutoresizingMaskIntoConstraints="NO" id="vqQ-yW-6i2">
+                        <rect key="frame" x="174" y="325.5" width="13" height="13"/>
+                    </imageView>
+                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FJt-pK-fbs">
+                        <rect key="frame" x="248" y="10" width="60" height="24"/>
+                        <color key="backgroundColor" red="0.22352941176470587" green="0.47450980392156861" blue="0.82745098039215681" alpha="1" colorSpace="calibratedRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="60" id="TNq-jU-H9s"/>
+                            <constraint firstAttribute="height" constant="24" id="Vbs-jL-7bY"/>
+                        </constraints>
+                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                        <state key="normal" title="收起">
+                            <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                        </state>
+                    </button>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="VLU-VB-Y5d" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="0NS-mO-2fw"/>
+                    <constraint firstItem="wZe-pO-tf7" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="15t-u5-0Hf"/>
+                    <constraint firstAttribute="trailing" secondItem="nZp-65-pfK" secondAttribute="trailing" constant="14" id="5YI-I7-aeU"/>
+                    <constraint firstAttribute="trailing" secondItem="VLU-VB-Y5d" secondAttribute="trailing" id="6Hl-LE-hYB"/>
+                    <constraint firstItem="WPX-OP-WGy" firstAttribute="centerX" secondItem="H2p-sc-9uM" secondAttribute="centerX" constant="-5" id="6ai-I8-1ul"/>
+                    <constraint firstAttribute="trailing" secondItem="Kam-iA-r8l" secondAttribute="trailing" id="CL5-wg-IrE"/>
+                    <constraint firstItem="WPX-OP-WGy" firstAttribute="top" secondItem="nZp-65-pfK" secondAttribute="bottom" id="DfL-gn-WR3"/>
+                    <constraint firstItem="Kam-iA-r8l" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="LYB-HH-NMp"/>
+                    <constraint firstItem="FJt-pK-fbs" firstAttribute="top" secondItem="VLU-VB-Y5d" secondAttribute="top" constant="10" id="We9-as-vGb"/>
+                    <constraint firstItem="FJt-pK-fbs" firstAttribute="trailing" secondItem="VLU-VB-Y5d" secondAttribute="trailing" constant="-12" id="XHL-Hs-WuU"/>
+                    <constraint firstItem="vqQ-yW-6i2" firstAttribute="centerY" secondItem="WPX-OP-WGy" secondAttribute="centerY" id="Ybt-LM-8bc"/>
+                    <constraint firstItem="Kam-iA-r8l" firstAttribute="bottom" secondItem="VLU-VB-Y5d" secondAttribute="bottom" id="agS-J0-1dC"/>
+                    <constraint firstItem="VLU-VB-Y5d" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="bLw-pf-6GG"/>
+                    <constraint firstAttribute="bottom" secondItem="WPX-OP-WGy" secondAttribute="bottom" id="e9D-cL-xc0"/>
+                    <constraint firstItem="vqQ-yW-6i2" firstAttribute="leading" secondItem="WPX-OP-WGy" secondAttribute="trailing" constant="4" id="jmE-9v-kVH"/>
+                    <constraint firstItem="nZp-65-pfK" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="npK-cA-o9r"/>
+                    <constraint firstItem="wZe-pO-tf7" firstAttribute="top" secondItem="VLU-VB-Y5d" secondAttribute="bottom" constant="14" id="q8z-nn-NgP"/>
+                    <constraint firstItem="nZp-65-pfK" firstAttribute="top" secondItem="wZe-pO-tf7" secondAttribute="bottom" constant="15" id="vT9-Ts-FZa"/>
+                </constraints>
+            </tableViewCellContentView>
+            <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
+            <connections>
+                <outlet property="BtnContant" destination="fKp-tq-lPa" id="BbQ-tK-xSZ"/>
+                <outlet property="collectBtn" destination="FJt-pK-fbs" id="YMP-GV-BZj"/>
+                <outlet property="collectNumL" destination="0da-VV-w66" id="giD-0y-B10"/>
+                <outlet property="contentL" destination="nZp-65-pfK" id="Bsw-7b-Lav"/>
+                <outlet property="hiddenBtn" destination="WPX-OP-WGy" id="dnA-gU-SoY"/>
+                <outlet property="imgV" destination="VLU-VB-Y5d" id="CPf-fe-OFK"/>
+                <outlet property="nameL" destination="Bt0-gF-fwU" id="Knc-e7-JJt"/>
+                <outlet property="subL" destination="E4T-NU-Emh" id="ZWb-Bv-Rgt"/>
+                <outlet property="upV" destination="vqQ-yW-6i2" id="VnS-F1-lnE"/>
+            </connections>
+            <point key="canvasLocation" x="118.84057971014494" y="158.70535714285714"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="chatmsg_notice_hideAll_icon" width="13" height="13"/>
+    </resources>
+</document>

+ 62 - 1
smartRhino/Project/VCModel/Home/VC/SubVC/HomeMingShiVC.m

@@ -10,6 +10,8 @@
 #import "HomeSubModel.h"
 #import "HomeSubItemModel.h"
 #import "HomeTeacherCell.h"
+#import "MoveViewController.h"
+#import "BookTeacherDetailVC.h"
 
 @interface HomeMingShiVC ()<UITableViewDelegate,UITableViewDataSource>
 @property (nonatomic, strong) UITableView     * tableView;
@@ -24,6 +26,11 @@
     self.tableView.delegate = self;
     self.tableView.dataSource = self;
     [self getData];
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(collectSuccess) name:COLLECTSUCCESS object:nil];
+}
+- (void)dealloc
+{
+    [[NSNotificationCenter defaultCenter] removeObserver:self];
 }
 - (void)setHeight:(CGFloat)height
 {
@@ -48,6 +55,7 @@
 - (void)getData
 {
     WS(weakSelf);
+    [weakSelf.dataSource removeAllObjects];
     [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_PAGE_Teacher) parameters:@{@"StyleCss":self.style,@"Page":@(1),@"PerPage":@20} responseStyle:JOSN success:^(id  _Nonnull responseObject) {
         NSLog(@"%@",responseObject);
         if ([responseObject isKindOfClass:[NSDictionary class]]) {
@@ -78,16 +86,69 @@
 }
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
+    WS(weakSelf);
     HomeSubItemModel *model = self.dataSource[indexPath.row];
     HomeTeacherCell * cell = [HomeTeacherCell configCell:tableView indexPath:indexPath];
     [cell setDataWithModel:model];
     cell.ClickCollectBlock = ^(NSInteger Id) {
-        NSLog(@"%ld",Id);
+        if (model.IsCollect) {
+            dispatch_async(dispatch_get_main_queue(), ^{
+                UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"真的取消收藏吗?" message:nil preferredStyle:UIAlertControllerStyleAlert];
+                UIAlertAction *actionYes = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                    NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
+                    [dic setValue:@(Id) forKey:@"CollectionDataId"];
+                    ///     1文章 2话题 3 收藏 4笔记 5通知 6站内信 7小组 8 会议详情 14工作流审批 300 文件 400 会议纪要
+                    [dic setValue:@(CollectModel_Teacher) forKey:@"CollectionType"];
+                    [dic setValue:@(0) forKey:@"FolderId"];
+                    [dic setValue:@(0) forKey:@"SourceUserId"];
+                    [[HttpManager sharedHttpManager] PUTUrl:Host(API_CreateCollect) parameters:dic success:^(id  _Nonnull responseObject) {
+                        model.IsCollect = NO;
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
+                        });
+                    } failure:^(NSError * _Nonnull error) {
+                        //                    SHOWERROR([ZYCTool handerResultData:error]);
+                    }];
+                }];
+                UIAlertAction *actionNo = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+                    
+                }];
+                [alert addAction:actionYes];
+                [alert addAction:actionNo];
+                [weakSelf presentViewController:alert animated:YES completion:^{
+                    
+                }];
+            });
+        }else{
+            [weakSelf gotoCollectHander:Id];
+        }
     };
     return cell;
 }
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
+    HomeSubItemModel * model = self.dataSource[indexPath.row];
     [tableView deselectRowAtIndexPath:indexPath animated:YES];
+    BookTeacherDetailVC * vc = [BookTeacherDetailVC initBookTeacherDetailVC];
+    vc.Id = model.Id;
+    [self.navigationController pushViewController:vc animated:YES];
+}
+
+- (void)gotoCollectHander:(NSInteger)Id{
+    MoveViewController *vc = [MoveViewController initMoveViewController];
+    vc.CollectionDataId = Id;
+    vc.collectType = CollectHanderType_Collect;
+    vc.CollectionType = CollectModel_Teacher;
+    vc.ParentId = 0;
+    vc.titleStr = @"我的收藏";
+    vc.TypeId = CreateCollectionType;
+    vc.FolderIds = @[].mutableCopy;
+    [self.navigationController pushViewController:vc animated:YES];
 }
+
+- (void)collectSuccess
+{
+    [self getData];
+}
+
 @end

+ 1 - 0
smartRhino/Project/VCModel/Home/VC/View/Cell/HomeWeiCousreCell.h

@@ -32,6 +32,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic) IBOutlet UILabel *playTimeL;
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *height;
 @property (strong, nonatomic) NSMutableArray  *dataArray;
+@property (copy, nonatomic) void(^ClickItemBlock)(BookListenSubModel * model);
 + (HomeWeiCousreCell *)configCell0:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath;
 + (HomeWeiCousreCell *)configCell1:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath;
 + (HomeWeiCousreCell *)configCell2:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath;

+ 24 - 3
smartRhino/Project/VCModel/Home/VC/View/Cell/HomeWeiCousreCell.m

@@ -78,13 +78,19 @@
     self.timeL.text = model.Duration;
     self.playTimeL.text = model.Duration;
 //    self.subTitleL.text = model.SectionName;
-//    self.nameL.text = model.Author;
+    self.nameL.text = model.Author;
 //    self.numL.text = [NSString stringWithFormat:@"%ld",model.ReadCount];
 }
 - (void)setDataWithRecommendModel:(BookRecommendModel *)model
 {
     [self.imgV sd_setImageWithURL:[NSURL URLWithString:model.ImageUrls] placeholderImage:IMG(@"img_placeHolder")];
     self.titleL.text = model.Title;
+    CGFloat height = [self.titleL sizeThatFits:CGSizeMake(SCREEN_WIDTH - 175, MAXFLOAT)].height;
+    if (height > 30) {
+        self.subTitleL.numberOfLines = 1;
+    }else{
+        self.subTitleL.numberOfLines = 2;
+    }
     self.timeL.text = [NSDate getTimeStringAutoShort3:model.CreatedDate];
     self.playTimeL.text = model.Duration;
     self.subTitleL.text = model.Summary;
@@ -95,6 +101,12 @@
 {
     [self.imgV sd_setImageWithURL:[NSURL URLWithString:model.ImageUrls] placeholderImage:IMG(@"img_placeHolder")];
     self.titleL.text = model.Title;
+    CGFloat height = [self.titleL sizeThatFits:CGSizeMake(SCREEN_WIDTH - 175, MAXFLOAT)].height;
+    if (height > 30) {
+        self.subTitleL.numberOfLines = 1;
+    }else{
+        self.subTitleL.numberOfLines = 2;
+    }
     self.subTitleL.text = model.Summary;
     self.nameL.text = model.Author;
     self.numL.text = [NSString stringWithFormat:@"%ld",model.ReadCount];
@@ -103,6 +115,12 @@
 {
     [self.imgV sd_setImageWithURL:[NSURL URLWithString:model.ImageUrls] placeholderImage:IMG(@"img_placeHolder")];
     self.titleL.text = model.Title;
+    CGFloat height = [self.titleL sizeThatFits:CGSizeMake(SCREEN_WIDTH - 175, MAXFLOAT)].height;
+    if (height > 30) {
+        self.subTitleL.numberOfLines = 1;
+    }else{
+        self.subTitleL.numberOfLines = 2;
+    }
     self.subTitleL.text = model.Summary;
     self.nameL.text = model.Author;
     self.playTimeL.text = model.Duration;
@@ -178,8 +196,8 @@
 {
     [collectionView deselectItemAtIndexPath:indexPath animated:YES];
     WS(weakSelf);
-    BookAlertModel * model = [self.dataArray objectAtIndex:indexPath.row];
-    for (BookAlertModel * smodel in self.dataArray) {
+    BookListenSubModel * model = [self.dataArray objectAtIndex:indexPath.row];
+    for (BookListenSubModel * smodel in self.dataArray) {
         smodel.isSelect = NO;
     }
     model.isSelect = YES;
@@ -187,5 +205,8 @@
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [weakSelf.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];
     });
+    if (self.ClickItemBlock) {
+        self.ClickItemBlock(model);
+    }
 }
 @end

+ 5 - 5
smartRhino/Project/VCModel/Home/VC/View/Cell/HomeWeiCousreCell.xib

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.2" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.3" 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"/>
@@ -344,8 +344,8 @@
                             <constraint firstItem="ajT-CT-7WK" firstAttribute="bottom" secondItem="d81-lp-DFW" secondAttribute="bottom" constant="-7" id="rcr-tH-SkQ"/>
                         </constraints>
                     </view>
-                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="理科思维记古诗——中国诗词 大会冠军陈更独家开讲" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ylM-sq-9Ba">
-                        <rect key="frame" x="160" y="15" width="145" height="41"/>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="理科思维记古诗" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ylM-sq-9Ba">
+                        <rect key="frame" x="160" y="15" width="145" height="20.5"/>
                         <fontDescription key="fontDescription" type="system" pointSize="17"/>
                         <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                         <nil key="highlightedColor"/>
@@ -363,8 +363,8 @@
                             <constraint firstAttribute="height" constant="0.5" id="MJz-p6-NRa"/>
                         </constraints>
                     </view>
-                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="浅谈如何在大学英语教学中提高" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7V0-cn-IqN">
-                        <rect key="frame" x="160" y="60" width="145" height="14.5"/>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="浅谈如何在大学英语教学中提高" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7V0-cn-IqN">
+                        <rect key="frame" x="160" y="39.5" width="145" height="29"/>
                         <fontDescription key="fontDescription" type="system" pointSize="12"/>
                         <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <nil key="highlightedColor"/>

+ 14 - 7
smartRhino/Project/VCModel/My_Center/Controller/ColletionVC/Controller/MyFavoriteEditSearchVC.m

@@ -211,6 +211,13 @@
         case 1:{
             MyFavoriteCell *cell = [MyFavoriteCell configCell00:tableView indexPath:indexPath];
             cell.IconShowL.hidden = YES;
+            cell.titleL.attributedText = [ZYCTool checkOfString:model.Title withSearchText:self.searchText];
+
+            if (model.Data.IsGroup) {
+                cell.beComeL.attributedText = [self changeOfString:[NSString stringWithFormat:@"来自-%@组",model.Data.GroupName]];
+            }
+            cell.subTitleL.attributedText = [ZYCTool checkOfString:model.Data.Author withSearchText:self.searchText];
+            cell.topImgV.hidden = !model.IsTop;
             switch (model.CollectionType) {
                     // 文章
                 case CollectModel_Aritle:{
@@ -234,6 +241,13 @@
                     [cell.beComeL addGestureRecognizer:tap];
                     cell.beComeL.userInteractionEnabled = YES;
                 }break;
+                case CollectModel_Teacher:
+                {
+                    [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+                    cell.titleL.attributedText = [ZYCTool checkOfString:model.Data.Author withSearchText:self.searchText];
+                    cell.subTitleL.hidden = YES;
+                }
+                    break;
                 case CollectModel_NewTopic:
                 {
                     cell.fileImgV.image = IMG(@"话题");
@@ -314,13 +328,6 @@
                     }
                 }break;
             }
-            cell.titleL.attributedText = [ZYCTool checkOfString:model.Title withSearchText:self.searchText];
-
-            if (model.Data.IsGroup) {
-                cell.beComeL.attributedText = [self changeOfString:[NSString stringWithFormat:@"来自-%@组",model.Data.GroupName]];
-            }
-            cell.subTitleL.attributedText = [ZYCTool checkOfString:model.Data.Author withSearchText:self.searchText];
-            cell.topImgV.hidden = !model.IsTop;
             cell.selectBtn.selected = model.IsSelect;
             [cell.selectBtn setAction:^{
                 model.IsSelect = !model.IsSelect;

+ 42 - 11
smartRhino/Project/VCModel/My_Center/Controller/ColletionVC/Controller/MyFavoriteSearchVC.m

@@ -33,6 +33,7 @@
 #import "NoteBookVC.h"
 #import "BookWCDetailVC.h"
 #import "BookListenVC.h"
+#import "BookTeacherDetailVC.h"
 
 @interface MyFavoriteSearchVC ()<UITableViewDelegate,UITableViewDataSource>
 @property (nonatomic, assign) NSUInteger  currentPage;
@@ -164,6 +165,13 @@
         case 1:{
             MyFavoriteCell *cell = [MyFavoriteCell configCell0:tableView indexPath:indexPath];
             cell.IconShowL.hidden = YES;
+            cell.titleL.attributedText = [ZYCTool checkOfString:model.Title withSearchText:self.searchText];
+
+            if (model.Data.IsGroup) {
+                cell.beComeL.attributedText = [self changeOfString:[NSString stringWithFormat:@"来自-%@组",model.Data.GroupName]];
+            }
+            cell.subTitleL.attributedText = [ZYCTool checkOfString:model.Data.Author withSearchText:self.searchText];
+            cell.topImgV.hidden = !model.IsTop;
             switch (model.CollectionType) {
                     // 文章
                 case CollectModel_Aritle:{
@@ -175,18 +183,41 @@
                 }break;
                 case CollectModel_StoreSound:
                 {
-                    [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                        
+                    [cell.fileImgV removeAllSubviews];
+                    [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            UIImageView * clearV = [UIImageView new];
+                            [cell.fileImgV addSubview:clearV];
+                            clearV.image = IMG(@"clear_audio");
+                            [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                make.edges.mas_equalTo(cell.fileImgV);
+                            }];
+                        });
                     }];
                 }
                     break;
                 case CollectModel_StoreVideo:
                 {
-                    [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                        
+                    [cell.fileImgV removeAllSubviews];
+                    [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            UIImageView * clearV = [UIImageView new];
+                            [cell.fileImgV addSubview:clearV];
+                            clearV.image = IMG(@"clear_video");
+                            [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                make.edges.mas_equalTo(cell.fileImgV);
+                            }];
+                        });
                     }];
                 }
                     break;
+                case CollectModel_Teacher:
+                {
+                    [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+                    cell.titleL.attributedText = [ZYCTool checkOfString:model.Data.Author withSearchText:self.searchText];
+                    cell.subTitleL.hidden = YES;
+                }
+                    break;
                     // 话题 || 小组
                 case CollectModel_Toipc:
                 {
@@ -281,13 +312,6 @@
                     }
                 }break;
             }
-            cell.titleL.attributedText = [ZYCTool checkOfString:model.Title withSearchText:self.searchText];
-
-            if (model.Data.IsGroup) {
-                cell.beComeL.attributedText = [self changeOfString:[NSString stringWithFormat:@"来自-%@组",model.Data.GroupName]];
-            }
-            cell.subTitleL.attributedText = [ZYCTool checkOfString:model.Data.Author withSearchText:self.searchText];
-            cell.topImgV.hidden = !model.IsTop;
             return cell;
         }break;
             // 文件夹
@@ -495,6 +519,13 @@
                         [self.navigationController pushViewController:vc animated:YES];
                     }
                         break;
+                    case CollectModel_Teacher:
+                    {
+                        BookTeacherDetailVC * vc = [BookTeacherDetailVC initBookTeacherDetailVC];
+                        vc.Id = model.CollectionDataId;
+                        [self.navigationController pushViewController:vc animated:YES];
+                    }
+                        break;
                     case CollectModel_meetMian:{
                         MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
                         vc.type = CollectModel_NoteBook;

+ 92 - 21
smartRhino/Project/VCModel/My_Center/Controller/ColletionVC/Controller/MyFavoriteVC.m

@@ -38,6 +38,7 @@
 #import "NoteBookVC.h"
 #import "BookWCDetailVC.h"
 #import "BookListenVC.h"
+#import "BookTeacherDetailVC.h"
 
 @interface MyFavoriteVC ()<UITableViewDataSource,UITableViewDelegate,NoteBookShareVCDelegate>
 @property (weak, nonatomic) IBOutlet UIButton *rightButton;
@@ -581,6 +582,7 @@
                     cell.topImgV.hidden = !model.IsTop;
                     cell.IconShowL.hidden = YES;
                     cell.beComeL.hidden = YES;
+                    [cell.fileImgV removeAllSubviews];
                     switch (model.CollectionType) {
                             // 文章
                         case CollectModel_Aritle:{
@@ -593,18 +595,38 @@
                             break;
                         case CollectModel_StoreSound:
                         {
-                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_audio");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
                             }];
                         }
                             break;
                         case CollectModel_StoreVideo:
                         {
-                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_video");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
                             }];
                         }
                             break;
+                        case CollectModel_Teacher:
+                        {
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+                            cell.subTitleL.hidden = YES;
+                        }
+                            break;
                             // 话题 || 小组
                         case CollectModel_Toipc:
                         {
@@ -763,6 +785,7 @@
                     cell.subTitleL.textColor = model.Data.Author.length > 0 ? UIColorHex(0x999999) : [UIColor clearColor];
                     cell.topImgV.hidden = !model.IsTop;
                     cell.IconShowL.hidden = YES;
+                    [cell.fileImgV removeAllSubviews];
                     switch (model.CollectionType) {
                             // 文章
                         case CollectModel_Aritle:{
@@ -773,19 +796,39 @@
                             }];
                         }break;
                         case CollectModel_StoreSound:
-                           {
-                               [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                   
-                               }];
-                           }
-                               break;
-                           case CollectModel_StoreVideo:
-                           {
-                               [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                   
-                               }];
-                           }
-                               break;
+                        {
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_audio");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
+                            }];
+                        }
+                            break;
+                        case CollectModel_StoreVideo:
+                        {
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_video");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
+                            }];
+                        }
+                            break;
+                        case CollectModel_Teacher:
+                        {
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+                            cell.subTitleL.hidden = YES;
+                        }
+                            break;
                             // 话题 || 小组
                         case CollectModel_Toipc:
                         {
@@ -943,6 +986,7 @@
                     cell.sortBtn.hidden = YES;
                     cell.IconShowL.hidden = YES;
                     cell.beComeL.hidden = YES;
+                    [cell.fileImgV removeAllSubviews];
                     switch (model.CollectionType) {
                             // 文章
                         case CollectModel_Aritle:{
@@ -954,18 +998,38 @@
                         }break;
                         case CollectModel_StoreSound:
                         {
-                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_audio");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
                             }];
                         }
                             break;
                         case CollectModel_StoreVideo:
                         {
-                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_video");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
                             }];
                         }
                             break;
+                        case CollectModel_Teacher:
+                        {
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+                            cell.subTitleL.hidden = YES;
+                        }
+                            break;
                             // 话题 || 小组
                         case CollectModel_Toipc:
                         {
@@ -1483,6 +1547,13 @@
                             [self.navigationController pushViewController:vc animated:YES];
                         }
                             break;
+                        case CollectModel_Teacher:
+                        {
+                            BookTeacherDetailVC * vc = [BookTeacherDetailVC initBookTeacherDetailVC];
+                            vc.Id = model.CollectionDataId;
+                            [self.navigationController pushViewController:vc animated:YES];
+                        }
+                            break;
                         case CollectModel_meetMian:{
                             MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
                             vc.Id = model.CollectionDataId;

+ 95 - 21
smartRhino/Project/VCModel/My_Center/Controller/ColletionVC/Controller/OtherFavoriteVC.m

@@ -33,6 +33,7 @@
 #import "MyTDGroupView.h"
 #import "BookWCDetailVC.h"
 #import "BookListenVC.h"
+#import "BookTeacherDetailVC.h"
 
 @interface OtherFavoriteVC ()<UITableViewDataSource,UITableViewDelegate,NoteBookShareVCDelegate>
 @property (strong,nonatomic) ZFReOrderTableView *reOrderView;
@@ -486,18 +487,40 @@
                         }break;
                         case CollectModel_StoreSound:
                         {
-                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                
+                            [cell.fileImgV removeAllSubviews];
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_audio");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
                             }];
                         }
                             break;
                         case CollectModel_StoreVideo:
                         {
-                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                
+                            [cell.fileImgV removeAllSubviews];
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_video");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
                             }];
                         }
                             break;
+                        case CollectModel_Teacher:
+                        {
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+                            cell.subTitleL.hidden = YES;
+                        }
+                            break;
                             // 话题 || 小组
                         case CollectModel_Toipc:
                         {
@@ -635,19 +658,41 @@
                             }];
                         }break;
                         case CollectModel_StoreSound:
-                           {
-                               [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                   
-                               }];
-                           }
-                               break;
-                           case CollectModel_StoreVideo:
-                           {
-                               [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                   
-                               }];
-                           }
-                               break;
+                        {
+                            [cell.fileImgV removeAllSubviews];
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_audio");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
+                            }];
+                        }
+                            break;
+                        case CollectModel_StoreVideo:
+                        {
+                            [cell.fileImgV removeAllSubviews];
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_video");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
+                            }];
+                        }
+                            break;
+                        case CollectModel_Teacher:
+                        {
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+                            cell.subTitleL.hidden = YES;
+                        }
+                            break;
                             // 话题 || 小组
                         case CollectModel_Toipc:
                         {
@@ -789,18 +834,40 @@
                         }break;
                         case CollectModel_StoreSound:
                         {
-                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                
+                            [cell.fileImgV removeAllSubviews];
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_audio");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
                             }];
                         }
                             break;
                         case CollectModel_StoreVideo:
                         {
-                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                                
+                            [cell.fileImgV removeAllSubviews];
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    UIImageView * clearV = [UIImageView new];
+                                    [cell.fileImgV addSubview:clearV];
+                                    clearV.image = IMG(@"clear_video");
+                                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                                        make.edges.mas_equalTo(cell.fileImgV);
+                                    }];
+                                });
                             }];
                         }
                             break;
+                        case CollectModel_Teacher:
+                        {
+                            [cell.fileImgV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+                            cell.subTitleL.hidden = YES;
+                        }
+                            break;
                             // 话题 || 小组
                         case CollectModel_Toipc:
                         {
@@ -1052,6 +1119,13 @@
                             [self.navigationController pushViewController:vc animated:YES];
                         }
                             break;
+                        case CollectModel_Teacher:
+                        {
+                            BookTeacherDetailVC * vc = [BookTeacherDetailVC initBookTeacherDetailVC];
+                            vc.Id = model.CollectionDataId;
+                            [self.navigationController pushViewController:vc animated:YES];
+                        }
+                            break;
                         case CollectModel_meetMian:{
                             MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
                             vc.Id = model.CollectionDataId;

+ 1 - 5
smartRhino/Project/VCModel/My_Center/Controller/MyInfoVC.m

@@ -45,11 +45,7 @@
     self.fd_prefersNavigationBarHidden = YES;
     self.view.backgroundColor = RGB(238, 238, 238);
     
-    if (@available(iOS 11.0, *)) {
-        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-    } else {
-        self.automaticallyAdjustsScrollViewInsets = NO;
-    }
+    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
     self.tableView.delegate = self;
     self.tableView.dataSource = self;
     self.tableView.backgroundColor = [UIColor clearColor];

+ 1 - 0
smartRhino/Project/VCModel/My_Center/Controller/MyUserIconVC.h

@@ -11,6 +11,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 @interface MyUserIconVC : BaseViewController
+@property (nonatomic, assign) BOOL     HistoryVC;
 +(MyUserIconVC *)initMyUserIconVC;
 @end
 

+ 66 - 38
smartRhino/Project/VCModel/My_Center/Controller/MyUserIconVC.m

@@ -24,45 +24,72 @@
     [super viewDidLoad];
     self.fd_prefersNavigationBarHidden = YES;
     self.view.backgroundColor = UIColorHex(0x000000);
-    NSString * urlString = [AppUserModel sharedAppUserModel].AvatarUrl;
-    NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@"_50_50" withString:@""];
-    [self.iconView sd_setImageWithURL:[NSURL URLWithString:strUrl]];
+    
+    if (self.HistoryVC) {
+        NSString * urlString = [AppUserModel sharedAppUserModel].HistoryAvatarUrl;
+        NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@"_50_50" withString:@""];
+        [self.iconView sd_setImageWithURL:[NSURL URLWithString:strUrl]];
+    }else{
+        NSString * urlString = [AppUserModel sharedAppUserModel].AvatarUrl;
+        NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@"_50_50" withString:@""];
+        [self.iconView sd_setImageWithURL:[NSURL URLWithString:strUrl]];
+    }
+
     WS(weakSelf);
     [self.moreBtn setAction:^{
-        UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
-        UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-            [weakSelf selectCamera];
-            
-        }];
-        UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"从手机相册选择" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-            [weakSelf selectPhoto];
-            
-        }];
-        UIAlertAction *action3 = [UIAlertAction actionWithTitle:@"查看上一张头像" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-            [weakSelf SeeUpIcon];
-            
-        }];
-        UIAlertAction *action4 = [UIAlertAction actionWithTitle:@"保存图片" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-            [weakSelf savePhoto];
-            
-        }];
-        UIAlertAction *action5 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
-            NSLog(@"取消");
-        }];
-        [action1 setValue:k6 forKey:@"_titleTextColor"];
-        [action2 setValue:k6 forKey:@"_titleTextColor"];
-        [action3 setValue:k6 forKey:@"_titleTextColor"];
-        [action4 setValue:k6 forKey:@"_titleTextColor"];
-        [action5 setValue:k6 forKey:@"_titleTextColor"];
+        if (weakSelf.HistoryVC) {
+            UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
+            UIAlertAction *action4 = [UIAlertAction actionWithTitle:@"保存图片" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                [weakSelf savePhoto];
+                
+            }];
+            UIAlertAction *action5 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+                NSLog(@"取消");
+            }];
 
-        //把action添加到actionSheet里
-        [actionSheet addAction:action1];
-        [actionSheet addAction:action2];
-        [actionSheet addAction:action3];
-        [actionSheet addAction:action4];
-        [actionSheet addAction:action5];
-        //相当于之前的[actionSheet show];
-        [weakSelf presentViewController:actionSheet animated:YES completion:nil];
+            [action4 setValue:k6 forKey:@"_titleTextColor"];
+            [action5 setValue:k6 forKey:@"_titleTextColor"];
+
+            [actionSheet addAction:action4];
+            [actionSheet addAction:action5];
+            //相当于之前的[actionSheet show];
+            [weakSelf presentViewController:actionSheet animated:YES completion:nil];
+        }else{
+            UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
+            UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                [weakSelf selectCamera];
+                
+            }];
+            UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"从手机相册选择" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                [weakSelf selectPhoto];
+                
+            }];
+            UIAlertAction *action3 = [UIAlertAction actionWithTitle:@"查看上一张头像" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                [weakSelf SeeUpIcon];
+                
+            }];
+            UIAlertAction *action4 = [UIAlertAction actionWithTitle:@"保存图片" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                [weakSelf savePhoto];
+                
+            }];
+            UIAlertAction *action5 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+                NSLog(@"取消");
+            }];
+            [action1 setValue:k6 forKey:@"_titleTextColor"];
+            [action2 setValue:k6 forKey:@"_titleTextColor"];
+            [action3 setValue:k6 forKey:@"_titleTextColor"];
+            [action4 setValue:k6 forKey:@"_titleTextColor"];
+            [action5 setValue:k6 forKey:@"_titleTextColor"];
+
+            //把action添加到actionSheet里
+            [actionSheet addAction:action1];
+            [actionSheet addAction:action2];
+            [actionSheet addAction:action3];
+            [actionSheet addAction:action4];
+            [actionSheet addAction:action5];
+            //相当于之前的[actionSheet show];
+            [weakSelf presentViewController:actionSheet animated:YES completion:nil];
+        }
     }];
 }
 - (void)selectPhoto
@@ -161,8 +188,9 @@
 {
     NSString * urlString = [AppUserModel sharedAppUserModel].HistoryAvatarUrl;
     if (urlString.length > 0) {
-        NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@"_50_50" withString:@""];
-        [self.iconView sd_setImageWithURL:[NSURL URLWithString:strUrl]];
+        MyUserIconVC * vc = [MyUserIconVC initMyUserIconVC];
+        vc.HistoryVC = YES;
+        [self.navigationController pushViewController:vc animated:YES];
     }else{
         [ShowtipTool showMessageWithStatus:@"没有历史头像"];
     }

+ 6 - 18
smartRhino/Project/VCModel/My_Center/Controller/My_CenterVC.m

@@ -36,11 +36,7 @@
     self.fd_prefersNavigationBarHidden = YES;
     self.view.backgroundColor = RGB(240, 239, 244);
     
-    if (@available(iOS 11.0, *)) {
-        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-    } else {
-        self.automaticallyAdjustsScrollViewInsets = NO;
-    }
+    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(PushSettingVC:) name:DRAWERPUSHVC object:nil];
     self.tableView.delegate = self;
     self.tableView.dataSource = self;
@@ -73,12 +69,10 @@
         case 0:{
             return 1;
         }break;
-        case 1:{
+        default:{
             return 5;
         }break;
-        default:break;
     }
-    return 0;
 }
 
 
@@ -87,12 +81,10 @@
         case 0:{
             return [My_CenterCell configCell0Height];
         }break;
-        case 1:{
+        default:{
             return [My_CenterCell configCell1Height];
         }break;
-        default:break;
     }
-    return 0;
 }
 
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
@@ -101,11 +93,11 @@
             My_CenterCell *cell = [My_CenterCell configCell0:tableView indexPath:indexPath];
             [cell.cell0UserImgView sd_setImageWithURL:[NSURL URLWithString:[AppUserModel sharedAppUserModel].AvatarUrl] placeholderImage:[UIImage imageNamed:@"my_conter_TestUserImg"]];
             NSLog(@"%@",[AppUserModel sharedAppUserModel].Name);
-            cell.cell0UserName.text = ISEmptyString([AppUserModel sharedAppUserModel].Nick) ? @"昵称":[AppUserModel sharedAppUserModel].Name;
+            cell.cell0UserName.text = [AppUserModel sharedAppUserModel].Name;
             cell.cell0Intrt.text = ISEmptyString([AppUserModel sharedAppUserModel].Description) ? @"自我介绍":[AppUserModel sharedAppUserModel].Description ;
             return cell;
         }break;
-        case 1:{
+        default:{
             My_CenterCell *cell = [My_CenterCell configCell1:tableView indexPath:indexPath];
             switch (indexPath.row) {
                 case 0: {
@@ -133,9 +125,7 @@
             }
             return cell;
         }break;
-        default:break;
     }
-    return nil;
 }
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
@@ -152,7 +142,7 @@
                     break;
             }
         }break;
-        case 1:{
+        default:{
             switch (indexPath.row) {
                 case 0:{
                     MyAccountVC *vc = [MyAccountVC initMyAccountVC];
@@ -181,8 +171,6 @@
                     break;
             }
         }break;
-        default:
-            break;
     }
     
 }

+ 2 - 0
smartRhino/Project/VCModel/My_Center/Controller/NoteBook/Controller/NoteBookEditSearchVC.m

@@ -33,6 +33,8 @@
 #import "OtherFavoriteVC.h"
 #import "OtherNoteBookVC.h"
 #import "MailListDetailVC.h"
+#import "BookWCDetailVC.h"
+#import "BookListenVC.h"
 
 @interface NoteBookEditSearchVC ()<UITableViewDelegate,UITableViewDataSource>
 @property (nonatomic, assign) NSUInteger  currentPage;

+ 17 - 0
smartRhino/Project/VCModel/My_Center/Controller/NoteBook/Controller/NoteBookSearchVC.m

@@ -33,6 +33,8 @@
 #import "OtherFavoriteVC.h"
 #import "OtherNoteBookVC.h"
 #import "MailListDetailVC.h"
+#import "BookWCDetailVC.h"
+#import "BookListenVC.h"
 
 @interface NoteBookSearchVC ()<UITableViewDelegate,UITableViewDataSource,NoteBookShareVCDelegate>
 @property (nonatomic, assign) NSUInteger  currentPage;
@@ -1230,6 +1232,21 @@
             [self.navigationController pushViewController:vc animated:YES];
         }
             break;
+        case CollectModel_StoreSound:
+        {
+            BookListenVC * vc = [BookListenVC initBookListenVC];
+            vc.Id = model.Id;
+            vc.MediaType = MediaMusicType;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            BookWCDetailVC * vc = [BookWCDetailVC initBookWCDetailVC];
+            vc.Id = model.Id;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
         case CollectModel_meetDetail:
         {
             WorkFlowDetailsController *  vc = [[WorkFlowDetailsController alloc] initWithId:model.Id];

+ 17 - 0
smartRhino/Project/VCModel/My_Center/Controller/NoteBook/Controller/NoteBookVC.m

@@ -38,6 +38,8 @@
 #import "TopicBookCell.h"
 #import "NoteDraftVC.h"
 #import "NoteTopicDraftListVC.h"
+#import "BookWCDetailVC.h"
+#import "BookListenVC.h"
 
 @interface NoteBookVC ()<UITableViewDataSource,UITableViewDelegate,NoteBookShareVCDelegate>
 @property (weak, nonatomic) IBOutlet UIButton *rightAddButton;
@@ -3616,6 +3618,21 @@
             [self.navigationController pushViewController:vc animated:YES];
         }
             break;
+        case CollectModel_StoreSound:
+        {
+            BookListenVC * vc = [BookListenVC initBookListenVC];
+            vc.Id = model.Id;
+            vc.MediaType = MediaMusicType;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            BookWCDetailVC * vc = [BookWCDetailVC initBookWCDetailVC];
+            vc.Id = model.Id;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
         case CollectModel_meetDetail:
         {
             WorkFlowDetailsController *  vc = [[WorkFlowDetailsController alloc] initWithId:model.Id];

+ 17 - 0
smartRhino/Project/VCModel/My_Center/Controller/NoteBook/Controller/OtherNoteBookVC.m

@@ -34,6 +34,8 @@
 #import "ShareListVC.h"
 #import "MyTDGroupView.h"
 #import "OtherFavoriteVC.h"
+#import "BookWCDetailVC.h"
+#import "BookListenVC.h"
 
 @interface OtherNoteBookVC ()<UITableViewDataSource,UITableViewDelegate,NoteBookShareVCDelegate>
 @property (strong, nonatomic) UITableView     *tableView;
@@ -1268,6 +1270,21 @@
             [self.navigationController pushViewController:vc animated:YES];
         }
             break;
+        case CollectModel_StoreSound:
+        {
+            BookListenVC * vc = [BookListenVC initBookListenVC];
+            vc.Id = model.Id;
+            vc.MediaType = MediaMusicType;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            BookWCDetailVC * vc = [BookWCDetailVC initBookWCDetailVC];
+            vc.Id = model.Id;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
         default:
         {
             DownFileViewController *vc = [[DownFileViewController alloc]init];

+ 33 - 1
smartRhino/Project/VCModel/My_Center/Controller/NoteBook/View/NoteBookCell.m

@@ -28,8 +28,10 @@
     self.cell1IconImage.userInteractionEnabled = YES;
     [self.cell1Title addGestureRecognizer:tap];
     self.cell1Title.userInteractionEnabled = YES;
-    self.cell1IconImage.layer.cornerRadius = 5;
+    self.cell1IconImage.layer.cornerRadius = 5.f;
     self.cell1IconImage.layer.masksToBounds = YES;
+    self.addImageV.layer.cornerRadius = 4.f;
+    self.addImageV.layer.masksToBounds = YES;
 }
 
 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
@@ -298,6 +300,8 @@
 }
 - (void)setDataWithCell:(MyNoteBookeDataModel *)model
 {
+    WS(weakSelf);
+    [self.addImageV removeAllSubviews];
     NSString * imageStr = [ZYCTool getFileNameImage:model.Title];
     switch (model.Type) {
         case CollectModel_Aritle:
@@ -305,6 +309,34 @@
             self.addImageV.image = IMG(@"文章");
         }
             break;
+        case CollectModel_StoreSound:
+        {
+            [self.addImageV sd_setImageWithURL:[NSURL URLWithString:model.File] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.addImageV addSubview:clearV];
+                    clearV.image = IMG(@"clear_audio");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.addImageV);
+                    }];
+                });
+            }];
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            [self.addImageV sd_setImageWithURL:[NSURL URLWithString:model.File] placeholderImage:IMG(@"default_video") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.addImageV addSubview:clearV];
+                    clearV.image = IMG(@"clear_video");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.addImageV);
+                    }];
+                });
+            }];
+        }
+            break;
         case CollectModel_Toipc:
         {
             self.addImageV.image = IMG(@"话题");

+ 2 - 2
smartRhino/Project/VCModel/My_Center/Controller/NoteBook/View/NoteBookCell.xib

@@ -1844,7 +1844,7 @@
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JFd-A5-G9n">
                                 <rect key="frame" x="0.0" y="0.0" width="290" height="70"/>
                             </button>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_shareae" translatesAutoresizingMaskIntoConstraints="NO" id="5bG-UN-hPN">
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_shareae" translatesAutoresizingMaskIntoConstraints="NO" id="5bG-UN-hPN">
                                 <rect key="frame" x="10" y="10" width="50" height="50"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="50" id="4hN-kJ-UAQ"/>
@@ -3425,7 +3425,7 @@
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qnb-KA-nRX">
                         <rect key="frame" x="42" y="113.5" width="228" height="70"/>
                         <subviews>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_shareae" translatesAutoresizingMaskIntoConstraints="NO" id="Q3Y-c7-stm">
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_shareae" translatesAutoresizingMaskIntoConstraints="NO" id="Q3Y-c7-stm">
                                 <rect key="frame" x="10" y="10" width="50" height="50"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="50" id="IFt-3M-WDG"/>

+ 94 - 2
smartRhino/Project/VCModel/common/Controller/CommomSearchVC.m

@@ -31,6 +31,9 @@
 #import "TDGroupInfoListVC.h"
 #import "MailListVC.h"
 #import "ShareListVC.h"
+#import "BookWCDetailVC.h"
+#import "BookListenVC.h"
+#import "BookTeacherDetailVC.h"
 
 @interface CommomSearchVC ()<UITableViewDelegate,UITableViewDataSource>
 @property (nonatomic, copy) NSMutableArray *listArray;
@@ -116,8 +119,75 @@
 {
     CommonListCell *cell = [CommonListCell configCell1:tableView indexPath:indexPath];
     MyFavoriteSubModel * model = [self.listArray objectAtIndex:indexPath.row];
-    [cell setCellData:model withText:self.searchText];
-    return cell;
+    if (model.CollectionType == CollectModel_TopicBooK) {
+        CommonListCell *cell = [CommonListCell configCell2:tableView indexPath:indexPath];
+        [cell setCellTopicBookData:model];
+        WS(weakSelf);
+        [cell.desBtn setAction:^{
+            MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
+            vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
+            vc.FolderId = model.FolderId;
+            vc.myTitle =  model.FolderName;
+            [weakSelf.navigationController pushViewController:vc animated:YES];
+        }];
+        return cell;
+    }else{
+        switch (model.CollectionType) {
+            case CollectModel_Teacher:
+            {
+                CommonListCell *cell = [CommonListCell configCell2:tableView indexPath:indexPath];
+                [cell setCellNoAuthorData:model withText:self.searchText];
+                WS(weakSelf);
+                [cell.desBtn setAction:^{
+                    MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
+                    vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
+                    vc.FolderId = model.FolderId;
+                    vc.myTitle =  model.FolderName;
+                    [weakSelf.navigationController pushViewController:vc animated:YES];
+                }];
+                return cell;
+            }
+                break;
+            default:
+            {
+                if (model.CollectionType != CollectModel_Toipc && model.Data.Author.length == 0) {
+                    CommonListCell *cell = [CommonListCell configCell2:tableView indexPath:indexPath];
+                    [cell setCellNoAuthorData:model withText:self.searchText];
+                    WS(weakSelf);
+                    [cell.desBtn setAction:^{
+                        MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
+                        vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
+                        vc.FolderId = model.FolderId;
+                        vc.myTitle =  model.FolderName;
+                        [weakSelf.navigationController pushViewController:vc animated:YES];
+                    }];
+                    return cell;
+                }else{
+                    CommonListCell *cell = [CommonListCell configCell1:tableView indexPath:indexPath];
+                    [cell setCellData:model withText:self.searchText];
+                    WS(weakSelf);
+                    [cell.desBtn setAction:^{
+                        MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
+                        vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
+                        vc.FolderId = model.FolderId;
+                        vc.myTitle =  model.FolderName;
+                        [weakSelf.navigationController pushViewController:vc animated:YES];
+                    }];
+                    if (model.CollectionType == CollectModel_Toipc) {
+                        [cell.comeBtn setAction:^{
+                            TDGroupInfoListVC * vc = [TDGroupInfoListVC initTDGroupInfoListVC];
+                            vc.GroupId = model.Data.GroupId;
+                            vc.titleStr = model.Data.GroupName;
+                            [weakSelf.navigationController pushViewController:vc animated:YES];
+
+                        }];
+                    }
+                    return cell;
+                }
+            }
+                break;
+        }
+    }
 }
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
@@ -280,6 +350,28 @@
             vc.type = CollectModel_meetMian;
             [self.navigationController pushViewController:vc animated:YES];
         }break;
+        case CollectModel_StoreSound:
+        {
+            BookListenVC * vc = [BookListenVC initBookListenVC];
+            vc.Id = model.CollectionDataId;
+            vc.MediaType = MediaMusicType;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            BookWCDetailVC * vc = [BookWCDetailVC initBookWCDetailVC];
+            vc.Id = model.CollectionDataId;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+        case CollectModel_Teacher:
+        {
+            BookTeacherDetailVC * vc = [BookTeacherDetailVC initBookTeacherDetailVC];
+            vc.Id = model.CollectionDataId;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
         case CollectModel_financeCount:{
             CountDataVC *vc = [CountDataVC initCountDataVC];
             vc.index = 0;

+ 63 - 30
smartRhino/Project/VCModel/common/Controller/CommonHomeVC.m

@@ -37,6 +37,7 @@
 #import "ShareListVC.h"
 #import "BookWCDetailVC.h"
 #import "BookListenVC.h"
+#import "BookTeacherDetailVC.h"
 
 @interface CommonHomeVC ()<UITableViewDelegate,UITableViewDataSource,UICollectionViewDelegate,UICollectionViewDataSource,NoteBookShareVCDelegate>
 @property (weak, nonatomic) IBOutlet UIView             *NavBar;
@@ -244,39 +245,60 @@
                 }];
                 return cell;
             }else{
-                if (model.CollectionType != CollectModel_Toipc && model.Data.Author.length == 0) {
-                    CommonListCell *cell = [CommonListCell configCell2:tableView indexPath:indexPath];
-                    [cell setCellNoAuthorData:model];
-                    WS(weakSelf);
-                    [cell.desBtn setAction:^{
-                        MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
-                        vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
-                        vc.FolderId = model.FolderId;
-                        vc.myTitle =  model.FolderName;
-                        [weakSelf.navigationController pushViewController:vc animated:YES];
-                    }];
-                    return cell;
-                }else{
-                    CommonListCell *cell = [CommonListCell configCell1:tableView indexPath:indexPath];
-                    [cell setCell1Data:model];
-                    WS(weakSelf);
-                    [cell.desBtn setAction:^{
-                        MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
-                        vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
-                        vc.FolderId = model.FolderId;
-                        vc.myTitle =  model.FolderName;
-                        [weakSelf.navigationController pushViewController:vc animated:YES];
-                    }];
-                    if (model.CollectionType == CollectModel_Toipc) {
-                        [cell.comeBtn setAction:^{
-                            TDGroupInfoListVC * vc = [TDGroupInfoListVC initTDGroupInfoListVC];
-                            vc.GroupId = model.Data.GroupId;
-                            vc.titleStr = model.Data.GroupName;
+                switch (model.CollectionType) {
+                    case CollectModel_Teacher:
+                    {
+                        CommonListCell *cell = [CommonListCell configCell2:tableView indexPath:indexPath];
+                        [cell setCellNoAuthorData:model];
+                        WS(weakSelf);
+                        [cell.desBtn setAction:^{
+                            MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
+                            vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
+                            vc.FolderId = model.FolderId;
+                            vc.myTitle =  model.FolderName;
                             [weakSelf.navigationController pushViewController:vc animated:YES];
-
                         }];
+                        return cell;
                     }
-                    return cell;
+                        break;
+                    default:
+                    {
+                        if (model.CollectionType != CollectModel_Toipc && model.Data.Author.length == 0) {
+                            CommonListCell *cell = [CommonListCell configCell2:tableView indexPath:indexPath];
+                            [cell setCellNoAuthorData:model];
+                            WS(weakSelf);
+                            [cell.desBtn setAction:^{
+                                MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
+                                vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
+                                vc.FolderId = model.FolderId;
+                                vc.myTitle =  model.FolderName;
+                                [weakSelf.navigationController pushViewController:vc animated:YES];
+                            }];
+                            return cell;
+                        }else{
+                            CommonListCell *cell = [CommonListCell configCell1:tableView indexPath:indexPath];
+                            [cell setCell1Data:model];
+                            WS(weakSelf);
+                            [cell.desBtn setAction:^{
+                                MyFavoriteVC * vc = [MyFavoriteVC initMyFavoriteVC];
+                                vc.listType = model.FolderId == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
+                                vc.FolderId = model.FolderId;
+                                vc.myTitle =  model.FolderName;
+                                [weakSelf.navigationController pushViewController:vc animated:YES];
+                            }];
+                            if (model.CollectionType == CollectModel_Toipc) {
+                                [cell.comeBtn setAction:^{
+                                    TDGroupInfoListVC * vc = [TDGroupInfoListVC initTDGroupInfoListVC];
+                                    vc.GroupId = model.Data.GroupId;
+                                    vc.titleStr = model.Data.GroupName;
+                                    [weakSelf.navigationController pushViewController:vc animated:YES];
+
+                                }];
+                            }
+                            return cell;
+                        }
+                    }
+                        break;
                 }
             }
         }
@@ -453,6 +475,13 @@
                 [self.navigationController pushViewController:vc animated:YES];
             }
                 break;
+            case CollectModel_Teacher:
+            {
+                BookTeacherDetailVC * vc = [BookTeacherDetailVC initBookTeacherDetailVC];
+                vc.Id = model.CollectionDataId;
+                [self.navigationController pushViewController:vc animated:YES];
+            }
+                break;
             case CollectModel_meetMian:{
                 MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
                 vc.Id = model.CollectionDataId;
@@ -713,6 +742,10 @@
         UIContextualAction *action1 = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:@"转发" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
             [tableView setEditing:NO animated:YES];
             weakSelf.sendModel = model;
+            if (model.CollectionType == CollectModel_StoreSound || weakSelf.sendModel.CollectionType == CollectModel_StoreVideo) {
+                weakSelf.sendModel.Data.MinFile = weakSelf.sendModel.Data.ArticleImgUrl.firstObject;
+                weakSelf.sendModel.Data.File = weakSelf.sendModel.Data.ArticleImgUrl.firstObject;
+            }
             [weakSelf shareHander];
         }];
         action1.backgroundColor = UIColorHex(#FF923A);

+ 1 - 1
smartRhino/Project/VCModel/common/View/CommonListCell.h

@@ -30,7 +30,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)setCellNoAuthorData:(MyFavoriteSubModel *)model;
 - (void)setCellTopicBookData:(MyFavoriteSubModel *)model;
 - (void)setCellData:(MyFavoriteSubModel *)model withText:(NSString *)text;
-
+- (void)setCellNoAuthorData:(MyFavoriteSubModel *)model withText:(NSString *)text;
 @end
 
 NS_ASSUME_NONNULL_END

+ 256 - 15
smartRhino/Project/VCModel/common/View/CommonListCell.m

@@ -57,6 +57,7 @@
     self.iconShowL.hidden = YES;
     self.comeBtn.hidden = YES;
     self.isTopV.hidden = !model.IsTop;
+    [self.iconV removeAllSubviews];
     [self.titleL mas_remakeConstraints:^(MASConstraintMaker *make) {
         make.left.mas_equalTo(self.iconV.mas_right).offset(15);
         make.top.mas_offset(model.CollectionType == CollectModel_TopicBooK ? 40.25 : 15);
@@ -145,15 +146,29 @@
             break;
         case CollectModel_StoreSound:
         {
-            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_audio");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.iconV);
+                    }];
+                });
             }];
         }
             break;
         case CollectModel_StoreVideo:
         {
-            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_video") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_video");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.iconV);
+                    }];
+                });
             }];
         }
             break;
@@ -182,6 +197,27 @@
         }break;
     }
 }
+
+- (void)image:(UIImage *)image clearImage:(NSString *)clearImage IconV:(UIImageView *)imgV {
+    
+    UIImage *image1 = [UIImage imageNamed:clearImage];
+    CGSize size = CGSizeMake([UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height);
+    UIGraphicsBeginImageContext(size);
+    [image drawInRect:CGRectMake(0, 0, 40,40)];
+    [image1 drawInRect:CGRectMake(0, 0, 40,40)];
+    UIImage *ZImage = UIGraphicsGetImageFromCurrentImageContext();
+    UIGraphicsEndImageContext();
+    imgV.image = ZImage;
+}
+
+- (void)setCalayerImage:(UIImageView *)imgV image:(NSString *)image
+{
+    CALayer *mask = [CALayer layer];
+    mask.contents = (id)[[UIImage imageNamed:image] CGImage];
+    mask.frame = CGRectMake(0, 0, 40, 40);
+    imgV.layer.mask = mask;
+    imgV.layer.masksToBounds = YES;
+}
 - (void)setCellTopicBookData:(MyFavoriteSubModel *)model
 {
     self.iconV.image = IMG(@"topicBook");
@@ -197,7 +233,8 @@
     self.comeBtn.hidden = YES;
     self.isTopV.hidden = !model.IsTop;
     self.titleL.text = [model.Data.Title length] > 0 ? model.Data.Title : model.Title;
-    [self.desBtn setTitle:[model.FolderName length] > 0 ? model.FolderName : @" " forState:UIControlStateNormal];
+    [self.desBtn setTitle:[model.FolderName length] > 0 ? model.FolderName : @"" forState:UIControlStateNormal];
+    [self.iconV removeAllSubviews];
     switch (model.CollectionType) {
             // 文章
         case CollectModel_Aritle:{
@@ -269,7 +306,8 @@
             }else{
                 self.iconV.image = IMG(imageStr);
             }
-        }break;
+        }
+            break;
         case CollectModel_work:
         {
             self.iconV.image = IMG(@"审批");
@@ -282,18 +320,39 @@
             break;
         case CollectModel_StoreSound:
         {
-            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-  
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_audio");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.iconV);
+                    }];
+                });
             }];
         }
             break;
         case CollectModel_StoreVideo:
         {
-            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"icon_weizhiwenjian") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
-                
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_video") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_video");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.iconV);
+                    }];
+                });
             }];
         }
             break;
+        case CollectModel_Teacher:
+        {
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+            self.titleL.text = model.Data.Author;
+            self.nameL.hidden = YES;
+        }
+            break;
         case CollectModel_affairsCount:
         {
             self.iconV.image = IMG(@"报表");
@@ -314,14 +373,161 @@
         }break;
     }
 }
+- (void)setCellNoAuthorData:(MyFavoriteSubModel *)model withText:(NSString *)text
+{
+    WS(weakSelf);
+    self.nameL.hidden = NO;
+    self.iconShowL.hidden = YES;
+    self.comeBtn.hidden = YES;
+    self.isTopV.hidden = !model.IsTop;
+    self.titleL.attributedText = [ZYCTool checkOfString:model.Data.Title withSearchText:text withColor:UIColorHex(0xFF5252)];
+    self.nameL.attributedText = [model.Data.Author length] > 0 ? [ZYCTool checkOfString:model.Data.Author withSearchText:text withColor:UIColorHex(0xFF5252)] : [[NSAttributedString alloc] initWithString:@" "];
+    [self.desBtn setAttributedTitle:[model.FolderName length] > 0 ?  [ZYCTool checkOfString:model.FolderName withSearchText:text withColor:UIColorHex(0xFF5252)] : [[NSAttributedString alloc] initWithString:@" "] forState:UIControlStateNormal];
+    [self.iconV removeAllSubviews];
+    switch (model.CollectionType) {
+            // 文章
+        case CollectModel_Aritle:{
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"文章")];
+        }break;
+            // 话题 || 小组
+        case CollectModel_Toipc:
+        {
+            self.iconV.image = IMG(@"话题");
+            self.comeBtn.hidden = NO;
+            [self.comeBtn setAttributedTitle:[self comeGroup:model.GroupName] forState:UIControlStateNormal];
+        }break;
+        case CollectModel_NewTopic:
+        {
+            self.iconV.image = IMG(@"话题");
+        }break;
+        case CollectModel_Group:{
+            self.iconV.image = IMG(@"笔记小组");
+        }break;
+            // 收藏
+        case CollectModel_Collect:{
+            self.iconV.image = IMG(@"收藏");
+        }break;
+            // 笔记
+        case CollectModel_NoteBook: {
+            self.iconV.image = IMG(@"noteBook_icon");
+        }break;
+        case CollectModel_CollectFile:{
+            self.titleL.attributedText = [ZYCTool checkOfString:model.Title withSearchText:text withColor:UIColorHex(0xFF5252)];
+            self.iconV.image = IMG(@"find_1");
+            self.comeBtn.hidden = NO;
+            self.nameL.text = @"";
+            self.comeLeft.constant = 0.f;
+            [self.comeBtn setAttributedTitle:[self comeGroup:[NSString stringWithFormat:@"%@的收藏",model.Data.Author]] forState:UIControlStateNormal];
+        }break;
+        case CollectModel_NoteFile: {
+            self.iconV.image = IMG(@"find_1");
+        }break;
+        case CollectModel_TopicBooK:{
+            self.iconV.image = IMG(@"topicBook");
+        }break;
+        case CollectModel_TopicSubBooK: {
+            self.iconV.image = IMG(@"find_1");
+        }break;
+            // 通知 || 站内信
+        case CollectModel_Notice:
+        {
+            self.iconV.image = IMG(@"通知图标");
+        }break;
+        case CollectModel_InterMail:{
+            self.iconV.image = IMG(@"站内信");
+        }break;
+            // 会议
+        case CollectModel_meetMian:
+        {
+            self.iconV.image = IMG(@"会议纪要");
+        }
+            break;
+        case CollectModel_meetDetail:
+        {
+            self.iconV.image = IMG(@"会议");
+        }
+            break;
+        case CollectModel_file:{
+            NSString * imageStr = [ZYCTool getFileNameImage:model.Data.FileName];
+            if (imageStr.length == 0) {
+                [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.File]];
+            }else{
+                self.iconV.image = IMG(imageStr);
+            }
+        }break;
+        case CollectModel_work:
+        {
+            self.iconV.image = IMG(@"审批");
+        }
+            break;
+        case CollectModel_StoreSound:
+        {
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_audio");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.iconV);
+                    }];
+                });
+            }];
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_video") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_video");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.iconV);
+                    }];
+                });
+            }];
+        }
+            break;
+        case CollectModel_Teacher:
+        {
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+            self.titleL.attributedText = [model.Data.Author length] > 0 ? [ZYCTool checkOfString:model.Data.Author withSearchText:text withColor:UIColorHex(0xFF5252)] : [[NSAttributedString alloc] initWithString:@" "];
+            self.nameL.hidden = YES;
+        }
+            break;
+        case CollectModel_financeCount:
+        {
+            self.iconV.image = IMG(@"报表");
+        }
+            break;
+        case CollectModel_affairsCount:
+        {
+            self.iconV.image = IMG(@"报表");
+        }
+            break;
+        case CollectModel_publishCount:
+        {
+            self.iconV.image = IMG(@"报表");
+        }
+            break;
+        default:{
+            NSString * imageStr = [ZYCTool getFileNameImage:model.Data.FileName];
+            if (imageStr.length == 0) {
+                [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.MinFile]];
+            }else{
+                self.iconV.image = IMG(imageStr);
+            }
+        }break;
+    }
+}
 - (void)setCellData:(MyFavoriteSubModel *)model withText:(NSString *)text
 {
+    WS(weakSelf);
+    self.nameL.hidden = NO;
+    self.iconShowL.hidden = YES;
+    self.comeBtn.hidden = YES;
+    self.isTopV.hidden = !model.IsTop;
     self.isTopV.hidden = !model.IsTop;
-    [self.titleL mas_remakeConstraints:^(MASConstraintMaker *make) {
-        make.left.mas_equalTo(self.iconV.mas_right).offset(15);
-        make.height.mas_greaterThanOrEqualTo(20);
-        make.width.mas_lessThanOrEqualTo(SCREEN_WIDTH - (model.IsTop ? 125 : 85));
-    }];
     self.titleL.attributedText = [ZYCTool checkOfString:model.Data.Title withSearchText:text withColor:UIColorHex(0xFF5252)];
     self.nameL.attributedText = [model.Data.Author length] > 0 ? [ZYCTool checkOfString:model.Data.Author withSearchText:text withColor:UIColorHex(0xFF5252)] : [[NSAttributedString alloc] initWithString:@" "];
     [self.desBtn setAttributedTitle:[model.FolderName length] > 0 ?  [ZYCTool checkOfString:model.FolderName withSearchText:text withColor:UIColorHex(0xFF5252)] : [[NSAttributedString alloc] initWithString:@" "] forState:UIControlStateNormal];
@@ -402,6 +608,41 @@
             self.iconV.image = IMG(@"审批");
         }
             break;
+        case CollectModel_StoreSound:
+        {
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_audio") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_audio");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.iconV);
+                    }];
+                });
+            }];
+        }
+            break;
+        case CollectModel_StoreVideo:
+        {
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.ArticleImgUrl.firstObject] placeholderImage:IMG(@"default_video") completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    UIImageView * clearV = [UIImageView new];
+                    [weakSelf.iconV addSubview:clearV];
+                    clearV.image = IMG(@"clear_video");
+                    [clearV mas_makeConstraints:^(MASConstraintMaker *make) {
+                        make.edges.mas_equalTo(weakSelf.iconV);
+                    }];
+                });
+            }];
+        }
+            break;
+        case CollectModel_Teacher:
+        {
+            [self.iconV sd_setImageWithURL:[NSURL URLWithString:model.Data.AvatarUrl] placeholderImage:IMG(@"icon_weizhiwenjian")];
+            self.titleL.attributedText = [model.Data.Author length] > 0 ? [ZYCTool checkOfString:model.Data.Author withSearchText:text withColor:UIColorHex(0xFF5252)] : [[NSAttributedString alloc] initWithString:@" "];
+            self.nameL.hidden = YES;
+        }
+            break;
         case CollectModel_financeCount:
         {
             self.iconV.image = IMG(@"报表");

+ 29 - 29
smartRhino/Project/VCModel/common/View/CommonListCell.xib

@@ -20,15 +20,15 @@
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <point key="canvasLocation" x="139" y="153"/>
         </tableViewCell>
-        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonListCell1" rowHeight="410" id="mKl-Yw-yJJ" customClass="CommonListCell">
-            <rect key="frame" x="0.0" y="0.0" width="338" height="111"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonListCell1" rowHeight="387" id="mKl-Yw-yJJ" customClass="CommonListCell">
+            <rect key="frame" x="0.0" y="0.0" width="338" height="88"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mKl-Yw-yJJ" id="8Mf-6v-eUM">
-                <rect key="frame" x="0.0" y="0.0" width="338" height="111"/>
+                <rect key="frame" x="0.0" y="0.0" width="338" height="88"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" text="文件夹类型" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7id-tv-Nnd">
-                        <rect key="frame" x="70" y="15" width="90.5" height="42.5"/>
+                        <rect key="frame" x="70" y="8" width="90.5" height="40"/>
                         <constraints>
                             <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="Gea-xa-rYg"/>
                         </constraints>
@@ -37,7 +37,7 @@
                         <nil key="highlightedColor"/>
                     </label>
                     <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_placeHolder" translatesAutoresizingMaskIntoConstraints="NO" id="cCf-ee-0J6">
-                        <rect key="frame" x="15" y="29.5" width="40" height="40"/>
+                        <rect key="frame" x="15" y="18" width="40" height="40"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="40" id="RiD-jb-W1S"/>
                             <constraint firstAttribute="height" constant="40" id="nyC-oA-kE5"/>
@@ -50,7 +50,7 @@
                         </userDefinedRuntimeAttributes>
                     </imageView>
                     <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="文 章" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QgS-Mw-Nc4">
-                        <rect key="frame" x="15" y="57.5" width="40" height="12"/>
+                        <rect key="frame" x="15" y="46" width="40" height="12"/>
                         <color key="backgroundColor" red="0.29411764705882354" green="0.67450980392156867" blue="0.77647058823529413" alpha="1" colorSpace="calibratedRGB"/>
                         <constraints>
                             <constraint firstAttribute="height" constant="12" id="LN8-pi-p7z"/>
@@ -60,25 +60,25 @@
                         <nil key="highlightedColor"/>
                     </label>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3d7-xH-uiA">
-                        <rect key="frame" x="0.0" y="110.5" width="338" height="0.5"/>
+                        <rect key="frame" x="0.0" y="87.5" width="338" height="0.5"/>
                         <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
                             <constraint firstAttribute="height" constant="0.5" id="RZC-vB-DvE"/>
                         </constraints>
                     </view>
                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="84L-UB-7zZ">
-                        <rect key="frame" x="70" y="73" width="0.0" height="0.0"/>
+                        <rect key="frame" x="70" y="61.5" width="0.0" height="0.0"/>
                         <fontDescription key="fontDescription" name="PingFangSC-Regular" family="PingFang SC" pointSize="12"/>
                         <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                         <nil key="highlightedColor"/>
                     </label>
                     <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="置顶" translatesAutoresizingMaskIntoConstraints="NO" id="QxE-nS-rLu">
-                        <rect key="frame" x="170.5" y="28.5" width="30" height="16"/>
+                        <rect key="frame" x="170.5" y="20" width="30" height="16"/>
                     </imageView>
                     <button opaque="NO" contentMode="scaleToFill" verticalCompressionResistancePriority="751" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3Fd-9i-Mm0">
-                        <rect key="frame" x="15" y="83" width="30" height="20"/>
+                        <rect key="frame" x="15" y="68" width="30" height="12"/>
                         <constraints>
-                            <constraint firstAttribute="height" constant="20" id="dYy-1f-dUU"/>
+                            <constraint firstAttribute="height" constant="12" id="dYy-1f-dUU"/>
                         </constraints>
                         <fontDescription key="fontDescription" type="system" pointSize="12"/>
                         <state key="normal">
@@ -86,7 +86,7 @@
                         </state>
                     </button>
                     <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hv5-8I-1dA">
-                        <rect key="frame" x="80" y="65.5" width="38" height="15"/>
+                        <rect key="frame" x="80" y="54" width="38" height="15"/>
                         <constraints>
                             <constraint firstAttribute="height" constant="15" id="wWw-hv-UIU"/>
                         </constraints>
@@ -101,17 +101,17 @@
                     <constraint firstItem="3d7-xH-uiA" firstAttribute="leading" secondItem="8Mf-6v-eUM" secondAttribute="leading" id="B83-7R-eRX"/>
                     <constraint firstItem="QxE-nS-rLu" firstAttribute="leading" secondItem="7id-tv-Nnd" secondAttribute="trailing" constant="10" id="LDS-P6-o7G"/>
                     <constraint firstItem="QgS-Mw-Nc4" firstAttribute="trailing" secondItem="cCf-ee-0J6" secondAttribute="trailing" id="OUq-VP-o2f"/>
-                    <constraint firstItem="hv5-8I-1dA" firstAttribute="top" secondItem="7id-tv-Nnd" secondAttribute="bottom" constant="8" id="WeL-ZT-SjY"/>
-                    <constraint firstItem="3Fd-9i-Mm0" firstAttribute="top" secondItem="84L-UB-7zZ" secondAttribute="bottom" constant="10" id="Wvh-yD-7dj"/>
+                    <constraint firstItem="hv5-8I-1dA" firstAttribute="top" secondItem="7id-tv-Nnd" secondAttribute="bottom" constant="6" id="WeL-ZT-SjY"/>
+                    <constraint firstItem="3Fd-9i-Mm0" firstAttribute="top" secondItem="cCf-ee-0J6" secondAttribute="bottom" constant="10" id="Wvh-yD-7dj"/>
                     <constraint firstItem="84L-UB-7zZ" firstAttribute="centerY" secondItem="hv5-8I-1dA" secondAttribute="centerY" id="bRe-Zz-ZgI"/>
                     <constraint firstItem="cCf-ee-0J6" firstAttribute="leading" secondItem="8Mf-6v-eUM" secondAttribute="leading" constant="15" id="dVe-Nj-QOF"/>
                     <constraint firstItem="84L-UB-7zZ" firstAttribute="leading" secondItem="7id-tv-Nnd" secondAttribute="leading" id="daM-2t-Cwl"/>
-                    <constraint firstItem="7id-tv-Nnd" firstAttribute="top" secondItem="8Mf-6v-eUM" secondAttribute="top" constant="15" id="nin-UW-Lrc"/>
+                    <constraint firstItem="7id-tv-Nnd" firstAttribute="top" secondItem="8Mf-6v-eUM" secondAttribute="top" constant="8" id="nin-UW-Lrc"/>
                     <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="7id-tv-Nnd" secondAttribute="trailing" constant="55" id="orc-8J-A7s"/>
                     <constraint firstItem="QgS-Mw-Nc4" firstAttribute="bottom" secondItem="cCf-ee-0J6" secondAttribute="bottom" id="pvL-Pa-gNc"/>
                     <constraint firstItem="3Fd-9i-Mm0" firstAttribute="leading" secondItem="8Mf-6v-eUM" secondAttribute="leading" constant="15" id="qk0-Ib-Xbs"/>
                     <constraint firstAttribute="bottom" secondItem="3d7-xH-uiA" secondAttribute="bottom" id="r09-ZB-T6w"/>
-                    <constraint firstItem="cCf-ee-0J6" firstAttribute="centerY" secondItem="7id-tv-Nnd" secondAttribute="centerY" constant="13.25" id="uaJ-Uh-xUy"/>
+                    <constraint firstItem="cCf-ee-0J6" firstAttribute="centerY" secondItem="7id-tv-Nnd" secondAttribute="centerY" constant="10" id="uaJ-Uh-xUy"/>
                     <constraint firstItem="hv5-8I-1dA" firstAttribute="leading" secondItem="84L-UB-7zZ" secondAttribute="trailing" constant="10" id="wR9-xj-43E"/>
                     <constraint firstItem="QxE-nS-rLu" firstAttribute="centerY" secondItem="7id-tv-Nnd" secondAttribute="centerY" id="waU-ZC-4bn"/>
                     <constraint firstItem="QgS-Mw-Nc4" firstAttribute="leading" secondItem="cCf-ee-0J6" secondAttribute="leading" id="zDb-Nb-owX"/>
@@ -128,17 +128,17 @@
                 <outlet property="nameL" destination="84L-UB-7zZ" id="Hy8-Pa-Bvn"/>
                 <outlet property="titleL" destination="7id-tv-Nnd" id="zn3-Jw-E2C"/>
             </connections>
-            <point key="canvasLocation" x="150.72463768115944" y="356.58482142857139"/>
+            <point key="canvasLocation" x="150.72463768115944" y="348.88392857142856"/>
         </tableViewCell>
-        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonListCell2" rowHeight="410" id="nR4-Z3-Hmt" customClass="CommonListCell">
-            <rect key="frame" x="0.0" y="0.0" width="338" height="98"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonListCell2" rowHeight="393" id="nR4-Z3-Hmt" customClass="CommonListCell">
+            <rect key="frame" x="0.0" y="0.0" width="338" height="81"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" ambiguous="YES" tableViewCell="nR4-Z3-Hmt" id="xbP-4w-DLV">
-                <rect key="frame" x="0.0" y="0.0" width="338" height="98"/>
+                <rect key="frame" x="0.0" y="0.0" width="338" height="81"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" text="文件夹类型" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gOM-7n-On1">
-                        <rect key="frame" x="70" y="25.5" width="90.5" height="25.5"/>
+                        <rect key="frame" x="70" y="17.5" width="90.5" height="25.5"/>
                         <constraints>
                             <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="hR5-O9-K0g"/>
                         </constraints>
@@ -147,7 +147,7 @@
                         <nil key="highlightedColor"/>
                     </label>
                     <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_placeHolder" translatesAutoresizingMaskIntoConstraints="NO" id="eDI-xh-EIq">
-                        <rect key="frame" x="15" y="18" width="40" height="40"/>
+                        <rect key="frame" x="15" y="10" width="40" height="40"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="40" id="P35-TI-2kn"/>
                             <constraint firstAttribute="height" constant="40" id="oID-4t-cum"/>
@@ -160,19 +160,19 @@
                         </userDefinedRuntimeAttributes>
                     </imageView>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="c5X-dF-wyX">
-                        <rect key="frame" x="0.0" y="96" width="338" height="0.5"/>
+                        <rect key="frame" x="0.0" y="80" width="338" height="0.5"/>
                         <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
                             <constraint firstAttribute="height" constant="0.5" id="XKg-94-mJx"/>
                         </constraints>
                     </view>
                     <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="置顶" translatesAutoresizingMaskIntoConstraints="NO" id="RfI-UG-K7A">
-                        <rect key="frame" x="170.5" y="30" width="30" height="16"/>
+                        <rect key="frame" x="170.5" y="22" width="30" height="16"/>
                     </imageView>
                     <button opaque="NO" contentMode="scaleToFill" verticalCompressionResistancePriority="751" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="65H-IX-fPd">
-                        <rect key="frame" x="15" y="68" width="30" height="20"/>
+                        <rect key="frame" x="15" y="60" width="30" height="12"/>
                         <constraints>
-                            <constraint firstAttribute="height" constant="20" id="XX2-gK-skj"/>
+                            <constraint firstAttribute="height" constant="12" id="XX2-gK-skj"/>
                         </constraints>
                         <fontDescription key="fontDescription" type="system" pointSize="12"/>
                         <state key="normal">
@@ -183,16 +183,16 @@
                 <constraints>
                     <constraint firstAttribute="trailing" secondItem="c5X-dF-wyX" secondAttribute="trailing" id="1ja-OC-L4M"/>
                     <constraint firstItem="65H-IX-fPd" firstAttribute="leading" secondItem="xbP-4w-DLV" secondAttribute="leading" constant="15" id="2hx-XL-gtd"/>
+                    <constraint firstItem="eDI-xh-EIq" firstAttribute="centerY" secondItem="gOM-7n-On1" secondAttribute="centerY" id="3x8-HV-kom"/>
                     <constraint firstAttribute="bottom" secondItem="c5X-dF-wyX" secondAttribute="bottom" id="5LS-ar-g0O"/>
                     <constraint firstItem="c5X-dF-wyX" firstAttribute="leading" secondItem="xbP-4w-DLV" secondAttribute="leading" id="8A3-bZ-8ph"/>
                     <constraint firstItem="eDI-xh-EIq" firstAttribute="leading" secondItem="xbP-4w-DLV" secondAttribute="leading" constant="15" id="A0T-Eq-Q32"/>
-                    <constraint firstItem="gOM-7n-On1" firstAttribute="centerY" secondItem="eDI-xh-EIq" secondAttribute="centerY" id="K3j-yS-gam"/>
+                    <constraint firstItem="eDI-xh-EIq" firstAttribute="top" secondItem="xbP-4w-DLV" secondAttribute="top" constant="10" id="GYw-h9-d0A"/>
                     <constraint firstItem="RfI-UG-K7A" firstAttribute="leading" secondItem="gOM-7n-On1" secondAttribute="trailing" constant="10" id="Pp5-Sr-rGs"/>
                     <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="gOM-7n-On1" secondAttribute="trailing" constant="55" id="a7c-M2-M0T"/>
                     <constraint firstItem="gOM-7n-On1" firstAttribute="leading" secondItem="eDI-xh-EIq" secondAttribute="trailing" constant="15" id="dst-gu-jcW"/>
                     <constraint firstItem="RfI-UG-K7A" firstAttribute="centerY" secondItem="gOM-7n-On1" secondAttribute="centerY" id="fPJ-v9-duQ"/>
                     <constraint firstItem="c5X-dF-wyX" firstAttribute="top" secondItem="65H-IX-fPd" secondAttribute="bottom" constant="8" id="gdU-Fr-VCp"/>
-                    <constraint firstItem="eDI-xh-EIq" firstAttribute="top" secondItem="xbP-4w-DLV" secondAttribute="top" constant="18" id="j5e-Oj-caO"/>
                     <constraint firstItem="65H-IX-fPd" firstAttribute="top" secondItem="eDI-xh-EIq" secondAttribute="bottom" constant="10" id="u2F-mv-n5e"/>
                 </constraints>
             </tableViewCellContentView>
@@ -203,7 +203,7 @@
                 <outlet property="isTopV" destination="RfI-UG-K7A" id="5Kc-ao-jOo"/>
                 <outlet property="titleL" destination="gOM-7n-On1" id="hNr-TC-f3B"/>
             </connections>
-            <point key="canvasLocation" x="162" y="507"/>
+            <point key="canvasLocation" x="160.86956521739131" y="501.22767857142856"/>
         </tableViewCell>
     </objects>
     <resources>