package service import ( . "dataIdentify/db" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gctx" "github.com/gogf/gf/v2/util/gconv" "log" "regexp" "strings" ) var ( SelectField = map[string]interface{}{ "_id": 1, "winnerorder": 1, "detail": 1, "subtype": 1, "bidamount": 1, } service Service = &Rule{} ) type DataIdentify struct { } func (d *DataIdentify) Execute(_id *string, reply *map[string]string) error { log.Println("rpc接收到要识别的_id", _id) _, a, b := Start(*_id) *reply = map[string]string{} if a == "费率模式" { a = "费率" } else if a == "单价模式" { a = "单价" } else if a == "上浮下浮模式" { a = "折扣率" } else if a == "整体报价模式" { a = "正常报价" } else { a = "其他" } (*reply)["报价模式"] = a if b == 1 { (*reply)["中标联合体"] = "是" } else { (*reply)["中标联合体"] = "否" } return nil } type Service interface { Execute(b *BidInfo) (bool, string, int) } type BidInfo struct { Id, Detail, Subtype string WinnerOrder []string KvText string Bidamount float64 } func Start(_id string) (bool, string, int) { data, ok := Mgo_Main.FindById(g.Config().MustGet(gctx.New(), "mongodb.main.collection").String(), _id, SelectField) if !ok || data == nil || len(*data) == 0 { log.Println(_id, "没有找到标讯") return false, "", 0 } return Pretreatment(_id, *data) } func Pretreatment(_id string, m map[string]interface{}) (bool, string, int) { if m == nil || len(m) == 0 { log.Println(_id, "没有找到标讯") return false, "", 0 } detail, _ := m["detail"].(string) subtype, _ := m["subtype"].(string) detail = strings.TrimSpace(strings.Replace(detail, "
", "\n", -1)) for _, v := range clearPatterns { detail = regexp.MustCompile(v).ReplaceAllString(detail, "") } bi := &BidInfo{ Id: _id, Detail: detail, Subtype: subtype, WinnerOrder: gconv.Strings(m["winnerorder"]), Bidamount: gconv.Float64(m["bidamount"]), } extract, _ := Mgo_Extract.FindById("result_20220219", _id, `{"kvtext":1}`) if extract == nil || len(*extract) == 0 { extract, _ = Mgo_Extract.FindById("result_20220218", _id, `{"kvtext":1}`) } if extract != nil && len(*extract) > 0 { bi.KvText, _ = (*extract)["kvtext"].(string) } return service.Execute(bi) }