feat:完善个人主页 cp 模块

This commit is contained in:
eggmanQQQ
2024-09-19 16:52:32 +08:00
parent 994df0af28
commit 61e316044d
73 changed files with 1506 additions and 71 deletions

View File

@@ -517,6 +517,8 @@
548E01C92C3F78600071C83D /* FeedBackConfigModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 548E01C82C3F78600071C83D /* FeedBackConfigModel.m */; }; 548E01C92C3F78600071C83D /* FeedBackConfigModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 548E01C82C3F78600071C83D /* FeedBackConfigModel.m */; };
548E01CC2C3FB1C70071C83D /* i18nGiftNameMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 548E01CB2C3FB1C70071C83D /* i18nGiftNameMap.m */; }; 548E01CC2C3FB1C70071C83D /* i18nGiftNameMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 548E01CB2C3FB1C70071C83D /* i18nGiftNameMap.m */; };
54ACDCC22C5B31BD0099472C /* XPBeautIDView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54ACDCC12C5B31BD0099472C /* XPBeautIDView.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 */; }; 54C3895C2C215F5100FD47B1 /* XPHomeMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */; };
54C3895F2C2189DD00FD47B1 /* XPHomeMinePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */; }; 54C3895F2C2189DD00FD47B1 /* XPHomeMinePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */; };
54C389622C23BD1600FD47B1 /* HomeRankAvatarModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C389612C23BD1600FD47B1 /* HomeRankAvatarModel.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 */; }; 54F4693B2C2A984D00A83655 /* MedalModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F4693A2C2A984D00A83655 /* MedalModel.m */; };
54F4693E2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F4693D2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m */; }; 54F4693E2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F4693D2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m */; };
54F469412C2AB56900A83655 /* XPMineGiftsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F469402C2AB56900A83655 /* XPMineGiftsTableViewCell.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 */; }; 73FFADDC93E195344047A2EC /* Pods_YuMi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_YuMi.framework */; };
9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; }; 9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; };
9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C927BA4F570032BD2B /* AnchorMicroView.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 = "<group>"; }; 548E01CB2C3FB1C70071C83D /* i18nGiftNameMap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = i18nGiftNameMap.m; sourceTree = "<group>"; };
54ACDCC02C5B31BD0099472C /* XPBeautIDView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPBeautIDView.h; sourceTree = "<group>"; }; 54ACDCC02C5B31BD0099472C /* XPBeautIDView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPBeautIDView.h; sourceTree = "<group>"; };
54ACDCC12C5B31BD0099472C /* XPBeautIDView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPBeautIDView.m; sourceTree = "<group>"; }; 54ACDCC12C5B31BD0099472C /* XPBeautIDView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPBeautIDView.m; sourceTree = "<group>"; };
54AE7E122C9AD98C006D2BE2 /* CPCard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPCard.h; sourceTree = "<group>"; };
54AE7E132C9AD9A6006D2BE2 /* CPCard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPCard.m; sourceTree = "<group>"; };
54AE7E152C9AE589006D2BE2 /* CPListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPListViewController.h; sourceTree = "<group>"; };
54AE7E162C9AE589006D2BE2 /* CPListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CPListViewController.m; sourceTree = "<group>"; };
54C3895A2C215F5100FD47B1 /* XPHomeMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMineViewController.h; sourceTree = "<group>"; }; 54C3895A2C215F5100FD47B1 /* XPHomeMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMineViewController.h; sourceTree = "<group>"; };
54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeMineViewController.m; sourceTree = "<group>"; }; 54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeMineViewController.m; sourceTree = "<group>"; };
54C3895D2C2189DD00FD47B1 /* XPHomeMinePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMinePresenter.h; sourceTree = "<group>"; }; 54C3895D2C2189DD00FD47B1 /* XPHomeMinePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMinePresenter.h; sourceTree = "<group>"; };
@@ -2610,6 +2622,13 @@
54F4693D2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineMedalsTableViewCell.m; sourceTree = "<group>"; }; 54F4693D2C2A9D4E00A83655 /* XPMineMedalsTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineMedalsTableViewCell.m; sourceTree = "<group>"; };
54F4693F2C2AB56900A83655 /* XPMineGiftsTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGiftsTableViewCell.h; sourceTree = "<group>"; }; 54F4693F2C2AB56900A83655 /* XPMineGiftsTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGiftsTableViewCell.h; sourceTree = "<group>"; };
54F469402C2AB56900A83655 /* XPMineGiftsTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineGiftsTableViewCell.m; sourceTree = "<group>"; }; 54F469402C2AB56900A83655 /* XPMineGiftsTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineGiftsTableViewCell.m; sourceTree = "<group>"; };
54FFD3782C9BCB1900DE61E5 /* RelationUserVO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RelationUserVO.h; sourceTree = "<group>"; };
54FFD3792C9BCB1900DE61E5 /* RelationUserVO.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RelationUserVO.m; sourceTree = "<group>"; };
54FFD37B2C9BD12600DE61E5 /* 1.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 1.svga; sourceTree = "<group>"; };
54FFD37C2C9BD12600DE61E5 /* 2.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 2.svga; sourceTree = "<group>"; };
54FFD37D2C9BD12600DE61E5 /* 3.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 3.svga; sourceTree = "<group>"; };
54FFD37E2C9BD12600DE61E5 /* 4.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 4.svga; sourceTree = "<group>"; };
54FFD37F2C9BD12600DE61E5 /* 5.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = 5.svga; sourceTree = "<group>"; };
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 = "<group>"; }; 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 = "<group>"; };
9B0086C427BA392B0032BD2B /* AnchorStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorStageView.h; sourceTree = "<group>"; }; 9B0086C427BA392B0032BD2B /* AnchorStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorStageView.h; sourceTree = "<group>"; };
9B0086C527BA392B0032BD2B /* AnchorStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorStageView.m; sourceTree = "<group>"; }; 9B0086C527BA392B0032BD2B /* AnchorStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorStageView.m; sourceTree = "<group>"; };
@@ -4978,6 +4997,8 @@
9B2A12DD2783FEDD00CED41B /* UserVipInfoVo.m */, 9B2A12DD2783FEDD00CED41B /* UserVipInfoVo.m */,
54F469392C2A984D00A83655 /* MedalModel.h */, 54F469392C2A984D00A83655 /* MedalModel.h */,
54F4693A2C2A984D00A83655 /* MedalModel.m */, 54F4693A2C2A984D00A83655 /* MedalModel.m */,
54FFD3782C9BCB1900DE61E5 /* RelationUserVO.h */,
54FFD3792C9BCB1900DE61E5 /* RelationUserVO.m */,
); );
path = Model; path = Model;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -6444,6 +6465,18 @@
path = SubViews; path = SubViews;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
54FFD3802C9BD12600DE61E5 /* cp */ = {
isa = PBXGroup;
children = (
54FFD37B2C9BD12600DE61E5 /* 1.svga */,
54FFD37C2C9BD12600DE61E5 /* 2.svga */,
54FFD37D2C9BD12600DE61E5 /* 3.svga */,
54FFD37E2C9BD12600DE61E5 /* 4.svga */,
54FFD37F2C9BD12600DE61E5 /* 5.svga */,
);
path = cp;
sourceTree = "<group>";
};
9B0086C727BA4F4A0032BD2B /* Anchor */ = { 9B0086C727BA4F4A0032BD2B /* Anchor */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -9920,6 +9953,7 @@
E8A1E45C276220B100B294CA /* Resources */ = { E8A1E45C276220B100B294CA /* Resources */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
54FFD3802C9BD12600DE61E5 /* cp */,
54F179062C8EA48C00CB5219 /* Combo_Boom.svga */, 54F179062C8EA48C00CB5219 /* Combo_Boom.svga */,
23EE96F12B9FF6BE00475D69 /* pi_crazy_zoo.svga */, 23EE96F12B9FF6BE00475D69 /* pi_crazy_zoo.svga */,
237701182BD6143700D661F1 /* pi_happy_egg_smash.svga */, 237701182BD6143700D661F1 /* pi_happy_egg_smash.svga */,
@@ -10746,6 +10780,8 @@
E8E70D7F26F2F39000F03460 /* SubViews */, E8E70D7F26F2F39000F03460 /* SubViews */,
E8E70D7526F2F15100F03460 /* XPMineViewController.h */, E8E70D7526F2F15100F03460 /* XPMineViewController.h */,
E8E70D7626F2F15100F03460 /* XPMineViewController.m */, E8E70D7626F2F15100F03460 /* XPMineViewController.m */,
54AE7E152C9AE589006D2BE2 /* CPListViewController.h */,
54AE7E162C9AE589006D2BE2 /* CPListViewController.m */,
54C9A1112C3D5A2300C6D970 /* XPGameOrdersListViewController.h */, 54C9A1112C3D5A2300C6D970 /* XPGameOrdersListViewController.h */,
54C9A1122C3D5A2300C6D970 /* XPGameOrdersListViewController.m */, 54C9A1122C3D5A2300C6D970 /* XPGameOrdersListViewController.m */,
23CEFB6A2AFB803B00576D89 /* PISwitchingEnvironmentVC.h */, 23CEFB6A2AFB803B00576D89 /* PISwitchingEnvironmentVC.h */,
@@ -10871,6 +10907,8 @@
E8E70D7F26F2F39000F03460 /* SubViews */ = { E8E70D7F26F2F39000F03460 /* SubViews */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
54AE7E122C9AD98C006D2BE2 /* CPCard.h */,
54AE7E132C9AD9A6006D2BE2 /* CPCard.m */,
E87E545229AA05EA00EBE52B /* XPFootPrintNavView.h */, E87E545229AA05EA00EBE52B /* XPFootPrintNavView.h */,
E87E545329AA05EA00EBE52B /* XPFootPrintNavView.m */, E87E545329AA05EA00EBE52B /* XPFootPrintNavView.m */,
E8B846CC26FDD93D00A777FE /* Recharge */, E8B846CC26FDD93D00A777FE /* Recharge */,
@@ -11164,6 +11202,11 @@
E80EC81928ACD84000D133C5 /* emoji_80@2x.png in Resources */, E80EC81928ACD84000D133C5 /* emoji_80@2x.png in Resources */,
237701192BD6143700D661F1 /* pi_happy_egg_smash.svga in Resources */, 237701192BD6143700D661F1 /* pi_happy_egg_smash.svga in Resources */,
E80EC8B328ACD84100D133C5 /* emoji_115@2x.png 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 */, E80EC8A828ACD84100D133C5 /* emoji_76@2x.png in Resources */,
2368ECCF2BC38F9800EDF4C9 /* InfoPlist.strings in Resources */, 2368ECCF2BC38F9800EDF4C9 /* InfoPlist.strings in Resources */,
E80EC88E28ACD84000D133C5 /* emoji_142@2x.png in Resources */, E80EC88E28ACD84000D133C5 /* emoji_142@2x.png in Resources */,
@@ -11811,6 +11854,7 @@
E8412F9927799249006E1101 /* InviteFansModel.m in Sources */, E8412F9927799249006E1101 /* InviteFansModel.m in Sources */,
E88C72912828EA4E0047FB2B /* Music+CoreDataProperties.m in Sources */, E88C72912828EA4E0047FB2B /* Music+CoreDataProperties.m in Sources */,
E84BF7CA277AF79D00EF8877 /* XPRoomSettingTagCell.m in Sources */, E84BF7CA277AF79D00EF8877 /* XPRoomSettingTagCell.m in Sources */,
54FFD37A2C9BCB1900DE61E5 /* RelationUserVO.m in Sources */,
9BE9F0F927FED12D00667200 /* XPAnchorFansPrivilegeModel.m in Sources */, 9BE9F0F927FED12D00667200 /* XPAnchorFansPrivilegeModel.m in Sources */,
E87DF5022A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.m in Sources */, E87DF5022A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.m in Sources */,
E8AB631628ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.m in Sources */, E8AB631628ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.m in Sources */,
@@ -11876,6 +11920,7 @@
5412E0FD2C52512100FDD668 /* RoomBottomEntranceModel.m in Sources */, 5412E0FD2C52512100FDD668 /* RoomBottomEntranceModel.m in Sources */,
E818DD1C2A4896EE00F163F7 /* XPLoginAraeViewController.m in Sources */, E818DD1C2A4896EE00F163F7 /* XPLoginAraeViewController.m in Sources */,
23959FE72BB15C930085A282 /* UploadFileModel.m in Sources */, 23959FE72BB15C930085A282 /* UploadFileModel.m in Sources */,
54AE7E142C9AD9AB006D2BE2 /* CPCard.m in Sources */,
E8D4824A278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m in Sources */, E8D4824A278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m in Sources */,
E85E7B432A4EB0D300B6D00A /* XPMineExchangeAuthorityHeadView.m in Sources */, E85E7B432A4EB0D300B6D00A /* XPMineExchangeAuthorityHeadView.m in Sources */,
23194DD02AD14BF000649F51 /* DDLog.m in Sources */, 23194DD02AD14BF000649F51 /* DDLog.m in Sources */,
@@ -12358,6 +12403,7 @@
2331C1B82A60F32D00E1D940 /* XPRoomHalfWebView.m in Sources */, 2331C1B82A60F32D00E1D940 /* XPRoomHalfWebView.m in Sources */,
9BFE0D8E2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m in Sources */, 9BFE0D8E2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m in Sources */,
E87DF4B72A42C2FD009C1185 /* XPFirstRechargeCollectionView.m in Sources */, E87DF4B72A42C2FD009C1185 /* XPFirstRechargeCollectionView.m in Sources */,
54AE7E172C9AE589006D2BE2 /* CPListViewController.m in Sources */,
238B37A92AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.m in Sources */, 238B37A92AC55A2C00BFC9D5 /* TreasureFairyUserInfoModel.m in Sources */,
E85E7B382A4EB0D300B6D00A /* XPMineGuildSearchMemberTableViewCell.m in Sources */, E85E7B382A4EB0D300B6D00A /* XPMineGuildSearchMemberTableViewCell.m in Sources */,
23D321D52ADD0F05006B259C /* Api+PhotoAlbum.m in Sources */, 23D321D52ADD0F05006B259C /* Api+PhotoAlbum.m in Sources */,

View File

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

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -345,6 +345,12 @@ NS_ASSUME_NONNULL_BEGIN
+(void)requestUnmaskingFromBlackRoomList:(HttpRequestHelperCompletion)completion objId:(NSString *)objId type:(NSString *)type ; +(void)requestUnmaskingFromBlackRoomList:(HttpRequestHelperCompletion)completion objId:(NSString *)objId type:(NSString *)type ;
///得到腾讯存储信息 ///得到腾讯存储信息
+ (void)getQCloudInfo:(HttpRequestHelperCompletion)completion; + (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 @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

View File

@@ -448,4 +448,14 @@
+(void)requestUnmaskingFromBlackRoomList:(HttpRequestHelperCompletion)completion objId:(NSString *)objId type:(NSString *)type { +(void)requestUnmaskingFromBlackRoomList:(HttpRequestHelperCompletion)completion objId:(NSString *)objId type:(NSString *)type {
[self makeRequest:@"user/black/delete" method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__,objId,type, nil]; [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 @end

View File

@@ -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

View File

@@ -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 () <XPMineCustomNavViewDelegate, UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) UIView *emptyView;
@property (nonatomic, strong) XPMineUserInfoCustomNavView *navView;
@property (nonatomic, strong) UITableView *cpCardTableView;
@property (nonatomic, assign) NSInteger page;
@property (nonatomic, strong) NSMutableArray <RelationUserVO *> *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

View File

@@ -347,6 +347,7 @@ XPMineCustomNavViewDelegate, XPMineUserInfoProtocol, XPMineUserInfoHeaderViewDel
self.userDataVC.medalInfo = userInfo.medals; self.userDataVC.medalInfo = userInfo.medals;
self.userMomentVC.dynamicInfo = userInfo.dynamicInfo; self.userMomentVC.dynamicInfo = userInfo.dynamicInfo;
self.headView.roomUid = userInfo.roomUid; self.headView.roomUid = userInfo.roomUid;
self.headView.relationUser = userInfo.relationUserVO;
self.giftVC.userInfo = userInfo; self.giftVC.userInfo = userInfo;
if(isMSRTL()){ if(isMSRTL()){

View File

@@ -0,0 +1,22 @@
//
// CPCard.h
// YuMi
//
// Created by P on 2024/9/18.
//
#import <UIKit/UIKit.h>
@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

View File

@@ -0,0 +1,345 @@
//
// CPCard.m
// YuMi
//
// Created by P on 2024/9/18.
//
#import "CPCard.h"
#import <SVGA.h>
#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

View File

@@ -8,6 +8,7 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "XPSoundCardModel.h" #import "XPSoundCardModel.h"
#import "XPMineUserInfoTagModel.h" #import "XPMineUserInfoTagModel.h"
@class RelationUserVO;
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class UserInfoModel, SDCycleScrollView,XPMineUserInfoHeaderView; @class UserInfoModel, SDCycleScrollView,XPMineUserInfoHeaderView;
@protocol XPMineUserInfoHeaderViewDelegate <NSObject> @protocol XPMineUserInfoHeaderViewDelegate <NSObject>
@@ -33,6 +34,8 @@ NS_ASSUME_NONNULL_BEGIN
///当前查看用户是否在直播 ///当前查看用户是否在直播
@property (nonatomic,copy) NSString *roomUid; @property (nonatomic,copy) NSString *roomUid;
@property (nonatomic, strong) RelationUserVO *relationUser;
+ (CGFloat)headerHeight:(UserInfoModel *)model; + (CGFloat)headerHeight:(UserInfoModel *)model;
@end @end

View File

@@ -20,9 +20,14 @@
#import "XPSkillCardPlayerManager.h" #import "XPSkillCardPlayerManager.h"
#import "XPRoomMiniManager.h" #import "XPRoomMiniManager.h"
#import "SpriteSheetImageManager.h" #import "SpriteSheetImageManager.h"
#import "XCCurrentVCStackManager.h"
///view ///view
#import "XPMineUserInfoHeaderTagView.h" #import "CPCard.h"
#import "XPBeautIDView.h" #import "XPBeautIDView.h"
#import "CPListViewController.h"
#import "XPMineUserInfoHeaderTagView.h"
///Model ///Model
#import "UserInfoModel.h" #import "UserInfoModel.h"
@@ -64,6 +69,11 @@ return view;\
/// ///
@property (nonatomic, strong) SpriteSheetImageManager *manager; @property (nonatomic, strong) SpriteSheetImageManager *manager;
@property (nonatomic, strong) SVGAImageView *headWearSvgaImageView; @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; @property (nonatomic,strong) UIStackView *nickStackView;
/// ///
@@ -72,15 +82,12 @@ return view;\
@property (nonatomic,strong) UIButton *sexImageView; @property (nonatomic,strong) UIButton *sexImageView;
///icon ///icon
@property (nonatomic,strong) SVGAImageView *onlineIconView; @property (nonatomic,strong) SVGAImageView *onlineIconView;
///tilte
//@property (nonatomic,strong) UILabel *onlineTitleView;
/// ///
@property (nonatomic,strong) UIButton *onlineButton; @property (nonatomic,strong) UIButton *onlineButton;
/// ///
@property (nonatomic,strong) UIStackView *idStackView; @property (nonatomic,strong) UIStackView *idStackView;
///id ///id
@property (nonatomic,strong) UILabel *idLabel; @property (nonatomic,strong) UILabel *idLabel;
@property (nonatomic, strong) UIImageView *idIconImageView;
@property (nonatomic, strong) UIImageView *copyIdImageView; @property (nonatomic, strong) UIImageView *copyIdImageView;
@property (nonatomic, strong) XPBeautIDView *beautIDView; @property (nonatomic, strong) XPBeautIDView *beautIDView;
@@ -114,6 +121,8 @@ return view;\
@property (nonatomic, strong) UILabel *fansNum; @property (nonatomic, strong) UILabel *fansNum;
@property (nonatomic, strong) UILabel *followersNum; @property (nonatomic, strong) UILabel *followersNum;
@property (nonatomic, strong) CPCard *cpCard;
@end @end
@implementation XPMineUserInfoHeaderView @implementation XPMineUserInfoHeaderView
@@ -150,7 +159,7 @@ return view;\
numberOfLines = ceil(textRect.size.height / lineHeight); numberOfLines = ceil(textRect.size.height / lineHeight);
} }
height = kGetScaleWidth(400) + lineHeight * numberOfLines; height = kGetScaleWidth(520) + lineHeight * numberOfLines;
return height; return height;
} }
@@ -163,7 +172,7 @@ return view;\
[self addSubview:self.pageButton]; [self addSubview:self.pageButton];
[self.pageButton mas_makeConstraints:^(MASConstraintMaker *make) { [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.top.mas_equalTo(self).offset(kNavigationHeight + 80);
make.size.mas_equalTo(CGSizeMake(30, 18)); make.size.mas_equalTo(CGSizeMake(30, 18));
}]; }];
@@ -237,6 +246,34 @@ return view;\
[self.reviewIcon mas_makeConstraints:^(MASConstraintMaker *make) { [self.reviewIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self.avatarView); 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 { - (void)setupNameArea {
@@ -422,10 +459,21 @@ return view;\
}]; }];
UIButton *cpListButton = [UIButton buttonWithType:UIButtonTypeCustom]; 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]; [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 #pragma mark - SDPhotoBrowserDelegate
@@ -485,7 +533,8 @@ return view;\
} }
- (void)clickCPListButton { - (void)clickCPListButton {
CPListViewController *cpListVC = [[CPListViewController alloc] init];
[[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:cpListVC animated:YES];
} }
- (void)onlineButtonAction:(UIButton *)sender { - (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 { - (void)updateNameAndGenderInfo {
self.nameLabel.text = self.userInfo.nick; self.nameLabel.text = self.userInfo.nick;
UIImage *sexBackgroundImage = nil; UIImage *sexBackgroundImage = nil;
@@ -636,24 +701,9 @@ return view;\
} }
- (void)updateIDInfo { - (void)updateIDInfo {
NSString *text = @""; NSString *text = [NSString stringWithFormat:@"%ld", (long)self.userInfo.erbanNo];
// 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;
self.idLabel.text = [NSString stringWithFormat:@"ID:%@", text]; self.idLabel.text = [NSString stringWithFormat:@"ID:%@", text];
self.beautIDView.num = 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 { - (void)updateLocateAndRegionInfo {
@@ -713,6 +763,26 @@ return view;\
failureBlock:^(NSError * _Nullable error) {}]; 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 { - (void)playAnimate:(NSString *)headwearUrlString {
self.headWearImageView.hidden = NO; self.headWearImageView.hidden = NO;
NSURL *url = [NSURL URLWithString:headwearUrlString]; NSURL *url = [NSURL URLWithString:headwearUrlString];
@@ -738,7 +808,7 @@ return view;\
_nickStackView.backgroundColor = [UIColor clearColor]; _nickStackView.backgroundColor = [UIColor clearColor];
_nickStackView.axis = UILayoutConstraintAxisHorizontal; _nickStackView.axis = UILayoutConstraintAxisHorizontal;
_nickStackView.distribution = UIStackViewDistributionFillProportionally; _nickStackView.distribution = UIStackViewDistributionFillProportionally;
_nickStackView.alignment = UIStackViewAlignmentLeading; _nickStackView.alignment = UIStackViewAlignmentCenter;
_nickStackView.spacing = 4; _nickStackView.spacing = 4;
if (isMSRTL()) { if (isMSRTL()) {
_nickStackView.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft; _nickStackView.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
@@ -798,15 +868,6 @@ return view;\
return _idLabel; 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 { - (UIImageView *)copyIdImageView {
if (!_copyIdImageView) { if (!_copyIdImageView) {
_copyIdImageView = [[UIImageView alloc] init]; _copyIdImageView = [[UIImageView alloc] init];
@@ -1032,6 +1093,23 @@ return view;\
return _avatarView; 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 { - (YYAnimatedImageView *)headWearImageView {
if (!_headWearImageView) { if (!_headWearImageView) {
_headWearImageView = [[YYAnimatedImageView alloc] init]; _headWearImageView = [[YYAnimatedImageView alloc] init];
@@ -1117,4 +1195,36 @@ return view;\
return _headWearSvgaImageView; 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 @end

BIN
YuMi/Resources/cp/1.svga Normal file

Binary file not shown.

BIN
YuMi/Resources/cp/2.svga Normal file

Binary file not shown.

BIN
YuMi/Resources/cp/3.svga Normal file

Binary file not shown.

BIN
YuMi/Resources/cp/4.svga Normal file

Binary file not shown.

BIN
YuMi/Resources/cp/5.svga Normal file

Binary file not shown.

View File

@@ -31,43 +31,43 @@ NS_ASSUME_NONNULL_BEGIN
+ (void)phoneSmsCode:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile type:(NSString *)type phoneAreaCode:(NSString *)phoneAreaCode; + (void)phoneSmsCode:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile type:(NSString *)type phoneAreaCode:(NSString *)phoneAreaCode;
/// 校验手机号码 /// 校验手机号码
/// @param complection 完成 /// @param completion 完成
/// @param mobile 手机号 /// @param mobile 手机号
/// @param code 验证码 /// @param code 验证码
/// @param uid 用户的uid /// @param uid 用户的uid
/// @param ticket ticket /// @param ticket ticket
+ (void)checkMoblieCode:(HttpRequestHelperCompletion)complection + (void)checkMoblieCode:(HttpRequestHelperCompletion)completion
mobile:(NSString *)mobile mobile:(NSString *)mobile
code:(NSString *)code code:(NSString *)code
uid:(NSString *)uid uid:(NSString *)uid
ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode; ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode;
/// 补全用户资料 /// 补全用户资料
/// @param complection 完成 /// @param completion 完成
/// @param userInfo 需要更新的用户信息 /// @param userInfo 需要更新的用户信息
+ (void)completeUserInfo:(HttpRequestHelperCompletion)complection + (void)completeUserInfo:(HttpRequestHelperCompletion)completion
userInfo:(NSDictionary *)userInfo; userInfo:(NSDictionary *)userInfo;
/// 获取用户钱包余额信息 /// 获取用户钱包余额信息
/// @param complection 完成 /// @param completion 完成
/// @param uid 用户uid /// @param uid 用户uid
/// @param ticket ticketg /// @param ticket ticketg
+ (void)getUserWalletInfo:(HttpRequestHelperCompletion)complection + (void)getUserWalletInfo:(HttpRequestHelperCompletion)completion
uid:(NSString *)uid uid:(NSString *)uid
ticket:(NSString *)ticket; ticket:(NSString *)ticket;
/// 批量验证 /// 批量验证
/// @param complection 完成 /// @param completion 完成
/// @param transcationIdStr 需要验证的数据 /// @param transcationIdStr 需要验证的数据
+ (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)complection + (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)completion
transcationIdStr:(NSString *)transcationIdStr; transcationIdStr:(NSString *)transcationIdStr;
/// 锁麦/开麦 /// 锁麦/开麦
/// @param complection 完成 /// @param completion 完成
/// @param roomUid 房主的uid /// @param roomUid 房主的uid
/// @param state 0 开麦 1 锁麦 /// @param state 0 开麦 1 锁麦
/// @param position 坑位 /// @param position 坑位
/// @param ticket 用户的ticket /// @param ticket 用户的ticket
/// @param uid uid /// @param uid uid
+ (void)microMuteCompletion:(HttpRequestHelperCompletion)complection + (void)microMuteCompletion:(HttpRequestHelperCompletion)completion
roomUid:(NSString *)roomUid roomUid:(NSString *)roomUid
state:(NSString *)state state:(NSString *)state
position:(NSString *)position position:(NSString *)position
@@ -75,22 +75,23 @@ NS_ASSUME_NONNULL_BEGIN
uid:(NSString *)uid; uid:(NSString *)uid;
/// 锁坑/开锁 /// 锁坑/开锁
/// @param complection 完成 /// @param completion 完成
/// @param roomUid 房主的uid /// @param roomUid 房主的uid
/// @param state 1锁坑位0取消锁即取消锁坑位 /// @param state 1锁坑位0取消锁即取消锁坑位
/// @param position 坑位 /// @param position 坑位
/// @param ticket 用户的ticket /// @param ticket 用户的ticket
/// @param uid uid /// @param uid uid
+ (void)microLockCompletion:(HttpRequestHelperCompletion)complection + (void)microLockCompletion:(HttpRequestHelperCompletion)completion
roomUid:(NSString *)roomUid roomUid:(NSString *)roomUid
state:(NSString *)state state:(NSString *)state
position:(NSString *)position position:(NSString *)position
ticket:(NSString *)ticket ticket:(NSString *)ticket
uid:(NSString *)uid; uid:(NSString *)uid;
//充值banner位 //充值banner位
+(void)requestBannerListCompletion:(HttpRequestHelperCompletion)complection; +(void)requestBannerListCompletion:(HttpRequestHelperCompletion)completion;
//联系客服 //联系客服
+(void)requestContactCustomerServiceCompletion:(HttpRequestHelperCompletion)complection; +(void)requestContactCustomerServiceCompletion:(HttpRequestHelperCompletion)completion;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

View File

@@ -66,77 +66,78 @@
} }
/// ///
/// @param complection /// @param completion
/// @param mobile /// @param mobile
/// @param code /// @param code
/// @param uid uid /// @param uid uid
/// @param ticket ticket /// @param ticket ticket
+ (void)checkMoblieCode:(HttpRequestHelperCompletion)complection + (void)checkMoblieCode:(HttpRequestHelperCompletion)completion
mobile:(NSString *)mobile mobile:(NSString *)mobile
code:(NSString *)code code:(NSString *)code
uid:(NSString *)uid uid:(NSString *)uid
ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode{ ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode{
NSString * fang = [NSString stringFromBase64String:@"c21zL3ZlcmlmeQ=="];///sms/verify 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 /// @param userInfo
+ (void)completeUserInfo:(HttpRequestHelperCompletion)complection + (void)completeUserInfo:(HttpRequestHelperCompletion)completion
userInfo:(NSDictionary *)userInfo { userInfo:(NSDictionary *)userInfo {
NSString * fang = [NSString stringFromBase64String:@"dXNlci92Mi91cGRhdGU="];///user/v2/update 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 uid uid
/// @param ticket ticketg /// @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 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 /// @param transcationIdStr
+ (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)complection + (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)completion
transcationIdStr:(NSString *)transcationIdStr { transcationIdStr:(NSString *)transcationIdStr {
NSString * fang = [NSString stringFromBase64String:@"dmVyaWZ5L2NoZWNrSU9TQ2hhcmdlUmVjb3Jk"];///verify/checkIOSChargeRecord 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 roomUid uid
/// @param state 0 1 /// @param state 0 1
/// @param position /// @param position
/// @param ticket ticket /// @param ticket ticket
/// @param uid uid /// @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" 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 roomUid uid
/// @param state 10 /// @param state 10
/// @param position /// @param position
/// @param ticket ticket /// @param ticket ticket
/// @param uid uid /// @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 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 //banner
+(void)requestBannerListCompletion:(HttpRequestHelperCompletion)complection{ +(void)requestBannerListCompletion:(HttpRequestHelperCompletion)completion{
[self makeRequest:@"charge/guide/banner" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, nil]; [self makeRequest:@"charge/guide/banner" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil];
} }
// //
+(void)requestContactCustomerServiceCompletion:(HttpRequestHelperCompletion)complection{ +(void)requestContactCustomerServiceCompletion:(HttpRequestHelperCompletion)completion{
[self makeRequest:@"charge/guide/contact" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, nil]; [self makeRequest:@"charge/guide/contact" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil];
} }
@end @end

View File

@@ -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

View File

@@ -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

View File

@@ -15,6 +15,8 @@
#import "MomentsInfoModel.h" #import "MomentsInfoModel.h"
#import "XPSoundCardModel.h" #import "XPSoundCardModel.h"
#import "MedalModel.h" #import "MedalModel.h"
#import "RelationUserVO.h"
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@@ -156,6 +158,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, strong) MedalModel *medals; @property (nonatomic, strong) MedalModel *medals;
@property (nonatomic, strong) RelationUserVO *relationUserVO;
- (BOOL)isUserValid; - (BOOL)isUserValid;
- (NSString *)userIDString; - (NSString *)userIDString;