Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
galaxy-iOS
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mobile-group
galaxy-iOS
Commits
916f235d
Commit
916f235d
authored
Feb 20, 2025
by
Alex朱枝文
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
积分中心接口调试
parent
341a5cd1
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
435 additions
and
38 deletions
+435
-38
project.pbxproj
galaxy/galaxy.xcodeproj/project.pbxproj
+8
-0
YHMemberCenterViewController.swift
...ses/Modules/Mine(我的)/C/YHMemberCenterViewController.swift
+143
-14
YHMemberCenterCellContent.swift
...es/Modules/Mine(我的)/Model/YHMemberCenterCellContent.swift
+1
-1
YHMemberCenterInfo.swift
...y/Classes/Modules/Mine(我的)/Model/YHMemberCenterInfo.swift
+82
-0
YHMembershipLevel.swift
...xy/Classes/Modules/Mine(我的)/Model/YHMembershipLevel.swift
+15
-6
YHMemberCenterActionCell.swift
...Classes/Modules/Mine(我的)/V/YHMemberCenterActionCell.swift
+5
-0
YHMemberCenterHeaderBannerCell.swift
...s/Modules/Mine(我的)/V/YHMemberCenterHeaderBannerCell.swift
+9
-5
YHMemberCenterHeaderView.swift
...Classes/Modules/Mine(我的)/V/YHMemberCenterHeaderView.swift
+130
-12
YHMemberCenterViewModel.swift
.../Modules/Mine(我的)/ViewModel/YHMemberCenterViewModel.swift
+41
-0
YHAllApiName.swift
galaxy/galaxy/Classes/Tools/NetWork/YHAllApiName.swift
+1
-0
No files found.
galaxy/galaxy.xcodeproj/project.pbxproj
View file @
916f235d
...
...
@@ -72,6 +72,8 @@
0436713D2D6470A400E8D9BA
/* YHMemberCenterActionCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0436713C2D6470A400E8D9BA
/* YHMemberCenterActionCell.swift */
;
};
0436713F2D64817500E8D9BA
/* YHMemberCenterFooterView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0436713E2D64817500E8D9BA
/* YHMemberCenterFooterView.swift */
;
};
043671412D64935200E8D9BA
/* YHMemberCenterCellContent.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
043671402D64935200E8D9BA
/* YHMemberCenterCellContent.swift */
;
};
043671432D66DDB500E8D9BA
/* YHMemberCenterInfo.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
043671422D66DDB500E8D9BA
/* YHMemberCenterInfo.swift */
;
};
043671452D66FBEE00E8D9BA
/* YHMemberCenterViewModel.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
043671442D66FBEE00E8D9BA
/* YHMemberCenterViewModel.swift */
;
};
045C0F7F2D12CA5F00BD2DC0
/* submit_page_scroll.gif in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
045C0F4F2D12CA5E00BD2DC0
/* submit_page_scroll.gif */
;
};
045C0F802D12CA5F00BD2DC0
/* Localizable.xcstrings in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
045C0F762D12CA5E00BD2DC0
/* Localizable.xcstrings */
;
};
045C0F812D12CA5F00BD2DC0
/* img_0.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
045C0F5E2D12CA5E00BD2DC0
/* img_0.png */
;
};
...
...
@@ -1310,6 +1312,8 @@
0436713C2D6470A400E8D9BA
/* YHMemberCenterActionCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterActionCell.swift
;
sourceTree
=
"<group>"
;
};
0436713E2D64817500E8D9BA
/* YHMemberCenterFooterView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterFooterView.swift
;
sourceTree
=
"<group>"
;
};
043671402D64935200E8D9BA
/* YHMemberCenterCellContent.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterCellContent.swift
;
sourceTree
=
"<group>"
;
};
043671422D66DDB500E8D9BA
/* YHMemberCenterInfo.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterInfo.swift
;
sourceTree
=
"<group>"
;
};
043671442D66FBEE00E8D9BA
/* YHMemberCenterViewModel.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterViewModel.swift
;
sourceTree
=
"<group>"
;
};
045C0A142D12CA5E00BD2DC0
/* YHBaseViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHBaseViewController.swift
;
sourceTree
=
"<group>"
;
};
045C0A152D12CA5E00BD2DC0
/* YHBaseViewModel.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHBaseViewModel.swift
;
sourceTree
=
"<group>"
;
};
045C0A162D12CA5E00BD2DC0
/* YHNavigationController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHNavigationController.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -5736,6 +5740,7 @@
045C0EE22D12CA5E00BD2DC0
/* YHCollectionModel.swift */
,
048D6AE02D5F17C400BC6F4C
/* YHMembershipLevel.swift */
,
043671402D64935200E8D9BA
/* YHMemberCenterCellContent.swift */
,
043671422D66DDB500E8D9BA
/* YHMemberCenterInfo.swift */
,
);
path
=
Model
;
sourceTree
=
"<group>"
;
...
...
@@ -5819,6 +5824,7 @@
isa
=
PBXGroup
;
children
=
(
045C0EFB2D12CA5E00BD2DC0
/* YHMyLikeViewModel.swift */
,
043671442D66FBEE00E8D9BA
/* YHMemberCenterViewModel.swift */
,
);
path
=
ViewModel
;
sourceTree
=
"<group>"
;
...
...
@@ -7124,6 +7130,7 @@
045C109A2D12CA5F00BD2DC0
/* YhCacheTool.swift in Sources */
,
045C109B2D12CA5F00BD2DC0
/* YHHomeInfoDetailViewController.swift in Sources */
,
045C109C2D12CA5F00BD2DC0
/* YHAdopterChinaViewController.swift in Sources */
,
043671452D66FBEE00E8D9BA
/* YHMemberCenterViewModel.swift in Sources */
,
04AE20332D13B72F00891D24
/* YHGCChildPrimaryInfoVC.swift in Sources */
,
045C109D2D12CA5F00BD2DC0
/* YHHKRecordsSectionItemBaseCell.swift in Sources */
,
045C109E2D12CA5F00BD2DC0
/* YHResignMaterialViewModel.swift in Sources */
,
...
...
@@ -7295,6 +7302,7 @@
045C113B2D12CA5F00BD2DC0
/* YHButlerServiceMessageHandler.swift in Sources */
,
045C113C2D12CA5F00BD2DC0
/* YHResignScheduleLineCollectCell.swift in Sources */
,
04AE20502D19425900891D24
/* YHGCCertificateListVC.swift in Sources */
,
043671432D66DDB500E8D9BA
/* YHMemberCenterInfo.swift in Sources */
,
045C113D2D12CA5F00BD2DC0
/* YHMyFileListCell.swift in Sources */
,
045C113E2D12CA5F00BD2DC0
/* YHLookResignResultModel.swift in Sources */
,
045C113F2D12CA5F00BD2DC0
/* YHIncomeTypeSelectCell.swift in Sources */
,
...
...
galaxy/galaxy/Classes/Modules/Mine(我的)/C/YHMemberCenterViewController.swift
View file @
916f235d
...
...
@@ -12,11 +12,15 @@ class YHMemberCenterViewController: YHBaseViewController {
enum
TableRow
{
case
currentPrivilege
(
_
curLevel
:
YHMembershipLevel
,
_
count
:
Int
)
case
myPrivilege
(
_
myLevel
:
YHMembershipLevel
,
_
count
:
Int
)
case
action
(
_
title
:
String
,
_
detail
:
String
,
_
imageStr
:
String
,
_
ratio
:
CGFloat
,
_
buttonStr
:
String
,
_
buttonState
:
YHMemberCenterActionButton
.
ButtonState
)
case
action
(
_
title
:
String
,
_
detail
:
String
,
_
imageStr
:
String
,
_
ratio
:
CGFloat
,
_
buttonStr
:
String
,
_
buttonState
:
YHMemberCenterActionButton
.
ButtonState
,
_
id
:
String
)
}
private
var
currentLevel
:
YHMembershipLevel
=
.
normal
private
var
viewModel
=
YHMemberCenterViewModel
()
private
var
firstEnter
=
true
var
datas
:
[
TableRow
]
=
[]
private
lazy
var
tableView
:
UITableView
=
{
...
...
@@ -49,7 +53,9 @@ class YHMemberCenterViewController: YHBaseViewController {
}
self
.
bgIcon
.
image
=
UIImage
(
named
:
level
.
bgIconTitle
())
self
.
currentLevel
=
level
self
.
setupDatas
()
if
let
info
=
self
.
viewModel
.
memberCenterInfo
{
self
.
updateDatas
(
info
)
}
}
return
view
}()
...
...
@@ -62,7 +68,17 @@ class YHMemberCenterViewController: YHBaseViewController {
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
setupUI
()
setupDatas
()
}
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
super
.
viewWillAppear
(
animated
)
if
firstEnter
{
firstEnter
=
false
requestData
(
isNeedLoading
:
true
)
}
else
{
requestData
(
isNeedLoading
:
false
)
}
}
private
func
setupUI
()
{
...
...
@@ -92,64 +108,160 @@ class YHMemberCenterViewController: YHBaseViewController {
tableView
.
tableHeaderView
=
headerView
tableView
.
tableFooterView
=
footerView
}
private
func
setupDatas
()
{
private
func
requestData
(
isNeedLoading
:
Bool
=
false
)
{
if
isNeedLoading
{
YHHUD
.
show
(
.
progress
(
message
:
"加载中..."
))
}
viewModel
.
getMemberInfo
{
[
weak
self
]
success
,
error
in
guard
let
self
=
self
else
{
return
}
if
isNeedLoading
{
YHHUD
.
hide
()
}
if
success
,
let
memberCenterInfo
=
viewModel
.
memberCenterInfo
{
self
.
headerView
.
updateDatas
(
memberCenterInfo
)
self
.
updateDatas
(
memberCenterInfo
)
}
else
{
var
errorMsg
=
"获取会员信息失败,请重试!"
if
let
error
=
error
,
error
.
errorMsg
.
count
>
0
{
errorMsg
=
error
.
errorMsg
}
YHHUD
.
flash
(
message
:
errorMsg
)
self
.
navigationController
?
.
popViewController
(
animated
:
true
)
}
}
}
private
func
updateDatas
(
_
memberCenterInfo
:
YHMemberCenterInfo
)
{
datas
.
removeAll
()
switch
currentLevel
{
case
.
normal
:
datas
.
append
(
.
myPrivilege
(
.
normal
,
5
))
let
services
:
[
YHMemberCenterCellContent
]
=
[
.
customerService
,
.
pointsConsumption
,
.
afternoonTea
,
.
offlineSalons
,
.
onSiteConsultation
]
let
ids
:
[
String
]
=
[
memberCenterInfo
.
dedicatedAdviser
.
giftId
,
memberCenterInfo
.
specialIntegralConsumption
.
giftId
,
memberCenterInfo
.
luxuryTea
.
giftId
,
memberCenterInfo
.
offlineSalon
.
giftId
,
memberCenterInfo
.
answerConsult
.
giftId
]
let
details
:
[
String
]
=
[
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
]
let
buttonTitles
:
[
String
]
=
[
"立即联系"
,
"了解更多"
,
"立即兑换"
,
"了解更多"
,
"了解更多"
]
let
buttonStates
:
[
YHMemberCenterActionButton
.
ButtonState
]
=
[
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
]
services
.
enumerated
()
.
forEach
{
index
,
service
in
let
row
:
TableRow
=
.
action
(
service
.
rawValue
,
details
[
index
],
service
.
imageUrl
(),
service
.
imageRatio
(),
buttonTitles
[
index
],
buttonStates
[
index
])
let
row
:
TableRow
=
.
action
(
service
.
rawValue
,
details
[
index
],
service
.
imageUrl
(),
service
.
imageRatio
(),
buttonTitles
[
index
],
buttonStates
[
index
]
,
ids
[
index
]
)
datas
.
append
(
row
)
}
case
.
gold
:
datas
.
append
(
.
currentPrivilege
(
.
gold
,
7
))
datas
.
append
(
.
myPrivilege
(
.
normal
,
5
))
let
services
:
[
YHMemberCenterCellContent
]
=
[
.
kidsBay
,
.
luxury
,
.
afternoonTea
,
.
offlineSalons
,
.
onSiteConsultation
,
.
customerService
,
.
pointsConsumption
]
let
ids
:
[
String
]
=
[
memberCenterInfo
.
highTeaBox
.
giftId
,
memberCenterInfo
.
experienceCenter
.
giftId
,
memberCenterInfo
.
luxuryTea
.
giftId
,
memberCenterInfo
.
offlineSalon
.
giftId
,
memberCenterInfo
.
answerConsult
.
giftId
,
memberCenterInfo
.
dedicatedAdviser
.
giftId
,
memberCenterInfo
.
specialIntegralConsumption
.
giftId
]
let
details
:
[
String
]
=
[
"本月剩余兑换数量:20"
,
"本月剩余兑换数量:20"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
]
let
buttonTitles
:
[
String
]
=
[
"了解更多"
,
"了解更多"
,
"立即兑换"
,
"了解更多"
,
"了解更多"
,
"立即联系"
,
"了解更多"
]
let
buttonStates
:
[
YHMemberCenterActionButton
.
ButtonState
]
=
[
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
]
services
.
enumerated
()
.
forEach
{
index
,
service
in
let
row
:
TableRow
=
.
action
(
service
.
rawValue
,
details
[
index
],
service
.
imageUrl
(),
service
.
imageRatio
(),
buttonTitles
[
index
],
buttonStates
[
index
])
let
row
:
TableRow
=
.
action
(
service
.
rawValue
,
details
[
index
],
service
.
imageUrl
(),
service
.
imageRatio
(),
buttonTitles
[
index
],
buttonStates
[
index
]
,
ids
[
index
]
)
datas
.
append
(
row
)
}
case
.
platinum
:
datas
.
append
(
.
currentPrivilege
(
.
platinum
,
8
))
datas
.
append
(
.
myPrivilege
(
.
normal
,
5
))
let
services
:
[
YHMemberCenterCellContent
]
=
[
.
kidsBay
,
.
luxury
,
.
hkTravel
,
.
afternoonTea
,
.
offlineSalons
,
.
onSiteConsultation
,
.
customerService
,
.
pointsConsumption
]
let
ids
:
[
String
]
=
[
memberCenterInfo
.
highTeaBox
.
giftId
,
memberCenterInfo
.
experienceCenter
.
giftId
,
memberCenterInfo
.
hkCarTransfer
.
giftId
,
memberCenterInfo
.
luxuryTea
.
giftId
,
memberCenterInfo
.
offlineSalon
.
giftId
,
memberCenterInfo
.
answerConsult
.
giftId
,
memberCenterInfo
.
dedicatedAdviser
.
giftId
,
memberCenterInfo
.
specialIntegralConsumption
.
giftId
]
let
details
:
[
String
]
=
[
"本月剩余兑换数量:20"
,
"本月剩余兑换数量:20"
,
"本月剩余兑换数量:20"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
]
let
buttonTitles
:
[
String
]
=
[
"了解更多"
,
"了解更多"
,
"了解更多"
,
"立即兑换"
,
"了解更多"
,
"了解更多"
,
"立即联系"
,
"了解更多"
]
let
buttonStates
:
[
YHMemberCenterActionButton
.
ButtonState
]
=
[
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
]
services
.
enumerated
()
.
forEach
{
index
,
service
in
let
row
:
TableRow
=
.
action
(
service
.
rawValue
,
details
[
index
],
service
.
imageUrl
(),
service
.
imageRatio
(),
buttonTitles
[
index
],
buttonStates
[
index
])
let
row
:
TableRow
=
.
action
(
service
.
rawValue
,
details
[
index
],
service
.
imageUrl
(),
service
.
imageRatio
(),
buttonTitles
[
index
],
buttonStates
[
index
]
,
ids
[
index
]
)
datas
.
append
(
row
)
}
case
.
diamond
:
datas
.
append
(
.
currentPrivilege
(
.
diamond
,
13
))
datas
.
append
(
.
myPrivilege
(
.
normal
,
5
))
let
services
:
[
YHMemberCenterCellContent
]
=
[
.
kidsBay
,
.
luxury
,
.
crossBorder
,
.
hkTravel
,
.
drivingLicense
,
.
schoolSelection
,
.
brandPlanning
,
.
highEndMeeting
,
.
afternoonTea
,
.
offlineSalons
,
.
onSiteConsultation
,
.
customerService
,
.
pointsConsumption
]
let
ids
:
[
String
]
=
[
memberCenterInfo
.
highTeaBox
.
giftId
,
memberCenterInfo
.
experienceCenter
.
giftId
,
memberCenterInfo
.
carTransfer
.
giftId
,
memberCenterInfo
.
hkCarTransfer
.
giftId
,
memberCenterInfo
.
internationalDrivingLicense
.
giftId
,
memberCenterInfo
.
hongkongSchoolPlanning
.
giftId
,
memberCenterInfo
.
brandStrategy
.
giftId
,
memberCenterInfo
.
highEndPrivilege
.
giftId
,
memberCenterInfo
.
luxuryTea
.
giftId
,
memberCenterInfo
.
offlineSalon
.
giftId
,
memberCenterInfo
.
answerConsult
.
giftId
,
memberCenterInfo
.
dedicatedAdviser
.
giftId
,
memberCenterInfo
.
specialIntegralConsumption
.
giftId
]
let
details
:
[
String
]
=
[
"本月剩余兑换数量:20"
,
"本月剩余兑换数量:20"
,
"本月已兑换完毕,次月更新"
,
"本月剩余兑换数量:20"
,
"本月剩余兑换数量:20"
,
"本月剩余兑换数量:20"
,
"本月剩余兑换数量:20"
,
"本月剩余兑换数量:20"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
,
"不限次数兑换"
]
let
buttonTitles
:
[
String
]
=
[
"了解更多"
,
"了解更多"
,
"暂无库存"
,
"了解更多"
,
"了解更多"
,
"了解更多"
,
"了解更多"
,
"了解更多"
,
"立即兑换"
,
"了解更多"
,
"了解更多"
,
"立即联系"
,
"了解更多"
]
let
buttonStates
:
[
YHMemberCenterActionButton
.
ButtonState
]
=
[
.
redeemable
,
.
redeemable
,
.
outOfStock
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
,
.
redeemable
]
services
.
enumerated
()
.
forEach
{
index
,
service
in
let
row
:
TableRow
=
.
action
(
service
.
rawValue
,
details
[
index
],
service
.
imageUrl
(),
service
.
imageRatio
(),
buttonTitles
[
index
],
buttonStates
[
index
])
let
row
:
TableRow
=
.
action
(
service
.
rawValue
,
details
[
index
],
service
.
imageUrl
(),
service
.
imageRatio
(),
buttonTitles
[
index
],
buttonStates
[
index
]
,
ids
[
index
]
)
datas
.
append
(
row
)
}
}
tableView
.
reloadData
()
}
@objc
private
func
didHistoryButtonClicked
()
{
//
var
url
=
YHBaseUrlManager
.
shared
.
curH5URL
()
+
"superAppBridge.html#/vip/order"
if
YHLoginManager
.
shared
.
isLogin
()
{
let
token
=
YHLoginManager
.
shared
.
h5Token
let
urlHasParam
=
String
.
hasQueryParameters
(
urlString
:
url
)
if
urlHasParam
{
url
=
url
+
"¶m="
+
token
}
else
{
url
=
url
+
"?param="
+
token
}
}
var
tUrl
=
url
if
!
url
.
contains
(
"navigationH="
)
{
tUrl
=
url
+
"?navigationH=
\(
k_Height_NavigationtBarAndStatuBar
)
"
if
url
.
contains
(
"?"
)
{
tUrl
=
url
+
"&navigationH=
\(
k_Height_NavigationtBarAndStatuBar
)
"
}
}
let
vc
=
YHH5WebViewVC
()
vc
.
url
=
tUrl
vc
.
isFullScreenFlag
=
false
navigationController
?
.
pushViewController
(
vc
)
}
@objc
private
func
didShareButtonClicked
()
{
//
let
url
=
YHBaseUrlManager
.
shared
.
curH5URL
()
+
"superAppBridge.html#/vip/center"
YHShareManager
.
shared
.
sendLinkContent
(
"分享会员中心"
,
""
,
UIImage
(
named
:
"AppIcon"
)
??
UIImage
(),
link
:
url
)
}
private
func
serviceDidClick
(
_
id
:
String
)
{
var
url
=
YHBaseUrlManager
.
shared
.
curH5URL
()
+
"superAppBridge.html#/vip/detail?exchange_support_type=2&source=vip&id=
\(
id
)
"
if
YHLoginManager
.
shared
.
isLogin
()
{
let
token
=
YHLoginManager
.
shared
.
h5Token
let
urlHasParam
=
String
.
hasQueryParameters
(
urlString
:
url
)
if
urlHasParam
{
url
=
url
+
"¶m="
+
token
}
else
{
url
=
url
+
"?param="
+
token
}
}
var
tUrl
=
url
if
!
url
.
contains
(
"navigationH="
)
{
tUrl
=
url
+
"?navigationH=
\(
k_Height_NavigationtBarAndStatuBar
)
"
if
url
.
contains
(
"?"
)
{
tUrl
=
url
+
"&navigationH=
\(
k_Height_NavigationtBarAndStatuBar
)
"
}
}
let
vc
=
YHH5WebViewVC
()
vc
.
url
=
tUrl
vc
.
isFullScreenFlag
=
true
navigationController
?
.
pushViewController
(
vc
)
}
private
func
gotoPrivilegePage
()
{
YHHUD
.
flash
(
message
:
"进特权页,待完善!!"
)
}
}
...
...
@@ -181,9 +293,12 @@ extension YHMemberCenterViewController: UITableViewDelegate, UITableViewDataSour
cell
.
setupCell
(
right
:
"
\(
count
)
项"
)
return
cell
}
case
let
.
action
(
title
,
detail
,
imageStr
,
ratio
,
buttonStr
,
buttonState
):
case
let
.
action
(
title
,
detail
,
imageStr
,
ratio
,
buttonStr
,
buttonState
,
id
):
if
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHMemberCenterActionCell
.
cellReuseIdentifier
)
as?
YHMemberCenterActionCell
{
cell
.
setupCell
(
title
:
title
,
detail
:
detail
,
imgStr
:
imageStr
,
imageRatio
:
ratio
,
buttonStr
:
buttonStr
,
buttonState
:
buttonState
)
cell
.
actionButtonEvent
=
{
[
weak
self
]
in
self
?
.
serviceDidClick
(
id
)
}
return
cell
}
}
...
...
@@ -206,7 +321,21 @@ extension YHMemberCenterViewController: UITableViewDelegate, UITableViewDataSour
}
func
tableView
(
_
tableView
:
UITableView
,
didSelectRowAt
indexPath
:
IndexPath
)
{
//
tableView
.
deselectRow
(
at
:
indexPath
,
animated
:
true
)
guard
datas
.
count
>
indexPath
.
section
else
{
return
}
let
section
=
datas
[
indexPath
.
section
]
switch
section
{
case
.
currentPrivilege
:
// 跳特权页
gotoPrivilegePage
()
case
.
myPrivilege
:
// 跳特权页
gotoPrivilegePage
()
case
.
action
:
break
}
}
func
tableView
(
_
tableView
:
UITableView
,
heightForHeaderInSection
section
:
Int
)
->
CGFloat
{
...
...
galaxy/galaxy/Classes/Modules/Mine(我的)/Model/YHMemberCenterCellContent.swift
View file @
916f235d
...
...
@@ -10,7 +10,7 @@ import Foundation
enum
YHMemberCenterCellContent
:
String
,
CaseIterable
{
case
kidsBay
=
"kidsbay高端早教盒子"
case
luxury
=
"
北上港深
奢华体验中心"
case
luxury
=
"奢华体验中心"
case
crossBorder
=
"深港跨境出行预约"
case
hkTravel
=
"香港境内出行预约"
case
drivingLicense
=
"国际驾照续期"
...
...
galaxy/galaxy/Classes/Modules/Mine(我的)/Model/YHMemberCenterInfo.swift
0 → 100644
View file @
916f235d
//
// YHMemberCenterInfo.swift
// galaxy
//
// Created by alexzzw on 2025/2/20.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import
SmartCodable
import
UIKit
class
YHMemberCenterInfo
:
SmartCodable
{
var
answerConsult
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
brandStrategy
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
carTransfer
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
currentLevel
:
Int
=
0
var
dedicatedAdviser
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
exchangeCount
:
Int
=
0
var
exchangedCount
:
Int
=
0
var
experienceCenter
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
growthValue
:
Int
=
0
var
highEndPrivilege
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
highTeaBox
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
hkCarTransfer
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
hongkongSchoolPlanning
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
internationalDrivingLicense
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
luxuryTea
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
maxGrowth
:
Int
=
0
var
offlineSalon
:
YHMemberGiftModel
=
YHMemberGiftModel
()
var
specialIntegralConsumption
:
YHMemberGiftModel
=
YHMemberGiftModel
()
enum
CodingKeys
:
String
,
CodingKey
{
case
answerConsult
=
"answer_consult"
case
brandStrategy
=
"brand_strategy"
case
carTransfer
=
"car_transfer"
case
currentLevel
=
"current_level"
case
dedicatedAdviser
=
"dedicated_adviser"
case
exchangeCount
=
"exchange_count"
case
exchangedCount
=
"exchanged_count"
case
experienceCenter
=
"experience_center"
case
growthValue
=
"growth_value"
case
highEndPrivilege
=
"high_end_privilege"
case
highTeaBox
=
"high_tea_box"
case
hkCarTransfer
=
"hk_car_transfer"
case
hongkongSchoolPlanning
=
"hongkong_school_planning"
case
internationalDrivingLicense
=
"international_driving_license"
case
luxuryTea
=
"luxury_tea"
case
maxGrowth
=
"max_growth"
case
offlineSalon
=
"offline_salon"
case
specialIntegralConsumption
=
"special_integral_consumption"
}
required
init
()
{
}
}
// MARK: - YHMemberAnswerConsult
class
YHMemberGiftModel
:
SmartCodable
{
var
giftId
:
String
=
""
var
minLevel
:
Int
=
0
var
name
:
String
=
""
var
num
:
Int
=
0
enum
CodingKeys
:
String
,
CodingKey
{
case
giftId
=
"gift_id"
case
minLevel
=
"min_level"
case
name
case
num
}
required
init
()
{
}
}
galaxy/galaxy/Classes/Modules/Mine(我的)/Model/YHMembershipLevel.swift
View file @
916f235d
...
...
@@ -8,15 +8,24 @@
import
Foundation
enum
YHMembershipLevel
:
String
,
CaseIterable
{
case
normal
=
"大众会员"
case
gold
=
"黄金会员"
case
platinum
=
"铂金会员"
case
diamond
=
"钻石会员"
enum
YHMembershipLevel
:
Int
,
CaseIterable
{
case
normal
=
10
case
gold
=
20
case
platinum
=
30
case
diamond
=
40
// 可以添加其他属性或方法
var
description
:
String
{
return
rawValue
switch
self
{
case
.
normal
:
return
"大众会员"
case
.
gold
:
return
"黄金会员"
case
.
platinum
:
return
"铂金会员"
case
.
diamond
:
return
"钻石会员"
}
}
// 示例:获取会员等级对应的权益
...
...
galaxy/galaxy/Classes/Modules/Mine(我的)/V/YHMemberCenterActionCell.swift
View file @
916f235d
...
...
@@ -36,6 +36,7 @@ class YHMemberCenterActionCell: YHResignDocumentCell {
private
lazy
var
actionButton
:
YHMemberCenterActionButton
=
{
let
button
=
YHMemberCenterActionButton
(
type
:
.
custom
)
button
.
update
(
state
:
.
redeemable
)
button
.
addTarget
(
self
,
action
:
#selector(
actionButtonClicked
)
,
for
:
.
touchUpInside
)
return
button
}()
...
...
@@ -47,6 +48,10 @@ class YHMemberCenterActionCell: YHResignDocumentCell {
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
@objc
private
func
actionButtonClicked
()
{
actionButtonEvent
?()
}
private
func
setupUI
()
{
updateCellCorner
(
.
single
)
...
...
galaxy/galaxy/Classes/Modules/Mine(我的)/V/YHMemberCenterHeaderBannerCell.swift
View file @
916f235d
...
...
@@ -34,6 +34,8 @@ class YHMemberCenterHeaderBannerCell: FSPagerViewCell {
private
lazy
var
upgradeButton
:
UIButton
=
{
let
button
=
UIButton
(
type
:
.
custom
)
button
.
titleLabel
?
.
font
=
UIFont
.
PFSC_M
(
ofSize
:
12
)
button
.
clipsToBounds
=
true
button
.
layer
.
cornerRadius
=
17
return
button
}()
...
...
@@ -129,23 +131,25 @@ class YHMemberCenterHeaderBannerCell: FSPagerViewCell {
make
.
right
.
lessThanOrEqualTo
(
upgradeButton
.
snp
.
left
)
.
offset
(
-
26
)
}
}
func
setupData
(
level
:
YHMembershipLevel
,
levelString
:
String
,
countFrom
:
Int
,
countTo
:
Int
,
tips
:
String
,
upgradeTitle
:
String
)
{
func
setupData
(
level
:
YHMembershipLevel
,
levelString
:
String
,
tips
:
String
,
upgradeTitle
:
String
,
showProgress
:
Bool
,
ratioString
:
String
,
ratio
:
CGFloat
,
showRatio
:
Bool
,
showTips
:
Bool
)
{
bannerImagV
.
image
=
UIImage
(
named
:
level
.
cardIconTitle
())
bannerTitleLabel
.
text
=
level
.
description
bannerTitleLabel
.
textColor
=
level
.
levelTitleColor
()
levelButton
.
setTitleColor
(
level
.
levelButtonTitleColor
(),
for
:
.
normal
)
levelButton
.
setTitle
(
levelString
,
for
:
.
normal
)
countLabel
.
textColor
=
level
.
countTitleColor
()
countLabel
.
text
=
countTo
==
0
?
"
\(
countFrom
)
"
:
"
\(
countFrom
)
/
\(
countTo
)
"
progressView
.
progress
=
Float
(
Double
(
countFrom
)
*
1.0
/
Double
(
countTo
))
countLabel
.
text
=
ratioString
countLabel
.
isHidden
=
!
showRatio
progressView
.
progress
=
Float
(
ratio
)
tipsLabel
.
textColor
=
level
.
tipsTitleColor
()
tipsLabel
.
text
=
tips
tipsLabel
.
isHidden
=
!
showTips
upgradeButton
.
setTitle
(
upgradeTitle
,
for
:
.
normal
)
upgradeButton
.
setTitleColor
(
level
.
upgradeButtonTitleColor
(),
for
:
.
normal
)
upgradeButton
.
backgroundColor
=
level
.
upgradeButtonBackgroundColor
()
if
level
==
.
normal
||
level
==
.
diamond
{
if
!
showProgress
{
progressView
.
isHidden
=
true
countLabel
.
snp
.
remakeConstraints
{
make
in
make
.
left
.
equalTo
(
bannerTitleLabel
)
...
...
galaxy/galaxy/Classes/Modules/Mine(我的)/V/YHMemberCenterHeaderView.swift
View file @
916f235d
...
...
@@ -13,18 +13,26 @@ class YHMemberCenterHeaderView: UIView {
class
BannerData
{
var
level
:
YHMembershipLevel
=
.
normal
var
levelString
:
String
=
""
var
countFrom
:
Int
=
0
var
countTo
:
Int
=
0
var
tips
:
String
=
""
var
upgradeTitle
:
String
=
""
var
showProgress
:
Bool
=
false
var
ratioString
:
String
=
""
var
ratio
:
CGFloat
=
0
var
showRatio
:
Bool
=
false
var
showTips
:
Bool
=
false
init
(
level
:
YHMembershipLevel
,
levelString
:
String
,
countFrom
:
Int
,
countTo
:
Int
,
tips
:
String
,
upgradeTitle
:
String
)
{
init
(
level
:
YHMembershipLevel
,
levelString
:
String
,
tips
:
String
,
upgradeTitle
:
String
,
showProgress
:
Bool
,
ratioString
:
String
,
ratio
:
CGFloat
,
showRatio
:
Bool
,
showTips
:
Bool
)
{
self
.
level
=
level
self
.
levelString
=
levelString
self
.
countFrom
=
countFrom
self
.
countTo
=
countTo
self
.
tips
=
tips
self
.
upgradeTitle
=
upgradeTitle
self
.
showProgress
=
showProgress
self
.
ratioString
=
ratioString
self
.
ratio
=
ratio
self
.
showRatio
=
showRatio
self
.
showTips
=
showTips
}
}
...
...
@@ -57,12 +65,122 @@ class YHMemberCenterHeaderView: UIView {
return
view
}()
var
datas
:
[
BannerData
]
{
let
normal
=
BannerData
(
level
:
.
normal
,
levelString
:
"当前等级"
,
countFrom
:
0
,
countTo
:
0
,
tips
:
"消费即升至黄金会员"
,
upgradeTitle
:
"去升级"
)
let
gold
=
BannerData
(
level
:
.
gold
,
levelString
:
"您未达到该等级"
,
countFrom
:
1000
,
countTo
:
60000
,
tips
:
"距铂金会员还需60000成长值"
,
upgradeTitle
:
"去升级"
)
let
platinum
=
BannerData
(
level
:
.
platinum
,
levelString
:
"您未达到该等级"
,
countFrom
:
0
,
countTo
:
150000
,
tips
:
"距钻石会员还需150000成长值"
,
upgradeTitle
:
"去升级"
)
let
diamond
=
BannerData
(
level
:
.
diamond
,
levelString
:
"您未达到该等级"
,
countFrom
:
0
,
countTo
:
0
,
tips
:
"当前成长值"
,
upgradeTitle
:
"去升级"
)
return
[
normal
,
gold
,
platinum
,
diamond
]
var
datas
:
[
BannerData
]
=
[]
func
updateDatas
(
_
memberCenterInfo
:
YHMemberCenterInfo
)
{
datas
=
YHMembershipLevel
.
allCases
.
map
({
level
in
var
levelString
=
"您未达到该等级"
var
upgradeTitle
=
"去升级"
var
countFrom
:
Int
=
0
var
countTo
:
Int
=
0
var
tips
:
String
=
""
var
showProgress
:
Bool
=
false
var
ratioString
:
String
=
""
var
ratio
:
CGFloat
=
0
var
showRatio
:
Bool
=
false
var
showTips
:
Bool
=
false
switch
level
{
case
.
normal
:
countFrom
=
0
countTo
=
0
if
memberCenterInfo
.
currentLevel
==
level
.
rawValue
{
levelString
=
"当前等级"
upgradeTitle
=
"已达成"
tips
=
"消费即升至黄金会员"
ratioString
=
"0"
ratio
=
0
showRatio
=
true
showTips
=
true
}
else
if
memberCenterInfo
.
currentLevel
>
level
.
rawValue
{
levelString
=
"您已高于该等级"
upgradeTitle
=
"已达成"
tips
=
"当前成长值"
ratioString
=
"
\(
memberCenterInfo
.
growthValue
)
"
ratio
=
0
showRatio
=
false
showTips
=
false
}
case
.
gold
:
countFrom
=
0
countTo
=
60000
if
memberCenterInfo
.
currentLevel
<
level
.
rawValue
{
levelString
=
"您未达到该等级"
upgradeTitle
=
"去升级"
tips
=
"消费即升至黄金会员"
ratioString
=
"0"
ratio
=
0
showRatio
=
true
showTips
=
true
}
else
if
memberCenterInfo
.
currentLevel
==
level
.
rawValue
{
levelString
=
"当前等级"
upgradeTitle
=
"已达成"
tips
=
"距铂金会员还需
\(
countTo
-
memberCenterInfo
.
growthValue
)
成长值"
ratioString
=
"
\(
memberCenterInfo
.
growthValue
)
/(countTo)"
let
value
=
Double
(
memberCenterInfo
.
growthValue
)
/
Double
(
countTo
)
ratio
=
value
<
0
?
0
:
value
showProgress
=
true
showRatio
=
true
showTips
=
true
}
else
if
memberCenterInfo
.
currentLevel
>
level
.
rawValue
{
levelString
=
"您已高于该等级"
upgradeTitle
=
"已达成"
tips
=
"当前成长值"
ratioString
=
"
\(
memberCenterInfo
.
growthValue
)
"
ratio
=
0
}
case
.
platinum
:
countFrom
=
60000
countTo
=
150000
if
memberCenterInfo
.
currentLevel
<
level
.
rawValue
{
levelString
=
"您未达到该等级"
upgradeTitle
=
"去升级"
tips
=
"
\(
countFrom
)
成长值升至铂金会员"
ratioString
=
"
\(
countFrom
)
/(countTo)"
ratio
=
0
showTips
=
true
}
else
if
memberCenterInfo
.
currentLevel
==
level
.
rawValue
{
levelString
=
"当前等级"
upgradeTitle
=
"已达成"
tips
=
"距钻石会员还需
\(
countTo
-
memberCenterInfo
.
growthValue
)
成长值"
ratioString
=
"
\(
memberCenterInfo
.
growthValue
)
/(countTo)"
let
value
=
Double
(
memberCenterInfo
.
growthValue
)
/
Double
(
countTo
)
ratio
=
value
<
0
?
0
:
value
showProgress
=
true
showRatio
=
true
showTips
=
true
}
else
if
memberCenterInfo
.
currentLevel
>
level
.
rawValue
{
levelString
=
"您已高于该等级"
upgradeTitle
=
"已达成"
tips
=
"当前成长值"
ratioString
=
"
\(
memberCenterInfo
.
growthValue
)
"
ratio
=
0
}
case
.
diamond
:
countFrom
=
150000
countTo
=
Int
.
max
if
memberCenterInfo
.
currentLevel
<
level
.
rawValue
{
levelString
=
"您未达到该等级"
upgradeTitle
=
"去升级"
tips
=
"
\(
countFrom
)
成长值升至钻石会员"
ratioString
=
"
\(
memberCenterInfo
.
growthValue
)
"
ratio
=
0
showTips
=
true
}
else
if
memberCenterInfo
.
currentLevel
==
level
.
rawValue
{
levelString
=
"当前等级"
upgradeTitle
=
"已达成"
tips
=
"当前成长值"
ratioString
=
"
\(
memberCenterInfo
.
growthValue
)
"
ratio
=
0
showRatio
=
true
showTips
=
true
}
}
return
BannerData
(
level
:
level
,
levelString
:
levelString
,
tips
:
tips
,
upgradeTitle
:
upgradeTitle
,
showProgress
:
showProgress
,
ratioString
:
ratioString
,
ratio
:
ratio
,
showRatio
:
showRatio
,
showTips
:
showTips
)
})
bannerView
.
reloadData
()
}
override
init
(
frame
:
CGRect
)
{
...
...
@@ -96,7 +214,7 @@ extension YHMemberCenterHeaderView: FSPagerViewDataSource, FSPagerViewDelegate {
}
if
let
cell
=
pagerView
.
dequeueReusableCell
(
withReuseIdentifier
:
"YHMemberCenterHeaderBannerCell"
,
at
:
index
)
as?
YHMemberCenterHeaderBannerCell
{
let
model
=
datas
[
index
]
cell
.
setupData
(
level
:
model
.
level
,
levelString
:
model
.
levelString
,
countFrom
:
model
.
countFrom
,
countTo
:
model
.
countTo
,
tips
:
model
.
tips
,
upgradeTitle
:
model
.
upgradeTitle
)
cell
.
setupData
(
level
:
model
.
level
,
levelString
:
model
.
levelString
,
tips
:
model
.
tips
,
upgradeTitle
:
model
.
upgradeTitle
,
showProgress
:
model
.
showProgress
,
ratioString
:
model
.
ratioString
,
ratio
:
model
.
ratio
,
showRatio
:
model
.
showRatio
,
showTips
:
model
.
showTips
)
return
cell
}
return
FSPagerViewCell
()
...
...
galaxy/galaxy/Classes/Modules/Mine(我的)/ViewModel/YHMemberCenterViewModel.swift
0 → 100644
View file @
916f235d
//
// YHMemberCenterViewModel.swift
// galaxy
//
// Created by alexzzw on 2025/2/20.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
class
YHMemberCenterViewModel
:
YHBaseViewModel
{
var
memberCenterInfo
:
YHMemberCenterInfo
?
func
getMemberInfo
(
_
callBack
:
@escaping
(
_
success
:
Bool
,
_
error
:
YHErrorModel
?)
->
())
{
let
strUrl
=
YHBaseUrlManager
.
shared
.
curURL
()
+
YHAllApiName
.
Member
.
memberBenefits
let
_
=
YHNetRequest
.
getRequest
(
url
:
strUrl
)
{
[
weak
self
]
json
,
code
in
//1. json字符串 转 对象
guard
let
self
=
self
else
{
return
}
if
json
.
code
==
200
{
guard
let
dic
=
json
.
data
?
.
peel
as?
[
String
:
Any
],
let
resultModel
=
YHMemberCenterInfo
.
deserialize
(
from
:
dic
)
else
{
let
err
=
YHErrorModel
(
errorCode
:
YHErrorCode
.
dictParseError
.
rawValue
,
errorMsg
:
YHErrorCode
.
dictParseError
.
description
())
callBack
(
false
,
err
)
return
}
self
.
memberCenterInfo
=
resultModel
callBack
(
true
,
nil
)
}
else
{
let
error
:
YHErrorModel
=
YHErrorModel
(
errorCode
:
Int32
(
json
.
code
),
errorMsg
:
json
.
msg
)
callBack
(
false
,
error
)
}
}
failBlock
:
{
err
in
callBack
(
false
,
err
)
}
}
}
galaxy/galaxy/Classes/Tools/NetWork/YHAllApiName.swift
View file @
916f235d
...
...
@@ -752,6 +752,7 @@ class YHAllApiName {
// 会员
struct
Member
{
static
let
memberInfoApi
=
"super-app/h5-points/member-info"
static
let
memberBenefits
=
"super-app/h5-points/member-benefits"
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment