diff --git a/src/action/upgrade.go b/src/action/upgrade.go index e17a6ad713933d8e124892a92bdcb9f3d809904a..1dbc7e16f01ca9d0c683e8664ba01c1c400a66fc 100644 --- a/src/action/upgrade.go +++ b/src/action/upgrade.go @@ -5,6 +5,7 @@ import ( "fmt" constant "github.com/easysoft/zendata/src/utils/const" logUtils "github.com/easysoft/zendata/src/utils/log" + numbUtils "github.com/easysoft/zendata/src/utils/numb" _ "github.com/mattn/go-sqlite3" ) @@ -12,30 +13,40 @@ import ( func Upgrade() { db, err := sql.Open(constant.SqliteDriver, constant.SqliteSource) if err != nil { - logUtils.Screen("fail to open " + constant.SqliteSource) + logUtils.Screen("fail to open " + constant.SqliteSource + ": " + err.Error()) return } - sql := "SELECT city.id, city.name, parent.name state, city.zipCode, city.cityCode " + - "FROM cn_city city JOIN cn_city parent ON city.parentCode = parent.areaCode" + sql := "SELECT id, 'name', state, zipCode, cityCode FROM city" rows, err := db.Query(sql) if err != nil { - logUtils.Screen("fail to exec query " + sql) + logUtils.Screen("fail to exec query " + sql + ": " + err.Error()) return } + sqls := make([]string, 0) for rows.Next() { var id int var name string var state string - var zipCode int - var cityCode int + var zipCode string + var cityCode string err = rows.Scan(&id, &name, &state, &zipCode, &cityCode) if err != nil { - logUtils.Screen("fail to get sqlite3 row") + logUtils.Screen("fail to get sqlite3 row: " + err.Error()) return } - fmt.Println(id, name, state, zipCode, cityCode) + fmt.Println(numbUtils.NumToBHex(id), name, state, zipCode, cityCode) + + sql := fmt.Sprintf("UPDATE city SET seq = '%s' where id = %d;", numbUtils.NumToBHex(id), id) + sqls = append(sqls, sql) + } + + for _, sql := range sqls { + _, err := db.Exec(sql) + if err != nil { + logUtils.Screen("fail to update row: " + err.Error()) + } } } \ No newline at end of file diff --git a/src/utils/numb/numb.go b/src/utils/numb/numb.go new file mode 100644 index 0000000000000000000000000000000000000000..6916cd300a78ae97787462349df11cfb3d039225 --- /dev/null +++ b/src/utils/numb/numb.go @@ -0,0 +1,37 @@ +package numbUtils + +import ( + "math" + "strings" +) + +var num2char = "0123456789abcdefghijklmnopqrstuvwxyz" + +func NumToBHex(num int) string { + n := 36 + + numStr := "" + for num != 0 { + yu := num % n + numStr = string(num2char[yu]) + numStr + num = num / n + } + + numStr = strings.ToUpper(numStr) + numStr = strings.Repeat("0", 5 - len(numStr)) + numStr + return numStr +} + +func BHex2Num(str string) int { + n := 36 + + str = strings.ToLower(str) + v := 0.0 + length := len(str) + for i := 0; i < length; i++ { + s := string(str[i]) + index := strings.Index(num2char, s) + v += float64(index) * math.Pow(float64(n), float64(length-1-i)) // 倒序 + } + return int(v) +}