main.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package main
  2. import (
  3. qu "app.yhyue.com/moapp/jybase/common"
  4. "fmt"
  5. _ "github.com/go-sql-driver/mysql"
  6. "github.com/xormplus/xorm"
  7. "log"
  8. )
  9. type sysConfig struct {
  10. Mysql string `json:"mysql"`
  11. AdminMysql string `json:"adminMysql"`
  12. }
  13. var SysConfig sysConfig
  14. var Mysql *xorm.Engine
  15. var AdminMysql *xorm.Engine
  16. func init() {
  17. var err error
  18. qu.ReadConfig("./config.json", &SysConfig)
  19. log.Println(SysConfig.Mysql)
  20. log.Println(SysConfig.AdminMysql)
  21. Mysql, err = xorm.NewEngine("mysql", SysConfig.Mysql)
  22. if err != nil {
  23. log.Println("初始化mysql数据库失败", err)
  24. }
  25. AdminMysql, err = xorm.NewEngine("mysql", SysConfig.AdminMysql)
  26. if err != nil {
  27. log.Println("初始化AdminMysql数据库失败", err)
  28. }
  29. }
  30. func main() {
  31. // 查询剑鱼后台所有人员的用户名以及id 存放到map里
  32. //sql2 := "select order_code,salesperson from dataexport_order where salesperson is not null and salesperson_id is null"
  33. type user struct {
  34. Id string `xorm:"id"`
  35. UserName string `xorm:"username"`
  36. }
  37. var users []user
  38. // 1. 从订单表中查询出有销售人员的订单的id以及销售人员名称,
  39. //sql1 := "select id ,username from admin_user"
  40. err := AdminMysql.Table("admin_user").Select("id,username").Find(&users)
  41. if err != nil {
  42. fmt.Println("获取剑鱼后台用户信息失败", err)
  43. return
  44. }
  45. nameInfo := map[string]interface{}{}
  46. if users != nil && len(users) > 0 {
  47. for _, v := range users {
  48. nameInfo[v.UserName] = v.Id
  49. }
  50. log.Println("剑鱼后台用户信息:", nameInfo)
  51. } else {
  52. log.Println("未查询到用户信息,确认数据库是否正确")
  53. return
  54. }
  55. // 2. 获取id
  56. //sql2 := "select order_code,salesperson from dataexport_order where salesperson is not null and salesperson_id is null"
  57. order := new(struct {
  58. OrderCode string `xorm:"order_code"`
  59. Salesperson string `xorm:"salesperson"`
  60. })
  61. rows, err := Mysql.Table("dataexport_order").Select("order_code,salesperson").Where("salesperson is not null and salesperson !='' and salesperson_id is null ").Rows(order)
  62. log.Println("rows", rows)
  63. defer func(rows *xorm.Rows) {
  64. if rows != nil {
  65. rows.Close()
  66. }
  67. }(rows)
  68. fmt.Println("开始迭代需要更新的订单表数据")
  69. var count int
  70. var errCount int
  71. var successCount int
  72. for rows.Next() {
  73. err = rows.Scan(order)
  74. if err != nil {
  75. log.Println("迭代数据出错", err)
  76. return
  77. }
  78. count++
  79. orderCode := order.OrderCode
  80. salesperson := order.Salesperson
  81. if id, ok := nameInfo[salesperson]; ok {
  82. //sql3 := "update dateexport_order set salesperson_id = ? where order_code=?"
  83. update, err := Mysql.Table("dataexport_order").Where("order_code=?", orderCode).Update(map[string]interface{}{
  84. "salesperson_id": id,
  85. })
  86. if err != nil || update < 1 {
  87. errCount++
  88. log.Printf("更新失败:订单号:%v,销售人员:%v,销售人员id:%v ", orderCode, salesperson, id)
  89. fmt.Println("更新失败", err)
  90. continue
  91. }
  92. successCount++
  93. log.Printf("更新完成:订单号:%v,销售人员:%v,销售人员id:%v", orderCode, salesperson, id)
  94. } else {
  95. errCount++
  96. log.Printf("未获取到对应用户id,请核实销售人员姓名:订单号:%v,销售人员:%v,", orderCode, salesperson)
  97. }
  98. }
  99. log.Printf("共%v条数据,更新成功%v,更新失败%v", count, successCount, errCount)
  100. //log.Printf("需要手动核实的数据:%v", errData)
  101. }