Просмотр исходного кода

1.实名认证修改需同意协议。
2.曲谱被专辑收纳加标记。
3.活动奖励弹窗提醒。

Steven 2 лет назад
Родитель
Сommit
b7d0c74730
51 измененных файлов с 833 добавлено и 62 удалено
  1. 20 2
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 50 2
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 2 0
      KulexiuForTeacher/KulexiuForTeacher/AppDelegate.h
  5. 1 0
      KulexiuForTeacher/KulexiuForTeacher/AppDelegate.m
  6. 6 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/albumTag/Contents.json
  7. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/albumTag/albumTag_charge.imageset/Contents.json
  8. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/albumTag/albumTag_charge.imageset/albumTag_charge@2x.png
  9. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/albumTag/albumTag_charge.imageset/albumTag_charge@3x.png
  10. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/album_collected.imageset/Contents.json
  11. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/album_collected.imageset/album_collected@2x.png
  12. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/album_collected.imageset/album_collected@3x.png
  13. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/award_image.imageset/Contents.json
  14. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/award_image.imageset/award_image@2x.png
  15. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/award_image.imageset/award_image@3x.png
  16. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/music_albumTag.imageset/Contents.json
  17. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/music_albumTag.imageset/music_albumTag@2x.png
  18. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/music_albumTag.imageset/music_albumTag@3x.png
  19. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/TeachTool/tool_award.imageset/Contents.json
  20. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/TeachTool/tool_award.imageset/tool_award@2x.png
  21. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/TeachTool/tool_award.imageset/tool_award@3x.png
  22. 8 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h
  23. 15 3
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  24. 14 14
      KulexiuForTeacher/KulexiuForTeacher/Common/Define/PrefixHeader.pch
  25. 0 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatListViewController.m
  26. 73 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m
  27. 3 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeAlbumModel.h
  28. 14 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeAlbumModel.m
  29. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeHotMusicModel.h
  30. 7 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeHotMusicModel.m
  31. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/Model/MusicMessageModel.h
  32. 7 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/Model/MusicMessageModel.m
  33. 15 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/View/MusicMessageCell.m
  34. 16 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/View/MusicMessageCell.xib
  35. 30 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/AwardAlert/KSAwardAlertView.h
  36. 89 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/AwardAlert/KSAwardAlertView.m
  37. 127 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/AwardAlert/KSAwardAlertView.xib
  38. 33 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHotAlbumCell.m
  39. 10 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHotAlbumCell.xib
  40. 15 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeMusic/HomeHotMusicCellView.m
  41. 23 10
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeMusic/HomeHotMusicCellView.xib
  42. 6 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Controller/VefiCodeLoginController.m
  43. 7 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Controller/MineViewController.m
  44. 15 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMusicCell.m
  45. 15 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMusicCell.xib
  46. 19 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/Controller/UserAuthViewController.m
  47. 3 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/UserAuthBodyView.h
  48. 28 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/UserAuthBodyView.m
  49. 43 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/UserAuthBodyView.xib
  50. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineActionView.h
  51. 6 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineTeachToolView.m

+ 20 - 2
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -672,6 +672,8 @@
 		BC8831042873D67C00C702A0 /* LiveVideoCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8831022873D67C00C702A0 /* LiveVideoCollectionViewCell.m */; };
 		BC8831052873D67C00C702A0 /* LiveVideoCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC8831032873D67C00C702A0 /* LiveVideoCollectionViewCell.xib */; };
 		BC8A2CF828476C3000122BBE /* MusicScoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8A2CF728476C3000122BBE /* MusicScoreViewController.m */; };
+		BC8B641C28F3E8D800A08D16 /* KSAwardAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8B641A28F3E8D800A08D16 /* KSAwardAlertView.m */; };
+		BC8B641D28F3E8D800A08D16 /* KSAwardAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC8B641B28F3E8D800A08D16 /* KSAwardAlertView.xib */; };
 		BC8B6DB8285327DD00866917 /* MusicShareDisplayView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8B6DB7285327DD00866917 /* MusicShareDisplayView.m */; };
 		BC8B6DBA285327EE00866917 /* MusicShareDisplayView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC8B6DB9285327EE00866917 /* MusicShareDisplayView.xib */; };
 		BC8B6DBF28532DB800866917 /* MusicSheetVoList.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8B6DBD28532DB800866917 /* MusicSheetVoList.m */; };
@@ -2167,6 +2169,9 @@
 		BC8831032873D67C00C702A0 /* LiveVideoCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LiveVideoCollectionViewCell.xib; sourceTree = "<group>"; };
 		BC8A2CF628476C2F00122BBE /* MusicScoreViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MusicScoreViewController.h; sourceTree = "<group>"; };
 		BC8A2CF728476C3000122BBE /* MusicScoreViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MusicScoreViewController.m; sourceTree = "<group>"; };
+		BC8B641928F3E8D800A08D16 /* KSAwardAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSAwardAlertView.h; sourceTree = "<group>"; };
+		BC8B641A28F3E8D800A08D16 /* KSAwardAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSAwardAlertView.m; sourceTree = "<group>"; };
+		BC8B641B28F3E8D800A08D16 /* KSAwardAlertView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KSAwardAlertView.xib; sourceTree = "<group>"; };
 		BC8B6DB6285327DD00866917 /* MusicShareDisplayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MusicShareDisplayView.h; sourceTree = "<group>"; };
 		BC8B6DB7285327DD00866917 /* MusicShareDisplayView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicShareDisplayView.m; sourceTree = "<group>"; };
 		BC8B6DB9285327EE00866917 /* MusicShareDisplayView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MusicShareDisplayView.xib; sourceTree = "<group>"; };
@@ -3972,6 +3977,7 @@
 		277935FD27E32BBF0010E277 /* View */ = {
 			isa = PBXGroup;
 			children = (
+				BC8B641828F3E8D800A08D16 /* AwardAlert */,
 				BC4CF27828D051B500961C61 /* HomeQuality */,
 				BC4CF27728D0515700961C61 /* HomeMusic */,
 				BCA1134F28A242FC007FAFB9 /* HomeBannerView.h */,
@@ -5483,6 +5489,16 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		BC8B641828F3E8D800A08D16 /* AwardAlert */ = {
+			isa = PBXGroup;
+			children = (
+				BC8B641928F3E8D800A08D16 /* KSAwardAlertView.h */,
+				BC8B641A28F3E8D800A08D16 /* KSAwardAlertView.m */,
+				BC8B641B28F3E8D800A08D16 /* KSAwardAlertView.xib */,
+			);
+			path = AwardAlert;
+			sourceTree = "<group>";
+		};
 		BC8B6E222856ED0600866917 /* UMSocialSDK */ = {
 			isa = PBXGroup;
 			children = (
@@ -6816,6 +6832,7 @@
 				BC0A22AB284751F80065C1AB /* FullVideoCell.xib in Resources */,
 				2755C06927EC71C8007D9070 /* GroupSettingBodyView.xib in Resources */,
 				BC71D1EF2887FDD40010F14B /* img_2.png in Resources */,
+				BC8B641D28F3E8D800A08D16 /* KSAwardAlertView.xib in Resources */,
 				BC48C3B028292FBE00EE65C5 /* ReceiveHeaderView.xib in Resources */,
 				BC8B6DBA285327EE00866917 /* MusicShareDisplayView.xib in Resources */,
 				BC58E7D5281B9637004B0893 /* PublicNoticeView.xib in Resources */,
@@ -7230,6 +7247,7 @@
 				BCC9F40A27F69BD200647449 /* InputView.m in Sources */,
 				BC5EB5B22804027500B4A3B0 /* MyStyleViewController.m in Sources */,
 				BCFE54182817BDFD00AD6786 /* IncomeHeaderView.m in Sources */,
+				BC8B641C28F3E8D800A08D16 /* KSAwardAlertView.m in Sources */,
 				275B16FD27EB083C0081FDEF /* ChatAddressViewController.m in Sources */,
 				BC41104228066E5500800BD9 /* EvaluateCourseListViewController.m in Sources */,
 				BC41103B28066D2E00800BD9 /* HomeworkBodyView.m in Sources */,
@@ -8052,7 +8070,7 @@
 					"$(PROJECT_DIR)/KulexiuForTeacher/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.4/SocialLibraries/QQ",
 					"$(PROJECT_DIR)/KulexiuForTeacher/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.4/UMSocialSDKPlugin",
 				);
-				MARKETING_VERSION = 1.3.9;
+				MARKETING_VERSION = 1.3.7;
 				PRODUCT_BUNDLE_IDENTIFIER = com.Colexiu.KulexiuForTeacher;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_EMIT_LOC_STRINGS = YES;
@@ -8114,7 +8132,7 @@
 					"$(PROJECT_DIR)/KulexiuForTeacher/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.4/SocialLibraries/QQ",
 					"$(PROJECT_DIR)/KulexiuForTeacher/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.4/UMSocialSDKPlugin",
 				);
-				MARKETING_VERSION = 1.3.9;
+				MARKETING_VERSION = 1.3.7;
 				PRODUCT_BUNDLE_IDENTIFIER = com.Colexiu.KulexiuForTeacher;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_EMIT_LOC_STRINGS = YES;

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


+ 50 - 2
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -110,8 +110,8 @@
             filePath = "KulexiuForTeacher/Common/Base/KSNetworkingManager.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1363"
-            endingLineNumber = "1363"
+            startingLineNumber = "1364"
+            endingLineNumber = "1364"
             landmarkName = "+liveRoomSetMicApplyEnable:roomUid:whetherMic:success:faliure:"
             landmarkType = "7">
          </BreakpointContent>
@@ -324,5 +324,53 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "14FA7802-F182-49F6-B239-7CCD4C404FE7"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Home/Controller/HomeViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "462"
+            endingLineNumber = "462"
+            landmarkName = "-requestAlbumSource"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "99C8D14E-9D2B-4C8E-B911-B181D1D1963E"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Home/Controller/HomeViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "244"
+            endingLineNumber = "244"
+            landmarkName = "-refreshView"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "BA362DA7-CBA0-4F1C-8222-EB3FA633E5C0"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Home/Controller/HomeViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "151"
+            endingLineNumber = "151"
+            landmarkName = "-requestAwardMessage"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/AppDelegate.h

@@ -20,6 +20,8 @@
 
 @property (nonatomic, strong) NSMutableDictionary *outLinkParm;
 
+@property (nonatomic, assign) BOOL isShowMemoAlert;
+
 
 - (void)initTableBar;
 - (void)requestRongCloudToken;

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/AppDelegate.m

@@ -757,6 +757,7 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
 #pragma clang diagnostic pop
 
     [self.alertView showAlert];
+    self.isShowMemoAlert = YES;
 }
 
 

+ 6 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/albumTag/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/albumTag/albumTag_charge.imageset/Contents.json

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

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


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


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/album_collected.imageset/Contents.json

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

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


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


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/award_image.imageset/Contents.json

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

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


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


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/music_albumTag.imageset/Contents.json

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

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


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


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/TeachTool/tool_award.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/TeachTool/tool_award.imageset/tool_award@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/TeachTool/tool_award.imageset/tool_award@3x.png


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

@@ -1247,7 +1247,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (void)queryCourseAdjustTimeLimit:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 
-// /teacher-server/sysConfig/queryByParamName
+// /api-teacher/sysConfig/queryByParamName
 
 /// 查询配置参数
 /// @param get get
@@ -1257,5 +1257,12 @@ NS_ASSUME_NONNULL_BEGIN
 + (void)queryByParamName:(NSString *)get paramName:(NSString *)paramName success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 
+// /api-teacher/activity/checkReceiveReward
+
+/// 查询是否reword弹窗
+/// @param get get
+/// @param success 成功
+/// @param faliure 失败
++ (void)checkReceiveRewardRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 @end
 NS_ASSUME_NONNULL_END

+ 15 - 3
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m

@@ -718,7 +718,7 @@
     [self request:get andWithUrl:url and:nil success:success faliure:faliure];
 }
 
-// /api-auth/user/realNameAuth
+// /api-teacher/user/realNameAuth
 
 /// 实名认证
 /// @param post post
@@ -728,11 +728,12 @@
 /// @param faliure 失败
 + (void)realNameAuthRequest:(NSString *)post idCardNo:(NSString *)idCardNo realName:(NSString *)realName success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
     [self configRequestMethodJSON];
-    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-auth/user/realNameAuth"];
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-auth/teacher/realNameAuth"];
     NSMutableDictionary *parm = [NSMutableDictionary dictionary];
     [parm setValue:idCardNo forKey:@"idCardNo"];
     [parm setValue:realName forKey:@"realName"];
     [parm setValue:@(YES) forKey:@"save"];
+    [parm setValue:@"1" forKey:@"contract"];
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 // /api-teacher/home/count
@@ -2311,7 +2312,7 @@
     [self request:get andWithUrl:url and:parm success:success faliure:faliure];
 }
 
-// /teacher-server/sysConfig/queryByParamName
+// /api-teacher/sysConfig/queryByParamName
 
 /// 查询配置参数
 /// @param get get
@@ -2325,4 +2326,15 @@
     [self request:get andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+// /api-teacher/activity/checkReceiveReward
+
+/// 查询是否reword弹窗
+/// @param get get
+/// @param success 成功
+/// @param faliure 失败
++ (void)checkReceiveRewardRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/activity/checkReceiveReward"];
+    [self request:get andWithUrl:url and:nil success:success faliure:faliure];
+}
+
 @end

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

@@ -135,23 +135,23 @@ shouldPrevent = NO; \
 
 //#ifdef DEBUG
 
-//#define hostURL (@"https://dev.colexiu.com")
-//#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
-//#define WEBHOST (@"https://dev.colexiu.com/teacher")
-//#define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
-//#define JSPUSH_ENVIRONMENT (NO)
-//#define RCIM_KEY (@"0vnjpoad0jbdz")
-//#define SUBMIT_UUID (YES)
+#define hostURL (@"https://dev.colexiu.com")
+#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
+#define WEBHOST (@"https://dev.colexiu.com/teacher")
+#define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
+#define JSPUSH_ENVIRONMENT (NO)
+#define RCIM_KEY (@"0vnjpoad0jbdz")
+#define SUBMIT_UUID (YES)
 
 //#else
 
-#define hostURL (@"https://online.colexiu.com")
-#define SEALCLASSHOST (@"https://online.colexiu.com/api-classroom")
-#define WEBHOST (@"https://online.colexiu.com/teacher")
-#define SOCKET_URL (@"wss://online.colexiu.com/audioAnalysis")
-#define JSPUSH_ENVIRONMENT (YES)
-#define RCIM_KEY (@"e5t4ouvpe42pa")
-#define SUBMIT_UUID (YES)
+//#define hostURL (@"https://online.colexiu.com")
+//#define SEALCLASSHOST (@"https://online.colexiu.com/api-classroom")
+//#define WEBHOST (@"https://online.colexiu.com/teacher")
+//#define SOCKET_URL (@"wss://online.colexiu.com/audioAnalysis")
+//#define JSPUSH_ENVIRONMENT (YES)
+//#define RCIM_KEY (@"e5t4ouvpe42pa")
+//#define SUBMIT_UUID (YES)
 
 
 //#endif

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

@@ -137,9 +137,6 @@
             [[RCIMClient sharedRCIMClient] clearMessagesUnreadStatus:ConversationType_GROUP targetId:model.targetId];
         }
         else {
-//            if (model.conversationType == ConversationType_GROUP) {
-//                model.conversationModelType = RC_CONVERSATION_MODEL_TYPE_CUSTOMIZATION;
-//            }
             [array addObject:model];
         }
     }

+ 73 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m

@@ -56,6 +56,7 @@
 #import "HomeBannerCell.h"
 #import "BadgeIntroduceView.h"
 #import "HomeAuthAlertView.h"
+#import "KSAwardAlertView.h"
 
 #define BUTTONWIDTH (65)
 #define BUTTONHEIGHT (70)
@@ -109,6 +110,8 @@
 
 @property (nonatomic, strong) HomeAuthAlertView *authAlertView;
 
+@property (nonatomic, assign) BOOL isCheck;
+
 @end
 
 @implementation HomeViewController
@@ -140,6 +143,27 @@
     }];
 }
 
+- (void)requestAwardMessage {
+    self.isCheck = NO;
+    dispatch_group_enter(self.requestGroup);
+    [KSNetworkingManager checkReceiveRewardRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
+        dispatch_group_leave(self.requestGroup);
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            BOOL isCheck = [[dic dictionaryValueForKey:@"data"] boolValueForKey:@"check"];
+            self.isCheck = isCheck;
+            if (isCheck) {
+                [(KSTabBarViewController *)self.tabBarController noteNewsWithIndex:4 count:1];
+            }
+            else {
+                [(KSTabBarViewController *)self.tabBarController clearNewsWithIndex:4];
+            }
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        dispatch_group_leave(self.requestGroup);
+    }];
+}
+
+
 - (void)requestNotice {
     dispatch_group_enter(self.requestGroup);
     [KSNetworkingManager helpCenterContentListRequest:KS_POST success:^(NSDictionary * _Nonnull dic) {
@@ -217,6 +241,54 @@
     [self refreshMusicView];
     // 刷新排序
     [self refreshViewLocation];
+    if (self.isCheck) {
+        [self checkShowAwardAlert];
+    }
+}
+
+- (void)checkShowAwardAlert {
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    if (appDelegate.isShowMemoAlert) {
+        return;
+    }
+    // 如果今日已提示过,就不再提醒
+    // 如果今日已提示过,就不再提醒
+    NSDictionary *awardAlertDic = UserDefaultObjectForKey(@"awardAlertTime");
+    NSString *awardAlertTime = [awardAlertDic stringValueForKey:@"time"];
+    NSDate *currendDate = [NSDate date];
+    NSDateFormatter *dateFormatter = [NSObject getDateformatter];
+    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
+    NSString *todayString = [dateFormatter stringFromDate:currendDate];
+    
+    if (![NSString isEmptyString:awardAlertTime]) {
+        
+        NSString *userId = [awardAlertDic stringValueForKey:@"userId"];
+        if ([todayString isEqualToString:awardAlertTime] && [userId isEqualToString:UserDefaultObjectForKey(UIDKey)]) {
+            return;
+        }
+    }
+    
+    if (![self.navigationController.visibleViewController isKindOfClass:[HomeViewController class]]) {
+        return;
+    }
+    
+    KSAwardAlertView *alert = [KSAwardAlertView shareInstance];
+    MJWeakSelf;
+    [alert awardActionCallback:^(BOOL isSure) {
+        if (isSure) {
+            [weakSelf displayAwardList];
+        }
+    }];
+    
+    [alert showAlert];
+    NSDictionary *saveDic = @{@"time" :todayString , @"userId" : UserDefaultObjectForKey(UIDKey)};
+    UserDefaultSetObjectForKey(saveDic, @"awardAlertTime");
+}
+
+- (void)displayAwardList {
+    KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
+    webCtrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/awardActivity"];
+    [self.navigationController pushViewController:webCtrl animated:YES];
 }
 
 - (void)refreshBannerView {
@@ -557,6 +629,7 @@
     [self requestNotice];
     [self requestAlbumSource];
     [self requestHotMusicList];
+    [self requestAwardMessage];
     
     dispatch_group_notify(self.requestGroup, dispatch_get_main_queue(), ^{
         [self removehub];

+ 3 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeAlbumModel.h

@@ -27,6 +27,9 @@
 @property (nonatomic, assign) NSInteger sortNumber;
 @property (nonatomic, strong) NSString *albumName;
 @property (nonatomic, strong) NSString *updateTime;
+@property (nonatomic, strong) NSString *favorite;
+
+@property (nonatomic, strong) NSString *paymentType;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 14 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeAlbumModel.m

@@ -24,7 +24,8 @@ NSString *const kHomeAlbumModelHotFlag = @"hotFlag";
 NSString *const kHomeAlbumModelSortNumber = @"sortNumber";
 NSString *const kHomeAlbumModelAlbumName = @"albumName";
 NSString *const kHomeAlbumModelUpdateTime = @"updateTime";
-
+NSString *const kHomeAlbumModelFavorite = @"favorite";
+NSString *const kHomeAlbumModelPaymentType = @"paymentType";
 
 @interface HomeAlbumModel ()
 
@@ -50,7 +51,8 @@ NSString *const kHomeAlbumModelUpdateTime = @"updateTime";
 @synthesize sortNumber = _sortNumber;
 @synthesize albumName = _albumName;
 @synthesize updateTime = _updateTime;
-
+@synthesize favorite = _favorite;
+@synthesize paymentType = _paymentType;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -80,7 +82,8 @@ NSString *const kHomeAlbumModelUpdateTime = @"updateTime";
             self.sortNumber = [[self objectOrNilForKey:kHomeAlbumModelSortNumber fromDictionary:dict] integerValue];
             self.albumName = [self objectOrNilForKey:kHomeAlbumModelAlbumName fromDictionary:dict];
             self.updateTime = [self objectOrNilForKey:kHomeAlbumModelUpdateTime fromDictionary:dict];
-
+        self.favorite = [self objectOrNilForKey:kHomeAlbumModelFavorite fromDictionary:dict];
+    self.paymentType = [self objectOrNilForKey:kHomeAlbumModelPaymentType fromDictionary:dict];
     }
     
     return self;
@@ -106,7 +109,8 @@ NSString *const kHomeAlbumModelUpdateTime = @"updateTime";
     [mutableDict setValue:[NSNumber numberWithInteger:self.sortNumber] forKey:kHomeAlbumModelSortNumber];
     [mutableDict setValue:self.albumName forKey:kHomeAlbumModelAlbumName];
     [mutableDict setValue:self.updateTime forKey:kHomeAlbumModelUpdateTime];
-
+    [mutableDict setValue:self.favorite forKey:kHomeAlbumModelFavorite];
+    [mutableDict setValue:self.paymentType forKey:kHomeAlbumModelPaymentType];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -149,6 +153,8 @@ NSString *const kHomeAlbumModelUpdateTime = @"updateTime";
     self.sortNumber = [aDecoder decodeIntegerForKey:kHomeAlbumModelSortNumber];
     self.albumName = [aDecoder decodeObjectForKey:kHomeAlbumModelAlbumName];
     self.updateTime = [aDecoder decodeObjectForKey:kHomeAlbumModelUpdateTime];
+    self.favorite = [aDecoder decodeObjectForKey:kHomeAlbumModelFavorite];
+    self.paymentType = [aDecoder decodeObjectForKey:kHomeAlbumModelPaymentType];
     return self;
 }
 
@@ -171,6 +177,8 @@ NSString *const kHomeAlbumModelUpdateTime = @"updateTime";
     [aCoder encodeInteger:_sortNumber forKey:kHomeAlbumModelSortNumber];
     [aCoder encodeObject:_albumName forKey:kHomeAlbumModelAlbumName];
     [aCoder encodeObject:_updateTime forKey:kHomeAlbumModelUpdateTime];
+    [aCoder encodeObject:_favorite forKey:kHomeAlbumModelFavorite];
+    [aCoder encodeObject:_paymentType forKey:kHomeAlbumModelPaymentType];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -195,6 +203,8 @@ NSString *const kHomeAlbumModelUpdateTime = @"updateTime";
         copy.sortNumber = self.sortNumber;
         copy.albumName = [self.albumName copyWithZone:zone];
         copy.updateTime = [self.updateTime copyWithZone:zone];
+        copy.favorite = [self.favorite copyWithZone:zone];
+        copy.paymentType = [self.paymentType copyWithZone:zone];
     }
     
     return copy;

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeHotMusicModel.h

@@ -56,6 +56,7 @@
 @property (nonatomic, strong) NSString *submitAuditTime;
 @property (nonatomic, assign) BOOL exquisiteFlag;
 @property (nonatomic, strong) NSString *paymentType;
+@property (nonatomic, assign) NSInteger albumNums;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 7 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeHotMusicModel.m

@@ -54,7 +54,7 @@ NSString *const kHomeHotMusicModelSubmitAuditTime = @"submitAuditTime";
 NSString *const kHomeHotMusicModelExquisiteFlag = @"exquisiteFlag";
 
 NSString *const kHomeHotMusicModelPaymentType = @"paymentType";
-
+NSString *const kHomeHotMusicModelAlbumNums = @"albumNums";
 
 @interface HomeHotMusicModel ()
 
@@ -109,6 +109,7 @@ NSString *const kHomeHotMusicModelPaymentType = @"paymentType";
 @synthesize submitAuditTime = _submitAuditTime;
 @synthesize exquisiteFlag = _exquisiteFlag;
 @synthesize paymentType = _paymentType;
+@synthesize albumNums = _albumNums;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -167,6 +168,7 @@ NSString *const kHomeHotMusicModelPaymentType = @"paymentType";
             self.submitAuditTime = [self objectOrNilForKey:kHomeHotMusicModelSubmitAuditTime fromDictionary:dict];
         self.exquisiteFlag = [[self objectOrNilForKey:kHomeHotMusicModelExquisiteFlag fromDictionary:dict] boolValue];
         self.paymentType = [self objectOrNilForKey:kHomeHotMusicModelPaymentType fromDictionary:dict];
+        self.albumNums = [[self objectOrNilForKey:kHomeHotMusicModelAlbumNums fromDictionary:dict] integerValue];
     }
     
     return self;
@@ -221,6 +223,7 @@ NSString *const kHomeHotMusicModelPaymentType = @"paymentType";
     [mutableDict setValue:self.submitAuditTime forKey:kHomeHotMusicModelSubmitAuditTime];
     [mutableDict setValue:[NSNumber numberWithBool:self.exquisiteFlag] forKey:kHomeHotMusicModelExquisiteFlag];
     [mutableDict setValue:self.paymentType forKey:kHomeHotMusicModelPaymentType];
+    [mutableDict setValue:[NSNumber numberWithInteger:self.albumNums] forKey:kHomeHotMusicModelAlbumNums];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -292,6 +295,7 @@ NSString *const kHomeHotMusicModelPaymentType = @"paymentType";
     self.submitAuditTime = [aDecoder decodeObjectForKey:kHomeHotMusicModelSubmitAuditTime];
     self.exquisiteFlag = [aDecoder decodeBoolForKey:kHomeHotMusicModelExquisiteFlag];
     self.paymentType = [aDecoder decodeObjectForKey:kHomeHotMusicModelPaymentType];
+    self.albumNums = [aDecoder decodeIntegerForKey:kHomeHotMusicModelAlbumNums];
     return self;
 }
 
@@ -343,6 +347,7 @@ NSString *const kHomeHotMusicModelPaymentType = @"paymentType";
     [aCoder encodeObject:_submitAuditTime forKey:kHomeHotMusicModelSubmitAuditTime];
     [aCoder encodeBool:_exquisiteFlag forKey:kHomeHotMusicModelExquisiteFlag];
     [aCoder encodeObject:_paymentType forKey:kHomeHotMusicModelPaymentType];
+    [aCoder encodeInteger:_albumNums forKey:kHomeHotMusicModelAlbumNums];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -396,6 +401,7 @@ NSString *const kHomeHotMusicModelPaymentType = @"paymentType";
         copy.submitAuditTime = [self.submitAuditTime copyWithZone:zone];
         copy.exquisiteFlag = self.exquisiteFlag;
         copy.paymentType = [self.paymentType copyWithZone:zone];
+        copy.albumNums = self.albumNums;
     }
     
     return copy;

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/Model/MusicMessageModel.h

@@ -54,6 +54,7 @@
 @property (nonatomic, assign) BOOL isChoose;
 @property (nonatomic, assign) BOOL exquisiteFlag;
 @property (nonatomic, strong) NSString *paymentType;
+@property (nonatomic, assign) NSInteger albumNums;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 7 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/Model/MusicMessageModel.m

@@ -50,6 +50,7 @@ NSString *const kMusicMessageModelTitleImg = @"titleImg";
 
 NSString *const kMusicMessageModelExquisiteFlag = @"exquisiteFlag";
 NSString *const kMusicMessageModelPaymentType = @"paymentType";
+NSString *const kMusicMessageModelAlbumNums = @"albumNums";
 
 @interface MusicMessageModel ()
 
@@ -100,6 +101,7 @@ NSString *const kMusicMessageModelPaymentType = @"paymentType";
 @synthesize titleImg = _titleImg;
 @synthesize exquisiteFlag = _exquisiteFlag;
 @synthesize paymentType = _paymentType;
+@synthesize albumNums = _albumNums;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -154,6 +156,7 @@ NSString *const kMusicMessageModelPaymentType = @"paymentType";
             self.titleImg = [self objectOrNilForKey:kMusicMessageModelTitleImg fromDictionary:dict];
         self.exquisiteFlag = [[self objectOrNilForKey:kMusicMessageModelExquisiteFlag fromDictionary:dict] integerValue];
         self.paymentType = [self objectOrNilForKey:kMusicMessageModelPaymentType fromDictionary:dict];
+        self.albumNums = [[self objectOrNilForKey:kMusicMessageModelAlbumNums fromDictionary:dict] integerValue];
     }
     
     return self;
@@ -204,6 +207,7 @@ NSString *const kMusicMessageModelPaymentType = @"paymentType";
     [mutableDict setValue:self.titleImg forKey:kMusicMessageModelTitleImg];
     [mutableDict setValue:[NSNumber numberWithBool:self.exquisiteFlag] forKey:kMusicMessageModelExquisiteFlag];
     [mutableDict setValue:self.paymentType forKey:kMusicMessageModelPaymentType];
+    [mutableDict setValue:[NSNumber numberWithInteger:self.albumNums] forKey:kMusicMessageModelAlbumNums];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -271,6 +275,7 @@ NSString *const kMusicMessageModelPaymentType = @"paymentType";
     self.titleImg = [aDecoder decodeObjectForKey:kMusicMessageModelTitleImg];
     self.exquisiteFlag = [aDecoder decodeBoolForKey:kMusicMessageModelExquisiteFlag];
     self.paymentType = [aDecoder decodeObjectForKey:kMusicMessageModelPaymentType];
+    self.albumNums = [aDecoder decodeIntegerForKey:kMusicMessageModelAlbumNums];
     return self;
 }
 
@@ -318,6 +323,7 @@ NSString *const kMusicMessageModelPaymentType = @"paymentType";
     [aCoder encodeObject:_titleImg forKey:kMusicMessageModelTitleImg];
     [aCoder encodeBool:_exquisiteFlag forKey:kMusicMessageModelExquisiteFlag];
     [aCoder encodeObject:_paymentType forKey:kMusicMessageModelPaymentType];
+    [aCoder encodeInteger:_albumNums forKey:kMusicMessageModelAlbumNums];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -367,6 +373,7 @@ NSString *const kMusicMessageModelPaymentType = @"paymentType";
         copy.titleImg = [self.titleImg copyWithZone:zone];
         copy.exquisiteFlag = self.exquisiteFlag;
         copy.paymentType = [self.paymentType copyWithZone:zone];
+        copy.albumNums = self.albumNums;
     }
     
     return copy;

+ 15 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/View/MusicMessageCell.m

@@ -39,6 +39,10 @@
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityTagWidth;
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityLeft;
 
+@property (weak, nonatomic) IBOutlet UIImageView *albumTag;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *albumTagWidth;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *albumTagLeft;
+
 @property (nonatomic, copy) MusicOffCallback callback;
 @end
 
@@ -65,6 +69,17 @@
         self.qualityTagWidth.constant = 0.0f;
         self.qualityLeft.constant = 0.0f;
     }
+    
+    if (songMessage.albumNums > 0) {
+        self.albumTag.hidden = NO;
+        self.albumTagWidth.constant = 15.0f;
+        self.albumTagLeft.constant = 5.0f;
+    }
+    else {
+        self.albumTag.hidden = YES;
+        self.albumTagWidth.constant = 0.0f;
+        self.albumTagLeft.constant = 0.0f;
+    }
     NSString *authString = @"";
     switch (type) {
         case MUSICCELLTYPE_OWNER:

+ 16 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/View/MusicMessageCell.xib

@@ -34,7 +34,7 @@
                                 </userDefinedRuntimeAttributes>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="野蜂飞舞" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dl5-Bm-goQ">
-                                <rect key="frame" x="124" y="16" width="57.5" height="17"/>
+                                <rect key="frame" x="144" y="16" width="57.5" height="17"/>
                                 <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
                                 <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
@@ -135,16 +135,23 @@
                                     <constraint firstAttribute="height" constant="17" id="ysN-Wh-zu7"/>
                                 </constraints>
                             </imageView>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="music_albumTag" translatesAutoresizingMaskIntoConstraints="NO" id="Gc5-5a-gxz">
+                                <rect key="frame" x="124" y="17" width="15" height="15"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="15" id="7in-dV-GCa"/>
+                                    <constraint firstAttribute="width" constant="15" id="git-tP-3Tg"/>
+                                </constraints>
+                            </imageView>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
                             <constraint firstAttribute="bottom" secondItem="Zm8-lb-ZEo" secondAttribute="bottom" id="7NW-eL-QbL"/>
-                            <constraint firstItem="dl5-Bm-goQ" firstAttribute="leading" secondItem="efH-vf-n5D" secondAttribute="trailing" constant="5" id="7c3-9k-8hE"/>
                             <constraint firstAttribute="trailing" secondItem="ZTx-7w-9HF" secondAttribute="trailing" constant="14" id="A59-EX-Pwf"/>
                             <constraint firstItem="0sg-Qr-0or" firstAttribute="top" secondItem="7XK-Ip-4nf" secondAttribute="top" id="DcX-XV-hYx"/>
                             <constraint firstAttribute="trailing" secondItem="bva-Fc-J3U" secondAttribute="trailing" constant="12" id="DqR-tq-mTT"/>
                             <constraint firstItem="ZTx-7w-9HF" firstAttribute="centerY" secondItem="sfm-yS-y7g" secondAttribute="centerY" id="EOH-Nv-6oY"/>
                             <constraint firstItem="0sg-Qr-0or" firstAttribute="leading" secondItem="7XK-Ip-4nf" secondAttribute="trailing" constant="11" id="GMO-Kg-sl1"/>
+                            <constraint firstItem="dl5-Bm-goQ" firstAttribute="centerY" secondItem="Gc5-5a-gxz" secondAttribute="centerY" id="Gcu-kB-2dH"/>
                             <constraint firstItem="RpH-mG-bAV" firstAttribute="bottom" secondItem="7XK-Ip-4nf" secondAttribute="bottom" id="JEt-PA-q5v"/>
                             <constraint firstItem="zQo-zL-Uo4" firstAttribute="centerY" secondItem="sfm-yS-y7g" secondAttribute="centerY" id="KR0-7u-JUu"/>
                             <constraint firstItem="dl5-Bm-goQ" firstAttribute="centerY" secondItem="0sg-Qr-0or" secondAttribute="centerY" id="MlC-5R-Fe3"/>
@@ -153,7 +160,9 @@
                             <constraint firstItem="efH-vf-n5D" firstAttribute="centerY" secondItem="0sg-Qr-0or" secondAttribute="centerY" id="a0E-ob-qWA"/>
                             <constraint firstItem="7XK-Ip-4nf" firstAttribute="centerY" secondItem="sfm-yS-y7g" secondAttribute="centerY" id="gC0-wR-eHn"/>
                             <constraint firstItem="bva-Fc-J3U" firstAttribute="centerY" secondItem="RpH-mG-bAV" secondAttribute="centerY" id="hFT-pZ-tvT"/>
+                            <constraint firstItem="dl5-Bm-goQ" firstAttribute="leading" secondItem="Gc5-5a-gxz" secondAttribute="trailing" constant="5" id="l6M-X2-dii"/>
                             <constraint firstItem="Zm8-lb-ZEo" firstAttribute="leading" secondItem="sfm-yS-y7g" secondAttribute="leading" constant="14" id="lcg-jT-vjD"/>
+                            <constraint firstItem="Gc5-5a-gxz" firstAttribute="leading" secondItem="efH-vf-n5D" secondAttribute="trailing" constant="5" id="llw-uj-pTi"/>
                             <constraint firstItem="zQo-zL-Uo4" firstAttribute="bottom" secondItem="u0Q-lP-CEF" secondAttribute="bottom" id="mdH-Xd-Com"/>
                             <constraint firstItem="efH-vf-n5D" firstAttribute="leading" secondItem="0sg-Qr-0or" secondAttribute="trailing" constant="5" id="mkh-Ux-PW1"/>
                             <constraint firstAttribute="trailing" secondItem="Zm8-lb-ZEo" secondAttribute="trailing" constant="15" id="sCS-HL-jo0"/>
@@ -180,12 +189,15 @@
                 <outlet property="actionImage" destination="k1d-5k-fq8" id="vNf-9C-6uf"/>
                 <outlet property="actionLabel" destination="n7K-6t-sdj" id="jRc-i2-Qsa"/>
                 <outlet property="actionView" destination="zQo-zL-Uo4" id="5m3-tm-n8z"/>
+                <outlet property="albumTag" destination="Gc5-5a-gxz" id="sB8-H1-ot6"/>
+                <outlet property="albumTagLeft" destination="llw-uj-pTi" id="OR2-3F-3Y5"/>
+                <outlet property="albumTagWidth" destination="git-tP-3Tg" id="Kcw-Zp-fOh"/>
                 <outlet property="bgView" destination="sfm-yS-y7g" id="u3u-6a-nVC"/>
                 <outlet property="checkView" destination="u0Q-lP-CEF" id="91t-YN-urD"/>
                 <outlet property="lineView" destination="Zm8-lb-ZEo" id="442-Ky-3TP"/>
                 <outlet property="musicCover" destination="7XK-Ip-4nf" id="eLL-Uh-TYx"/>
                 <outlet property="playImage" destination="ZTx-7w-9HF" id="b4d-YC-5QM"/>
-                <outlet property="qualityLeft" destination="7c3-9k-8hE" id="jiX-xk-lkj"/>
+                <outlet property="qualityLeft" destination="mkh-Ux-PW1" id="z3e-EE-3eV"/>
                 <outlet property="qualityMusicTag" destination="efH-vf-n5D" id="vtP-Nc-7QR"/>
                 <outlet property="qualityTagWidth" destination="uo4-Yf-NAJ" id="bCv-Yj-dxq"/>
                 <outlet property="songAuth" destination="RpH-mG-bAV" id="KhE-Bc-yps"/>
@@ -199,6 +211,7 @@
     </objects>
     <resources>
         <image name="home_music_play" width="24" height="24"/>
+        <image name="music_albumTag" width="15" height="15"/>
         <image name="music_logo" width="41" height="40"/>
         <image name="quality_tag" width="14" height="17"/>
         <image name="unshelve_course" width="5" height="7"/>

+ 30 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/AwardAlert/KSAwardAlertView.h

@@ -0,0 +1,30 @@
+//
+//  KSAwardAlertView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/10.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void(^AwardAlertCallback)(BOOL isSure);
+
+@interface KSAwardAlertView : UIView
+
++ (instancetype)shareInstance;
+
+- (void)awardActionCallback:(AwardAlertCallback)callback;
+
+- (void)showAlert;
+
+- (void)showAlertInView:(UIView *)displayView;
+
+- (void)hiddenAction;
+
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 89 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/AwardAlert/KSAwardAlertView.m

@@ -0,0 +1,89 @@
+//
+//  KSAwardAlertView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/10.
+//
+
+#import "KSAwardAlertView.h"
+#import "UIView+Animation.h"
+
+
+@interface KSAwardAlertView ()
+
+@property (weak, nonatomic) IBOutlet UIView *colorView;
+
+@property (nonatomic, copy) AwardAlertCallback callback;
+
+@end
+
+@implementation KSAwardAlertView
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    CAGradientLayer *layer = [self createGradientLayerFromColor:HexRGB(0x59E5D5) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x2DC7AA) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, 169, 40)];
+    layer.cornerRadius = 12.0f;
+    layer.masksToBounds = YES;
+    [self.colorView.layer addSublayer:layer];
+}
+
++ (instancetype)shareInstance {
+    KSAwardAlertView *view = [[[NSBundle mainBundle] loadNibNamed:@"KSAwardAlertView" owner:nil options:nil] firstObject];
+    view.frame = CGRectMake(0, 0, KPortraitWidth, KPortraitHeight);
+    return view;
+}
+
+- (void)awardActionCallback:(AwardAlertCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (void)showAlert {
+    [[UIApplication sharedApplication].keyWindow addSubview:self];
+    [self setPopAnimation];
+}
+
+- (void)showAlertInView:(UIView *)displayView {
+    [displayView addSubview:self];
+    [self setPopAnimation];
+}
+
+- (void)hiddenAction {
+    [self removeFromSuperview];
+}
+
+
+- (IBAction)sureAction:(id)sender {
+    if (self.callback) {
+        self.callback(YES);
+    }
+    [self hiddenAction];
+}
+
+- (IBAction)cancleAction:(id)sender {
+    if (self.callback) {
+        self.callback(NO);
+    }
+    [self hiddenAction];
+}
+
+
+- (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
+    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
+    gradientLayer.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)endColor.CGColor];
+    gradientLayer.startPoint = startPoint;
+    gradientLayer.endPoint = endPoint;
+    gradientLayer.frame = bounds;
+    gradientLayer.locations = @[@(0),@(1.0f)];
+    return gradientLayer;
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 127 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/AwardAlert/KSAwardAlertView.xib

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_0" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="KSAwardAlertView">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MiZ-wq-ORz">
+                    <rect key="frame" x="59" y="156.66666666666663" width="257" height="354"/>
+                    <subviews>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="award_image" translatesAutoresizingMaskIntoConstraints="NO" id="IC2-xC-CLi">
+                            <rect key="frame" x="35.666666666666686" y="23" width="186" height="106"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="106" id="anK-1i-GVd"/>
+                                <constraint firstAttribute="width" constant="186" id="fOA-cb-ers"/>
+                            </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="YML-3d-3xZ">
+                            <rect key="frame" x="64" y="150.00000000000003" width="129" height="25"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="25" id="g0B-ln-iIz"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <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="FdQ-H5-bhI">
+                            <rect key="frame" x="57" y="185.00000000000003" width="143" height="20"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="20" id="G7h-27-P1x"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="shF-sU-HAn">
+                            <rect key="frame" x="44" y="276" width="169" height="40"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="10"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QeN-Iz-5Fd">
+                            <rect key="frame" x="44" y="276" width="169" height="40"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="169" id="7qk-v3-bhT"/>
+                                <constraint firstAttribute="height" constant="40" id="Zv6-71-ZF2"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" title="立即领取"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="10"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="bmf-Bg-PoU"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="FdQ-H5-bhI" firstAttribute="top" secondItem="YML-3d-3xZ" secondAttribute="bottom" constant="10" id="4b8-fZ-AAk"/>
+                        <constraint firstItem="YML-3d-3xZ" firstAttribute="top" secondItem="IC2-xC-CLi" secondAttribute="bottom" constant="21" id="5A5-vD-syR"/>
+                        <constraint firstItem="FdQ-H5-bhI" firstAttribute="centerX" secondItem="MiZ-wq-ORz" secondAttribute="centerX" id="Gye-jC-eR5"/>
+                        <constraint firstItem="QeN-Iz-5Fd" firstAttribute="centerX" secondItem="MiZ-wq-ORz" secondAttribute="centerX" id="Pcd-Q3-Ezv"/>
+                        <constraint firstItem="QeN-Iz-5Fd" firstAttribute="top" secondItem="shF-sU-HAn" secondAttribute="top" id="a63-7b-Ehi"/>
+                        <constraint firstItem="YML-3d-3xZ" firstAttribute="centerX" secondItem="MiZ-wq-ORz" secondAttribute="centerX" id="aRq-ob-Zrl"/>
+                        <constraint firstItem="IC2-xC-CLi" firstAttribute="top" secondItem="MiZ-wq-ORz" secondAttribute="top" constant="23" id="cSa-s7-MfX"/>
+                        <constraint firstItem="IC2-xC-CLi" firstAttribute="centerX" secondItem="MiZ-wq-ORz" secondAttribute="centerX" id="exL-ag-L9Q"/>
+                        <constraint firstAttribute="bottom" secondItem="QeN-Iz-5Fd" secondAttribute="bottom" constant="38" id="iRd-4w-yLl"/>
+                        <constraint firstAttribute="width" secondItem="MiZ-wq-ORz" secondAttribute="height" multiplier="257:354" id="l24-6q-vsW"/>
+                        <constraint firstItem="QeN-Iz-5Fd" firstAttribute="trailing" secondItem="shF-sU-HAn" secondAttribute="trailing" id="nPo-f6-IUt"/>
+                        <constraint firstItem="QeN-Iz-5Fd" firstAttribute="leading" secondItem="shF-sU-HAn" secondAttribute="leading" id="wY8-hs-shA"/>
+                        <constraint firstItem="QeN-Iz-5Fd" firstAttribute="bottom" secondItem="shF-sU-HAn" secondAttribute="bottom" id="zvl-z3-ehd"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="12"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bIK-mD-ZCc">
+                    <rect key="frame" x="167.66666666666666" y="520.66666666666663" width="40" height="40"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="40" id="0R3-Vj-qjX"/>
+                        <constraint firstAttribute="width" constant="40" id="B7L-cH-EMp"/>
+                    </constraints>
+                    <state key="normal" image="alert_cancle"/>
+                    <connections>
+                        <action selector="cancleAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="yjy-Uj-O67"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.46000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="MiZ-wq-ORz" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="Bew-aJ-rIM"/>
+                <constraint firstItem="bIK-mD-ZCc" firstAttribute="top" secondItem="MiZ-wq-ORz" secondAttribute="bottom" constant="10" id="JvZ-b3-XVX"/>
+                <constraint firstItem="MiZ-wq-ORz" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="59" id="Kgi-N1-xhh"/>
+                <constraint firstItem="bIK-mD-ZCc" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="vNa-JL-E2l"/>
+                <constraint firstItem="MiZ-wq-ORz" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="vpd-Ho-UBP"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="colorView" destination="shF-sU-HAn" id="n5q-60-PDe"/>
+            </connections>
+            <point key="canvasLocation" x="56.153846153846153" y="-11.018957345971563"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="alert_cancle" width="28" height="28"/>
+        <image name="award_image" width="186" height="106"/>
+    </resources>
+</document>

+ 33 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHotAlbumCell.m

@@ -9,12 +9,16 @@
 
 @interface HomeHotAlbumCell ()
 
+@property (weak, nonatomic) IBOutlet UIImageView *tagImageView;
+
 @property (weak, nonatomic) IBOutlet UIImageView *albumImage;
 
 @property (weak, nonatomic) IBOutlet UILabel *albumNameLabel;
 
 @property (weak, nonatomic) IBOutlet UILabel *collectLabel;
 
+@property (weak, nonatomic) IBOutlet UIImageView *collectionImage;
+
 @end
 
 @implementation HomeHotAlbumCell
@@ -27,11 +31,36 @@
 - (void)configWithAlbumModel:(HomeAlbumModel *)model {
     [self.albumImage sd_setImageWithURL:[NSURL URLWithString:[model.albumCoverUrl getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:@"video_placeholder"]];
     self.albumNameLabel.text = [NSString returnNoNullStringWithString:model.albumName];
-//    NSString *collectString = [NSString stringWithFormat:@"%zd人收藏",model.albumFavoriteCount];
-//    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:collectString attributes:@{NSForegroundColorAttributeName:HexRGB(0x63ffe1),NSFontAttributeName:[UIFont systemFontOfSize:11.0f weight:UIFontWeightMedium]}];
-//    [attr addAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]} range:[collectString rangeOfString:@"人收藏"]];
-//    self.collectLabel.attributedText = attr;
+    
     self.collectLabel.text = [NSString stringWithFormat:@"%zd人",model.albumFavoriteCount];
+    if ([model.favorite isEqualToString:@"1"]) {
+        [self.collectionImage setImage:[UIImage imageNamed:@"album_collected"]];
+    }
+    else {
+        [self.collectionImage setImage:[UIImage imageNamed:@"album_collect"]];
+    }
+    NSString *musicTag = model.paymentType;
+    
+    NSArray *chargeArray = [musicTag componentsSeparatedByString:@","];
+    
+    BOOL isVIP = NO;
+    BOOL isCHARGE = NO;
+    for (NSInteger index = 0; index < chargeArray.count; index++) {
+        NSString *desc = chargeArray[index];
+        if ([desc isEqualToString:@"VIP"]) {
+            isVIP = YES;
+        }
+        else if ([desc isEqualToString:@"CHARGE"]) {
+            isCHARGE = YES;
+        }
+    }
+    self.tagImageView.hidden = NO;
+    if (isCHARGE == NO && isVIP == NO) {
+        self.tagImageView.hidden = YES;
+    }
+    else {
+        [self.tagImageView setImage:[UIImage imageNamed:@"albumTag_charge"]];
+    }
 }
 
 @end

+ 10 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHotAlbumCell.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21225" 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="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -29,6 +29,9 @@
                             </userDefinedRuntimeAttribute>
                         </userDefinedRuntimeAttributes>
                     </imageView>
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="albumTag_VIP" translatesAutoresizingMaskIntoConstraints="NO" id="E1s-oA-ark">
+                        <rect key="frame" x="3" y="10" width="26" height="14"/>
+                    </imageView>
                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="萨克斯新手…" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1bh-Zm-ov0">
                         <rect key="frame" x="3" y="114" width="94" height="20"/>
                         <constraints>
@@ -89,7 +92,9 @@
                 <constraint firstItem="1bh-Zm-ov0" firstAttribute="top" secondItem="mkp-8k-Rld" secondAttribute="bottom" constant="10" id="8Ah-sJ-mEm"/>
                 <constraint firstItem="mkp-8k-Rld" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="Oca-f5-sam"/>
                 <constraint firstItem="mkp-8k-Rld" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="10" id="XeE-bJ-DC9"/>
+                <constraint firstItem="E1s-oA-ark" firstAttribute="top" secondItem="mkp-8k-Rld" secondAttribute="top" id="fSg-j4-d7O"/>
                 <constraint firstItem="xPp-Kr-NCd" firstAttribute="leading" secondItem="mkp-8k-Rld" secondAttribute="leading" constant="4" id="hh1-fD-LIu"/>
+                <constraint firstItem="E1s-oA-ark" firstAttribute="leading" secondItem="mkp-8k-Rld" secondAttribute="leading" id="nNe-hG-qCr"/>
                 <constraint firstItem="1bh-Zm-ov0" firstAttribute="trailing" secondItem="mkp-8k-Rld" secondAttribute="trailing" id="pJb-VN-R1q"/>
                 <constraint firstItem="1bh-Zm-ov0" firstAttribute="leading" secondItem="mkp-8k-Rld" secondAttribute="leading" id="swt-MU-p2E"/>
                 <constraint firstItem="xPp-Kr-NCd" firstAttribute="bottom" secondItem="mkp-8k-Rld" secondAttribute="bottom" constant="-3" id="vEg-aT-hU0"/>
@@ -99,11 +104,14 @@
                 <outlet property="albumImage" destination="mkp-8k-Rld" id="Hdo-Go-aYB"/>
                 <outlet property="albumNameLabel" destination="1bh-Zm-ov0" id="KrW-Bf-gSu"/>
                 <outlet property="collectLabel" destination="HyK-tc-JYn" id="NNp-Qk-B0u"/>
+                <outlet property="collectionImage" destination="htJ-a3-od8" id="nc1-Aj-Xnh"/>
+                <outlet property="tagImageView" destination="E1s-oA-ark" id="sFc-ug-yKL"/>
             </connections>
             <point key="canvasLocation" x="305.79710144927537" y="89.0625"/>
         </collectionViewCell>
     </objects>
     <resources>
+        <image name="albumTag_VIP" width="26" height="14"/>
         <image name="album_collect" width="8" height="8"/>
         <image name="video_placeholder" width="103" height="72"/>
     </resources>

+ 15 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeMusic/HomeHotMusicCellView.m

@@ -28,6 +28,10 @@
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityTagWidth;
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityLeft;
 
+@property (weak, nonatomic) IBOutlet UIImageView *albumTag;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *albumTagWidth;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *albumTagLeft;
+
 @end
 
 @implementation HomeHotMusicCellView
@@ -51,6 +55,17 @@
         self.qualityTagWidth.constant = 0.0f;
         self.qualityLeft.constant = 0.0f;
     }
+    
+    if (sourceModel.albumNums > 0) {
+        self.albumTag.hidden = NO;
+        self.albumTagWidth.constant = 15.0f;
+        self.albumTagLeft.constant = 5.0f;
+    }
+    else {
+        self.albumTag.hidden = YES;
+        self.albumTagWidth.constant = 0.0f;
+        self.albumTagLeft.constant = 0.0f;
+    }
     if ([NSString isEmptyString:sourceModel.musicSheetName]) {
         self.songNameLabel.text = @"";
     }

+ 23 - 10
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeMusic/HomeHotMusicCellView.xib

@@ -23,13 +23,13 @@
                     </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="7xw-r5-qc1">
-                    <rect key="frame" x="65" y="17.5" width="98" height="20"/>
+                    <rect key="frame" x="85" y="17.5" width="98" height="20"/>
                     <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                     <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="-周杰伦" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jm2-P7-5K9">
-                    <rect key="frame" x="168" y="20" width="43" height="15"/>
+                    <rect key="frame" x="188" y="20" width="43" height="15"/>
                     <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"/>
@@ -61,13 +61,6 @@
                         <constraint firstAttribute="height" constant="0.5" id="MXY-Ik-nnJ"/>
                     </constraints>
                 </view>
-                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fGG-J1-J8q">
-                    <rect key="frame" x="0.0" y="0.0" width="414" height="93"/>
-                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                    <connections>
-                        <action selector="buttonAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="fvd-A1-IJ7"/>
-                    </connections>
-                </button>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="quality_tag" translatesAutoresizingMaskIntoConstraints="NO" id="KtS-XT-IOh">
                     <rect key="frame" x="46" y="19" width="14" height="17"/>
                     <constraints>
@@ -75,6 +68,20 @@
                         <constraint firstAttribute="height" constant="17" id="xIf-1B-dUw"/>
                     </constraints>
                 </imageView>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="music_albumTag" translatesAutoresizingMaskIntoConstraints="NO" id="5nH-uA-3wQ">
+                    <rect key="frame" x="65" y="20" width="15" height="15"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="15" id="NYn-2M-U8C"/>
+                        <constraint firstAttribute="height" constant="15" id="dhl-LE-p9a"/>
+                    </constraints>
+                </imageView>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fGG-J1-J8q">
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="93"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <connections>
+                        <action selector="buttonAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="fvd-A1-IJ7"/>
+                    </connections>
+                </button>
             </subviews>
             <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
@@ -82,15 +89,16 @@
                 <constraint firstItem="6eO-qE-g8x" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="jm2-P7-5K9" secondAttribute="trailing" constant="10" id="BiV-XL-Qww"/>
                 <constraint firstAttribute="bottom" secondItem="28W-1K-xs7" secondAttribute="bottom" id="EEi-j6-bXC"/>
                 <constraint firstItem="N1D-TV-iWW" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="19" id="Gyv-2L-yeF"/>
+                <constraint firstItem="7xw-r5-qc1" firstAttribute="leading" secondItem="5nH-uA-3wQ" secondAttribute="trailing" constant="5" id="H0v-BS-VTD"/>
                 <constraint firstItem="KtS-XT-IOh" firstAttribute="leading" secondItem="N1D-TV-iWW" secondAttribute="trailing" constant="5" id="ISl-Jb-v2z"/>
                 <constraint firstItem="qrG-kH-VRz" firstAttribute="leading" secondItem="yx5-8B-fUi" secondAttribute="trailing" constant="12" id="Jbt-JJ-kdQ"/>
                 <constraint firstAttribute="trailing" secondItem="6eO-qE-g8x" secondAttribute="trailing" constant="19" id="OFX-bH-zcc"/>
                 <constraint firstItem="N1D-TV-iWW" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="11" id="Q0e-D9-JXV"/>
                 <constraint firstItem="6eO-qE-g8x" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="Rjr-rO-hGW"/>
+                <constraint firstItem="5nH-uA-3wQ" firstAttribute="centerY" secondItem="KtS-XT-IOh" secondAttribute="centerY" id="Sgz-3n-bdI"/>
                 <constraint firstItem="28W-1K-xs7" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="11" id="XMy-D4-KQK"/>
                 <constraint firstItem="qrG-kH-VRz" firstAttribute="centerY" secondItem="yx5-8B-fUi" secondAttribute="centerY" id="cMa-5P-a2v"/>
                 <constraint firstItem="6eO-qE-g8x" firstAttribute="leading" secondItem="qrG-kH-VRz" secondAttribute="trailing" constant="5" id="cPj-aW-vdE"/>
-                <constraint firstItem="7xw-r5-qc1" firstAttribute="leading" secondItem="KtS-XT-IOh" secondAttribute="trailing" constant="5" id="dee-5a-7oM"/>
                 <constraint firstAttribute="trailing" secondItem="28W-1K-xs7" secondAttribute="trailing" constant="13" id="dez-R9-Ydg"/>
                 <constraint firstAttribute="trailing" secondItem="fGG-J1-J8q" secondAttribute="trailing" id="j3e-Gz-5as"/>
                 <constraint firstAttribute="bottom" secondItem="fGG-J1-J8q" secondAttribute="bottom" id="jNd-iF-vI9"/>
@@ -100,12 +108,16 @@
                 <constraint firstItem="jm2-P7-5K9" firstAttribute="centerY" secondItem="7xw-r5-qc1" secondAttribute="centerY" id="rq7-V0-xTf"/>
                 <constraint firstItem="yx5-8B-fUi" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="11" id="tKz-3F-Rw0"/>
                 <constraint firstItem="fGG-J1-J8q" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="vln-aR-Mmc"/>
+                <constraint firstItem="5nH-uA-3wQ" firstAttribute="leading" secondItem="KtS-XT-IOh" secondAttribute="trailing" constant="5" id="xVQ-RR-dnF"/>
                 <constraint firstItem="7xw-r5-qc1" firstAttribute="centerY" secondItem="N1D-TV-iWW" secondAttribute="centerY" id="xew-7a-geL"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
+                <outlet property="albumTag" destination="5nH-uA-3wQ" id="k1h-8e-zB5"/>
+                <outlet property="albumTagLeft" destination="xVQ-RR-dnF" id="3QW-aY-jxe"/>
+                <outlet property="albumTagWidth" destination="NYn-2M-U8C" id="eX5-LR-LTm"/>
                 <outlet property="lineView" destination="28W-1K-xs7" id="4mk-r2-0Cz"/>
                 <outlet property="qualityLeft" destination="ISl-Jb-v2z" id="sib-ac-sIO"/>
                 <outlet property="qualityMusicTag" destination="KtS-XT-IOh" id="iJb-sj-SzP"/>
@@ -122,6 +134,7 @@
     </objects>
     <resources>
         <image name="home_music_play" width="24" height="24"/>
+        <image name="music_albumTag" width="15" height="15"/>
         <image name="quality_tag" width="14" height="17"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>

+ 6 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Login/Controller/VefiCodeLoginController.m

@@ -27,9 +27,15 @@
     // Do any additional setup after loading the view.
     self.ks_prefersNavigationBarHidden = YES;
     [self configUI];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+    [super viewDidAppear:animated];
+
     if (![NSString isEmptyString:self.phoneNo]) {
         [self queryVefiCode];
     }
+    [_bodyView showKeyboard];
 }
 
 - (void)configUI {
@@ -53,7 +59,6 @@
         self.automaticallyAdjustsScrollViewInsets = NO;
     }
     
-    [_bodyView showKeyboard];
 }
 
 - (void)operationAction:(VEFIACTION)action code:(NSString *)code {

+ 7 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Controller/MineViewController.m

@@ -482,6 +482,13 @@
             [self.navigationController pushViewController:webCtrl animated:YES];
         }
             break;
+        case MINEVIEWTYPE_AWARD:
+        {
+            KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
+            webCtrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/awardActivity"];
+            [self.navigationController pushViewController:webCtrl animated:YES];
+        }
+            break;
         default:
             break;
     }

+ 15 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMusicCell.m

@@ -27,6 +27,10 @@
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityTagWidth;
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityLeft;
 
+@property (weak, nonatomic) IBOutlet UIImageView *albumTag;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *albumTagWidth;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *albumTagLeft;
+
 @end
 
 @implementation MinePageMusicCell
@@ -83,6 +87,17 @@
         self.qualityLeft.constant = 0.0f;
     }
     
+    if (songMessage.albumNums > 0) {
+        self.albumTag.hidden = NO;
+        self.albumTagWidth.constant = 15.0f;
+        self.albumTagLeft.constant = 5.0f;
+    }
+    else {
+        self.albumTag.hidden = YES;
+        self.albumTagWidth.constant = 0.0f;
+        self.albumTagLeft.constant = 0.0f;
+    }
+    
     self.songName.text = [NSString returnNoNullStringWithString:songMessage.musicSheetName];
     NSString *authSting = [NSString stringWithFormat:@"作曲:%@",[NSString returnNoNullStringWithString:songMessage.composer]];
     self.songAuth.text = authSting;

+ 15 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMusicCell.xib

@@ -29,7 +29,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="5wX-Qg-UK0">
-                                <rect key="frame" x="124" y="16" width="57.5" height="17"/>
+                                <rect key="frame" x="144" y="16" width="57.5" height="17"/>
                                 <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
                                 <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
@@ -79,16 +79,25 @@
                                     <constraint firstAttribute="width" constant="14" id="zIi-7h-39m"/>
                                 </constraints>
                             </imageView>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="music_albumTag" translatesAutoresizingMaskIntoConstraints="NO" id="bS2-6F-Dlf">
+                                <rect key="frame" x="124" y="17" width="15" height="15"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="15" id="bzd-5z-FHf"/>
+                                    <constraint firstAttribute="height" constant="15" id="inM-ti-NXZ"/>
+                                </constraints>
+                            </imageView>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="5wX-Qg-UK0" firstAttribute="leading" secondItem="V5J-Oe-JUu" secondAttribute="trailing" constant="5" id="1k1-4B-PrF"/>
+                            <constraint firstItem="bS2-6F-Dlf" firstAttribute="leading" secondItem="V5J-Oe-JUu" secondAttribute="trailing" constant="5" id="Ao9-gq-Sbk"/>
                             <constraint firstAttribute="bottom" secondItem="0z5-RP-2Hy" secondAttribute="bottom" id="EdW-Qt-gFP"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="5wX-Qg-UK0" secondAttribute="trailing" constant="10" id="SV6-Ua-YmU"/>
                             <constraint firstItem="KNo-AM-8Um" firstAttribute="bottom" secondItem="xBX-sV-7hK" secondAttribute="bottom" id="WM8-AX-Frc"/>
                             <constraint firstItem="qyC-cX-e8b" firstAttribute="centerY" secondItem="eZd-kc-RgJ" secondAttribute="centerY" id="XHu-lk-zgJ"/>
                             <constraint firstItem="0z5-RP-2Hy" firstAttribute="leading" secondItem="eZd-kc-RgJ" secondAttribute="leading" constant="14" id="a6A-id-sIZ"/>
+                            <constraint firstItem="5wX-Qg-UK0" firstAttribute="centerY" secondItem="bS2-6F-Dlf" secondAttribute="centerY" id="aiE-ev-am8"/>
                             <constraint firstItem="KNo-AM-8Um" firstAttribute="leading" secondItem="xBX-sV-7hK" secondAttribute="trailing" constant="11" id="c1W-4A-lpJ"/>
+                            <constraint firstItem="5wX-Qg-UK0" firstAttribute="leading" secondItem="bS2-6F-Dlf" secondAttribute="trailing" constant="5" id="efM-ol-o41"/>
                             <constraint firstItem="xBX-sV-7hK" firstAttribute="leading" secondItem="eZd-kc-RgJ" secondAttribute="leading" constant="11" id="fgT-Ph-1JC"/>
                             <constraint firstItem="vUL-Jj-5Vt" firstAttribute="top" secondItem="xBX-sV-7hK" secondAttribute="top" id="h4t-lc-arZ"/>
                             <constraint firstItem="qyC-cX-e8b" firstAttribute="leading" secondItem="qO5-Vi-5dQ" secondAttribute="trailing" constant="5" id="ipq-5V-J1w"/>
@@ -114,6 +123,9 @@
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
+                <outlet property="albumTag" destination="bS2-6F-Dlf" id="8Hy-HV-bXF"/>
+                <outlet property="albumTagLeft" destination="Ao9-gq-Sbk" id="U2A-y8-x4U"/>
+                <outlet property="albumTagWidth" destination="bzd-5z-FHf" id="0it-T3-Vco"/>
                 <outlet property="bgView" destination="eZd-kc-RgJ" id="DDC-wq-TIl"/>
                 <outlet property="lineView" destination="0z5-RP-2Hy" id="8tz-Y9-pUv"/>
                 <outlet property="musicCover" destination="xBX-sV-7hK" id="Xce-kE-ajH"/>
@@ -131,6 +143,7 @@
     </objects>
     <resources>
         <image name="home_music_play" width="24" height="24"/>
+        <image name="music_albumTag" width="15" height="15"/>
         <image name="music_logo" width="41" height="40"/>
         <image name="quality_tag" width="14" height="17"/>
         <systemColor name="systemBackgroundColor">

+ 19 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/Controller/UserAuthViewController.m

@@ -7,6 +7,7 @@
 
 #import "UserAuthViewController.h"
 #import "UserAuthBodyView.h"
+#import "KSBaseWKWebViewController.h"
 
 @interface UserAuthViewController ()
 
@@ -33,11 +34,23 @@
         make.top.right.bottom.left.mas_equalTo(self.view);
     }];
     MJWeakSelf;
-    [self.bodyView sureAuthCall:^{
-        [weakSelf authAction];
+    [self.bodyView sureAuthCall:^(BOOL toProtocalDetail) {
+        if (toProtocalDetail) {
+            [weakSelf toProtocalDetail];
+        }
+        else {
+            [weakSelf authAction];
+        }
     }];
 }
 
+- (void)toProtocalDetail {
+    KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
+    webCtrl.url = [NSString stringWithFormat:@"%@%@",WEBHOST, @"/#/previewProtocol"];
+    [self.navigationController pushViewController:webCtrl animated:YES];
+}
+
+
 - (void)sureCallback:(AuthSuccessCallback)callback {
     if (callback) {
         self.callback = callback;
@@ -52,6 +65,10 @@
         [self MBPShow:@"请输入身份证号"];
         return;
     }
+    else if (self.bodyView.isAgree == NO) {
+        [self MBPShow:@"请阅读并同意用户注册协议"];
+        return;
+    }
     [self showhud];
     [KSNetworkingManager realNameAuthRequest:KS_POST idCardNo:self.bodyView.cardField.text realName:self.bodyView.nameField.text success:^(NSDictionary * _Nonnull dic) {
         [self removehub];

+ 3 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/UserAuthBodyView.h

@@ -9,7 +9,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-typedef void(^AuthSureCallback)(void);
+typedef void(^AuthSureCallback)(BOOL toProtocalDetail);
 
 @interface UserAuthBodyView : UIView
 
@@ -17,6 +17,8 @@ typedef void(^AuthSureCallback)(void);
 
 @property (weak, nonatomic) IBOutlet UITextField *cardField;
 
+@property (nonatomic, assign) BOOL isAgree;
+
 + (instancetype)shareInstance;
 
 - (void)sureAuthCall:(AuthSureCallback)callback;

+ 28 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/UserAuthBodyView.m

@@ -11,6 +11,10 @@
 
 @property (nonatomic, copy) AuthSureCallback callback;
 
+@property (weak, nonatomic) IBOutlet UILabel *registerProtocalLabel;
+
+@property (weak, nonatomic) IBOutlet UIButton *sureButton;
+
 
 @end
 
@@ -20,6 +24,13 @@
     [super awakeFromNib];
     self.nameField.delegate = self;
     self.cardField.delegate = self;
+    
+    [self.sureButton setImage:[UIImage imageNamed:@"login_unseleted"] forState:UIControlStateNormal];
+    [self.sureButton setImage:[UIImage imageNamed:@"login_seleted"] forState:UIControlStateSelected];
+    self.isAgree = NO;
+    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:@"我已阅读并同意《用户注册协议》" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12.0f], NSForegroundColorAttributeName:HexRGB(0x999999)}];
+    [attr addAttributes:@{NSForegroundColorAttributeName:THEMECOLOR} range:NSMakeRange(7, 8)];
+    [self.registerProtocalLabel setAttributedText:attr];
 }
 
 + (instancetype)shareInstance {
@@ -34,8 +45,24 @@
 }
 
 - (IBAction)sureAction:(id)sender {
+    [self endEditing:YES];
+    if (self.callback) {
+        self.callback(NO);
+    }
+}
+
+
+- (IBAction)selectButtonAction:(id)sender {
+    [self endEditing:YES];
+    self.sureButton.selected = !self.sureButton.selected;
+    _isAgree = self.sureButton.isSelected;
+}
+
+
+- (IBAction)registerProtocal:(id)sender {
+    [self endEditing:YES];
     if (self.callback) {
-        self.callback();
+        self.callback(YES);
     }
 }
 

+ 43 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Setting/View/UserAuthBodyView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -56,7 +56,7 @@
                     <rect key="frame" x="27" y="100" width="360" height="70"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="证件号码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JhR-Bf-KWc">
-                            <rect key="frame" x="0.0" y="2" width="73.5" height="25"/>
+                            <rect key="frame" x="0.0" y="2" width="73.666666666666671" height="25"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="25" id="mAP-Nm-lwZ"/>
                             </constraints>
@@ -108,17 +108,52 @@
                         <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="TbP-ux-Lyc"/>
                     </connections>
                 </button>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UC6-QB-BfA">
+                    <rect key="frame" x="28" y="256" width="30" height="30"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="30" id="6y7-T2-po4"/>
+                        <constraint firstAttribute="height" constant="30" id="9GF-2L-Cft"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" image="login_unseleted"/>
+                    <connections>
+                        <action selector="selectButtonAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="7pH-hQ-luK"/>
+                    </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="NKz-wd-ctz">
+                    <rect key="frame" x="58" y="263.66666666666669" width="184" height="15"/>
+                    <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>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XOc-mE-ItN">
+                    <rect key="frame" x="116" y="256" width="126" height="30"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="30" id="gKS-xl-r9F"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <connections>
+                        <action selector="registerProtocal:" destination="iN0-l3-epB" eventType="touchUpInside" id="3gr-fR-kZa"/>
+                    </connections>
+                </button>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
+                <constraint firstItem="XOc-mE-ItN" firstAttribute="leading" secondItem="NKz-wd-ctz" secondAttribute="leading" multiplier="2" id="1bk-71-AMh"/>
                 <constraint firstAttribute="trailing" secondItem="Ffm-T7-ztd" secondAttribute="trailing" constant="27" id="2BE-on-vRw"/>
+                <constraint firstItem="NKz-wd-ctz" firstAttribute="leading" secondItem="UC6-QB-BfA" secondAttribute="trailing" id="2De-KW-6xu"/>
                 <constraint firstItem="aeI-9x-Zku" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="28" id="8Iw-kG-bru"/>
+                <constraint firstItem="XOc-mE-ItN" firstAttribute="trailing" secondItem="NKz-wd-ctz" secondAttribute="trailing" id="CMK-rE-w8A"/>
                 <constraint firstItem="zXT-wQ-9xf" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="15" id="E5t-Aw-Gex"/>
+                <constraint firstItem="XOc-mE-ItN" firstAttribute="centerY" secondItem="NKz-wd-ctz" secondAttribute="centerY" id="Erp-DA-RCK"/>
+                <constraint firstItem="NKz-wd-ctz" firstAttribute="centerY" secondItem="UC6-QB-BfA" secondAttribute="centerY" id="MnE-ew-KMK"/>
                 <constraint firstItem="zXT-wQ-9xf" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="27" id="TEH-LN-pPI"/>
                 <constraint firstAttribute="trailing" secondItem="zXT-wQ-9xf" secondAttribute="trailing" constant="27" id="WU6-BI-WfH"/>
                 <constraint firstAttribute="trailing" secondItem="aeI-9x-Zku" secondAttribute="trailing" constant="28" id="jQT-ed-bsl"/>
+                <constraint firstItem="UC6-QB-BfA" firstAttribute="leading" secondItem="aeI-9x-Zku" secondAttribute="leading" id="kPj-8H-Nm3"/>
                 <constraint firstItem="aeI-9x-Zku" firstAttribute="top" secondItem="Ffm-T7-ztd" secondAttribute="bottom" constant="27" id="kRA-iQ-sHL"/>
                 <constraint firstItem="Ffm-T7-ztd" firstAttribute="top" secondItem="zXT-wQ-9xf" secondAttribute="bottom" constant="15" id="pXk-lo-3Gc"/>
+                <constraint firstItem="UC6-QB-BfA" firstAttribute="top" secondItem="aeI-9x-Zku" secondAttribute="bottom" constant="15" id="yqQ-6U-Hhb"/>
                 <constraint firstItem="Ffm-T7-ztd" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="27" id="zeY-2I-CA2"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
@@ -127,8 +162,13 @@
             <connections>
                 <outlet property="cardField" destination="JWP-XS-Fwe" id="WSn-8z-FrL"/>
                 <outlet property="nameField" destination="3vY-NV-dp4" id="qPy-wI-AL0"/>
+                <outlet property="registerProtocalLabel" destination="NKz-wd-ctz" id="o4x-ph-sHB"/>
+                <outlet property="sureButton" destination="UC6-QB-BfA" id="eGH-sd-oLg"/>
             </connections>
             <point key="canvasLocation" x="131.8840579710145" y="-21.763392857142858"/>
         </view>
     </objects>
+    <resources>
+        <image name="login_unseleted" width="15" height="15"/>
+    </resources>
 </document>

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineActionView.h

@@ -37,6 +37,7 @@ typedef NS_ENUM(NSInteger, MINEVIEWTYPE) {
     MINEVIEWTYPE_TICKET,
     MINEVIEWTYPE_CONTACTUS = 1028, // 联系我们
     MINEVIEWTYPE_UPLOADMUSIC, // 上传曲谱
+    MINEVIEWTYPE_AWARD,
 };
 
 #define FUNCTIONVIEW_WIDTH (80)

+ 6 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineTeachToolView.m

@@ -34,6 +34,9 @@
     CGFloat space = (KPortraitWidth - 28 - 4 * FUNCTIONVIEW_WIDTH) / 5.0f;
     BOOL tagHandle  = NO;
     for (NSInteger index = 0; index < self.imageArray.count; index++) {
+        if (self.isMember == NO && index == 7) {
+            return;
+        }
         if (self.isMember == NO && index == 3) {
             tagHandle = YES;
             continue;
@@ -74,21 +77,21 @@
 
 - (NSMutableArray *)imageArray {
     if (!_imageArray) {
-        _imageArray = [NSMutableArray arrayWithArray:@[@"tool_myLive",@"tool_liveCourse",@"tool_videoCourse",@"tool_musicRoom",@"tool_myAccompany",@"tool_homework",@"tool_evaluate"]];
+        _imageArray = [NSMutableArray arrayWithArray:@[@"tool_myLive",@"tool_liveCourse",@"tool_videoCourse",@"tool_musicRoom",@"tool_myAccompany",@"tool_homework",@"tool_evaluate",@"tool_award"]];
     }
     return _imageArray;
 }
 
 - (NSMutableArray *)titleArray {
     if (!_titleArray) {
-        _titleArray = [NSMutableArray arrayWithArray:@[@"我的直播",@"直播课",@"视频课",@"云酷琴房",@"陪练课设置",@"课后作业",@"课后评价"]];
+        _titleArray = [NSMutableArray arrayWithArray:@[@"我的直播",@"直播课",@"视频课",@"云酷琴房",@"陪练课设置",@"课后作业",@"课后评价",@"活动奖品"]];
     }
     return _titleArray;
 }
 
 - (NSMutableArray *)tagArray {
     if (!_tagArray) {
-        _tagArray = [NSMutableArray arrayWithArray:@[@(MINEVIEWTYPE_STARTBOARDCAST),@(MINEVIEWTYPE_BOARDCASTCOURSE),@(MINEVIEWTYPE_VIDEOCOURSE),@(MINEVIEWTYPE_MUSICROOM),@(MINEVIEWTYPE_ACCOMPANY),@(MINEVIEWTYPE_HOMEWORK),@(MINEVIEWTYPE_EVALUATE)]];
+        _tagArray = [NSMutableArray arrayWithArray:@[@(MINEVIEWTYPE_STARTBOARDCAST),@(MINEVIEWTYPE_BOARDCASTCOURSE),@(MINEVIEWTYPE_VIDEOCOURSE),@(MINEVIEWTYPE_MUSICROOM),@(MINEVIEWTYPE_ACCOMPANY),@(MINEVIEWTYPE_HOMEWORK),@(MINEVIEWTYPE_EVALUATE),@(MINEVIEWTYPE_AWARD)]];
     }
     return _tagArray;
 }