Files
GoEdgeLab 2f3981704e v1.4.1
2024-07-27 13:29:26 +08:00

59 lines
1.7 KiB
Go

// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
package regionconfigs
type RegionId = int64
type RegionProvinceId = int64
const (
RegionChinaId RegionId = 1
RegionChinaIdHK RegionId = 261
RegionChinaIdTW RegionId = 262
RegionChinaIdMO RegionId = 263
RegionChinaIdMainland RegionId = 264
RegionChinaProvinceIdHK RegionProvinceId = 32
RegionChinaProvinceIdTW RegionProvinceId = 34
RegionChinaProvinceIdMO RegionProvinceId = 33
)
func CheckRegionIsInGreaterChina(regionId RegionId) bool {
return regionId == RegionChinaId ||
regionId == RegionChinaIdHK ||
regionId == RegionChinaIdTW ||
regionId == RegionChinaIdMO ||
regionId == RegionChinaIdMainland
}
func FindAllGreaterChinaSubRegionIds() []RegionId {
return []RegionId{
RegionChinaIdMainland, RegionChinaIdHK, RegionChinaIdMO, RegionChinaIdTW,
}
}
func CheckRegionProvinceIsInChinaMainland(regionProvinceId RegionProvinceId) bool {
if regionProvinceId <= 0 {
return false
}
return regionProvinceId != RegionChinaProvinceIdHK &&
regionProvinceId != RegionChinaProvinceIdMO &&
regionProvinceId != RegionChinaProvinceIdTW
}
func MatchUserRegion(userCountryId int64, userProvinceId int64, regionId int64) bool {
if userCountryId == RegionChinaId {
switch regionId {
case RegionChinaIdMainland: // china.mainland
return CheckRegionProvinceIsInChinaMainland(userProvinceId)
case RegionChinaIdHK: // china.hk
return userProvinceId == RegionChinaProvinceIdHK
case RegionChinaIdMO: // china.mo
return userProvinceId == RegionChinaProvinceIdMO
case RegionChinaIdTW: // china.tw
return userProvinceId == RegionChinaProvinceIdTW
}
}
return userCountryId == regionId
}