package main import ( qu "app.yhyue.com/moapp/jybase/common" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/xormplus/xorm" "log" ) type sysConfig struct { Mysql string `json:"mysql"` AdminMysql string `json:"adminMysql"` } var SysConfig sysConfig var Mysql *xorm.Engine var AdminMysql *xorm.Engine func init() { var err error qu.ReadConfig("./config.json", &SysConfig) log.Println(SysConfig.Mysql) log.Println(SysConfig.AdminMysql) Mysql, err = xorm.NewEngine("mysql", SysConfig.Mysql) if err != nil { log.Println("初始化mysql数据库失败", err) } AdminMysql, err = xorm.NewEngine("mysql", SysConfig.AdminMysql) if err != nil { log.Println("初始化AdminMysql数据库失败", err) } } func main() { // 查询剑鱼后台所有人员的用户名以及id 存放到map里 //sql2 := "select order_code,salesperson from dataexport_order where salesperson is not null and salesperson_id is null" type user struct { Id string `xorm:"id"` UserName string `xorm:"username"` } var users []user // 1. 从订单表中查询出有销售人员的订单的id以及销售人员名称, //sql1 := "select id ,username from admin_user" err := AdminMysql.Table("admin_user").Select("id,username").Find(&users) if err != nil { fmt.Println("获取剑鱼后台用户信息失败", err) return } nameInfo := map[string]interface{}{} if users != nil && len(users) > 0 { for _, v := range users { nameInfo[v.UserName] = v.Id } log.Println("剑鱼后台用户信息:", nameInfo) } else { log.Println("未查询到用户信息,确认数据库是否正确") return } // 2. 获取id //sql2 := "select order_code,salesperson from dataexport_order where salesperson is not null and salesperson_id is null" order := new(struct { OrderCode string `xorm:"order_code"` Salesperson string `xorm:"salesperson"` }) rows, err := Mysql.Table("dataexport_order").Select("order_code,salesperson").Where("salesperson is not null and salesperson !='' and salesperson_id is null ").Rows(order) log.Println("rows", rows) defer func(rows *xorm.Rows) { if rows != nil { rows.Close() } }(rows) fmt.Println("开始迭代需要更新的订单表数据") var count int var errCount int var successCount int for rows.Next() { err = rows.Scan(order) if err != nil { log.Println("迭代数据出错", err) return } count++ orderCode := order.OrderCode salesperson := order.Salesperson if id, ok := nameInfo[salesperson]; ok { //sql3 := "update dateexport_order set salesperson_id = ? where order_code=?" update, err := Mysql.Table("dataexport_order").Where("order_code=?", orderCode).Update(map[string]interface{}{ "salesperson_id": id, }) if err != nil || update < 1 { errCount++ log.Printf("更新失败:订单号:%v,销售人员:%v,销售人员id:%v ", orderCode, salesperson, id) fmt.Println("更新失败", err) continue } successCount++ log.Printf("更新完成:订单号:%v,销售人员:%v,销售人员id:%v", orderCode, salesperson, id) } else { errCount++ log.Printf("未获取到对应用户id,请核实销售人员姓名:订单号:%v,销售人员:%v,", orderCode, salesperson) } } log.Printf("共%v条数据,更新成功%v,更新失败%v", count, successCount, errCount) //log.Printf("需要手动核实的数据:%v", errData) }