This commit is contained in:
cdle
2021-09-27 09:56:06 +08:00
parent 13d58917a5
commit dc9c2e3556
+32 -2
View File
@@ -2,7 +2,9 @@ package dwz
import ( import (
"fmt" "fmt"
"math"
"net/http" "net/http"
"strings"
"github.com/cdle/sillyGirl/core" "github.com/cdle/sillyGirl/core"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@@ -40,13 +42,41 @@ func getDwz(url string) string {
Url: url, Url: url,
} }
dwz.Create(su) dwz.Create(su)
return dwz.Get("address", "https://4co.cc"+"/d"+fmt.Sprint(su.ID)) return dwz.Get("address", "https://4co.cc"+"/d"+encode(int64(su.ID)))
} }
func getWz(id string) string { func getWz(id string) string {
su := &ShortUrl{ su := &ShortUrl{
ID: core.Int(id), ID: int(decode(id)),
} }
dwz.First(su) dwz.First(su)
return fmt.Sprint(su.Url) return fmt.Sprint(su.Url)
} }
var chars string = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
func encode(num int64) string {
bytes := []byte{}
for num > 0 {
bytes = append(bytes, chars[num%62])
num = num / 62
}
reverse(bytes)
return string(bytes)
}
func decode(str string) int64 {
var num int64
n := len(str)
for i := 0; i < n; i++ {
pos := strings.IndexByte(chars, str[i])
num += int64(math.Pow(62, float64(n-i-1)) * float64(pos))
}
return num
}
func reverse(a []byte) {
for left, right := 0, len(a)-1; left < right; left, right = left+1, right-1 {
a[left], a[right] = a[right], a[left]
}
}