123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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, "<br/>", "\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)
- }
|