package main import ( "fmt" qu "qfw/util" "strings" "unicode/utf8" ) func winnerFieldScore(tmp map[string]interface{},score int64) (map[string]interface{}) { s_winner := qu.ObjToString(tmp["s_winner"]) buyer := qu.ObjToString(tmp["buyer"]) agency := qu.ObjToString(tmp["agency"]) package_map:=*qu.ObjToMap(tmp["package"]) reason,desc:=fmt.Sprintf("%d初始分",score),"" s_winner_arr := strings.Split(s_winner,",") if len(s_winner_arr)!=len(package_map) && len(package_map)>0 { desc = "分包量" reason+="~"+desc score -= qu.Int64All(s_winner_score[desc]) } for _,winner:=range s_winner_arr{ /*错误项*/ if utf8.RuneCountInString(winner) < 4 || !isHan(winner) || utf8.RuneCountInString(winner) > 20{ return map[string]interface{}{ "score":int64(0), "reason":"错误", } } countArr := isCharCount(winner) if countArr[0] < 4 { return map[string]interface{}{ "score":int64(0), "reason":"错误:中文少", } } /*减分项 "单位库": 1, "前缀校验": 1, "后缀校验": 1, "非纯中文": 1, "分包量": 1, "切词": 2, "单位对比": 2, "黑名单": 2 */ if !isTest && !qyNameIsExistsQYXY(winner){ desc = "单位库" reason+="~"+desc score -= qu.Int64All(s_winner_score[desc]) } if isUnHan(winner){ desc = "非纯中文" reason+="~"+desc score -= qu.Int64All(s_winner_score[desc]) } if specHeadReg.MatchString(winner) || !unHanHeadReg.MatchString(winner) { desc = "前缀校验" reason+="~"+desc score -= qu.Int64All(s_winner_score[desc]) } if unConReg.MatchString(winner) || unEndReg.MatchString(winner) { if unenableReg1.MatchString(winner) || unenableReg2.MatchString(winner) { desc = "黑名单" reason+="~"+desc score -= qu.Int64All(s_winner_score[desc]) } }else { desc = "后缀校验" reason+="~"+desc score -= qu.Int64All(s_winner_score[desc]) } if (winner==agency || winner==buyer) && winner !="" { desc = "单位对比" reason+="~"+desc score -= qu.Int64All(s_winner_score[desc]) } //切词首部比对-影响性能 winner_jb_arr := GSE.Cut(winner, true) if len(winner_jb_arr)>0 && winner_jb_arr!=nil { head_char := qu.ObjToString(winner_jb_arr[0]) if utf8.RuneCountInString(head_char) == 1{ desc = "切词" reason+="~"+desc score -= qu.Int64All(s_winner_score[desc]) } } } return map[string]interface{}{ "score":score, "reason":reason, } }