feat(listing): 公共筛选新增日消耗区间(高级筛选)

This commit is contained in:
yml2213
2026-08-15 13:32:01 +08:00
parent 096121a8cd
commit 51c3f2767f
11 changed files with 65 additions and 0 deletions
+2
View File
@@ -146,6 +146,8 @@ type PublicListQuery struct {
MaxTotal *float64
MinFireLevel *float64
MaxFireLevel *float64
MinDailyLoss *float64
MaxDailyLoss *float64
MinSecretKD *float64
MaxSecretKD *float64
ResourceRanges map[string]NumberRange
@@ -114,6 +114,8 @@ func parsePublicListQuery(c *gin.Context) PublicListQuery {
MaxTotal: parseOptionalFloat(c.Query("max_total")),
MinFireLevel: parseOptionalFloat(c.Query("min_fire_level")),
MaxFireLevel: parseOptionalFloat(c.Query("max_fire_level")),
MinDailyLoss: parseOptionalFloat(c.Query("min_daily_loss")),
MaxDailyLoss: parseOptionalFloat(c.Query("max_daily_loss")),
MinSecretKD: parseOptionalFloat(c.Query("min_secret_kd")),
MaxSecretKD: parseOptionalFloat(c.Query("max_secret_kd")),
ResourceRanges: parseResourceRanges(c),
@@ -78,6 +78,9 @@ func matchesPublicQuery(item ListingDTO, query PublicListQuery) bool {
if !numberInRange(readSummaryNumber(item.AssetSummary["fire_level"]), NumberRange{Min: query.MinFireLevel, Max: query.MaxFireLevel}) {
return false
}
if !numberInRange(readSummaryNumber(item.AssetSummary["daily_loss_m"]), NumberRange{Min: query.MinDailyLoss, Max: query.MaxDailyLoss}) {
return false
}
if !numberInRange(readSummaryNumber(item.AssetSummary["secret_kd"]), NumberRange{Min: query.MinSecretKD, Max: query.MaxSecretKD}) {
return false
}
@@ -130,6 +130,9 @@ func canListPublicWithSQL(query PublicListQuery) bool {
if query.MinFireLevel != nil || query.MaxFireLevel != nil || query.MinSecretKD != nil || query.MaxSecretKD != nil {
return false
}
if query.MinDailyLoss != nil || query.MaxDailyLoss != nil {
return false
}
switch query.Sort {
case "", "published", "recommended", "comprehensive", "priceAsc", "priceDesc", "coinDesc":
return true