package main import ( "encoding/json" "flag" "github.com/tealeg/xlsx" "io/ioutil" "log" mu "mfw/util" "net" qu "qfw/util" "time" ) var itype, p int var id, ip, budget, bidamount, file string func main() { flag.IntVar(&itype, "itype", 0, "类型") flag.StringVar(&ip, "ip", "127.0.0.1", "ip") flag.IntVar(&p, "p", 0, "端口") flag.StringVar(&id, "id", "", "id") flag.StringVar(&budget, "budget", "", "预算") flag.StringVar(&bidamount, "bidamount", "", "中标金额") flag.StringVar(&file, "file", "", "文件路径") flag.Parse() addr := &net.UDPAddr{ IP: net.ParseIP(ip), Port: p, } udp := mu.UdpClient{Local: ":50010", BufSize: 1024} udp.Listen(func(b byte, data []byte, add *net.UDPAddr) { switch b { case mu.OP_NOOP: //os.Exit(0) } }) if itype == 0 { if ip != "" && p > 0 && (budget != "" || bidamount != "") && id != "" { SendUdp(*addr, udp) }else { flag.PrintDefaults() log.Println("参数错误.") } }else { if file != "" { binary, err := ioutil.ReadFile(file) if err == nil { data, _ := ParsData(binary) if len(data) > 0 { for _, v := range data{ if qu.ObjToString(v["_id"]) != "" { id = qu.ObjToString(v["_id"]) budget = qu.ObjToString(v["budget"]) bidamount = qu.ObjToString(v["bidamount"]) SendUdp(*addr, udp) } } } }else { qu.Debug("文件解析失败") } }else { flag.PrintDefaults() log.Println("参数错误.") } } } func SendUdp(addr net.UDPAddr, udp mu.UdpClient) { m1 := map[string]interface{}{ "id": id, "stype": "updateMoney", } if budget != "" { m1["budget"] = budget } if bidamount != "" { m1["bidamount"] = bidamount } by, _ := json.Marshal(m1) log.Println(string(by)) _ = udp.WriteUdp(by, mu.OP_TYPE_DATA, &addr) time.Sleep(1 * time.Second) } func ParsData(filebyte []byte) ([]map[string]interface{}, error) { var data []map[string]interface{} var keyName []string file, err := xlsx.OpenBinary(filebyte) if err != nil { return data, err } for i, v := range file.Sheets[0].Rows { info := make(map[string]interface{}) for ii, vv := range v.Cells { if i == 0 { keyName = append(keyName, vv.Value) } else { if vv.Value != "" { info[keyName[ii]] = vv.Value } } } if len(info) > 0 { data = append(data, info) } } return data, nil }