| | |
| | | package kingdee |
| | | |
| | | import "fmt" |
| | | import ( |
| | | "encoding/json" |
| | | |
| | | "kingdee-dbapi/config" |
| | | "kingdee-dbapi/logger" |
| | | "kingdee-dbapi/nsqclient" |
| | | ) |
| | | |
| | | func QueryMsgHandle(data []byte) error { |
| | | fmt.Println("recv msg ", string(data)) |
| | | var result []interface{} |
| | | |
| | | var sql = string(data) |
| | | |
| | | logger.Debug("接收到查询请求,%s", sql) |
| | | |
| | | if db == nil { |
| | | logger.Debug("数据库未连接") |
| | | |
| | | return nil |
| | | } |
| | | |
| | | rows, err := db.Raw(`select * from users`).Rows() |
| | | if err != nil { |
| | | result = append(result, err.Error()) |
| | | return err |
| | | } |
| | | |
| | | var colums []string |
| | | for rows.Next() { |
| | | //先获取所有的column |
| | | if colums == nil { |
| | | colums, _ = rows.Columns() |
| | | } |
| | | |
| | | //建立俩个interface数组,columnPointers中存在columns的地址 |
| | | columns := make([]interface{}, len(colums)) |
| | | columnPointers := make([]interface{}, len(colums)) |
| | | for i, _ := range columns { |
| | | //赋值地址 |
| | | columnPointers[i] = &columns[i] |
| | | } |
| | | |
| | | //扫描结果 |
| | | rows.Scan(columnPointers...) |
| | | m := make(map[string]interface{}) |
| | | for i, colName := range colums { |
| | | val := columnPointers[i].(*interface{}) |
| | | m[colName] = *val |
| | | } |
| | | |
| | | result = append(result, m) |
| | | //result = append(result, row) |
| | | } |
| | | |
| | | logger.Debug("数据库返回数据%+v", result) |
| | | b, _ := json.Marshal(result) |
| | | |
| | | ok := nsqclient.Produce(config.Options.ReplyTopic, b) |
| | | if !ok { |
| | | logger.Warn("应答查询请求失败.") |
| | | } else { |
| | | logger.Debug("应答查询请求成功. 数据:%s", string(b)) |
| | | } |
| | | |
| | | return nil |
| | | } |