package main

import (
	"fmt"
	qu "qfw/util"
	"unicode/utf8"
)


func buyerFieldScore(tmp map[string]interface{},score int64) (map[string]interface{}) {
	buyer := qu.ObjToString(tmp["buyer"])
	agency := qu.ObjToString(tmp["agency"])
	winner := qu.ObjToString(tmp["winner"])
	reason,desc:=fmt.Sprintf("%d初始分",score),""

	/*错误项*/
	if  utf8.RuneCountInString(buyer) < 4 || !isHan(buyer) ||
		utf8.RuneCountInString(buyer) >= 20{
		return map[string]interface{}{
			"score":int64(0),
			"reason":"错误：长度",
		}
	}
	countArr := isCharCount(buyer)
	if countArr[0] < 4 {
		return map[string]interface{}{
			"score":int64(0),
			"reason":"错误：中文少",
		}
	}

	/*减分项
		"单位库": 1,
	    "前缀校验": 1,
	    "后缀校验": 1,
	    "非纯中文": 1,
	    "切词": 2,
	    "单位对比": 2,
	    "黑名单":2
	*/

	if !isTest && !buyerNameIsExists(buyer)  {
		desc = "单位库"
		reason+="~"+desc
		score -= qu.Int64All(buyer_score[desc])
	}

	if isUnHan(buyer){
		desc = "非纯中文"
		reason+="~"+desc
		score -= qu.Int64All(buyer_score[desc])
	}

	if specHeadReg.MatchString(buyer) || !unHanHeadReg.MatchString(buyer) {
		desc = "前缀校验"
		reason+="~"+desc
		score -= qu.Int64All(buyer_score[desc])
	}

	if unConReg.MatchString(buyer) || unEndReg.MatchString(buyer) {
		if unenableReg1.MatchString(buyer) || unenableReg2.MatchString(buyer) {
			desc = "黑名单"
			reason+="~"+desc
			score -= qu.Int64All(buyer_score[desc])
		}
	}else {
		desc = "后缀校验"
		reason+="~"+desc
		score -= qu.Int64All(buyer_score[desc])
	}

	//与其他单位比对
	if buyer==agency || buyer==winner {
		desc = "单位对比"
		reason+="~"+desc
		score -= qu.Int64All(buyer_score[desc])
	}

	//切词首部比对-
	buyer_jb_arr := GSE.Cut(buyer, true)
	if len(buyer_jb_arr)>0 && buyer_jb_arr!=nil {
		head_char := qu.ObjToString(buyer_jb_arr[0])
		if utf8.RuneCountInString(head_char) == 1{
			desc = "切词"
			reason+="~"+desc
			score -= qu.Int64All(buyer_score[desc])
		}
	}

	return map[string]interface{}{
		"score":score,
		"reason":reason,
	}
}

