diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index fa345163..757e322f 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -517,6 +517,8 @@ 548E01C92C3F78600071C83D /* FeedBackConfigModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 548E01C82C3F78600071C83D /* FeedBackConfigModel.m */; }; 548E01CC2C3FB1C70071C83D /* i18nGiftNameMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 548E01CB2C3FB1C70071C83D /* i18nGiftNameMap.m */; }; 54ACDCC22C5B31BD0099472C /* XPBeautIDView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54ACDCC12C5B31BD0099472C /* XPBeautIDView.m */; }; + 54AE7E142C9AD9AB006D2BE2 /* CPCard.m in Sources */ = {isa = PBXBuildFile; fileRef = 54AE7E132C9AD9A6006D2BE2 /* CPCard.m */; }; + 54AE7E172C9AE589006D2BE2 /* CPListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 54AE7E162C9AE589006D2BE2 /* CPListViewController.m */; }; 54C3895C2C215F5100FD47B1 /* XPHomeMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */; }; 54C3895F2C2189DD00FD47B1 /* XPHomeMinePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */; }; 54C389622C23BD1600FD47B1 /* HomeRankAvatarModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C389612C23BD1600FD47B1 /* HomeRankAvatarModel.m */; }; @@ -538,6 +540,12 @@ 54F4693B2C2A984D00A83655 /* MedalModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F4693A2C2A984D00A83655 /* MedalModel.m */; }; 54F4693E2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F4693D2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m */; }; 54F469412C2AB56900A83655 /* XPMineGiftsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F469402C2AB56900A83655 /* XPMineGiftsTableViewCell.m */; }; + 54FFD37A2C9BCB1900DE61E5 /* RelationUserVO.m in Sources */ = {isa = PBXBuildFile; fileRef = 54FFD3792C9BCB1900DE61E5 /* RelationUserVO.m */; }; + 54FFD3812C9BD12600DE61E5 /* 4.svga in Resources */ = {isa = PBXBuildFile; fileRef = 54FFD37E2C9BD12600DE61E5 /* 4.svga */; }; + 54FFD3822C9BD12600DE61E5 /* 1.svga in Resources */ = {isa = PBXBuildFile; fileRef = 54FFD37B2C9BD12600DE61E5 /* 1.svga */; }; + 54FFD3832C9BD12600DE61E5 /* 5.svga in Resources */ = {isa = PBXBuildFile; fileRef = 54FFD37F2C9BD12600DE61E5 /* 5.svga */; }; + 54FFD3842C9BD12600DE61E5 /* 3.svga in Resources */ = {isa = PBXBuildFile; fileRef = 54FFD37D2C9BD12600DE61E5 /* 3.svga */; }; + 54FFD3852C9BD12600DE61E5 /* 2.svga in Resources */ = {isa = PBXBuildFile; fileRef = 54FFD37C2C9BD12600DE61E5 /* 2.svga */; }; 73FFADDC93E195344047A2EC /* Pods_YuMi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_YuMi.framework */; }; 9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; }; 9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C927BA4F570032BD2B /* AnchorMicroView.m */; }; @@ -2568,6 +2576,10 @@ 548E01CB2C3FB1C70071C83D /* i18nGiftNameMap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = i18nGiftNameMap.m; sourceTree = ""; }; 54ACDCC02C5B31BD0099472C /* XPBeautIDView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPBeautIDView.h; sourceTree = ""; }; 54ACDCC12C5B31BD0099472C /* XPBeautIDView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPBeautIDView.m; sourceTree = ""; }; + 54AE7E122C9AD98C006D2BE2 /* CPCard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPCard.h; sourceTree = ""; }; + 54AE7E132C9AD9A6006D2BE2 /* CPCard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPCard.m; sourceTree = ""; }; + 54AE7E152C9AE589006D2BE2 /* CPListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPListViewController.h; sourceTree = ""; }; + 54AE7E162C9AE589006D2BE2 /* CPListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPListViewController.m; sourceTree = ""; }; 54C3895A2C215F5100FD47B1 /* XPHomeMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMineViewController.h; sourceTree = ""; }; 54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeMineViewController.m; sourceTree = ""; }; 54C3895D2C2189DD00FD47B1 /* XPHomeMinePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMinePresenter.h; sourceTree = ""; }; @@ -2610,6 +2622,13 @@ 54F4693D2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineMedalsTableViewCell.m; sourceTree = ""; }; 54F4693F2C2AB56900A83655 /* XPMineGiftsTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGiftsTableViewCell.h; sourceTree = ""; }; 54F469402C2AB56900A83655 /* XPMineGiftsTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineGiftsTableViewCell.m; sourceTree = ""; }; + 54FFD3782C9BCB1900DE61E5 /* RelationUserVO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RelationUserVO.h; sourceTree = ""; }; + 54FFD3792C9BCB1900DE61E5 /* RelationUserVO.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RelationUserVO.m; sourceTree = ""; }; + 54FFD37B2C9BD12600DE61E5 /* 1.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 1.svga; sourceTree = ""; }; + 54FFD37C2C9BD12600DE61E5 /* 2.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 2.svga; sourceTree = ""; }; + 54FFD37D2C9BD12600DE61E5 /* 3.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 3.svga; sourceTree = ""; }; + 54FFD37E2C9BD12600DE61E5 /* 4.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 4.svga; sourceTree = ""; }; + 54FFD37F2C9BD12600DE61E5 /* 5.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 5.svga; sourceTree = ""; }; 7DB00EC07F1D0ADFF900B38D /* Pods-YuMi.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YuMi.debug.xcconfig"; path = "Target Support Files/Pods-YuMi/Pods-YuMi.debug.xcconfig"; sourceTree = ""; }; 9B0086C427BA392B0032BD2B /* AnchorStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorStageView.h; sourceTree = ""; }; 9B0086C527BA392B0032BD2B /* AnchorStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorStageView.m; sourceTree = ""; }; @@ -4978,6 +4997,8 @@ 9B2A12DD2783FEDD00CED41B /* UserVipInfoVo.m */, 54F469392C2A984D00A83655 /* MedalModel.h */, 54F4693A2C2A984D00A83655 /* MedalModel.m */, + 54FFD3782C9BCB1900DE61E5 /* RelationUserVO.h */, + 54FFD3792C9BCB1900DE61E5 /* RelationUserVO.m */, ); path = Model; sourceTree = ""; @@ -6444,6 +6465,18 @@ path = SubViews; sourceTree = ""; }; + 54FFD3802C9BD12600DE61E5 /* cp */ = { + isa = PBXGroup; + children = ( + 54FFD37B2C9BD12600DE61E5 /* 1.svga */, + 54FFD37C2C9BD12600DE61E5 /* 2.svga */, + 54FFD37D2C9BD12600DE61E5 /* 3.svga */, + 54FFD37E2C9BD12600DE61E5 /* 4.svga */, + 54FFD37F2C9BD12600DE61E5 /* 5.svga */, + ); + path = cp; + sourceTree = ""; + }; 9B0086C727BA4F4A0032BD2B /* Anchor */ = { isa = PBXGroup; children = ( @@ -9920,6 +9953,7 @@ E8A1E45C276220B100B294CA /* Resources */ = { isa = PBXGroup; children = ( + 54FFD3802C9BD12600DE61E5 /* cp */, 54F179062C8EA48C00CB5219 /* Combo_Boom.svga */, 23EE96F12B9FF6BE00475D69 /* pi_crazy_zoo.svga */, 237701182BD6143700D661F1 /* pi_happy_egg_smash.svga */, @@ -10746,6 +10780,8 @@ E8E70D7F26F2F39000F03460 /* SubViews */, E8E70D7526F2F15100F03460 /* XPMineViewController.h */, E8E70D7626F2F15100F03460 /* XPMineViewController.m */, + 54AE7E152C9AE589006D2BE2 /* CPListViewController.h */, + 54AE7E162C9AE589006D2BE2 /* CPListViewController.m */, 54C9A1112C3D5A2300C6D970 /* XPGameOrdersListViewController.h */, 54C9A1122C3D5A2300C6D970 /* XPGameOrdersListViewController.m */, 23CEFB6A2AFB803B00576D89 /* PISwitchingEnvironmentVC.h */, @@ -10871,6 +10907,8 @@ E8E70D7F26F2F39000F03460 /* SubViews */ = { isa = PBXGroup; children = ( + 54AE7E122C9AD98C006D2BE2 /* CPCard.h */, + 54AE7E132C9AD9A6006D2BE2 /* CPCard.m */, E87E545229AA05EA00EBE52B /* XPFootPrintNavView.h */, E87E545329AA05EA00EBE52B /* XPFootPrintNavView.m */, E8B846CC26FDD93D00A777FE /* Recharge */, @@ -11164,6 +11202,11 @@ E80EC81928ACD84000D133C5 /* emoji_80@2x.png in Resources */, 237701192BD6143700D661F1 /* pi_happy_egg_smash.svga in Resources */, E80EC8B328ACD84100D133C5 /* emoji_115@2x.png in Resources */, + 54FFD3812C9BD12600DE61E5 /* 4.svga in Resources */, + 54FFD3822C9BD12600DE61E5 /* 1.svga in Resources */, + 54FFD3832C9BD12600DE61E5 /* 5.svga in Resources */, + 54FFD3842C9BD12600DE61E5 /* 3.svga in Resources */, + 54FFD3852C9BD12600DE61E5 /* 2.svga in Resources */, E80EC8A828ACD84100D133C5 /* emoji_76@2x.png in Resources */, 2368ECCF2BC38F9800EDF4C9 /* InfoPlist.strings in Resources */, E80EC88E28ACD84000D133C5 /* emoji_142@2x.png in Resources */, @@ -11811,6 +11854,7 @@ E8412F9927799249006E1101 /* InviteFansModel.m in Sources */, E88C72912828EA4E0047FB2B /* Music+CoreDataProperties.m in Sources */, E84BF7CA277AF79D00EF8877 /* XPRoomSettingTagCell.m in Sources */, + 54FFD37A2C9BCB1900DE61E5 /* RelationUserVO.m in Sources */, 9BE9F0F927FED12D00667200 /* XPAnchorFansPrivilegeModel.m in Sources */, E87DF5022A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.m in Sources */, E8AB631628ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.m in Sources */, @@ -11876,6 +11920,7 @@ 5412E0FD2C52512100FDD668 /* RoomBottomEntranceModel.m in Sources */, E818DD1C2A4896EE00F163F7 /* XPLoginAraeViewController.m in Sources */, 23959FE72BB15C930085A282 /* UploadFileModel.m in Sources */, + 54AE7E142C9AD9AB006D2BE2 /* CPCard.m in Sources */, E8D4824A278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m in Sources */, E85E7B432A4EB0D300B6D00A /* XPMineExchangeAuthorityHeadView.m in Sources */, 23194DD02AD14BF000649F51 /* DDLog.m in Sources */, @@ -12358,6 +12403,7 @@ 2331C1B82A60F32D00E1D940 /* XPRoomHalfWebView.m in Sources */, 9BFE0D8E2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m in Sources */, E87DF4B72A42C2FD009C1185 /* XPFirstRechargeCollectionView.m in Sources */, + 54AE7E172C9AE589006D2BE2 /* CPListViewController.m in Sources */, 238B37A92AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.m in Sources */, E85E7B382A4EB0D300B6D00A /* XPMineGuildSearchMemberTableViewCell.m in Sources */, 23D321D52ADD0F05006B259C /* Api+PhotoAlbum.m in Sources */, diff --git a/YuMi/Assets.xcassets/1.0.16/Contents.json b/YuMi/Assets.xcassets/1.0.16/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_0.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_0.imageset/Contents.json new file mode 100644 index 00000000..45f9790b --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_0.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_flag_lv_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_0.imageset/cp_avatar_flag_lv_1@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_0.imageset/cp_avatar_flag_lv_1@3x.png new file mode 100644 index 00000000..8f41bf53 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_0.imageset/cp_avatar_flag_lv_1@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_1.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_1.imageset/Contents.json new file mode 100644 index 00000000..e5b505dc --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_flag_lv_2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_1.imageset/cp_avatar_flag_lv_2@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_1.imageset/cp_avatar_flag_lv_2@3x.png new file mode 100644 index 00000000..1a97ce79 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_1.imageset/cp_avatar_flag_lv_2@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_2.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_2.imageset/Contents.json new file mode 100644 index 00000000..ec2f0c2e --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_flag_lv_3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_2.imageset/cp_avatar_flag_lv_3@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_2.imageset/cp_avatar_flag_lv_3@3x.png new file mode 100644 index 00000000..5311d080 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_2.imageset/cp_avatar_flag_lv_3@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_3.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_3.imageset/Contents.json new file mode 100644 index 00000000..332d97c2 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_flag_lv_4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_3.imageset/cp_avatar_flag_lv_4@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_3.imageset/cp_avatar_flag_lv_4@3x.png new file mode 100644 index 00000000..a40ede63 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_3.imageset/cp_avatar_flag_lv_4@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_4.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_4.imageset/Contents.json new file mode 100644 index 00000000..315273c5 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_flag_lv_5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_4.imageset/cp_avatar_flag_lv_5@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_4.imageset/cp_avatar_flag_lv_5@3x.png new file mode 100644 index 00000000..9eca74cb Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_4.imageset/cp_avatar_flag_lv_5@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_5.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_5.imageset/Contents.json new file mode 100644 index 00000000..2c17c00d --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_flag_lv_6@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_5.imageset/cp_avatar_flag_lv_6@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_5.imageset/cp_avatar_flag_lv_6@3x.png new file mode 100644 index 00000000..5da915c8 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_flag_lv_5.imageset/cp_avatar_flag_lv_6@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_1.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_1.imageset/Contents.json new file mode 100644 index 00000000..57920629 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_head_lv_2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_1.imageset/cp_avatar_head_lv_2@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_1.imageset/cp_avatar_head_lv_2@3x.png new file mode 100644 index 00000000..a8bbe2cf Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_1.imageset/cp_avatar_head_lv_2@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_2.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_2.imageset/Contents.json new file mode 100644 index 00000000..1fc62417 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_head_lv_3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_2.imageset/cp_avatar_head_lv_3@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_2.imageset/cp_avatar_head_lv_3@3x.png new file mode 100644 index 00000000..01c13e90 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_2.imageset/cp_avatar_head_lv_3@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_3.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_3.imageset/Contents.json new file mode 100644 index 00000000..88112a73 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_head_lv_4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_3.imageset/cp_avatar_head_lv_4@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_3.imageset/cp_avatar_head_lv_4@3x.png new file mode 100644 index 00000000..8532929c Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_3.imageset/cp_avatar_head_lv_4@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_4.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_4.imageset/Contents.json new file mode 100644 index 00000000..6fcea367 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_head_lv_5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_4.imageset/cp_avatar_head_lv_5@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_4.imageset/cp_avatar_head_lv_5@3x.png new file mode 100644 index 00000000..eabbb03a Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_4.imageset/cp_avatar_head_lv_5@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_5.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_5.imageset/Contents.json new file mode 100644 index 00000000..40b4704a --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_head_lv_6@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_5.imageset/cp_avatar_head_lv_6@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_5.imageset/cp_avatar_head_lv_6@3x.png new file mode 100644 index 00000000..23bd1a84 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_head_lv_5.imageset/cp_avatar_head_lv_6@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_heart.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_avatar_heart.imageset/Contents.json new file mode 100644 index 00000000..dc898a0d --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_avatar_heart.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_avatar_heart@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_avatar_heart.imageset/cp_avatar_heart@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_avatar_heart.imageset/cp_avatar_heart@3x.png new file mode 100644 index 00000000..13f2187b Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_avatar_heart.imageset/cp_avatar_heart@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_bg.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_bg.imageset/Contents.json new file mode 100644 index 00000000..856b9ec9 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_bg.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "框@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_bg.imageset/框@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_bg.imageset/框@3x.png new file mode 100644 index 00000000..457a200b Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_bg.imageset/框@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_break_heart.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_break_heart.imageset/Contents.json new file mode 100644 index 00000000..9642e1fb --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_break_heart.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "切图 32@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_break_heart.imageset/切图 32@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_break_heart.imageset/切图 32@3x.png new file mode 100644 index 00000000..5fde4cb5 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_break_heart.imageset/切图 32@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_empty_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_empty_avatar.imageset/Contents.json new file mode 100644 index 00000000..f6b25245 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_empty_avatar.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "头像@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_empty_avatar.imageset/头像@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_empty_avatar.imageset/头像@3x.png new file mode 100644 index 00000000..297b6bee Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_empty_avatar.imageset/头像@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_heart.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_heart.imageset/Contents.json new file mode 100644 index 00000000..72e5f6ab --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_heart.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "爱心@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_heart.imageset/爱心@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_heart.imageset/爱心@3x.png new file mode 100644 index 00000000..3362ac42 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_heart.imageset/爱心@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_help.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_help.imageset/Contents.json new file mode 100644 index 00000000..2d60b8b8 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_help.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "返回 1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_help.imageset/返回 1@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_help.imageset/返回 1@3x.png new file mode 100644 index 00000000..957419d2 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_help.imageset/返回 1@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_list_placeholder.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_list_placeholder.imageset/Contents.json new file mode 100644 index 00000000..82082063 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_list_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "切图 32@3x-2.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_list_placeholder.imageset/切图 32@3x-2.png b/YuMi/Assets.xcassets/1.0.16/cp_list_placeholder.imageset/切图 32@3x-2.png new file mode 100644 index 00000000..d2951ffc Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_list_placeholder.imageset/切图 32@3x-2.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_menu.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_menu.imageset/Contents.json new file mode 100644 index 00000000..777706f2 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_menu.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "切图 31@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_menu.imageset/切图 31@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_menu.imageset/切图 31@3x.png new file mode 100644 index 00000000..c8dc2566 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_menu.imageset/切图 31@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_bg.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_relationship_bg.imageset/Contents.json new file mode 100644 index 00000000..c8db8a70 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_relationship_bg.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_relationship_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_bg.imageset/cp_relationship_bg@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_relationship_bg.imageset/cp_relationship_bg@3x.png new file mode 100644 index 00000000..647b4a8f Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_relationship_bg.imageset/cp_relationship_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_0.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_0.imageset/Contents.json new file mode 100644 index 00000000..9993d167 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_0.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_relationship_lv_0@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_0.imageset/cp_relationship_lv_0@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_0.imageset/cp_relationship_lv_0@3x.png new file mode 100644 index 00000000..5791017e Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_0.imageset/cp_relationship_lv_0@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_1.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_1.imageset/Contents.json new file mode 100644 index 00000000..59c05ceb --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_relationship_lv_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_1.imageset/cp_relationship_lv_1@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_1.imageset/cp_relationship_lv_1@3x.png new file mode 100644 index 00000000..0ec8fe39 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_1.imageset/cp_relationship_lv_1@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_2.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_2.imageset/Contents.json new file mode 100644 index 00000000..9762356d --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_relationship_lv_2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_2.imageset/cp_relationship_lv_2@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_2.imageset/cp_relationship_lv_2@3x.png new file mode 100644 index 00000000..35c37bb1 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_2.imageset/cp_relationship_lv_2@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_3.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_3.imageset/Contents.json new file mode 100644 index 00000000..20f1b0bd --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_relationship_lv_3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_3.imageset/cp_relationship_lv_3@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_3.imageset/cp_relationship_lv_3@3x.png new file mode 100644 index 00000000..ad58d7f0 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_3.imageset/cp_relationship_lv_3@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_4.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_4.imageset/Contents.json new file mode 100644 index 00000000..f85e98ec --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_relationship_lv_4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_4.imageset/cp_relationship_lv_4@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_4.imageset/cp_relationship_lv_4@3x.png new file mode 100644 index 00000000..c6ff7478 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_4.imageset/cp_relationship_lv_4@3x.png differ diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_5.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_5.imageset/Contents.json new file mode 100644 index 00000000..302f6a48 --- /dev/null +++ b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cp_relationship_lv_5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_5.imageset/cp_relationship_lv_5@3x.png b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_5.imageset/cp_relationship_lv_5@3x.png new file mode 100644 index 00000000..b0f1b107 Binary files /dev/null and b/YuMi/Assets.xcassets/1.0.16/cp_relationship_lv_5.imageset/cp_relationship_lv_5@3x.png differ diff --git a/YuMi/Modules/YMMine/Api/Api+Mine.h b/YuMi/Modules/YMMine/Api/Api+Mine.h index 69e3524f..30966042 100644 --- a/YuMi/Modules/YMMine/Api/Api+Mine.h +++ b/YuMi/Modules/YMMine/Api/Api+Mine.h @@ -345,6 +345,12 @@ NS_ASSUME_NONNULL_BEGIN +(void)requestUnmaskingFromBlackRoomList:(HttpRequestHelperCompletion)completion objId:(NSString *)objId type:(NSString *)type ; ///得到腾讯存储信息 + (void)getQCloudInfo:(HttpRequestHelperCompletion)completion; + +//获取 cp 列表 ++(void)requestCPList:(HttpRequestHelperCompletion)completion page:(NSNumber *)page pageSize:(NSNumber *)pageSize; +//取消 cp 关系 ++(void)cancelCPList:(HttpRequestHelperCompletion)completion uid:(NSNumber *)uid loverUid:(NSNumber *)loverUid goldNum:(NSNumber *)goldNum; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Api/Api+Mine.m b/YuMi/Modules/YMMine/Api/Api+Mine.m index 8832de87..8c58cc64 100644 --- a/YuMi/Modules/YMMine/Api/Api+Mine.m +++ b/YuMi/Modules/YMMine/Api/Api+Mine.m @@ -448,4 +448,14 @@ +(void)requestUnmaskingFromBlackRoomList:(HttpRequestHelperCompletion)completion objId:(NSString *)objId type:(NSString *)type { [self makeRequest:@"user/black/delete" method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__,objId,type, nil]; } + + +//获取 cp 列表 ++(void)requestCPList:(HttpRequestHelperCompletion)completion page:(NSNumber *)page pageSize:(NSNumber *)pageSize{ + [self makeRequest:@"user/cp/list" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize, nil]; +} + ++(void)cancelCPList:(HttpRequestHelperCompletion)completion uid:(NSNumber *)uid loverUid:(NSNumber *)loverUid goldNum:(NSNumber *)goldNum { + [self makeRequest:@"user/cp/cancel" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, loverUid, goldNum, nil]; +} @end diff --git a/YuMi/Modules/YMMine/View/CPListViewController.h b/YuMi/Modules/YMMine/View/CPListViewController.h new file mode 100644 index 00000000..2795a282 --- /dev/null +++ b/YuMi/Modules/YMMine/View/CPListViewController.h @@ -0,0 +1,16 @@ +// +// CPListViewController.h +// YuMi +// +// Created by P on 2024/9/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface CPListViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/CPListViewController.m b/YuMi/Modules/YMMine/View/CPListViewController.m new file mode 100644 index 00000000..8d4cb5b1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/CPListViewController.m @@ -0,0 +1,264 @@ +// +// CPListViewController.m +// YuMi +// +// Created by P on 2024/9/18. +// + +#import "CPListViewController.h" + +#import "Api+Mine.h" + +#import "CPCard.h" +#import "RelationUserVO.h" +#import "XPMineUserInfoCustomNavView.h" + +@interface CPListCardCell : UITableViewCell + +@property (nonatomic, strong) RelationUserVO *model; +@property (nonatomic, strong) CPCard *cpCard; + +@end + +@implementation CPListCardCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.backgroundColor = [UIColor clearColor]; + self.contentView.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self setupUI]; + } + return self; +} + +- (void)setupUI { + [self.contentView addSubview:self.cpCard]; + [self.cpCard mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; +} + +- (void)setModel:(RelationUserVO *)model { + _model = model; + [self.cpCard updateForCPList:model]; +} + +- (CPCard *)cpCard { + if (!_cpCard) { + _cpCard = [[CPCard alloc] init]; + _cpCard.userInteractionEnabled = YES; + _cpCard.isListItem = YES; + } + return _cpCard; +} + +@end + +@interface CPListViewController () + +@property (nonatomic, strong) UIView *emptyView; + +@property (nonatomic, strong) XPMineUserInfoCustomNavView *navView; +@property (nonatomic, strong) UITableView *cpCardTableView; +@property (nonatomic, assign) NSInteger page; +@property (nonatomic, strong) NSMutableArray *dataSource; + +@end + +@implementation CPListViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.page = 1; + [self setupUI]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self.cpCardTableView.mj_header beginRefreshing]; +} + +- (void)setupUI { + self.view.backgroundColor = UIColorFromRGB(0x08151A); + + [self setupNavigationBar]; + [self setupEmptyView]; + [self setupTableView]; +} + +- (void)setupNavigationBar { + [self.view addSubview:self.navView]; + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; +} + +- (void)setupEmptyView { + [self.view addSubview:self.emptyView]; + [self.emptyView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.leading.trailing.mas_equalTo(self.view); + make.top.mas_equalTo(self.navView.mas_bottom); + }]; +} + +- (void)setupTableView { + [self.view addSubview:self.cpCardTableView]; + [self.cpCardTableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.leading.trailing.mas_equalTo(self.view); + make.top.mas_equalTo(self.navView.mas_bottom).offset(10); + }]; + + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _cpCardTableView.mj_header = header; + + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + _cpCardTableView.mj_footer = footer; +} + +- (void)headerRefresh { + if (self.page == 1) { + self.dataSource = @[].mutableCopy; + } + + @kWeakify(self); + [Api requestCPList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); + [self.cpCardTableView.mj_header endRefreshing]; + [self.cpCardTableView.mj_footer endRefreshing]; + + if (code == 200) { + NSArray *array = [RelationUserVO modelsWithArray:data.data]; + [self.dataSource addObjectsFromArray:array]; + [self.cpCardTableView reloadData]; + + self.emptyView.hidden = self.dataSource.count != 0; + } else { + self.emptyView.hidden = NO; + [self showErrorToast:msg]; + } + } page:@(self.page) pageSize:@(10)]; +} + +- (void)footerRefresh { + self.page += 1; + [self headerRefresh]; +} + +- (void)cancelRelation:(RelationUserVO *)model { + NSString *message = [NSString stringWithFormat:@"I'll pay %@ %ld coins to leave my son lar", model.cpNick, (long)model.cancelGoldNum]; + + @kWeakify(self); + [TTPopup alertWithMessage:message confirmHandler:^{ + @kStrongify(self); + [self showLoading]; + [Api cancelCPList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + [self showSuccessToast:msg]; + [self.cpCardTableView.mj_header beginRefreshing]; + } else { + [self hideHUD]; + [self showErrorToast:msg]; + } + } + uid:@(model.uid) + loverUid:@(model.cpUid) + goldNum:@(model.cancelGoldNum)]; + } cancelHandler:^{ }]; +} + +#pragma mark - UITableViewDelegate & DataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.dataSource.count; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return kGetScaleWidth(175); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + CPListCardCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([CPListCardCell class])]; + RelationUserVO *model = [self.dataSource xpSafeObjectAtIndex:indexPath.row]; + cell.model = model; + + @kWeakify(self); + [cell.cpCard setBreakTheHeart:^(RelationUserVO *model) { + @kStrongify(self); + [self cancelRelation:model]; + }]; + return cell; +} + +#pragma mark - XPMineCustomNavViewDelegate +- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickEditButton:(UIButton *)sender { + // TODO: Goto CP rule page +} + +- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickBackButton:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - +- (XPMineUserInfoCustomNavView *)navView { + if (!_navView) { + _navView = [[XPMineUserInfoCustomNavView alloc] init]; + _navView.delegate = self; + _navView.titleLabel.text = @"My CPPPPPPPPPPPP"; + _navView.titleLabel.textColor = [UIColor whiteColor]; + [_navView.editButton setImage:[UIImage imageNamed:@"cp_help"] forState:UIControlStateNormal]; + [_navView updateBackButtonImage:[UIImage imageNamed:@"home_search_white_back"]]; + } + return _navView; +} + +- (UITableView *)cpCardTableView { + if (!_cpCardTableView) { + _cpCardTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _cpCardTableView.delegate = self; + _cpCardTableView.dataSource = self; + _cpCardTableView.backgroundColor = [UIColor clearColor]; + _cpCardTableView.estimatedRowHeight = kGetScaleWidth(175); + _cpCardTableView.separatorStyle = UITableViewCellSeparatorStyleNone; + [_cpCardTableView registerClass:[CPListCardCell class] + forCellReuseIdentifier:NSStringFromClass([CPListCardCell class])]; + } + return _cpCardTableView; +} + + +- (UIView *)emptyView { + if (!_emptyView) { + _emptyView = [[UIView alloc] init]; + _emptyView.hidden = YES; + + UIImageView *icon = [[UIImageView alloc] initWithImage:kImage(@"cp_list_placeholder")]; + [_emptyView addSubview:icon]; + [icon mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(_emptyView); + make.top.mas_equalTo(70); + make.size.mas_equalTo(CGSizeMake(110, 110)); + }]; + + UILabel *title = [UILabel labelInitWithText:@"No more data" font:kFontRegular(14) textColor:[UIColor colorWithWhite:1 alpha:0.4]]; + [_emptyView addSubview:title]; + [title mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(_emptyView); + make.top.mas_equalTo(186); + }]; + } + return _emptyView; +} +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m index b5c67a71..e39911d8 100644 --- a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m @@ -347,6 +347,7 @@ XPMineCustomNavViewDelegate, XPMineUserInfoProtocol, XPMineUserInfoHeaderViewDel self.userDataVC.medalInfo = userInfo.medals; self.userMomentVC.dynamicInfo = userInfo.dynamicInfo; self.headView.roomUid = userInfo.roomUid; + self.headView.relationUser = userInfo.relationUserVO; self.giftVC.userInfo = userInfo; if(isMSRTL()){ diff --git a/YuMi/Modules/YMMine/View/SubViews/CPCard.h b/YuMi/Modules/YMMine/View/SubViews/CPCard.h new file mode 100644 index 00000000..bcfaa8e1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/CPCard.h @@ -0,0 +1,22 @@ +// +// CPCard.h +// YuMi +// +// Created by P on 2024/9/18. +// + + +#import +@class RelationUserVO; + +@interface CPCard : UIView + +@property (nonatomic, assign) BOOL isListItem; +@property (nonatomic, copy) NSString *usersAvatar; +@property (nonatomic, copy) void(^breakTheHeart)(RelationUserVO *model); + +- (void)updateForUserPage:(RelationUserVO *)model; +- (void)updateForCPList:(RelationUserVO *)model; + + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/CPCard.m b/YuMi/Modules/YMMine/View/SubViews/CPCard.m new file mode 100644 index 00000000..14dd41f1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/CPCard.m @@ -0,0 +1,345 @@ +// +// CPCard.m +// YuMi +// +// Created by P on 2024/9/18. +// + +#import "CPCard.h" +#import +#import "RelationUserVO.h" + +@interface CPCard () + +@property (nonatomic, strong) RelationUserVO *relationUser; + +@property (nonatomic, strong) UIImageView *backgroundImage; +@property (nonatomic, strong) UIButton *breakYourHeartButton; +@property (nonatomic, strong) NetImageView *avatarView; +@property (nonatomic, strong) SVGAImageView *headWearSvgaImageView; +@property (nonatomic, strong) NetImageView *avatarView_cp; +@property (nonatomic, strong) SVGAImageView *headWearSvgaImageView_cp; +@property (nonatomic, strong) UILabel *bottomLabel; +@property (nonatomic, strong) UILabel *topLabel; +@property (nonatomic, strong) NetImageView *bottomImageView; +@property (nonatomic, strong) UILabel *progressUpgradeLabel; +@property (nonatomic, strong) UILabel *progressNumLabel; +@property (nonatomic, strong) UIProgressView *progressView; + +@end + +@implementation CPCard + +- (instancetype)init { + if (self = [super init]) { + [self setupUI]; + +#if DEBUG + self.topLabel.text = @"365 天"; + self.bottomLabel.text = @"Waiting for your love"; + self.bottomImageView.image = kImage(@"cp_relationship_lv_1"); + + [self.progressView setProgress:0.5 animated:NO]; +#endif + } + return self; +} + +- (void)setupUI { + UIImageView *backgroundImage = [[UIImageView alloc] initWithImage:kImage(@"cp_bg")]; + backgroundImage.contentMode = UIViewContentModeScaleAspectFit; + [self addSubview:backgroundImage]; + [backgroundImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(15)); + make.trailing.mas_equalTo(kGetScaleWidth(-15)); + make.bottom.mas_equalTo(self); + make.top.mas_equalTo(self); + }]; + _backgroundImage = backgroundImage; + + UIImageView *heart = [[UIImageView alloc] initWithImage:kImage(@"cp_heart")]; + heart.contentMode = UIViewContentModeScaleAspectFit; + [self addSubview:heart]; + [heart mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(34)); + make.centerX.mas_equalTo(backgroundImage); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(125), kGetScaleWidth(60))); + }]; + + UIImageView *avatar_placeholder = [[UIImageView alloc] initWithImage:kImage(@"cp_empty_avatar")]; + avatar_placeholder.contentMode = UIViewContentModeScaleAspectFit; + [self addSubview:avatar_placeholder]; + [avatar_placeholder mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(43)); + make.trailing.mas_equalTo(-56); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(56), kGetScaleWidth(56))); + }]; + + [self addSubview:self.avatarView]; + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(43)); + make.leading.mas_equalTo(56); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(56), kGetScaleWidth(56))); + }]; + [self addSubview:self.headWearSvgaImageView]; + [self.headWearSvgaImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarView); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(85), kGetScaleWidth(85))); + }]; + + [self addSubview:self.avatarView_cp]; + [self.avatarView_cp mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(avatar_placeholder); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(56), kGetScaleWidth(56))); + }]; + [self addSubview:self.headWearSvgaImageView_cp]; + [self.headWearSvgaImageView_cp mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarView_cp); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(85), kGetScaleWidth(85))); + }]; + + [self addSubview:self.topLabel]; + [self.topLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(18); + make.top.mas_equalTo(29); + }]; + + [self addSubview:self.bottomLabel]; + [self.bottomLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(18); + make.top.mas_equalTo(heart.mas_bottom); + }]; + + [self addSubview:self.bottomImageView]; + [self.bottomImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.size.mas_equalTo(CGSizeMake(100, 19)); + make.top.mas_equalTo(90); + }]; + + [self addSubview:self.progressView]; + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.headWearSvgaImageView.mas_bottom).offset(4); + make.leading.mas_equalTo(self.backgroundImage).offset(22); + make.trailing.mas_equalTo(self.backgroundImage).offset(-22); + make.height.mas_equalTo(4); + }]; + + [self addSubview:self.breakYourHeartButton]; + [self.breakYourHeartButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(27); + make.trailing.mas_equalTo(-28); + make.size.mas_equalTo(22); + }]; + + [self addSubview:self.progressNumLabel]; + [self.progressNumLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.progressView.mas_bottom).offset(4); + make.trailing.mas_equalTo(self.progressView); + }]; + + [self addSubview:self.progressUpgradeLabel]; + [self.progressUpgradeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.progressView.mas_bottom).offset(4); + make.leading.mas_equalTo(self.progressView); + }]; +} + +- (void)setIsListItem:(BOOL)isListItem { + _isListItem = isListItem; + self.progressView.hidden = !isListItem; + self.progressNumLabel.hidden = !isListItem; + self.progressUpgradeLabel.hidden = !isListItem; + if (isListItem) { + self.backgroundImage.image = kImage(@"cp_relationship_bg"); + } else { + + } +} + +- (void)setRelationUser:(RelationUserVO *)relationUser { + _relationUser = relationUser; + + self.topLabel.hidden = [relationUser isEmptyRelation]; + self.avatarView_cp.hidden = [relationUser isEmptyRelation]; + self.bottomLabel.hidden = ![relationUser isEmptyRelation]; + self.bottomImageView.hidden = [relationUser isEmptyRelation]; + + self.avatarView.imageUrl = relationUser.avatar; + self.avatarView_cp.imageUrl = relationUser.cpAvatar; + self.topLabel.text = [NSString stringWithFormat:@"%ld days", (long)relationUser.cpDay]; + + NSString *imagePath = [NSString stringWithFormat:@"cp_relationship_lv_%ld", self.relationUser.cpLevel]; + self.bottomImageView.image = kImage(imagePath); + [self playSVGA:self.relationUser.cpLevel]; +} + +- (void)updateForUserPage:(RelationUserVO *)model { + self.relationUser = model; + + if ([model isEmptyRelation]) { + self.avatarView.imageUrl = self.usersAvatar; + self.bottomLabel.hidden = NO; + } + self.progressView.hidden = YES; + self.progressNumLabel.hidden = YES; + self.progressUpgradeLabel.hidden = YES; + self.breakYourHeartButton.hidden = YES; +} + +- (void)updateForCPList:(RelationUserVO *)model { + self.relationUser = model; + + [self.backgroundImage mas_updateConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self).offset(-12); + }]; + + self.progressView.progress = self.relationUser.currentExp / self.relationUser.nextLevelExp; + self.progressUpgradeLabel.text = [NSString stringWithFormat:@"Need %ld to upgrade", (long)(self.relationUser.nextLevelExp - self.relationUser.currentExp)]; + self.progressNumLabel.text = [NSString stringWithFormat:@"(%ld/%ld)", (long)self.relationUser.currentExp, (long)self.relationUser.endExp]; +} + +- (void)playSVGA:(NSInteger)level { + if (level == 0) { + return; + } + + @kWeakify(self); + SVGAParser *parser = [SVGAParser new]; + [parser parseWithNamed:@(level).stringValue + inBundle:[NSBundle mainBundle] + completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.headWearSvgaImageView.videoItem = videoItem; + [self.headWearSvgaImageView startAnimation]; + self.headWearSvgaImageView_cp.videoItem = videoItem; + [self.headWearSvgaImageView_cp startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; +} + +- (void)didTapBreakButton { + if (self.breakTheHeart) { + self.breakTheHeart(self.relationUser); + } +} + +#pragma mark - +- (NetImageView *)avatarView { + if (!_avatarView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _avatarView = [[NetImageView alloc]initWithConfig:config]; + _avatarView.layer.cornerRadius = kGetScaleWidth(56/2); + _avatarView.layer.masksToBounds = YES; + _avatarView.layer.borderWidth = 1; + _avatarView.userInteractionEnabled = YES; + _avatarView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _avatarView; +} + +- (NetImageView *)avatarView_cp { + if (!_avatarView_cp) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _avatarView_cp = [[NetImageView alloc]initWithConfig:config]; + _avatarView_cp.layer.cornerRadius = kGetScaleWidth(56/2); + _avatarView_cp.layer.masksToBounds = YES; + _avatarView_cp.layer.borderWidth = 1; + _avatarView_cp.userInteractionEnabled = YES; + _avatarView_cp.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _avatarView_cp; +} + +- (UILabel *)topLabel { + if (!_topLabel) { + _topLabel = [UILabel labelInitWithText:@"" font:kFontMedium(12) textColor:[UIColor whiteColor]]; + } + return _topLabel; +} + +- (UILabel *)bottomLabel { + if (!_bottomLabel) { + _bottomLabel = [UILabel labelInitWithText:@"" font:kFontRegular(12) textColor:[UIColor colorWithWhite:1 alpha:0.8]]; + } + return _bottomLabel; +} + +- (NetImageView *)bottomImageView { + if (!_bottomImageView) { + _bottomImageView = [[NetImageView alloc] init]; + } + return _bottomImageView; +} + +- (UILabel *)progressUpgradeLabel { + if (!_progressUpgradeLabel) { + _progressUpgradeLabel = [UILabel labelInitWithText:@"" font:kFontRegular(12) textColor:[UIColor whiteColor]]; + } + return _progressUpgradeLabel; +} + +- (UILabel *)progressNumLabel { + if (!_progressNumLabel) { + _progressNumLabel = [UILabel labelInitWithText:@"" font:kFontRegular(12) textColor:[UIColor whiteColor]]; + } + return _progressNumLabel; +} + +- (UIProgressView *)progressView { + if (!_progressView) { + _progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; + + // 设置背景色和前景色 + _progressView.progressTintColor = UIColorFromRGB(0xF77300); + _progressView.trackTintColor = UIColorFromRGB(0x7E1E00); + + // 设置高度 4 和圆角 1 + _progressView.transform = CGAffineTransformMakeScale(1.0, 4.0 / _progressView.frame.size.height); // 调整高度 + _progressView.layer.cornerRadius = 2.0; // 设置圆角 + _progressView.layer.masksToBounds = YES; // 裁剪超出边界的部分 + } + return _progressView; +} + +- (SVGAImageView *)headWearSvgaImageView { + if (!_headWearSvgaImageView) { + _headWearSvgaImageView = [[SVGAImageView alloc]init]; + _headWearSvgaImageView.backgroundColor = [UIColor clearColor]; + _headWearSvgaImageView.frame = self.bounds; + _headWearSvgaImageView.userInteractionEnabled = YES; + _headWearSvgaImageView.autoPlay = YES; + } + return _headWearSvgaImageView; +} + +- (SVGAImageView *)headWearSvgaImageView_cp { + if (!_headWearSvgaImageView_cp) { + _headWearSvgaImageView_cp = [[SVGAImageView alloc]init]; + _headWearSvgaImageView_cp.backgroundColor = [UIColor clearColor]; + _headWearSvgaImageView_cp.frame = self.bounds; + _headWearSvgaImageView_cp.userInteractionEnabled = YES; + _headWearSvgaImageView_cp.autoPlay = YES; + } + return _headWearSvgaImageView_cp; +} + + +- (UIButton *)breakYourHeartButton { + if (!_breakYourHeartButton) { + _breakYourHeartButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_breakYourHeartButton setImage:kImage(@"cp_break_heart") forState:UIControlStateNormal]; + [_breakYourHeartButton addTarget:self + action:@selector(didTapBreakButton) + forControlEvents:UIControlEventTouchUpInside]; + } + return _breakYourHeartButton; +} +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.h index 0b2091c4..02403d7b 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.h +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.h @@ -8,6 +8,7 @@ #import #import "XPSoundCardModel.h" #import "XPMineUserInfoTagModel.h" +@class RelationUserVO; NS_ASSUME_NONNULL_BEGIN @class UserInfoModel, SDCycleScrollView,XPMineUserInfoHeaderView; @protocol XPMineUserInfoHeaderViewDelegate @@ -33,6 +34,8 @@ NS_ASSUME_NONNULL_BEGIN ///当前查看用户是否在直播 @property (nonatomic,copy) NSString *roomUid; +@property (nonatomic, strong) RelationUserVO *relationUser; + + (CGFloat)headerHeight:(UserInfoModel *)model; @end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m index 4c022d88..e28c411c 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m @@ -20,9 +20,14 @@ #import "XPSkillCardPlayerManager.h" #import "XPRoomMiniManager.h" #import "SpriteSheetImageManager.h" +#import "XCCurrentVCStackManager.h" + ///view -#import "XPMineUserInfoHeaderTagView.h" +#import "CPCard.h" #import "XPBeautIDView.h" +#import "CPListViewController.h" +#import "XPMineUserInfoHeaderTagView.h" + ///Model #import "UserInfoModel.h" @@ -64,6 +69,11 @@ return view;\ ///头饰播放 @property (nonatomic, strong) SpriteSheetImageManager *manager; @property (nonatomic, strong) SVGAImageView *headWearSvgaImageView; +@property (nonatomic, strong) SVGAImageView *headWearSvgaImageView_cp; + +@property (nonatomic, strong) UIImageView *cpAvatarHeart; +@property (nonatomic, strong) UIImageView *cpAvatarFlag; + ///用户信息的背景 @property (nonatomic,strong) UIStackView *nickStackView; ///名字 @@ -72,15 +82,12 @@ return view;\ @property (nonatomic,strong) UIButton *sexImageView; ///正在直播icon图 @property (nonatomic,strong) SVGAImageView *onlineIconView; -///正在直播中tilte -//@property (nonatomic,strong) UILabel *onlineTitleView; ///正在直播中 @property (nonatomic,strong) UIButton *onlineButton; /// @property (nonatomic,strong) UIStackView *idStackView; ///id @property (nonatomic,strong) UILabel *idLabel; -@property (nonatomic, strong) UIImageView *idIconImageView; @property (nonatomic, strong) UIImageView *copyIdImageView; @property (nonatomic, strong) XPBeautIDView *beautIDView; @@ -114,6 +121,8 @@ return view;\ @property (nonatomic, strong) UILabel *fansNum; @property (nonatomic, strong) UILabel *followersNum; +@property (nonatomic, strong) CPCard *cpCard; + @end @implementation XPMineUserInfoHeaderView @@ -150,7 +159,7 @@ return view;\ numberOfLines = ceil(textRect.size.height / lineHeight); } - height = kGetScaleWidth(400) + lineHeight * numberOfLines; + height = kGetScaleWidth(520) + lineHeight * numberOfLines; return height; } @@ -163,7 +172,7 @@ return view;\ [self addSubview:self.pageButton]; [self.pageButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(self); + make.trailing.mas_equalTo(self).offset(kGetScaleWidth(-15)); make.top.mas_equalTo(self).offset(kNavigationHeight + 80); make.size.mas_equalTo(CGSizeMake(30, 18)); }]; @@ -237,6 +246,34 @@ return view;\ [self.reviewIcon mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.mas_equalTo(self.avatarView); }]; + + [self addSubview:self.avatarView_cp]; + [self.avatarView_cp mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(82)); + make.leading.mas_equalTo(self.headWearSvgaImageView.mas_trailing).offset(kGetScaleWidth(16)); + make.centerY.equalTo(self.userInfoView.mas_top); + }]; + + [self addSubview:self.headWearSvgaImageView_cp]; + [self.headWearSvgaImageView_cp mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarView_cp); + make.width.height.mas_equalTo(kGetScaleWidth(114)); + }]; + + [self addSubview:self.cpAvatarHeart]; + [self.cpAvatarHeart mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.userInfoView.mas_top); + make.centerX.equalTo(self.headWearSvgaImageView.mas_trailing); + make.width.height.mas_equalTo(kGetScaleWidth(38)); + }]; + + [self addSubview:self.cpAvatarFlag]; + [self.cpAvatarFlag mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.equalTo(self.headWearSvgaImageView); + make.centerX.equalTo(self.headWearSvgaImageView.mas_trailing); + make.width.mas_equalTo(kGetScaleWidth(122)); + make.height.mas_equalTo(kGetScaleWidth(35)); + }]; } - (void)setupNameArea { @@ -422,10 +459,21 @@ return view;\ }]; UIButton *cpListButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [cpListButton setImage:kImage(@"") forState:UIControlStateNormal]; + [cpListButton setImage:kImage(@"cp_menu") forState:UIControlStateNormal]; [cpListButton addTarget:self action:@selector(clickCPListButton) forControlEvents:UIControlEventTouchUpInside]; - []; + [self.userInfoView addSubview:cpListButton]; + [cpListButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(titleLabel); + make.trailing.mas_equalTo(kGetScaleWidth(-15)); + make.width.height.mas_equalTo(22); + }]; + [self.userInfoView addSubview:self.cpCard]; + [self.cpCard mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(titleLabel.mas_bottom).offset(3); + make.width.mas_equalTo(self.userInfoView); + make.height.mas_equalTo(kGetScaleWidth(135)); + }]; } #pragma mark - SDPhotoBrowserDelegate @@ -485,7 +533,8 @@ return view;\ } - (void)clickCPListButton { - + CPListViewController *cpListVC = [[CPListViewController alloc] init]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:cpListVC animated:YES]; } - (void)onlineButtonAction:(UIButton *)sender { @@ -619,6 +668,22 @@ return view;\ } } +- (void)setRelationUser:(RelationUserVO *)relationUser { + _relationUser = relationUser; + self.cpAvatarHeart.hidden = !relationUser; + self.cpAvatarFlag.hidden = !relationUser; + + self.cpCard.isListItem = NO; + self.cpCard.usersAvatar = self.userInfo.avatar; + [self.cpCard updateForUserPage:relationUser]; + self.avatarView_cp.imageUrl = relationUser.cpAvatar; + + NSString *imagePath = [NSString stringWithFormat:@"cp_avatar_flag_lv_%ld", relationUser.cpLevel]; + self.cpAvatarFlag.image = kImage(imagePath); + + [self playCPSVGA:relationUser.cpLevel]; +} + - (void)updateNameAndGenderInfo { self.nameLabel.text = self.userInfo.nick; UIImage *sexBackgroundImage = nil; @@ -636,24 +701,9 @@ return view;\ } - (void)updateIDInfo { - NSString *text = @""; -// BOOL hasBeautifulID = self.userInfo.hasPrettyErbanNo; -// if (hasBeautifulID) { - text = [NSString stringWithFormat:@"%ld", (long)self.userInfo.erbanNo]; -// } else { -// text = [NSString stringWithFormat:@" %ld", (long)self.userInfo.erbanNo]; -// } - -// self.idIconImageView.hidden = hasBeautifulID; + NSString *text = [NSString stringWithFormat:@"%ld", (long)self.userInfo.erbanNo]; self.idLabel.text = [NSString stringWithFormat:@"ID:%@", text]; self.beautIDView.num = text; -// if (hasBeautifulID) { -// self.idStackView.hidden = YES; -// } else { -// self.beautIDView.hidden = YES; -// self.idLabel.text = text; -// self.idLabel.alpha = 0.8; -// } } - (void)updateLocateAndRegionInfo { @@ -713,6 +763,26 @@ return view;\ failureBlock:^(NSError * _Nullable error) {}]; } +- (void)playCPSVGA:(NSInteger)level { + if (level == 0) { + return; + } + + @kWeakify(self); + SVGAParser *parser = [SVGAParser new]; + [parser parseWithNamed:@(level).stringValue + inBundle:[NSBundle mainBundle] + completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.headWearSvgaImageView.videoItem = videoItem; + [self.headWearSvgaImageView startAnimation]; + self.headWearSvgaImageView_cp.videoItem = videoItem; + [self.headWearSvgaImageView_cp startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; +} + - (void)playAnimate:(NSString *)headwearUrlString { self.headWearImageView.hidden = NO; NSURL *url = [NSURL URLWithString:headwearUrlString]; @@ -738,7 +808,7 @@ return view;\ _nickStackView.backgroundColor = [UIColor clearColor]; _nickStackView.axis = UILayoutConstraintAxisHorizontal; _nickStackView.distribution = UIStackViewDistributionFillProportionally; - _nickStackView.alignment = UIStackViewAlignmentLeading; + _nickStackView.alignment = UIStackViewAlignmentCenter; _nickStackView.spacing = 4; if (isMSRTL()) { _nickStackView.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft; @@ -798,15 +868,6 @@ return view;\ return _idLabel; } -- (UIImageView *)idIconImageView { - if (!_idIconImageView) { - _idIconImageView = [[UIImageView alloc] init]; - _idIconImageView.userInteractionEnabled = YES; - _idIconImageView.image = [UIImage getLanguageImage:@"user_info_id_mark"]; - } - return _idIconImageView; -} - - (UIImageView *)copyIdImageView { if (!_copyIdImageView) { _copyIdImageView = [[UIImageView alloc] init]; @@ -1032,6 +1093,23 @@ return view;\ return _avatarView; } +-(NetImageView *)avatarView_cp{ + if (!_avatarView_cp){ + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _avatarView_cp = [[NetImageView alloc]initWithConfig:config]; + _avatarView_cp.layer.cornerRadius = kGetScaleWidth(41); + _avatarView_cp.layer.masksToBounds = YES; + _avatarView_cp.layer.borderWidth = 1; + _avatarView_cp.userInteractionEnabled = YES; + _avatarView_cp.layer.borderColor = [UIColor whiteColor].CGColor; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickAvatarAction)]; + [_avatarView_cp addGestureRecognizer:tap]; + } + return _avatarView_cp; +} + - (YYAnimatedImageView *)headWearImageView { if (!_headWearImageView) { _headWearImageView = [[YYAnimatedImageView alloc] init]; @@ -1117,4 +1195,36 @@ return view;\ return _headWearSvgaImageView; } +- (SVGAImageView *)headWearSvgaImageView_cp { + if (!_headWearSvgaImageView_cp) { + _headWearSvgaImageView_cp = [[SVGAImageView alloc]init]; + _headWearSvgaImageView_cp.backgroundColor = [UIColor clearColor]; + _headWearSvgaImageView_cp.frame = self.bounds; + _headWearSvgaImageView_cp.userInteractionEnabled = YES; + _headWearSvgaImageView_cp.autoPlay = YES; + } + return _headWearSvgaImageView_cp; +} + +- (CPCard *)cpCard { + if (!_cpCard) { + _cpCard = [[CPCard alloc] init]; + } + return _cpCard; +} + +- (UIImageView *)cpAvatarHeart { + if (!_cpAvatarHeart) { + _cpAvatarHeart = [[UIImageView alloc] initWithImage:kImage(@"cp_avatar_heart")]; + } + return _cpAvatarHeart; +} + +- (UIImageView *)cpAvatarFlag { + if (!_cpAvatarFlag) { + _cpAvatarFlag = [[UIImageView alloc] init]; + } + return _cpAvatarFlag; +} + @end diff --git a/YuMi/Resources/cp/1.svga b/YuMi/Resources/cp/1.svga new file mode 100644 index 00000000..c0182edb Binary files /dev/null and b/YuMi/Resources/cp/1.svga differ diff --git a/YuMi/Resources/cp/2.svga b/YuMi/Resources/cp/2.svga new file mode 100644 index 00000000..e93cd775 Binary files /dev/null and b/YuMi/Resources/cp/2.svga differ diff --git a/YuMi/Resources/cp/3.svga b/YuMi/Resources/cp/3.svga new file mode 100644 index 00000000..421ba5cf Binary files /dev/null and b/YuMi/Resources/cp/3.svga differ diff --git a/YuMi/Resources/cp/4.svga b/YuMi/Resources/cp/4.svga new file mode 100644 index 00000000..c3cd853d Binary files /dev/null and b/YuMi/Resources/cp/4.svga differ diff --git a/YuMi/Resources/cp/5.svga b/YuMi/Resources/cp/5.svga new file mode 100644 index 00000000..161cf907 Binary files /dev/null and b/YuMi/Resources/cp/5.svga differ diff --git a/YuMi/Structure/MVP/Api/Api.h b/YuMi/Structure/MVP/Api/Api.h index 6677257e..1bd94a4a 100644 --- a/YuMi/Structure/MVP/Api/Api.h +++ b/YuMi/Structure/MVP/Api/Api.h @@ -31,43 +31,43 @@ NS_ASSUME_NONNULL_BEGIN + (void)phoneSmsCode:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile type:(NSString *)type phoneAreaCode:(NSString *)phoneAreaCode; /// 校验手机号码 -/// @param complection 完成 +/// @param completion 完成 /// @param mobile 手机号 /// @param code 验证码 /// @param uid 用户的uid /// @param ticket ticket -+ (void)checkMoblieCode:(HttpRequestHelperCompletion)complection ++ (void)checkMoblieCode:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile code:(NSString *)code uid:(NSString *)uid ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode; /// 补全用户资料 -/// @param complection 完成 +/// @param completion 完成 /// @param userInfo 需要更新的用户信息 -+ (void)completeUserInfo:(HttpRequestHelperCompletion)complection ++ (void)completeUserInfo:(HttpRequestHelperCompletion)completion userInfo:(NSDictionary *)userInfo; /// 获取用户钱包余额信息 -/// @param complection 完成 +/// @param completion 完成 /// @param uid 用户uid /// @param ticket ticketg -+ (void)getUserWalletInfo:(HttpRequestHelperCompletion)complection ++ (void)getUserWalletInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid ticket:(NSString *)ticket; /// 批量验证 -/// @param complection 完成 +/// @param completion 完成 /// @param transcationIdStr 需要验证的数据 -+ (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)complection ++ (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)completion transcationIdStr:(NSString *)transcationIdStr; /// 锁麦/开麦 -/// @param complection 完成 +/// @param completion 完成 /// @param roomUid 房主的uid /// @param state 0 开麦 1 锁麦 /// @param position 坑位 /// @param ticket 用户的ticket /// @param uid uid -+ (void)microMuteCompletion:(HttpRequestHelperCompletion)complection ++ (void)microMuteCompletion:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position @@ -75,22 +75,23 @@ NS_ASSUME_NONNULL_BEGIN uid:(NSString *)uid; /// 锁坑/开锁 -/// @param complection 完成 +/// @param completion 完成 /// @param roomUid 房主的uid /// @param state 1锁坑位,0取消锁(即取消锁坑位) /// @param position 坑位 /// @param ticket 用户的ticket /// @param uid uid -+ (void)microLockCompletion:(HttpRequestHelperCompletion)complection ++ (void)microLockCompletion:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid; //充值banner位 -+(void)requestBannerListCompletion:(HttpRequestHelperCompletion)complection; ++(void)requestBannerListCompletion:(HttpRequestHelperCompletion)completion; //联系客服 -+(void)requestContactCustomerServiceCompletion:(HttpRequestHelperCompletion)complection; ++(void)requestContactCustomerServiceCompletion:(HttpRequestHelperCompletion)completion; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Api/Api.m b/YuMi/Structure/MVP/Api/Api.m index 0c3142bd..5e5d8a24 100644 --- a/YuMi/Structure/MVP/Api/Api.m +++ b/YuMi/Structure/MVP/Api/Api.m @@ -66,77 +66,78 @@ } /// 校验手机号码 -/// @param complection 完成 +/// @param completion 完成 /// @param mobile 手机号 /// @param code 验证码 /// @param uid 用户的uid /// @param ticket ticket -+ (void)checkMoblieCode:(HttpRequestHelperCompletion)complection ++ (void)checkMoblieCode:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile code:(NSString *)code uid:(NSString *)uid ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode{ NSString * fang = [NSString stringFromBase64String:@"c21zL3ZlcmlmeQ=="];///sms/verify - [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, mobile, code, uid, ticket,phoneAreaCode,nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, mobile, code, uid, ticket,phoneAreaCode,nil]; } /// 补全用户资料 -/// @param complection 完成 +/// @param completion 完成 /// @param userInfo 需要更新的用户信息 -+ (void)completeUserInfo:(HttpRequestHelperCompletion)complection ++ (void)completeUserInfo:(HttpRequestHelperCompletion)completion userInfo:(NSDictionary *)userInfo { NSString * fang = [NSString stringFromBase64String:@"dXNlci92Mi91cGRhdGU="];///user/v2/update - [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:userInfo completion:complection]; + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:userInfo completion:completion]; } /// 获取用户钱包余额信息 -/// @param complection 完成 +/// @param completion 完成 /// @param uid 用户uid /// @param ticket ticketg -+ (void)getUserWalletInfo:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket { ++ (void)getUserWalletInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid ticket:(NSString *)ticket { NSString * fang = [NSString stringFromBase64String:@"cHVyc2UvcXVlcnk="];///purse/query - [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, ticket,nil]; + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, ticket,nil]; } /// 批量验证 -/// @param complection 完成 +/// @param completion 完成 /// @param transcationIdStr 需要验证的数据 -+ (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)complection ++ (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)completion transcationIdStr:(NSString *)transcationIdStr { NSString * fang = [NSString stringFromBase64String:@"dmVyaWZ5L2NoZWNrSU9TQ2hhcmdlUmVjb3Jk"];///verify/checkIOSChargeRecord - [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,transcationIdStr, nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,transcationIdStr, nil]; } /// 锁麦/开麦 -/// @param complection 完成 +/// @param completion 完成 /// @param roomUid 房主的uid /// @param state 0 开麦 1 锁麦 /// @param position 坑位 /// @param ticket 用户的ticket /// @param uid uid -+ (void)microMuteCompletion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid { ++ (void)microMuteCompletion:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid { NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvbG9ja21pYw=="];///@"room/mic/lockmic" - [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomUid, state, position, ticket, uid, nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, state, position, ticket, uid, nil]; } /// 锁坑/开锁 -/// @param complection 完成 +/// @param completion 完成 /// @param roomUid 房主的uid /// @param state 1锁坑位,0取消锁(即取消锁坑位) /// @param position 坑位 /// @param ticket 用户的ticket /// @param uid uid -+ (void)microLockCompletion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid { ++ (void)microLockCompletion:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid { NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvbG9ja3Bvcw=="];///room/mic/lockpos - [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomUid, state, position, ticket, uid, nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, state, position, ticket, uid, nil]; } //充值banner位 -+(void)requestBannerListCompletion:(HttpRequestHelperCompletion)complection{ - [self makeRequest:@"charge/guide/banner" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, nil]; ++(void)requestBannerListCompletion:(HttpRequestHelperCompletion)completion{ + [self makeRequest:@"charge/guide/banner" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } //联系客服 -+(void)requestContactCustomerServiceCompletion:(HttpRequestHelperCompletion)complection{ - [self makeRequest:@"charge/guide/contact" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, nil]; ++(void)requestContactCustomerServiceCompletion:(HttpRequestHelperCompletion)completion{ + [self makeRequest:@"charge/guide/contact" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } + @end diff --git a/YuMi/Structure/MVP/Model/RelationUserVO.h b/YuMi/Structure/MVP/Model/RelationUserVO.h new file mode 100644 index 00000000..8428ddbd --- /dev/null +++ b/YuMi/Structure/MVP/Model/RelationUserVO.h @@ -0,0 +1,38 @@ +// +// RelationUserVO.h +// YuMi +// +// Created by P on 2024/9/19. +// + +#import "PIBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RelationUserVO : PIBaseModel + +@property (nonatomic, assign) BOOL showCpAvatar; +@property (nonatomic, assign) BOOL showCpAnim; + +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, copy) NSString *cpNick; +@property (nonatomic, copy) NSString *cpAvatar; + +@property (nonatomic, assign) NSInteger uid; +@property (nonatomic, assign) NSInteger cpUid; +@property (nonatomic, assign) NSInteger cpDay; +@property (nonatomic, assign) NSInteger cpLevel; +@property (nonatomic, assign) NSInteger maxCpLevel; +@property (nonatomic, assign) NSInteger currentExp; +@property (nonatomic, assign) NSInteger nextLevelExp; +@property (nonatomic, assign) NSInteger cancelGoldNum; + +@property (nonatomic, assign) NSInteger endExp; +@property (nonatomic, assign) NSInteger startExp; + +- (BOOL)isEmptyRelation; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/RelationUserVO.m b/YuMi/Structure/MVP/Model/RelationUserVO.m new file mode 100644 index 00000000..be57def2 --- /dev/null +++ b/YuMi/Structure/MVP/Model/RelationUserVO.m @@ -0,0 +1,16 @@ +// +// RelationUserVO.m +// YuMi +// +// Created by P on 2024/9/19. +// + +#import "RelationUserVO.h" + +@implementation RelationUserVO + +- (BOOL)isEmptyRelation { + return self.cpAvatar.length == 0 || self.cpUid == 0 || self.cpNick.length == 0; +} + +@end diff --git a/YuMi/Structure/MVP/Model/UserInfoModel.h b/YuMi/Structure/MVP/Model/UserInfoModel.h index 594bee02..78e50eda 100644 --- a/YuMi/Structure/MVP/Model/UserInfoModel.h +++ b/YuMi/Structure/MVP/Model/UserInfoModel.h @@ -15,6 +15,8 @@ #import "MomentsInfoModel.h" #import "XPSoundCardModel.h" #import "MedalModel.h" +#import "RelationUserVO.h" + NS_ASSUME_NONNULL_BEGIN @@ -156,6 +158,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, strong) MedalModel *medals; +@property (nonatomic, strong) RelationUserVO *relationUserVO; + - (BOOL)isUserValid; - (NSString *)userIDString;