123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 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
- }
|