main.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package main
  2. import (
  3. "encoding/json"
  4. "flag"
  5. "github.com/tealeg/xlsx"
  6. "io/ioutil"
  7. "log"
  8. mu "mfw/util"
  9. "net"
  10. qu "qfw/util"
  11. "time"
  12. )
  13. var itype, p int
  14. var id, ip, budget, bidamount, file string
  15. func main() {
  16. flag.IntVar(&itype, "itype", 0, "类型")
  17. flag.StringVar(&ip, "ip", "127.0.0.1", "ip")
  18. flag.IntVar(&p, "p", 0, "端口")
  19. flag.StringVar(&id, "id", "", "id")
  20. flag.StringVar(&budget, "budget", "", "预算")
  21. flag.StringVar(&bidamount, "bidamount", "", "中标金额")
  22. flag.StringVar(&file, "file", "", "文件路径")
  23. flag.Parse()
  24. addr := &net.UDPAddr{
  25. IP: net.ParseIP(ip),
  26. Port: p,
  27. }
  28. udp := mu.UdpClient{Local: ":50010", BufSize: 1024}
  29. udp.Listen(func(b byte, data []byte, add *net.UDPAddr) {
  30. switch b {
  31. case mu.OP_NOOP:
  32. //os.Exit(0)
  33. }
  34. })
  35. if itype == 0 {
  36. if ip != "" && p > 0 && (budget != "" || bidamount != "") && id != "" {
  37. SendUdp(*addr, udp)
  38. }else {
  39. flag.PrintDefaults()
  40. log.Println("参数错误.")
  41. }
  42. }else {
  43. if file != "" {
  44. binary, err := ioutil.ReadFile(file)
  45. if err == nil {
  46. data, _ := ParsData(binary)
  47. if len(data) > 0 {
  48. for _, v := range data{
  49. if qu.ObjToString(v["_id"]) != "" {
  50. id = qu.ObjToString(v["_id"])
  51. budget = qu.ObjToString(v["budget"])
  52. bidamount = qu.ObjToString(v["bidamount"])
  53. SendUdp(*addr, udp)
  54. }
  55. }
  56. }
  57. }else {
  58. qu.Debug("文件解析失败")
  59. }
  60. }else {
  61. flag.PrintDefaults()
  62. log.Println("参数错误.")
  63. }
  64. }
  65. }
  66. func SendUdp(addr net.UDPAddr, udp mu.UdpClient) {
  67. m1 := map[string]interface{}{
  68. "id": id,
  69. "stype": "updateMoney",
  70. }
  71. if budget != "" {
  72. m1["budget"] = budget
  73. }
  74. if bidamount != "" {
  75. m1["bidamount"] = bidamount
  76. }
  77. by, _ := json.Marshal(m1)
  78. log.Println(string(by))
  79. _ = udp.WriteUdp(by, mu.OP_TYPE_DATA, &addr)
  80. time.Sleep(1 * time.Second)
  81. }
  82. func ParsData(filebyte []byte) ([]map[string]interface{}, error) {
  83. var data []map[string]interface{}
  84. var keyName []string
  85. file, err := xlsx.OpenBinary(filebyte)
  86. if err != nil {
  87. return data, err
  88. }
  89. for i, v := range file.Sheets[0].Rows {
  90. info := make(map[string]interface{})
  91. for ii, vv := range v.Cells {
  92. if i == 0 {
  93. keyName = append(keyName, vv.Value)
  94. } else {
  95. if vv.Value != "" {
  96. info[keyName[ii]] = vv.Value
  97. }
  98. }
  99. }
  100. if len(info) > 0 {
  101. data = append(data, info)
  102. }
  103. }
  104. return data, nil
  105. }