特惠标签ok
This commit is contained in:
@@ -521,6 +521,7 @@ func (row listingRow) toDTO() ListingDTO {
|
||||
PriceDaily: row.PriceDaily,
|
||||
PriceWeekly: row.PriceWeekly,
|
||||
DepositAmount: row.DepositAmount,
|
||||
IsAccelerated: isAcceleratedSale(assetSummary),
|
||||
Status: row.Status,
|
||||
ReviewStatus: row.ReviewStatus,
|
||||
ReviewReason: row.ReviewReason,
|
||||
@@ -551,6 +552,7 @@ func toDTO(account model.GameAccount, listing model.RentalListing) *ListingDTO {
|
||||
PriceDaily: listing.PriceDaily,
|
||||
PriceWeekly: listing.PriceWeekly,
|
||||
DepositAmount: listing.DepositAmount,
|
||||
IsAccelerated: isAcceleratedSale(assetSummary),
|
||||
Status: listing.Status,
|
||||
ReviewStatus: listing.ReviewStatus,
|
||||
ReviewReason: listing.ReviewReason,
|
||||
@@ -605,6 +607,50 @@ func decodeAssetSummary(raw datatypes.JSON) map[string]any {
|
||||
return summary
|
||||
}
|
||||
|
||||
func isAcceleratedSale(summary map[string]any) bool {
|
||||
if summary == nil {
|
||||
return false
|
||||
}
|
||||
breakdown, ok := summary["price_breakdown"].(map[string]any)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
referenceRatio := readSummaryNumber(breakdown["seller_reference_ratio"])
|
||||
sellerRatio := readSummaryNumber(breakdown["seller_ratio"])
|
||||
acceleratedRatio := readSummaryNumber(breakdown["accelerated_sale_ratio"])
|
||||
if referenceRatio <= 0 {
|
||||
return false
|
||||
}
|
||||
return sellerRatio > referenceRatio || acceleratedRatio > referenceRatio
|
||||
}
|
||||
|
||||
func readSummaryNumber(value any) float64 {
|
||||
switch typed := value.(type) {
|
||||
case float64:
|
||||
return typed
|
||||
case float32:
|
||||
return float64(typed)
|
||||
case int:
|
||||
return float64(typed)
|
||||
case int64:
|
||||
return float64(typed)
|
||||
case json.Number:
|
||||
number, err := typed.Float64()
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
return number
|
||||
case string:
|
||||
number, err := strconv.ParseFloat(strings.TrimSpace(typed), 64)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
return number
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
func cleanScreenshotURLs(urls []string) []string {
|
||||
cleaned := make([]string, 0, len(urls))
|
||||
seen := make(map[string]struct{}, len(urls))
|
||||
|
||||
Reference in New Issue
Block a user