add
This commit is contained in:
@@ -1,45 +1,25 @@
|
||||
package ivyz
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// mapNuoerKunyuFixToResponse 将 nuoer 响应(2json.md)转为对外结构(1json.md):
|
||||
// 解包 result,将 score 映射为 scoreafywbase。
|
||||
// 解包 result,将千分制 score 映射为百分制 scoreafywbase。
|
||||
func mapNuoerKunyuFixToResponse(data map[string]interface{}) map[string]interface{} {
|
||||
scoreYwBase, ok := extractRax1Score(data)
|
||||
score := ""
|
||||
if data != nil {
|
||||
payload := data
|
||||
if result, ok := data["result"].(map[string]interface{}); ok {
|
||||
payload = result
|
||||
}
|
||||
if raw, ok := payload["score"]; ok && raw != nil {
|
||||
score = stringifyKunyuFixScore(raw)
|
||||
}
|
||||
if ok {
|
||||
score = mapScoreYwBaseToPercent(scoreYwBase)
|
||||
}
|
||||
return map[string]interface{}{
|
||||
"scoreafywbase": score,
|
||||
}
|
||||
}
|
||||
|
||||
func stringifyKunyuFixScore(v interface{}) string {
|
||||
if v == nil {
|
||||
return ""
|
||||
}
|
||||
switch val := v.(type) {
|
||||
case string:
|
||||
return val
|
||||
case float64:
|
||||
if val == float64(int64(val)) {
|
||||
return strconv.FormatInt(int64(val), 10)
|
||||
}
|
||||
return strconv.FormatFloat(val, 'f', -1, 64)
|
||||
case int:
|
||||
return strconv.Itoa(val)
|
||||
case int64:
|
||||
return strconv.FormatInt(val, 10)
|
||||
default:
|
||||
return fmt.Sprint(val)
|
||||
}
|
||||
// mapScoreYwBaseToPercent 千分制 scoreywbase 转百分制 scoreafywbase。
|
||||
// 与 mapRax1ScoreToScoreYwBase 互逆:percent = (984 - scoreYwBase) / 6.32。
|
||||
func mapScoreYwBaseToPercent(scoreYwBase float64) string {
|
||||
percent := (rax1ScoreYwBaseIntercept - scoreYwBase) / rax1ScoreYwBaseSlope
|
||||
return strconv.FormatFloat(percent, 'f', 2, 64)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user