Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
陈高翔
/
AoleiSports
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit cc8ea2ff
由
ilCode
编写于
2024-06-29 17:54:10 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
大数据详情页
1 个父辈
7fdb2569
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
599 行增加
和
238 行删除
AoleiSports.xcodeproj/project.pbxproj
AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailController.swift
AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailGameInfoView.swift
AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailRadarView.swift
AoleiSports/Src/Discover/BigDataResearch/HadoopDetailRequestModel.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailRequestModel.swift
AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailStatusView.swift
AoleiSports/Src/Discover/BigDataResearch/HadoopController.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataList/HadoopController.swift
AoleiSports/Src/Discover/BigDataResearch/HadoopHeaderView.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataList/HadoopHeaderView.swift
AoleiSports/Src/Discover/BigDataResearch/HadoopMatchFilterGroupModel.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataList/HadoopMatchFilterGroupModel.swift
AoleiSports/Src/Discover/BigDataResearch/HadoopMatchFilterView.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataList/HadoopMatchFilterView.swift
AoleiSports/Src/Discover/BigDataResearch/HadoopRequestModel.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataList/HadoopRequestModel.swift
AoleiSports/Src/Discover/BigDataResearch/HustleScoreCell.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataList/HustleScoreCell.swift
AoleiSports/Src/Discover/BigDataResearch/MatchFilterHeaderView.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataList/MatchFilterHeaderView.swift
AoleiSports/Src/Discover/BigDataResearch/RaceTypeModel.swift → AoleiSports/Src/Discover/BigDataResearch/BigDataList/RaceTypeModel.swift
AoleiSports/Src/Discover/BigDataResearch/HadoopDetailController.swift
AoleiSports/Src/Discover/BigDataResearch/HadoopProvider.swift
AoleiSports/Src/Ext/UIView+Ext.swift
AoleiSports/Src/Score/ScoreTools.swift
AoleiSports.xcodeproj/project.pbxproj
查看文件 @
cc8ea2f
...
...
@@ -42,6 +42,9 @@
5E93B48E2C1A98BE00CD6536 /* RegisterController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E93B48D2C1A98BE00CD6536 /* RegisterController.swift */; };
5E93B4902C1A9BDC00CD6536 /* LoginTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E93B48F2C1A9BDC00CD6536 /* LoginTools.swift */; };
5E93B4922C1AA0D200CD6536 /* UIViewController+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E93B4912C1AA0D200CD6536 /* UIViewController+Ext.swift */; };
5E9827BE2C2F95E6006D74D4 /* HadoopDetailRadarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E9827BD2C2F95E6006D74D4 /* HadoopDetailRadarView.swift */; };
5E9827C02C2FBA96006D74D4 /* HadoopDetailGameInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E9827BF2C2FBA96006D74D4 /* HadoopDetailGameInfoView.swift */; };
5E9827C22C2FC2D1006D74D4 /* HadoopDetailStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E9827C12C2FC2D1006D74D4 /* HadoopDetailStatusView.swift */; };
5E9A19EC2C0EAC0200321AC5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E9A19EB2C0EAC0200321AC5 /* AppDelegate.swift */; };
5E9A19F52C0EAC0300321AC5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5E9A19F42C0EAC0300321AC5 /* Assets.xcassets */; };
5E9A1A052C0EAF7600321AC5 /* goal.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 5E9A19FF2C0EAF7600321AC5 /* goal.mp3 */; };
...
...
@@ -135,6 +138,9 @@
5E93B48D2C1A98BE00CD6536 /* RegisterController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterController.swift; sourceTree = "<group>"; };
5E93B48F2C1A9BDC00CD6536 /* LoginTools.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginTools.swift; sourceTree = "<group>"; };
5E93B4912C1AA0D200CD6536 /* UIViewController+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+Ext.swift"; sourceTree = "<group>"; };
5E9827BD2C2F95E6006D74D4 /* HadoopDetailRadarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HadoopDetailRadarView.swift; sourceTree = "<group>"; };
5E9827BF2C2FBA96006D74D4 /* HadoopDetailGameInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HadoopDetailGameInfoView.swift; sourceTree = "<group>"; };
5E9827C12C2FC2D1006D74D4 /* HadoopDetailStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HadoopDetailStatusView.swift; sourceTree = "<group>"; };
5E9A19E82C0EAC0200321AC5 /* AoleiSports.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AoleiSports.app; sourceTree = BUILT_PRODUCTS_DIR; };
5E9A19EB2C0EAC0200321AC5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
5E9A19F42C0EAC0300321AC5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
...
...
@@ -271,6 +277,33 @@
path = Root;
sourceTree = "<group>";
};
5E9827C32C300DB3006D74D4 /* BigDataList */ = {
isa = PBXGroup;
children = (
5EB268772C295DA80044BA0C /* HadoopController.swift */,
5E720D072C2B9FBE00D30A16 /* HadoopRequestModel.swift */,
5E720D0B2C2C200700D30A16 /* HadoopMatchFilterGroupModel.swift */,
5EC3AD922C2CEB7200DCFB26 /* RaceTypeModel.swift */,
5EB268792C2974B40044BA0C /* HustleScoreCell.swift */,
5E5A69D42C2A5F7F0063B726 /* HadoopHeaderView.swift */,
5EB2687B2C29764B0044BA0C /* MatchFilterHeaderView.swift */,
5E5A69D82C2ACA9B0063B726 /* HadoopMatchFilterView.swift */,
);
path = BigDataList;
sourceTree = "<group>";
};
5E9827C42C300DDD006D74D4 /* BigDataDetail */ = {
isa = PBXGroup;
children = (
5E5A69D62C2AB0560063B726 /* HadoopDetailController.swift */,
5E56F0B02C2EB88100EA3C10 /* HadoopDetailRequestModel.swift */,
5E9827BF2C2FBA96006D74D4 /* HadoopDetailGameInfoView.swift */,
5E9827BD2C2F95E6006D74D4 /* HadoopDetailRadarView.swift */,
5E9827C12C2FC2D1006D74D4 /* HadoopDetailStatusView.swift */,
);
path = BigDataDetail;
sourceTree = "<group>";
};
5E9A19DF2C0EAC0200321AC5 = {
isa = PBXGroup;
children = (
...
...
@@ -427,17 +460,9 @@
5EC3AD942C2D4F0500DCFB26 /* BigDataResearch */ = {
isa = PBXGroup;
children = (
5EB268772C295DA80044BA0C /* HadoopController.swift */,
5E5A69D62C2AB0560063B726 /* HadoopDetailController.swift */,
5E5A69D42C2A5F7F0063B726 /* HadoopHeaderView.swift */,
5EB2687B2C29764B0044BA0C /* MatchFilterHeaderView.swift */,
5E5A69D82C2ACA9B0063B726 /* HadoopMatchFilterView.swift */,
5EB268792C2974B40044BA0C /* HustleScoreCell.swift */,
5E720D052C2B9D7500D30A16 /* HadoopProvider.swift */,
5E720D072C2B9FBE00D30A16 /* HadoopRequestModel.swift */,
5E720D0B2C2C200700D30A16 /* HadoopMatchFilterGroupModel.swift */,
5EC3AD922C2CEB7200DCFB26 /* RaceTypeModel.swift */,
5E56F0B02C2EB88100EA3C10 /* HadoopDetailRequestModel.swift */,
5E9827C32C300DB3006D74D4 /* BigDataList */,
5E9827C42C300DDD006D74D4 /* BigDataDetail */,
);
path = BigDataResearch;
sourceTree = "<group>";
...
...
@@ -606,6 +631,7 @@
5E93B4902C1A9BDC00CD6536 /* LoginTools.swift in Sources */,
5EC03E532C118FA00068A5CB /* ScoreProvider.swift in Sources */,
5E9A1A522C0F205A00321AC5 /* LeagueController.swift in Sources */,
5E9827BE2C2F95E6006D74D4 /* HadoopDetailRadarView.swift in Sources */,
5E9165D82C1D3F45004A3C5E /* UserProvider.swift in Sources */,
5E9A1A282C0EF51600321AC5 /* GKNavigationBarConfigure.swift in Sources */,
5EC03E4A2C1155530068A5CB /* NetworkTools.swift in Sources */,
...
...
@@ -631,6 +657,7 @@
5E9A1A362C0EF51600321AC5 /* UIViewController+GKGesture.swift in Sources */,
5E6CF00A2C12FAD600BF3CF5 /* TargetController.swift in Sources */,
5E9A1A4C2C0F144200321AC5 /* ColorTools.swift in Sources */,
5E9827C22C2FC2D1006D74D4 /* HadoopDetailStatusView.swift in Sources */,
5EB268782C295DA80044BA0C /* HadoopController.swift in Sources */,
5E9A1A482C0F0DC400321AC5 /* BaseController.swift in Sources */,
5E47C9732C1FCB87002EA39E /* InfoController.swift in Sources */,
...
...
@@ -640,6 +667,7 @@
5E65F88B2C2275DB0082D374 /* RefreshFooterAnimator.swift in Sources */,
5EC03E4E2C1155720068A5CB /* CacheTools.swift in Sources */,
5EB2687C2C29764B0044BA0C /* MatchFilterHeaderView.swift in Sources */,
5E9827C02C2FBA96006D74D4 /* HadoopDetailGameInfoView.swift in Sources */,
5E9A1A2F2C0EF51600321AC5 /* UIBarButtonItem+GKExtension.swift in Sources */,
5EA670622C104D2800CEEA01 /* LoggerTools.swift in Sources */,
5E9A1A312C0EF51600321AC5 /* UINavigationController+GKExtension.swift in Sources */,
...
...
AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailController.swift
0 → 100644
查看文件 @
cc8ea2f
//
// HadoopDetailController.swift
// AoleiSports
//
// Created by ilCode on 2024/6/25.
//
import
UIKit
class
HadoopDetailController
:
BaseController
{
let
yqId
:
Int
var
provider
:
HadoopProvider
<
HadoopTarget
>
?
let
contentView
=
UIView
()
private
lazy
var
scrollView
:
UIScrollView
=
{
let
view
=
UIScrollView
()
view
.
showsVerticalScrollIndicator
=
false
return
view
}()
private
lazy
var
header
:
UIView
=
{
let
view
=
UIView
(
frame
:
CGRect
(
x
:
0
,
y
:
-
999
,
width
:
kScreenW
,
height
:
999
+
60
))
view
.
backgroundColor
=
UIColor
.
colorWith
(
hexString
:
"122063"
)
view
.
corners
(
radius
:
30
)
return
view
}()
private
lazy
var
teamView
:
HadoopDetailGameInfoView
=
{
let
view
=
HadoopDetailGameInfoView
(
frame
:
CGRect
(
x
:
10
,
y
:
10
,
width
:
kScreenW
-
20
,
height
:
100
))
return
view
}()
private
lazy
var
radarView
:
HadoopDetailRadarView
=
{
let
view
=
HadoopDetailRadarView
()
return
view
}()
private
lazy
var
statusView
:
HadoopDetailStatusView
=
{
let
view
=
HadoopDetailStatusView
()
return
view
}()
init
(
yqId
:
Int
)
{
self
.
yqId
=
yqId
super
.
init
(
nibName
:
nil
,
bundle
:
nil
)
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
gk_navTitle
=
"大数据研究"
gk_navBackgroundColor
=
UIColor
.
colorWith
(
hexString
:
"122063"
)
gk_navTitleColor
=
kWhite
gk_backImage
=
R
.
image
.
btn_back_white
()
view
.
addSubview
(
scrollView
)
scrollView
.
addSubview
(
contentView
)
contentView
.
addSubview
(
header
)
contentView
.
addSubview
(
teamView
)
contentView
.
addSubview
(
radarView
)
contentView
.
addSubview
(
statusView
)
scrollView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
kNavBarH
)
make
.
left
.
right
.
bottom
.
equalToSuperview
()
}
contentView
.
snp
.
makeConstraints
{
make
in
make
.
edges
.
equalToSuperview
()
make
.
width
.
equalToSuperview
()
}
radarView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
10
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
10
)
make
.
top
.
equalTo
(
teamView
.
snp
.
bottom
)
.
offset
(
10
)
}
statusView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
radarView
.
snp
.
bottom
)
.
offset
(
10
)
make
.
left
.
right
.
equalTo
(
radarView
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
10
)
}
initProvider
()
handleRefresh
()
}
override
var
preferredStatusBarStyle
:
UIStatusBarStyle
{
return
.
lightContent
}
override
func
handleRefresh
()
{
super
.
handleRefresh
()
provider
?
.
bigDataDetailRequest
(
yqId
:
yqId
,
completion
:
{
logicResult
in
if
case
.
failure
(
let
err
)
=
logicResult
{
if
case
AsError
.
netErr
(
let
message
)
=
err
{
self
.
showEmpty
(
type
:
.
netErr
,
message
:
message
)
}
else
{
self
.
showEmpty
(
type
:
.
other
,
message
:
err
.
localizedDescription
)
}
}
})
}
}
extension
HadoopDetailController
{
private
func
initProvider
()
{
provider
=
HadoopProvider
(
vc
:
self
,
showErr
:
false
)
provider
?
.
bigDataDetail
.
asObservable
()
.
subscribe
(
onNext
:
{
[
weak
self
]
tmpDetail
in
guard
let
self
=
self
else
{
return
}
if
tmpDetail
==
nil
{
self
.
scrollView
.
isHidden
=
true
self
.
showEmpty
(
type
:
.
noData
)
}
else
{
self
.
dismissEmpty
()
self
.
scrollView
.
isHidden
=
false
}
})
.
disposed
(
by
:
disposeBag
)
teamView
.
setProvider
(
provider
:
provider
)
radarView
.
setProvider
(
provider
:
provider
)
statusView
.
setProvider
(
provider
:
provider
)
}
}
AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailGameInfoView.swift
0 → 100644
查看文件 @
cc8ea2f
//
// HadoopDetailGameInfoView.swift
// AoleiSports
//
// Created by ilCode on 2024/6/29.
//
import
UIKit
class
HadoopDetailGameInfoView
:
UIView
{
let
disposeBag
=
DisposeBag
()
var
provider
:
HadoopProvider
<
HadoopTarget
>
?
private
lazy
var
gameLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kBoldFontSize
(
14
)
lab
.
textAlignment
=
.
center
lab
.
textColor
=
kMainTitleColor
return
lab
}()
private
lazy
var
matchTimeLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kBoldFontSize
(
13
)
lab
.
textAlignment
=
.
center
lab
.
textColor
=
kSubTitleColor
return
lab
}()
private
lazy
var
vsLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kBoldFontSize
(
20
)
lab
.
text
=
"VS"
lab
.
textAlignment
=
.
center
lab
.
textColor
=
kMainTitleColor
return
lab
}()
private
lazy
var
gameStackView
:
UIStackView
=
{
let
stackView
=
UIStackView
(
arrangedSubviews
:
[
gameLab
,
matchTimeLab
,
vsLab
])
stackView
.
axis
=
.
vertical
stackView
.
alignment
=
.
center
stackView
.
spacing
=
5
return
stackView
}()
private
lazy
var
hostBtn
:
UIButton
=
{
let
btn
=
UIButton
()
btn
.
setTitleColor
(
kMainTitleColor
,
for
:
.
normal
)
btn
.
titleLabel
?
.
font
=
kBoldFontSize
(
16
)
return
btn
}()
private
lazy
var
hostRankLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kFontSize
(
13
)
lab
.
textAlignment
=
.
center
lab
.
textColor
=
kMidTitleColor
return
lab
}()
private
lazy
var
hostStackView
:
UIStackView
=
{
let
stackView
=
UIStackView
(
arrangedSubviews
:
[
hostBtn
,
hostRankLab
])
stackView
.
axis
=
.
vertical
stackView
.
alignment
=
.
center
stackView
.
spacing
=
5
return
stackView
}()
private
lazy
var
guestBtn
:
UIButton
=
{
let
btn
=
UIButton
()
btn
.
setTitleColor
(
kMainTitleColor
,
for
:
.
normal
)
btn
.
titleLabel
?
.
font
=
kBoldFontSize
(
16
)
return
btn
}()
private
lazy
var
guestRankLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kFontSize
(
13
)
lab
.
textAlignment
=
.
center
lab
.
textColor
=
kMidTitleColor
return
lab
}()
private
lazy
var
guestStackView
:
UIStackView
=
{
let
stackView
=
UIStackView
(
arrangedSubviews
:
[
guestBtn
,
guestRankLab
])
stackView
.
axis
=
.
vertical
stackView
.
alignment
=
.
center
stackView
.
spacing
=
5
return
stackView
}()
private
lazy
var
infoStackView
:
UIStackView
=
{
let
stackView
=
UIStackView
(
arrangedSubviews
:
[
hostStackView
,
gameStackView
,
guestStackView
])
stackView
.
axis
=
.
horizontal
stackView
.
alignment
=
.
center
stackView
.
distribution
=
.
fillEqually
return
stackView
}()
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
backgroundColor
=
UIColor
.
colorWith
(
hexString
:
"ECECED"
)
corners
(
radius
:
20
)
let
gradientLayer
=
CAGradientLayer
()
gradientLayer
.
frame
=
bounds
gradientLayer
.
colors
=
[
UIColor
.
colorWith
(
hexString
:
"DADADA"
)
.
cgColor
,
UIColor
.
colorWith
(
hexString
:
"F4F4F4"
)
.
cgColor
,
UIColor
.
colorWith
(
hexString
:
"DADADA"
)
.
cgColor
]
gradientLayer
.
locations
=
[
0.0
,
0.5
,
1.0
]
gradientLayer
.
startPoint
=
CGPoint
(
x
:
0.0
,
y
:
0.5
)
gradientLayer
.
endPoint
=
CGPoint
(
x
:
1.0
,
y
:
0.5
)
layer
.
insertSublayer
(
gradientLayer
,
at
:
0
)
addSubview
(
infoStackView
)
infoStackView
.
snp
.
makeConstraints
{
make
in
make
.
edges
.
equalToSuperview
()
}
gameStackView
.
snp
.
makeConstraints
{
make
in
make
.
centerX
.
equalToSuperview
()
}
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setProvider
(
provider
:
HadoopProvider
<
HadoopTarget
>
?)
{
self
.
provider
=
provider
self
.
provider
?
.
gameInfo
.
asObservable
()
.
subscribe
(
onNext
:
{
[
weak
self
]
tmpGameInfo
in
guard
let
self
=
self
else
{
return
}
self
.
update
(
model
:
tmpGameInfo
)
})
.
disposed
(
by
:
disposeBag
)
}
private
func
update
(
model
:
GameInfoModel
?)
{
if
let
infoModel
=
model
,
let
hostTeam
=
infoModel
.
hostTeam
,
let
guestTeam
=
infoModel
.
awayTeam
,
let
com
=
infoModel
.
competition
{
let
processor
=
ResizingImageProcessor
(
referenceSize
:
CGSize
(
width
:
50
,
height
:
50
),
mode
:
.
aspectFit
)
let
comName
=
com
.
shortName
??
com
.
name
??
""
let
hostRank
=
hostTeam
.
rank
??
""
let
guestRank
=
guestTeam
.
rank
??
""
self
.
hostBtn
.
setTitle
(
hostTeam
.
shortName
??
hostTeam
.
name
??
""
,
for
:
.
normal
)
self
.
hostBtn
.
kf
.
setImage
(
with
:
URL
(
string
:
hostTeam
.
logo
??
""
),
for
:
.
normal
,
placeholder
:
R
.
image
.
default_user
(),
options
:
[
.
processor
(
processor
)],
completionHandler
:
{
_
in
self
.
hostBtn
.
adjustImage
(
position
:
.
top
,
spacing
:
5
)
})
self
.
hostRankLab
.
text
=
hostRank
.
isEmpty
?
""
:
"
\(
comName
)\(
hostRank
)
"
self
.
gameLab
.
text
=
comName
self
.
matchTimeLab
.
text
=
ScoreTools
.
getFormatMatchTime
(
time
:
infoModel
.
matchTime
,
format
:
"MM/dd HH:mm"
)
self
.
guestBtn
.
setTitle
(
guestTeam
.
shortName
??
guestTeam
.
name
??
""
,
for
:
.
normal
)
self
.
guestBtn
.
kf
.
setImage
(
with
:
URL
(
string
:
guestTeam
.
logo
??
""
),
for
:
.
normal
,
placeholder
:
R
.
image
.
default_user
(),
options
:
[
.
processor
(
processor
)],
completionHandler
:
{
_
in
self
.
guestBtn
.
adjustImage
(
position
:
.
top
,
spacing
:
5
)
})
self
.
guestRankLab
.
text
=
guestRank
.
isEmpty
?
""
:
"
\(
comName
)\(
guestRank
)
"
}
}
}
AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailRadarView.swift
0 → 100644
查看文件 @
cc8ea2f
此文件的差异被折叠,
点击展开。
AoleiSports/Src/Discover/BigDataResearch/HadoopDetailRequestModel.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataDetail/
HadoopDetailRequestModel.swift
查看文件 @
cc8ea2f
...
...
@@ -39,6 +39,7 @@ struct TeamModel: Mappable {
var
name
:
String
?
var
shortName
:
String
?
var
logo
:
String
?
var
rank
:
String
?
init
?(
map
:
ObjectMapper
.
Map
)
{
}
...
...
@@ -46,6 +47,7 @@ struct TeamModel: Mappable {
name
<-
map
[
"name"
]
shortName
<-
map
[
"short_name"
]
logo
<-
map
[
"logo"
]
rank
<-
map
[
"rank"
]
}
}
...
...
@@ -64,12 +66,16 @@ struct DetailComModel: Mappable {
}
struct
BigDataDetailModel
:
Mappable
{
var
hostName
:
String
?
var
guestName
:
String
?
var
radarChartData
:
RadarChartDataModel
?
var
statusAnalysis
:
StatusAnalysisModel
?
init
?(
map
:
ObjectMapper
.
Map
)
{
}
mutating
func
mapping
(
map
:
ObjectMapper
.
Map
)
{
hostName
<-
map
[
"home_name"
]
guestName
<-
map
[
"away_name"
]
radarChartData
<-
map
[
"radar_chart_data"
]
statusAnalysis
<-
map
[
"status_analysis"
]
}
...
...
AoleiSports/Src/Discover/BigDataResearch/BigDataDetail/HadoopDetailStatusView.swift
0 → 100644
查看文件 @
cc8ea2f
//
// HadoopDetailStatusView.swift
// AoleiSports
//
// Created by ilCode on 2024/6/29.
//
import
UIKit
class
HadoopDetailStatusView
:
UIView
{
private
lazy
var
titleLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
text
=
"状态分析"
lab
.
textAlignment
=
.
center
lab
.
font
=
kBoldFontSize
(
16
)
lab
.
textColor
=
kMainTitleColor
return
lab
}()
private
lazy
var
borderView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
kWhite
view
.
corners
(
radius
:
10
)
view
.
border
(
borderColor
:
UIColor
.
colorWith
(
hexString
:
"F2F1F1"
))
return
view
}()
private
lazy
var
hostStatusCell
:
StatusCell
=
{
let
cell
=
StatusCell
()
return
cell
}()
private
lazy
var
guestStatusCell
:
StatusCell
=
{
let
cell
=
StatusCell
()
return
cell
}()
let
disposeBag
=
DisposeBag
()
var
provider
:
HadoopProvider
<
HadoopTarget
>
?
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
addSubview
(
titleLab
)
addSubview
(
borderView
)
borderView
.
addSubview
(
hostStatusCell
)
borderView
.
addSubview
(
guestStatusCell
)
titleLab
.
snp
.
makeConstraints
{
make
in
make
.
top
.
centerX
.
equalToSuperview
()
}
borderView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
titleLab
.
snp
.
bottom
)
.
offset
(
10
)
make
.
left
.
right
.
equalToSuperview
()
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
10
)
}
hostStatusCell
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
20
)
make
.
left
.
equalToSuperview
()
.
offset
(
20
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
20
)
}
guestStatusCell
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
hostStatusCell
.
snp
.
bottom
)
.
offset
(
10
)
make
.
left
.
right
.
equalTo
(
hostStatusCell
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
10
)
}
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
setProvider
(
provider
:
HadoopProvider
<
HadoopTarget
>
?)
{
self
.
provider
=
provider
self
.
provider
?
.
bigDataDetail
.
asObservable
()
.
subscribe
(
onNext
:
{
[
weak
self
]
tmpDetail
in
guard
let
self
=
self
else
{
return
}
if
let
hostName
=
tmpDetail
?
.
hostName
,
let
guestName
=
tmpDetail
?
.
guestName
,
let
statusAnalysisModel
=
tmpDetail
?
.
statusAnalysis
,
let
hostResult
=
statusAnalysisModel
.
homeResult
,
let
awayResult
=
statusAnalysisModel
.
awayResult
{
self
.
hostStatusCell
.
update
(
teamName
:
hostName
,
score
:
hostResult
.
statusScore
,
tag
:
hostResult
.
statusTxt
,
result
:
hostResult
.
resultValue
)
self
.
guestStatusCell
.
update
(
teamName
:
guestName
,
score
:
awayResult
.
statusScore
,
tag
:
awayResult
.
statusTxt
,
result
:
awayResult
.
resultValue
)
}
})
.
disposed
(
by
:
disposeBag
)
}
}
//MARK: - 状态分析view
class
StatusCell
:
UIView
{
private
lazy
var
teamLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kBoldFontSize
(
14
)
lab
.
textColor
=
kMainTitleColor
return
lab
}()
private
lazy
var
teamProgressView
:
UIProgressView
=
{
let
proView
=
UIProgressView
()
proView
.
trackTintColor
=
UIColor
.
colorWith
(
hexString
:
"E6EFF7"
)
proView
.
progressTintColor
=
UIColor
.
colorWith
(
hexString
:
"1EA1FC"
)
proView
.
corners
(
radius
:
8
)
return
proView
}()
private
lazy
var
teamValueLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kFontSize
(
12
)
lab
.
textAlignment
=
.
right
lab
.
textColor
=
UIColor
.
colorWith
(
hexString
:
"475086"
)
return
lab
}()
private
lazy
var
teamTagLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kFontSize
(
12
)
lab
.
textAlignment
=
.
center
lab
.
textColor
=
kWhite
return
lab
}()
private
lazy
var
teamStackView
:
UIStackView
=
{
let
stackView
=
UIStackView
(
arrangedSubviews
:
[
teamLab
,
teamProgressView
,
teamValueLab
,
teamTagLab
])
stackView
.
axis
=
.
horizontal
stackView
.
alignment
=
.
center
stackView
.
spacing
=
10
return
stackView
}()
private
lazy
var
teamStatusInfoLab
:
UILabel
=
{
let
lab
=
UILabel
()
lab
.
font
=
kFontSize
(
14
)
lab
.
numberOfLines
=
0
lab
.
textColor
=
UIColor
.
colorWith
(
hexString
:
"475086"
)
return
lab
}()
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
addSubview
(
teamStackView
)
addSubview
(
teamStatusInfoLab
)
teamStackView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
left
.
right
.
equalToSuperview
()
}
teamProgressView
.
snp
.
makeConstraints
{
make
in
make
.
height
.
equalTo
(
16
)
}
teamStatusInfoLab
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
teamStackView
.
snp
.
bottom
)
.
offset
(
10
)
make
.
left
.
right
.
equalTo
(
teamStackView
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
10
)
}
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
let
corners
:
UIRectCorner
=
[
.
topLeft
,
.
topRight
,
.
bottomRight
]
teamTagLab
.
setCorners
(
corners
:
corners
,
radius
:
5
)
}
func
update
(
teamName
:
String
?,
score
:
Int
?,
tag
:
String
?,
result
:
String
?)
{
let
tmpScore
=
score
??
0
teamLab
.
text
=
teamName
teamProgressView
.
progress
=
Float
(
tmpScore
)
/
100.0
teamValueLab
.
text
=
tmpScore
>
0
?
"
\(
tmpScore
)
分"
:
""
teamTagLab
.
text
=
tag
teamStatusInfoLab
.
text
=
result
if
let
tmpTag
=
tag
{
var
bgColor
=
"F39322"
if
tmpTag
==
"非常好"
{
bgColor
=
"F7492C"
}
else
if
tmpTag
==
"很好"
{
bgColor
=
"F67966"
}
else
if
tmpTag
==
"较好"
{
bgColor
=
"F39322"
}
else
if
tmpTag
==
"一般"
{
bgColor
=
"F4B057"
}
else
if
tmpTag
==
"较差"
{
bgColor
=
"F4C281"
}
teamTagLab
.
backgroundColor
=
UIColor
.
colorWith
(
hexString
:
bgColor
)
}
teamTagLab
.
sizeToFit
()
teamTagLab
.
snp
.
remakeConstraints
{
make
in
make
.
size
.
equalTo
(
CGSize
(
width
:
teamTagLab
.
width
+
8
,
height
:
20
))
}
}
}
AoleiSports/Src/Discover/BigDataResearch/HadoopController.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataList/
HadoopController.swift
查看文件 @
cc8ea2f
文件被删除
AoleiSports/Src/Discover/BigDataResearch/HadoopHeaderView.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataList/
HadoopHeaderView.swift
查看文件 @
cc8ea2f
...
...
@@ -99,11 +99,9 @@ class HadoopHeaderView: UIView {
}
// 获取动态高度
setNeedsLayout
()
layoutIfNeeded
()
self
.
height
=
systemLayoutSizeFitting
(
UIView
.
layoutFittingCompressedSize
)
.
height
}
func
setProvider
(
_
provider
:
HadoopProvider
<
HadoopTarget
>
?)
{
self
.
provider
=
provider
...
...
@@ -111,7 +109,23 @@ class HadoopHeaderView: UIView {
.
asObservable
()
.
subscribe
(
onNext
:
{
[
weak
self
]
tmpList
in
guard
let
self
=
self
else
{
return
}
self
.
preCollectionView
.
update
(
topList
:
tmpList
)
if
tmpList
.
isEmpty
{
self
.
yesPreBtn
.
snp
.
remakeConstraints
{
make
in
make
.
left
.
right
.
equalTo
(
self
.
detailLab
)
make
.
top
.
equalTo
(
self
.
detailLab
.
snp
.
bottom
)
.
offset
(
15
)
make
.
height
.
equalTo
(
0
)
}
self
.
preCollectionView
.
snp
.
remakeConstraints
{
make
in
make
.
top
.
equalTo
(
self
.
yesPreBtn
.
snp
.
bottom
)
.
offset
(
15
)
make
.
left
.
right
.
equalToSuperview
()
make
.
height
.
equalTo
(
0
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
20
)
.
priority
(
.
high
)
}
self
.
height
=
systemLayoutSizeFitting
(
UIView
.
layoutFittingCompressedSize
)
.
height
}
else
{
self
.
preCollectionView
.
update
(
topList
:
tmpList
)
}
})
.
disposed
(
by
:
disposeBag
)
}
...
...
AoleiSports/Src/Discover/BigDataResearch/HadoopMatchFilterGroupModel.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataList/
HadoopMatchFilterGroupModel.swift
查看文件 @
cc8ea2f
文件被删除
AoleiSports/Src/Discover/BigDataResearch/HadoopMatchFilterView.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataList/
HadoopMatchFilterView.swift
查看文件 @
cc8ea2f
文件被删除
AoleiSports/Src/Discover/BigDataResearch/HadoopRequestModel.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataList/
HadoopRequestModel.swift
查看文件 @
cc8ea2f
文件被删除
AoleiSports/Src/Discover/BigDataResearch/HustleScoreCell.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataList/
HustleScoreCell.swift
查看文件 @
cc8ea2f
文件被删除
AoleiSports/Src/Discover/BigDataResearch/MatchFilterHeaderView.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataList/
MatchFilterHeaderView.swift
查看文件 @
cc8ea2f
文件被删除
AoleiSports/Src/Discover/BigDataResearch/RaceTypeModel.swift
→
AoleiSports/Src/Discover/BigDataResearch/
BigDataList/
RaceTypeModel.swift
查看文件 @
cc8ea2f
文件被删除
AoleiSports/Src/Discover/BigDataResearch/HadoopDetailController.swift
deleted
100644 → 0
查看文件 @
7fdb256
//
// HadoopDetailController.swift
// AoleiSports
//
// Created by ilCode on 2024/6/25.
//
import
UIKit
import
DGCharts
class
HadoopDetailController
:
BaseController
{
let
yqId
:
Int
var
provider
:
HadoopProvider
<
HadoopTarget
>
?
let
activities
=
[
"进攻"
,
"排名"
,
"技术"
,
"状态"
,
"防守"
]
private
lazy
var
header
:
UIView
=
{
let
view
=
UIView
(
frame
:
CGRect
(
x
:
0
,
y
:
-
30
,
width
:
kScreenW
,
height
:
kNavBarH
+
90
))
view
.
backgroundColor
=
UIColor
.
colorWith
(
hexString
:
"122063"
)
view
.
corners
(
radius
:
30
)
return
view
}()
private
lazy
var
teamView
:
UIView
=
{
let
view
=
UIView
(
frame
:
CGRect
(
x
:
10
,
y
:
kNavBarH
,
width
:
kScreenW
-
20
,
height
:
100
))
view
.
backgroundColor
=
UIColor
.
colorWith
(
hexString
:
"ECECED"
)
view
.
corners
(
radius
:
20
)
let
gradientLayer
=
CAGradientLayer
()
gradientLayer
.
frame
=
view
.
bounds
gradientLayer
.
colors
=
[
UIColor
.
colorWith
(
hexString
:
"DADADA"
)
.
cgColor
,
UIColor
.
colorWith
(
hexString
:
"F4F4F4"
)
.
cgColor
,
UIColor
.
colorWith
(
hexString
:
"DADADA"
)
.
cgColor
]
gradientLayer
.
locations
=
[
0.0
,
0.5
,
1.0
]
gradientLayer
.
startPoint
=
CGPoint
(
x
:
0.0
,
y
:
0.5
)
gradientLayer
.
endPoint
=
CGPoint
(
x
:
1.0
,
y
:
0.5
)
view
.
layer
.
insertSublayer
(
gradientLayer
,
at
:
0
)
return
view
}()
private
lazy
var
radarView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
kWhite
view
.
corners
(
radius
:
10
)
view
.
border
(
borderColor
:
UIColor
.
colorWith
(
hexString
:
"F2F1F1"
))
return
view
}()
private
lazy
var
radarChartView
:
RadarChartView
=
{
let
chartView
=
RadarChartView
()
chartView
.
chartDescription
.
enabled
=
false
chartView
.
webLineWidth
=
1
chartView
.
innerWebLineWidth
=
1
chartView
.
webColor
=
UIColor
.
colorWith
(
hexString
:
"CADEF1"
)
chartView
.
innerWebColor
=
UIColor
.
colorWith
(
hexString
:
"CADEF1"
)
chartView
.
webAlpha
=
1
chartView
.
backgroundColor
=
.
clear
chartView
.
rotationEnabled
=
false
return
chartView
}()
init
(
yqId
:
Int
)
{
self
.
yqId
=
yqId
super
.
init
(
nibName
:
nil
,
bundle
:
nil
)
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
gk_navTitle
=
"大数据研究"
gk_navBackgroundColor
=
UIColor
.
colorWith
(
hexString
:
"122063"
)
gk_navTitleColor
=
kWhite
gk_backImage
=
R
.
image
.
btn_back_white
()
// view.addSubview(header)
// view.addSubview(teamView)
// view.addSubview(radarView)
// radarView.addSubview(radarChartView)
//
// radarView.snp.makeConstraints { make in
// make.left.equalToSuperview().offset(10)
// make.right.equalToSuperview().offset(-10)
// make.top.equalTo(teamView.snp.bottom).offset(10)
// }
// radarChartView.snp.makeConstraints { make in
// make.centerX.equalToSuperview()
// make.top.equalToSuperview().offset(10)
// make.width.height.equalTo(300)
// make.bottom.equalToSuperview().offset(-10)
// }
//
// self.initRadarChartView()
// self.showRadarChartView()
initProvider
()
handleRefresh
()
}
override
var
preferredStatusBarStyle
:
UIStatusBarStyle
{
return
.
lightContent
}
override
func
handleRefresh
()
{
super
.
handleRefresh
()
provider
?
.
bigDataDetailRequest
(
yqId
:
yqId
,
completion
:
{
logicResult
in
if
case
.
failure
(
let
err
)
=
logicResult
{
if
case
AsError
.
netErr
(
let
message
)
=
err
{
self
.
showEmpty
(
type
:
.
netErr
,
message
:
message
)
}
else
{
self
.
showEmpty
(
type
:
.
other
,
message
:
err
.
localizedDescription
)
}
}
})
}
private
func
initRadarChartView
()
{
let
xAxis
=
radarChartView
.
xAxis
xAxis
.
labelFont
=
kBoldFontSize
(
12
)
xAxis
.
xOffset
=
0
xAxis
.
yOffset
=
0
xAxis
.
valueFormatter
=
self
xAxis
.
labelTextColor
=
UIColor
.
colorWith
(
hexString
:
"475086"
)
let
yAxis
=
radarChartView
.
yAxis
yAxis
.
labelFont
=
kBoldFontSize
(
12
)
yAxis
.
axisMinimum
=
0
yAxis
.
drawLabelsEnabled
=
false
yAxis
.
labelTextColor
=
UIColor
.
colorWith
(
hexString
:
"475086"
)
let
l
=
radarChartView
.
legend
l
.
form
=
.
circle
l
.
horizontalAlignment
=
.
center
l
.
verticalAlignment
=
.
bottom
l
.
orientation
=
.
horizontal
l
.
drawInside
=
true
l
.
font
=
kFontSize
(
12
)
l
.
xEntrySpace
=
10
l
.
textColor
=
kMainTitleColor
}
func
showRadarChartView
()
{
let
hostList
=
[
44
,
85
,
71
,
86
,
80
]
let
guestList
=
[
17
,
91
,
45
,
83
,
77
]
let
axisRanges
:
[(
min
:
Double
,
max
:
Double
)]
=
[
(
min
:
0
,
max
:
54
),
(
min
:
0
,
max
:
100
),
(
min
:
0
,
max
:
100
),
(
min
:
0
,
max
:
100
),
(
min
:
0
,
max
:
100
)
]
// 归一化数据
let
normalizedHostList
=
zip
(
hostList
,
axisRanges
)
.
map
{
value
,
range
in
return
RadarChartDataEntry
(
value
:
(
Double
(
value
)
-
range
.
min
)
/
(
range
.
max
-
range
.
min
))
}
let
normalizedGuestList
=
zip
(
guestList
,
axisRanges
)
.
map
{
value
,
range
in
return
RadarChartDataEntry
(
value
:
(
Double
(
value
)
-
range
.
min
)
/
(
range
.
max
-
range
.
min
))
}
let
set1
=
RadarChartDataSet
(
entries
:
normalizedHostList
,
label
:
"主队"
)
set1
.
setColor
(
UIColor
.
colorWith
(
hexString
:
"1EA1FC"
))
set1
.
fillColor
=
UIColor
.
colorWith
(
hexString
:
"73C4FD"
)
set1
.
drawFilledEnabled
=
true
set1
.
fillAlpha
=
0.7
set1
.
lineWidth
=
2
set1
.
drawHighlightCircleEnabled
=
true
set1
.
setDrawHighlightIndicators
(
false
)
let
set2
=
RadarChartDataSet
(
entries
:
normalizedGuestList
,
label
:
"客队"
)
set2
.
setColor
(
UIColor
.
colorWith
(
hexString
:
"FC9377"
))
set2
.
fillColor
=
UIColor
.
colorWith
(
hexString
:
"FBBAAA"
)
set2
.
drawFilledEnabled
=
true
set2
.
fillAlpha
=
0.7
set2
.
lineWidth
=
2
set2
.
drawHighlightCircleEnabled
=
true
set2
.
setDrawHighlightIndicators
(
false
)
let
data
:
RadarChartData
=
[
set1
,
set2
]
data
.
setDrawValues
(
false
)
radarChartView
.
data
=
data
radarChartView
.
animate
(
xAxisDuration
:
0
,
yAxisDuration
:
1.4
,
easingOption
:
.
linear
)
}
}
extension
HadoopDetailController
:
AxisValueFormatter
{
func
stringForValue
(
_
value
:
Double
,
axis
:
AxisBase
?)
->
String
{
return
activities
[
Int
(
value
)
%
activities
.
count
]
}
}
extension
HadoopDetailController
{
private
func
initProvider
()
{
provider
=
HadoopProvider
(
vc
:
self
,
showErr
:
false
)
// provider?.matchList
// .asObservable()
// .subscribe(onNext: { [weak self] tmpModels in
// guard let self = self else { return }
//
//
// })
// .disposed(by: disposeBag)
}
}
AoleiSports/Src/Discover/BigDataResearch/HadoopProvider.swift
查看文件 @
cc8ea2f
...
...
@@ -42,6 +42,9 @@ class HadoopProvider<Target: TargetType>: BaseMoyaProvider<Target> {
var
comList
=
BehaviorRelay
<
[
HadoopComModel
]
>
(
value
:
[])
var
matchList
=
BehaviorRelay
<
[
HadoopMatchModel
]
>
(
value
:
[])
var
gameInfo
=
BehaviorRelay
<
GameInfoModel
?
>
(
value
:
nil
)
var
bigDataDetail
=
BehaviorRelay
<
BigDataDetailModel
?
>
(
value
:
nil
)
// 大数据列表请求
func
bigDataListRequest
(
completion
:
@escaping
(
Result
<
Bool
,
AsError
>
)
->
Void
)
{
moyaPost
(
api
:
APIs
.
kBigDataList
,
target
:
HadoopTarget
.
bigDataList
)
{
midResult
in
...
...
@@ -60,7 +63,7 @@ class HadoopProvider<Target: TargetType>: BaseMoyaProvider<Target> {
}
if
let
predictTopList
=
requestModel
?
.
predictData
?
.
predictTopList
,
!
predictTopList
.
isEmpty
,
!
predictTopList
.
isEmpty
,
let
recentCount
=
requestModel
?
.
predictData
?
.
recentCount
{
let
tmpTopList
=
predictTopList
.
prefix
(
3
)
.
map
{
tmpModel
in
var
newModel
=
tmpModel
...
...
@@ -98,7 +101,15 @@ class HadoopProvider<Target: TargetType>: BaseMoyaProvider<Target> {
switch
midResult
{
case
let
.
success
(
midSuccessResult
):
let
requestModel
=
HadoopDetailRequestModel
(
JSON
:
midSuccessResult
)
if
let
tmpGameInfo
=
requestModel
?
.
gameInfo
{
self
.
gameInfo
.
accept
(
tmpGameInfo
)
}
if
let
tmpDetail
=
requestModel
?
.
bigDataDetail
{
self
.
bigDataDetail
.
accept
(
tmpDetail
)
}
completion
(
.
success
(
true
))
case
.
failure
(
let
err
):
completion
(
.
failure
(
err
))
...
...
AoleiSports/Src/Ext/UIView+Ext.swift
查看文件 @
cc8ea2f
...
...
@@ -26,6 +26,16 @@ extension UIView {
line
.
backgroundColor
=
color
return
line
}
// 设置圆角
func
setCorners
(
corners
:
UIRectCorner
,
radius
:
CGFloat
)
{
let
path
=
UIBezierPath
(
roundedRect
:
self
.
bounds
,
byRoundingCorners
:
corners
,
cornerRadii
:
CGSize
(
width
:
radius
,
height
:
radius
))
let
mask
=
CAShapeLayer
()
mask
.
path
=
path
.
cgPath
self
.
layer
.
mask
=
mask
}
}
extension
UIView
{
...
...
AoleiSports/Src/Score/ScoreTools.swift
查看文件 @
cc8ea2f
...
...
@@ -8,24 +8,33 @@
import
Foundation
struct
ScoreTools
{
static
func
getFormatMatchTime
(
time
:
String
?,
format
:
String
=
"HH:mm"
)
->
String
{
guard
let
oriTime
=
time
else
{
return
""
}
// 创建日期格式化器来解析输入日期字符串
let
inputDateFormatter
=
DateFormatter
()
inputDateFormatter
.
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
guard
let
date
=
inputDateFormatter
.
date
(
from
:
oriTime
)
else
{
return
""
}
static
func
getFormatMatchTime
(
time
:
Any
?,
format
:
String
=
"HH:mm"
)
->
String
{
// 创建日期格式化器来格式化日期为目标格式
let
targetDateFormatter
=
DateFormatter
()
targetDateFormatter
.
dateFormat
=
format
var
date
:
Date
?
// 处理String类型的时间
if
let
oriTime
=
time
as?
String
{
let
inputDateFormatter
=
DateFormatter
()
inputDateFormatter
.
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
date
=
inputDateFormatter
.
date
(
from
:
oriTime
)
}
// 处理Int类型的时间戳
else
if
let
timestamp
=
time
as?
Int
{
date
=
Date
(
timeIntervalSince1970
:
TimeInterval
(
timestamp
))
}
// 处理Double类型的时间戳(可选)
else
if
let
timestamp
=
time
as?
Double
{
date
=
Date
(
timeIntervalSince1970
:
timestamp
)
}
guard
let
validDate
=
date
else
{
return
""
}
// 返回格式化后的日期字符串
return
targetDateFormatter
.
string
(
from
:
d
ate
)
return
targetDateFormatter
.
string
(
from
:
validD
ate
)
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论