Commit 87526029 by ludi

完成召回一级页面

parent 33c40c18
Showing with 520 additions and 29 deletions
......@@ -57,6 +57,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, assign) BOOL pushFlowSizeSwitch;
/// 引导开启通知分钟数(7410起加)
@property (nonatomic, assign) NSInteger guideTime;
/// 使者邀请占位:老用戶具體天數
@property (nonatomic, assign) NSInteger inviteDataRecallShowDay;
@end
......
......@@ -126,6 +126,21 @@ NS_ASSUME_NONNULL_BEGIN
/// 直播奖励網頁地址
@property (nonatomic, copy) NSString *liveRewardTaskUrl;
/// 邀请注册控制开关(0:关、1:开)
@property (nonatomic, assign) NSInteger inviteRegisterSwitch;
/// 使者邀请榜单地址
@property (nonatomic, copy) NSString *agentInviteRankAddress;
/// 主頁是否展示掃碼入口(1:展示)
@property (nonatomic, assign) NSInteger showQrCodeEntrance;
/// 红包宝箱记录H5配置 height:高 width:宽 url:访问地址
@property (nonatomic, copy) NSDictionary *redPacketRecordConfig;
/// 回归大礼包H5配置 height:高 width:宽 url:访问地址
@property (nonatomic, copy) NSDictionary *recallPacketConfig;
@end
NS_ASSUME_NONNULL_END
......@@ -7,12 +7,12 @@
<key>FUSChatCenterBundle.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>83</integer>
<integer>79</integer>
</dict>
<key>FUSChatCenterModule.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>81</integer>
<integer>80</integer>
</dict>
</dict>
</dict>
......
......@@ -7,12 +7,12 @@
<key>FUSShowRoomBundle.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>80</integer>
<integer>84</integer>
</dict>
<key>FUSShowRoomModule.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>82</integer>
<integer>83</integer>
</dict>
</dict>
</dict>
......
......@@ -106,6 +106,11 @@
00B778672D12DC21003D7F56 /* FUSBackpackMotorCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B778662D12DC21003D7F56 /* FUSBackpackMotorCell.swift */; };
00BD441C2D1E98650099A96F /* FUSVerifyVersionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00BD441B2D1E98650099A96F /* FUSVerifyVersionController.swift */; };
00E501EE2E050FEF00579DB0 /* FUSRegisteredBindAgentInfoAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E501ED2E050FEF00579DB0 /* FUSRegisteredBindAgentInfoAlertView.swift */; };
00E502102E0940E100579DB0 /* FUSInviteRewardWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5020F2E0940E100579DB0 /* FUSInviteRewardWebView.swift */; };
00E502132E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E502122E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.m */; };
00E502142E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 00E502112E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.h */; };
00E502162E095C3B00579DB0 /* FUSInviteRewardInviteRecallClansmanHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E502152E095C3B00579DB0 /* FUSInviteRewardInviteRecallClansmanHeader.swift */; };
00E502182E0960A700579DB0 /* FUSInviteRewardInviteRecallClansmanCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E502172E0960A700579DB0 /* FUSInviteRewardInviteRecallClansmanCell.swift */; };
9E8D0BED6061C8C88FBF8686 /* Pods_FUSUserCenterModule.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BED3EAC4EA2F921CB5B2FEE8 /* Pods_FUSUserCenterModule.framework */; };
BE189A2D2C7323FE0008418B /* FSRDynamicImModel.h in Headers */ = {isa = PBXBuildFile; fileRef = BE1899A72C7323FE0008418B /* FSRDynamicImModel.h */; };
BE189A2E2C7323FE0008418B /* FSRDynamicImModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BE1899A82C7323FE0008418B /* FSRDynamicImModel.m */; };
......@@ -1045,6 +1050,11 @@
00B778662D12DC21003D7F56 /* FUSBackpackMotorCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FUSBackpackMotorCell.swift; sourceTree = "<group>"; };
00BD441B2D1E98650099A96F /* FUSVerifyVersionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FUSVerifyVersionController.swift; sourceTree = "<group>"; };
00E501ED2E050FEF00579DB0 /* FUSRegisteredBindAgentInfoAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FUSRegisteredBindAgentInfoAlertView.swift; sourceTree = "<group>"; };
00E5020F2E0940E100579DB0 /* FUSInviteRewardWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FUSInviteRewardWebView.swift; sourceTree = "<group>"; };
00E502112E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FUSInviteDataRecallGetInfoModel.h; sourceTree = "<group>"; };
00E502122E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FUSInviteDataRecallGetInfoModel.m; sourceTree = "<group>"; };
00E502152E095C3B00579DB0 /* FUSInviteRewardInviteRecallClansmanHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FUSInviteRewardInviteRecallClansmanHeader.swift; sourceTree = "<group>"; };
00E502172E0960A700579DB0 /* FUSInviteRewardInviteRecallClansmanCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FUSInviteRewardInviteRecallClansmanCell.swift; sourceTree = "<group>"; };
29DC17A1A1D4B29CA3BB6003 /* Pods-FUSUserCenterModule.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FUSUserCenterModule.debug.xcconfig"; path = "Target Support Files/Pods-FUSUserCenterModule/Pods-FUSUserCenterModule.debug.xcconfig"; sourceTree = "<group>"; };
BE1899A72C7323FE0008418B /* FSRDynamicImModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSRDynamicImModel.h; sourceTree = "<group>"; };
BE1899A82C7323FE0008418B /* FSRDynamicImModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSRDynamicImModel.m; sourceTree = "<group>"; };
......@@ -2076,6 +2086,8 @@
00B45E282D9401CE00FF138F /* FUSInviteRewardInviteCodeCell.swift */,
00B45E292D9401CE00FF138F /* FUSInviteRewardInviteFunctionCell.swift */,
00B45E2A2D9401CE00FF138F /* FUSInviteRewardInviteFunctionHeader.swift */,
00E502152E095C3B00579DB0 /* FUSInviteRewardInviteRecallClansmanHeader.swift */,
00E502172E0960A700579DB0 /* FUSInviteRewardInviteRecallClansmanCell.swift */,
00B45E2B2D9401CE00FF138F /* FUSInviteRewardInvitePlanCell.swift */,
00B45E2C2D9401CE00FF138F /* FUSInviteRewardMyClansmanCell.swift */,
00B45E2D2D9401CE00FF138F /* FUSInviteRewardMyClansmanEmptyCell.swift */,
......@@ -2094,6 +2106,8 @@
00B45E772D94049100FF138F /* FUSInviteDataAwardGetListDataModel.m */,
00B45E7A2D9408C400FF138F /* FUSInviteDataIndexGetInfoModel.h */,
00B45E7B2D9408C400FF138F /* FUSInviteDataIndexGetInfoModel.m */,
00E502112E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.h */,
00E502122E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.m */,
00966B942D95014300A80F74 /* FUSInviteDataMyselfDauGetListDataModel.h */,
00966B952D95014300A80F74 /* FUSInviteDataMyselfDauGetListDataModel.m */,
00966B982D95024100A80F74 /* FUSInviteDataMyselfGetInfoModel.h */,
......@@ -2121,6 +2135,7 @@
00B45E442D9401CE00FF138F /* FUSInviteRewardMainView.swift */,
00B45E452D9401CE00FF138F /* FUSInviteRewardMyView.swift */,
00B45E462D9401CE00FF138F /* FUSInviteRewardTaskView.swift */,
00E5020F2E0940E100579DB0 /* FUSInviteRewardWebView.swift */,
00B45E472D9401CE00FF138F /* FUSMyEmissaryQRCodeView.swift */,
);
path = View;
......@@ -3902,6 +3917,7 @@
BE189A9B2C7323FE0008418B /* FSRMotordictPrivacyVoiceView.h in Headers */,
BE78CB762C538D7E00F38855 /* FUSVideoRecordPicker.h in Headers */,
BE78CC542C538D7F00F38855 /* FUSPublishNewsFeedViewController.h in Headers */,
00E502142E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.h in Headers */,
BE78CB512C538D7E00F38855 /* FUSFollowViewController.h in Headers */,
BE189A6B2C7323FE0008418B /* FSRLanguageMineTableViewCell.h in Headers */,
BE189A912C7323FE0008418B /* FSRLogindictMinePrivacySearchView.h in Headers */,
......@@ -4662,6 +4678,7 @@
BED3D0052C57B19E0028E28F /* FUSCustomCollectionViewLayout.m in Sources */,
BE189A5E2C7323FE0008418B /* FSRPrivacyViewController.m in Sources */,
BE189A6E2C7323FE0008418B /* FSRLoginTableViewCell.m in Sources */,
00E502162E095C3B00579DB0 /* FUSInviteRewardInviteRecallClansmanHeader.swift in Sources */,
BE189A8C2C7323FE0008418B /* FSRLanguagedictLoginView.m in Sources */,
BE189A322C7323FE0008418B /* FSRImModel.m in Sources */,
BE78CB442C538D7E00F38855 /* FUSFireCountViewController.m in Sources */,
......@@ -4749,6 +4766,7 @@
BE189AAC2C7323FF0008418B /* FSRZonedictPrivacyMineView.m in Sources */,
BE78CBF42C538D7F00F38855 /* FUSAuthFacePageTwoViewController.m in Sources */,
BE78CCFB2C538D8000F38855 /* FUSAlbumTableViewCell.m in Sources */,
00E502182E0960A700579DB0 /* FUSInviteRewardInviteRecallClansmanCell.swift in Sources */,
BE78CBFE2C538D7F00F38855 /* FUSCheckNetworkWebController.m in Sources */,
BE189A5A2C7323FE0008418B /* FSRMotorViewController.m in Sources */,
BE78CC432C538D7F00F38855 /* FUSNewsFeedLikeModel.m in Sources */,
......@@ -4768,6 +4786,7 @@
BE78CC222C538D7F00F38855 /* FUSBlackListTableViewCell.m in Sources */,
BE78CCD52C538D8000F38855 /* TZPhotoPickerController.m in Sources */,
BE78CC0D2C538D7F00F38855 /* FUSVerifyResultViewController.m in Sources */,
00E502132E0956FC00579DB0 /* FUSInviteDataRecallGetInfoModel.m in Sources */,
BE78CB332C538D7E00F38855 /* FUSRecieveNotificationHelper.m in Sources */,
BE78CB352C538D7E00F38855 /* FUSThirdPartyLoginHelper.m in Sources */,
BE189A3A2C7323FE0008418B /* FSRMotorMissionModel.m in Sources */,
......@@ -4846,6 +4865,7 @@
BE78CCE12C538D8000F38855 /* FUSPhoneAuthViewController.m in Sources */,
BE189A7C2C7323FE0008418B /* FSRStartTableViewCell.m in Sources */,
BE78CC5B2C538D7F00F38855 /* WGUploadFileModel.m in Sources */,
00E502102E0940E100579DB0 /* FUSInviteRewardWebView.swift in Sources */,
0071499F2D92AE6400B3211D /* FUSLoginInviteCodeViewController.m in Sources */,
BE78CC322C538D7F00F38855 /* FUSSettingMicTakeDivideView.swift in Sources */,
BE78CC552C538D7F00F38855 /* FUSPublishNewsFeedViewController.m in Sources */,
......
......@@ -7,12 +7,12 @@
<key>FUSUserCenterModule.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>84</integer>
<integer>81</integer>
</dict>
<key>FUSUserCenterModuleBundle.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>79</integer>
<integer>82</integer>
</dict>
</dict>
</dict>
......
......@@ -15,7 +15,11 @@ class FUSInviteRewardInviteFunctionHeader: FUSBaseView {
/// 使者奖励
case emissaryReward
/// 使者任务
case emisaaryTask
case emissaryTask
/// 使者召回
case emissaryRecall
/// 召回方式
case recallFunction
}
// static public let cellID: String = "FUSInviteRewardInviteFunctionHeader"
......@@ -93,10 +97,18 @@ class FUSInviteRewardInviteFunctionHeader: FUSBaseView {
descLabel.isHidden = true
emissaryLineImageView.isHidden = false
titleLabel.text = .fus_localString("使者奖励")
case .emisaaryTask:
case .emissaryTask:
descLabel.isHidden = true
emissaryLineImageView.isHidden = false
titleLabel.text = .fus_localString("使者任务")
case .emissaryRecall:
descLabel.isHidden = true
emissaryLineImageView.isHidden = false
titleLabel.text = .fus_versionLocalString("召回任务")
case .recallFunction:
descLabel.isHidden = true
emissaryLineImageView.isHidden = true
titleLabel.text = .fus_versionLocalString("选择召回方式")
}
let titleSize = titleLabel.text?.size(for: .fus_themeMediumFont(18), maxWidth: Double(MAXFLOAT), maxHeight: 30)
......
......@@ -168,15 +168,25 @@ class FUSInviteRewardInvitePlanCell: UITableViewCell {
// .disposed(by: disposeBag)
}
/// 设置邀请的模型
func fus_setupModel(model: FUSInviteDataIndexGetInfoModel) {
titleLabel.attributedText = FUSInviteRewardInviteView.FUSInviteRewardInviteViewType.invite.fus_getPlanTitle()
self.fus_setupCell(emissaryContent: model.masterContent, clansmanContent: model.memberContent)
}
/// 设置召回的模型
func fus_setupRecall(model: FUSInviteDataRecallGetInfoModel){
titleLabel.attributedText = FUSInviteRewardInviteView.FUSInviteRewardInviteViewType.recall.fus_getPlanTitle()
self.fus_setupCell(emissaryContent: model.masterContent, clansmanContent: model.memberContent)
}
func fus_setupCell(emissaryContent: String, clansmanContent: String) {
var attrTextFont: UIFont = .fus_themeFont(13)
if self.singleDescWidth < 330 + 18*2 {
attrTextFont = .fus_themeFont(12)
}
let emissaryContentAttr = FUSInviteDataIndexGetInfoModel.fus_getAttr(withContent: model.masterContent, font: attrTextFont, isCenter: true)
let clansmanContentAttr = FUSInviteDataIndexGetInfoModel.fus_getAttr(withContent: model.memberContent, font: attrTextFont, isCenter: true)
let emissaryContentAttr = FUSInviteDataIndexGetInfoModel.fus_getAttr(withContent: emissaryContent, font: attrTextFont, isCenter: true)
let clansmanContentAttr = FUSInviteDataIndexGetInfoModel.fus_getAttr(withContent: clansmanContent, font: attrTextFont, isCenter: true)
// 如果有没有内容的情况,那么只显示一个,并且居中
if emissaryContentAttr.length <= 0 || clansmanContentAttr.length <= 0{
......@@ -287,3 +297,19 @@ class FFInviteRewardInviteRewardDescView: FUSBaseView {
titleBtn.setTitle(" " + self.viewType.fus_getTitle() + " ", for: .normal)
}
}
extension FUSInviteRewardInviteView.FUSInviteRewardInviteViewType{
func fus_getPlanTitle() -> NSAttributedString {
return .sj.makeText({ make in
if self == .invite {
make.append(.fus_versionLocalString("邀请新玩家加入")).textColor(.fus_textColorRich())
}
else {
make.append(.fus_versionLocalString("召唤老玩家回归")).textColor(.fus_textColorRich())
}
make.append(" ")
make.append("FusiYa").textColor(.fus_diamondBlue())
make.font(.fus_themeMediumFont(18))
})
}
}
//
// FUSInviteRewardInviteRecallClansmanCell.swift
// FUSUserCenterModule
//
// Created by aaa on 2025/6/23.
//
import UIKit
class FUSInviteRewardInviteRecallClansmanCell: UITableViewCell {
enum FUSInviteRewardInviteRecallClansmanType{
case churnClansman
case clansmanRelationship
func fus_getTitle() -> String{
switch self{
case .churnClansman:
return.fus_versionLocalString("流失族人")
case .clansmanRelationship:
return .fus_versionLocalString("族人关系")
}
}
}
static public let cellID: String = "FFInviteRewardInviteRecallClansmanCell"
static public let cellHeight: CGFloat = 58
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.selectionStyle = UITableViewCell.SelectionStyle.none
self.makeUI()
self.bindViewModel()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
let bgView = UIView(frame: CGRectMake(18, 0, UIView.fus_screenW() - 18*2, FUSInviteRewardInviteRecallClansmanCell.cellHeight))
let titleLabel = UILabel()
let descLabel = UILabel()
let lineView = UIView()
func makeUI(){
self.contentView.backgroundColor = .clear
self.backgroundColor = .clear
bgView.backgroundColor = .white
self.contentView.addSubview(bgView)
bgView.snp.makeConstraints { make in
make.left.right.equalToSuperview().inset(18)
make.top.bottom.equalToSuperview()
}
titleLabel.font = .fus_themeMediumFont(15)
titleLabel.textColor = .fus_textColorDeep()
bgView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(20)
make.centerY.equalToSuperview()
}
let arrowImageView = UIImageView(image: FUSUserCenterBunble.imageNamed("inviteReward_right_arrow_icon"))
bgView.addSubview(arrowImageView)
arrowImageView.snp.makeConstraints { make in
make.right.equalTo(-10)
make.centerY.equalToSuperview()
// make.size.equalTo(CGSizeMake(6, 12))
}
descLabel.font = .fus_themeFont(13)
descLabel.textColor = .fus_textColorMedium()
bgView.addSubview(descLabel)
descLabel.snp.makeConstraints { make in
make.right.equalTo(arrowImageView.snp.left).offset(-6)
make.centerY.equalTo(titleLabel.snp.centerY)
}
lineView.backgroundColor = .fus_separatorLine()
bgView.addSubview(lineView)
lineView.snp.makeConstraints { make in
make.left.right.equalToSuperview().inset(16)
make.bottom.equalToSuperview()
make.height.equalTo(1.0/UIScreen.main.scale)
}
}
func bindViewModel(){
}
public func fus_setCell(type: FUSInviteRewardInviteRecallClansmanType, model: FUSInviteDataRecallGetInfoModel, currentRow: Int, maxRowCount: Int){
self.titleLabel.text = type.fus_getTitle()
switch type{
case .churnClansman:
self.descLabel.text = model.drainMember == 0 ? "" : "\(model.drainMember)"
case .clansmanRelationship:
self.descLabel.text = model.drainFollow == 0 ? "" : "\(model.drainFollow)"
}
self.lineView.isHidden = false
// 添加阴影
self.bgView.fus_addInviteCellShadow(currentRow: currentRow, maxRowCount: maxRowCount)
if maxRowCount <= 1 || currentRow == maxRowCount - 1 {
self.lineView.isHidden = true
}
}
}
//
// FUSInviteRewardInviteRecallClansmanHeader.swift
// FUSUserCenterModule
//
// Created by aaa on 2025/6/23.
//
import UIKit
class FUSInviteRewardInviteRecallClansmanHeader: FUSBaseView {
enum FUSInviteRewardInviteRecallClansmanHeaderType {
case recallClansman
func fus_getTitle() -> String {
switch self {
case .recallClansman:
return .fus_versionLocalString("召回流失族人")
}
}
func fus_getDesc() -> String {
switch self {
case .recallClansman:
return .init(format: .fus_versionLocalString("%@天以上未登入FIREFLY的玩家,将会自动断开使者关系"), "\(FUSSwiftCacheDataShare.share.settingConfigModel.value?.inviteDataRecallShowDay ?? 90)")
}
}
}
let titleLabel = UILabel()
let descLabel = UILabel()
override func makeUI() {
super.makeUI()
self.backgroundColor = .clear
descLabel.numberOfLines = 0
descLabel.font = .fus_themeFont(13)
descLabel.textColor = .fus_textColorMedium()
self.addSubview(descLabel)
descLabel.snp.makeConstraints { make in
make.left.right.equalToSuperview().inset(18)
make.bottom.equalToSuperview().offset(-4)
}
let titleBgView = UIView()
self.addSubview(titleBgView)
titleBgView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalTo(descLabel.snp.top).offset(0)
make.height.equalTo(38)
}
let dotView = UIView()
dotView.backgroundColor = .fus_diamondBlue()
dotView.layer.cornerRadius = 3
titleBgView.addSubview(dotView)
dotView.snp.makeConstraints { make in
make.left.equalTo(22)
make.centerY.equalToSuperview()
make.size.equalTo(CGSizeMake(6, 6))
}
titleLabel.font = .fus_themeMediumFont(18)
titleLabel.textColor = .black
titleBgView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(dotView.snp.right).offset(8)
make.centerY.equalToSuperview()
}
}
func fus_setup(type: FUSInviteRewardInviteRecallClansmanHeaderType){
self.titleLabel.text = type.fus_getTitle()
self.descLabel.text = type.fus_getDesc()
}
static public func fus_getCellHeight(type: FUSInviteRewardInviteRecallClansmanHeaderType) -> CGFloat{
var cellHeight: CGFloat = 0
cellHeight += 38
cellHeight += ceil(type.fus_getDesc().size(for: .fus_themeFont(13), maxWidth: UIView.fus_screenW() - 18*2, maxHeight: Double(MAXFLOAT)).height) + 2
cellHeight += 4
return cellHeight
}
}
......@@ -149,7 +149,9 @@ class FUSInviteRewardTaskCommonCell: UITableViewCell {
//
// }
// }
self.titleLabel.attributedText = model.fus_getTitleAttr()
model.fus_getTitleAttr {[weak self] attr in
self?.titleLabel.attributedText = attr
}
self.descLabel.text = model.content
let descSize = model.content.size(for: FUSInviteRewardTaskCommonCell.descLabelFont, maxWidth: UIView.fus_screenW() - FUSInviteRewardTaskCommonCell.bgHorizontalMargin*2 - FUSInviteRewardTaskCommonCell.contentHorizontalMargin*2, maxHeight: Double(MAXFLOAT))
......@@ -230,9 +232,13 @@ extension FUSInviteDataAwardGetListDataModel {
return cellHeight
}
public func fus_getTitleAttr() -> NSAttributedString? {
return FUSFormatContentHelper.fus_createContentAttributedString(withHTMLString: self.title, font: .fus_themeMediumFont(15), defaultColor: .fus_textColorDeep(), imageSize: CGSizeMake(20, 20))
public func fus_getTitleAttr(attrHandle: ((NSAttributedString?) -> Void)?) {
DispatchQueue.global().async(execute: {
let attr2 = FUSFormatContentHelper.fus_createContentAttributedString(withHTMLString: self.title, font: .fus_themeMediumFont(15), defaultColor: .fus_textColorDeep(), imageSize: CGSizeMake(20, 20))
DispatchQueue.main.async(execute: {
attrHandle?(attr2)
})
})
}
}
......
......@@ -15,22 +15,30 @@ public class FUSInviteRewardController: FUSBaseViewController {
/// 邀请
case invite
/// 奖励
case reward
// case reward
/// 任务
case task
/// 榜单
case board
/// 我的
case my
/// 召回
case recall
func fus_getTitleName() -> String{
switch self{
case .invite:
return .fus_localString("邀请")
case .reward:
return .fus_localString("奖励")
// case .reward:
// return .fus_localString("奖励")
case .task:
return .fus_localString("任务")
case .board:
return .fus_versionLocalString("榜单")
case .my:
return .fus_localString("我的")
case .recall:
return .fus_versionLocalString("召回")
}
}
......@@ -39,7 +47,9 @@ public class FUSInviteRewardController: FUSBaseViewController {
return .invite
}
else if typeStr == "inviteReward_reward"{
return .reward
// 奖励和任务合并了
// return .reward
return .task
}
else if typeStr == "inviteReward_task"{
return .task
......@@ -47,6 +57,9 @@ public class FUSInviteRewardController: FUSBaseViewController {
else if typeStr == "inviteReward_my"{
return .my
}
else if typeStr == "inviteReward_recall"{
return .recall
}
else {
return .invite
}
......
//
// FUSInviteDataRecallGetInfoModel.h
// FUSUserCenterModule
//
// Created by aaa on 2025/6/23.
//
#import <FUSFoundation/FUSFoundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface FUSInviteDataRecallGetInfoModel : FUSBaseModel
/// 使者获得
@property (nonatomic, copy) NSString *masterContent;
/// 族人获得
@property (nonatomic, copy) NSString *memberContent;
/// 流失族人
@property (nonatomic, assign) NSInteger drainMember;
/// 流失关系
@property (nonatomic, assign) NSInteger drainFollow;
/// 流失族人H5地址
@property (nonatomic, copy) NSString *drainMemberUrl;
/// 流水关系H5地址
@property (nonatomic, copy) NSString *drainFollowUrl;
@end
NS_ASSUME_NONNULL_END
//
// FUSInviteDataRecallGetInfoModel.m
// FUSUserCenterModule
//
// Created by aaa on 2025/6/23.
//
#import "FUSInviteDataRecallGetInfoModel.h"
@implementation FUSInviteDataRecallGetInfoModel
@end
......@@ -11,6 +11,7 @@
#import "FUSInviteDataMyselfGetInfoModel.h"
#import "FUSInviteDataMyselfDauGetListDataModel.h"
#import "FUSInviteDataQrcodeGetModel.h"
#import "FUSInviteDataRecallGetInfoModel.h"
NS_ASSUME_NONNULL_BEGIN
......@@ -20,6 +21,10 @@ NS_ASSUME_NONNULL_BEGIN
+(void)fus_inviteDataIndexGetInfoWithSuccess:(void(^)(FUSInviteDataIndexGetInfoModel *model))success
failure:(void(^)(NSString *msg,int code))failure;
/// 使者邀请-召回首页
+ (void)fus_requestInviteDataRecallGetInfoWithSuccess:(void(^)(FUSInviteDataRecallGetInfoModel *model))success
failure:(void(^)(NSString *msg,int code))failure;
/// 使者邀请-奖励中心
+(void)fus_inviteDataAwardGetListWithSuccess:(void(^)(NSArray<FUSInviteDataAwardGetListDataModel *> *modelList))success
failure:(void(^)(NSString *msg,int code))failure;
......@@ -28,6 +33,10 @@ NS_ASSUME_NONNULL_BEGIN
+(void)fus_inviteDataTaskGetListWithSuccess:(void(^)(NSArray<FUSInviteDataAwardGetListDataModel *> *modelList))success
failure:(void(^)(NSString *msg,int code))failure;
/// 使者邀请-召回任务列表
+(void)fus_requestInviteDataTaskRecallGetListWithSuccess:(void(^)(NSArray<FUSInviteDataAwardGetListDataModel *> *modelList))success
failure:(void(^)(NSString *msg,int code))failure;
/// 使者邀请-奖励领取
+(void)fus_inviteDataAwardReceiveWithSid:(NSString *)sid
success:(void(^)(FUSInviteDataAwardReceiveItemModel *model))success
......@@ -38,6 +47,11 @@ NS_ASSUME_NONNULL_BEGIN
success:(void(^)(FUSInviteDataAwardReceiveItemModel *model))success
failure:(void(^)(NSString *msg,int code))failure;
/// 使者邀请-领取回归任务奖励
+(void)fus_inviteDataTaskRecallReceiveWithSid:(NSString *)sid
success:(void(^)(FUSInviteDataAwardReceiveItemModel *model))success
failure:(void(^)(NSString *msg,int code))failure;
/// 使者邀请-我的信息
+(void)fus_inviteDataMyselfGetInfoWithSuccess:(void(^)(FUSInviteDataMyselfGetInfoModel *model))success
failure:(void(^)(NSString *msg,int code))failure;
......
......@@ -21,6 +21,17 @@
}];
}
/// 使者邀请-召回首页
+ (void)fus_requestInviteDataRecallGetInfoWithSuccess:(void (^)(FUSInviteDataRecallGetInfoModel * _Nonnull))success failure:(void (^)(NSString * _Nonnull, int))failure{
[FUSHttpHelper postRequestBinaryWithUrl:FUSUserCenterURLs.fus_URL_inviteDataRecallGetInfo params:nil success:^(NSDictionary * _Nullable dataDict, int code) {
success([FUSInviteDataRecallGetInfoModel modelWithDictionary:dataDict]);
} failure:^(NSDictionary * _Nullable dataDict, int code) {
if (failure) {
failure(FAILURE_MESSAGE,code);
}
}];
}
/// 使者邀请-奖励中心
+ (void)fus_inviteDataAwardGetListWithSuccess:(void (^)(NSArray<FUSInviteDataAwardGetListDataModel *> * _Nonnull))success failure:(void (^)(NSString * _Nonnull, int))failure{
......@@ -45,6 +56,17 @@
}];
}
/// 使者邀请-召回任务列表
+ (void)fus_requestInviteDataTaskRecallGetListWithSuccess:(void (^)(NSArray<FUSInviteDataAwardGetListDataModel *> * _Nonnull))success failure:(void (^)(NSString * _Nonnull, int))failure{
[FUSHttpHelper postRequestBinaryWithUrl:FUSUserCenterURLs.fus_URL_inviteDataTaskRecallGetList params:nil success:^(NSDictionary * _Nullable dataDict, int code) {
success([NSArray modelArrayWithClass:[FUSInviteDataAwardGetListDataModel class] json:dataDict[@"dataList"]]);
} failure:^(NSDictionary * _Nullable dataDict, int code) {
if (failure) {
failure(FAILURE_MESSAGE,code);
}
}];
}
/// 使者邀请-奖励领取
+ (void)fus_inviteDataAwardReceiveWithSid:(NSString *)sid success:(void (^)(FUSInviteDataAwardReceiveItemModel * _Nonnull))success failure:(void (^)(NSString * _Nonnull, int))failure{
NSDictionary *parm = @{@"sid": sid};
......@@ -73,6 +95,19 @@
}];
}
+ (void)fus_inviteDataTaskRecallReceiveWithSid:(NSString *)sid success:(void (^)(FUSInviteDataAwardReceiveItemModel * _Nonnull))success failure:(void (^)(NSString * _Nonnull, int))failure{
NSDictionary *parm = @{@"sid": sid};
[FUSHttpHelper postRequestBinaryWithUrl:FUSUserCenterURLs.fus_URL_inviteDataTaskRecallReceive params:parm success:^(NSDictionary * _Nullable dataDict, int code) {
FUSInviteDataAwardReceiveItemModel *model = [FUSInviteDataAwardReceiveItemModel modelWithDictionary:dataDict[@"dataJson"]];
[[FUSRouter userRouter] fus_showAwardAnimateWithCurrency:0 classify:model.classify tips:model.itemName icon:model.itemUrl amount:model.itemNum];
success(model);
} failure:^(NSDictionary * _Nullable dataDict, int code) {
if (failure) {
failure(FAILURE_MESSAGE,code);
}
}];
}
/// 使者邀请-我的信息
+ (void)fus_inviteDataMyselfGetInfoWithSuccess:(void (^)(FUSInviteDataMyselfGetInfoModel * _Nonnull))success failure:(void (^)(NSString * _Nonnull, int))failure{
[FUSHttpHelper postRequestBinaryWithUrl:FUSUserCenterURLs.fus_URL_inviteDataMyselfGetInfo params:nil success:^(NSDictionary * _Nullable dataDict, int code) {
......
......@@ -37,7 +37,7 @@ class FUSInviteRewardMainView: FUSBaseView {
private var scrollView = UIScrollView()
private let segmentItemTypeList: [FUSInviteRewardController.FUSInviteRewardViewType] = [.invite, .reward, .task, .my]
private let segmentItemTypeList: [FUSInviteRewardController.FUSInviteRewardViewType] = [.invite, .recall, .task, .board, .my]
private var segmentViewList: [FUSInviteRewardBaseView] = .init()
private var currentSegmentIndex = 0
private var isScrolling = false
......@@ -96,7 +96,7 @@ class FUSInviteRewardMainView: FUSBaseView {
if let model = model {
if model.awardReadRemindnum > 0 {
if let viewIndex = self?.segmentItemTypeList.firstIndex(of: .reward){
if let viewIndex = self?.segmentItemTypeList.firstIndex(of: .task){
// 把奖励定为未读
self?.segmentView.fus_addUnreadPoint(at: viewIndex, with: .red)
if self?.segmentViewList.count ?? 0 > viewIndex {
......@@ -131,11 +131,22 @@ class FUSInviteRewardMainView: FUSBaseView {
var tempView: FUSInviteRewardBaseView?
switch itemType{
case .invite:
tempView = FUSInviteRewardInviteView()
case .reward:
tempView = FUSInviteRewardTaskView(viewType: .reward)
let inviteView = FUSInviteRewardInviteView()
inviteView.viewType = .invite
tempView = inviteView
case .recall:
let inviteView = FUSInviteRewardInviteView()
inviteView.viewType = .recall
tempView = inviteView
case .task:
tempView = FUSInviteRewardTaskView(viewType: .task)
tempView = FUSInviteRewardTaskView()
case .board:
var url = FUSCacheDataShare.shareStore().settingInitDataModel.agentInviteRankAddress + "?isSpecialUser=\((FUSSwiftCacheDataShare.share.settingConfigModel.value?.specialUserMark == true ? "1" : "0"))"
url = url + "&type=4"
let webView = FUSInviteRewardWebView()
webView.urlStr = url
tempView = webView
case .my:
tempView = FUSInviteRewardMyView()
}
......
//
// FUSInviteRewardWebView.swift
// FUSUserCenterModule
//
// Created by aaa on 2025/6/23.
//
import UIKit
class FUSInviteRewardWebView: FUSInviteRewardBaseView {
var urlStr: String = ""{
didSet{
if viewDidLoad == true{
webView.configWebView(withWebUrl: urlStr)
}
}
}
let webView = FUSWKWebView(frame: CGRectMake(0, 0, UIView.fus_screenW(), UIView.fus_screenH() - UIView.fus_StatusBarAndNavgationBarHeight()))
override func makeUI() {
super.makeUI()
self.addSubview(webView)
webView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
override func fus_viewDidlLoad() {
super.fus_viewDidlLoad()
if urlStr.isEmpty == false {
webView.configWebView(withWebUrl: urlStr)
}
}
}
......@@ -17,7 +17,13 @@ class FUSInviteRewardInviteViewModel: NSObject {
/// 数据
let inviteDataModel: BehaviorRelay<FUSInviteDataIndexGetInfoModel?> = .init(value: nil)
/// 是否正在请求
let inviteDateIsLoading: BehaviorRelay<Bool> = .init(value: false)
let inviteDataIsLoading: BehaviorRelay<Bool> = .init(value: false)
/// 召回数据
let recallDataModel: BehaviorRelay<FUSInviteDataRecallGetInfoModel?> = .init(value: nil)
/// 召回正在请求
let recallDataIsLoading: BehaviorRelay<Bool> = .init(value: false)
/// socket监听的新增族人
let socketAwardUserModelListObserver: BehaviorRelay<[FUSInviteDataAwardGetListDataUserListModel]> = .init(value: .init())
/// 新增单独一个推送
......@@ -72,21 +78,44 @@ class FUSInviteRewardInviteViewModel: NSObject {
socketAwardUserModelListObserver.accept(.init())
}
self.inviteDateIsLoading.accept(true)
self.inviteDataIsLoading.accept(true)
FUSInviteRewardHttpHelper.fus_inviteDataIndexGetInfo {[weak self] model in
self?.currentUid = FUSSwiftCacheDataShare.share.userInfo.value?.uid
self?.fus_reloadRemainingTimeCountDown(model: model)
self?.inviteDataModel.accept(model)
self?.inviteDateIsLoading.accept(false)
self?.inviteDataIsLoading.accept(false)
} failure: {[weak self] msg, code in
FUSDialogView.fus_showDialog(msg)
self?.inviteDateIsLoading.accept(false)
self?.inviteDataIsLoading.accept(false)
}
}
/// 使者邀请-召回首页
public func fus_requestInviteDataRecallGetInfo(){
if let uid = self.currentUid,
uid != FUSSwiftCacheDataShare.share.userInfo.value?.uid {
recallDataModel.accept(nil)
}
self.recallDataIsLoading.accept(true)
FUSInviteRewardHttpHelper.fus_requestInviteDataRecallGetInfo {[weak self] model in
self?.currentUid = FUSSwiftCacheDataShare.share.userInfo.value?.uid
self?.recallDataModel.accept(model)
self?.recallDataIsLoading.accept(false)
} failure: {[weak self] msg, code in
FUSDialogView.fus_showDialog(msg)
self?.recallDataIsLoading.accept(false)
}
}
var countdownDisposedBag = DisposeBag()
/// 计算倒数识别错误的次数,如果超过次数,则先不请求了
var countdownErrorCount: Int = 0
/// 倒数邀请码
func fus_reloadRemainingTimeCountDown(model: FUSInviteDataIndexGetInfoModel){
......@@ -103,9 +132,16 @@ class FUSInviteRewardInviteViewModel: NSObject {
guard let self = self else { return }
let remainingTime = Int(self.agentCodeEndTimeInterval - Date().timeIntervalSince1970)
if remainingTime < 0{
self.countdownDisposedBag = .init()
self.countdownErrorCount += 1
if self.countdownErrorCount > 3 {
// 连续3次进入这个地方,那么就是有问题的,先不请求了
return
}
self.fus_requestInviteDataIndexGetInfo()
return
}
self.countdownErrorCount = 0
self.remainingTime.accept(remainingTime)
})
.disposed(by: countdownDisposedBag)
......
......@@ -48,5 +48,6 @@
#import "FUSInviteDataMyselfGetInfoModel.h"
#import "FUSInviteDataQrcodeGetModel.h"
#import "FUSInviteRewardHttpHelper.h"
#import "FUSInviteDataRecallGetInfoModel.h"
#endif /* FUSUserCenterOCHeader_h */
......@@ -416,18 +416,27 @@ NS_ASSUME_NONNULL_BEGIN
/// 使者邀请-主页信息
+(NSString *)fus_URL_inviteDataIndexGetInfo;
/// 使者邀请-召回首页
+(NSString *)fus_URL_inviteDataRecallGetInfo;
/// 使者邀请-奖励中心
+(NSString *)fus_URL_inviteDataAwardGetList;
/// 使者邀请-任务中心
+(NSString *)fus_URL_inviteDataTaskGetList;
/// 使者邀请-召回任务列表
+(NSString *)fus_URL_inviteDataTaskRecallGetList;
/// 使者邀请-奖励领取
+(NSString *)fus_URL_inviteDataAwardReceive;
/// 使者邀请-任务领取
+(NSString *)fus_URL_inviteDataTaskReceive;
/// 使者邀请-领取回归任务奖励
+(NSString *)fus_URL_inviteDataTaskRecallReceive;
/// 使者邀请-我的信息
+(NSString *)fus_URL_inviteDataMyselfGetInfo;
......
......@@ -675,6 +675,11 @@
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/index/getInfo"];
}
/// 使者邀请-召回首页
+(NSString *)fus_URL_inviteDataRecallGetInfo{
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/recall/getInfo"];
}
/// 使者邀请-奖励中心
+(NSString *)fus_URL_inviteDataAwardGetList{
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/award/getList"];
......@@ -685,6 +690,11 @@
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/task/getList"];
}
/// 使者邀请-召回任务列表
+ (NSString *)fus_URL_inviteDataTaskRecallGetList{
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/task/recall/getList"];
}
/// 使者邀请-奖励领取
+(NSString *)fus_URL_inviteDataAwardReceive{
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/award/receive"];
......@@ -695,6 +705,11 @@
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/task/receive"];
}
/// 使者邀请-领取回归任务奖励
+(NSString *)fus_URL_inviteDataTaskRecallReceive{
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/task/recall/receive"];
}
/// 使者邀请-我的信息
+(NSString *)fus_URL_inviteDataMyselfGetInfo{
return [FUSConfig.sharedInstanced.pathConfigs apiUrl:@"/inviteData/myself/getInfo"];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment