init
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package utils
|
||||
|
||||
import "strconv"
|
||||
|
||||
type Convert struct{}
|
||||
|
||||
func NewConvert() *Convert {
|
||||
return &Convert{}
|
||||
}
|
||||
|
||||
// bool 转化为字符串
|
||||
func (convert *Convert) BoolToString(boolValue bool) string {
|
||||
if boolValue == true {
|
||||
return "true"
|
||||
} else {
|
||||
return "false"
|
||||
}
|
||||
}
|
||||
|
||||
//bool 转化为 int
|
||||
func (convert *Convert) BoolToInt(boolValue bool) int {
|
||||
if boolValue == true {
|
||||
return 1
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
//int 转化为 bool
|
||||
func (convert *Convert) IntToBool(number int) bool {
|
||||
if number == 0 {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
//int 转化为字符串
|
||||
//base 范围 2-32 进制
|
||||
func (convert *Convert) IntToString(number int64, base int) string {
|
||||
return strconv.FormatInt(number, base)
|
||||
}
|
||||
|
||||
//string to int(10进制)
|
||||
func (convert *Convert) StringToInt(str string) int {
|
||||
intValue, _ := strconv.Atoi(str)
|
||||
return intValue
|
||||
}
|
||||
|
||||
// string to int64(10进制)
|
||||
func (convert *Convert) StringToInt64(str string) int64 {
|
||||
intValue, _ := strconv.ParseInt(str, 10, 64)
|
||||
return intValue
|
||||
}
|
||||
|
||||
//int 转化为10进制字符串 IntToString(number, 10)
|
||||
func (convert *Convert) IntToTenString(number int) string {
|
||||
return strconv.Itoa(number)
|
||||
}
|
||||
|
||||
// float 转化为字符串
|
||||
func (convert *Convert) FloatToString(f float64, fmt byte, prec, bitSize int) string {
|
||||
return strconv.FormatFloat(f, fmt, prec, bitSize)
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"github.com/astaxie/beego"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Date struct{}
|
||||
|
||||
func NewDate() *Date {
|
||||
return &Date{}
|
||||
}
|
||||
|
||||
//格式化 unix 时间戳
|
||||
func (date *Date) Format(unixTime interface{}, format string) string {
|
||||
|
||||
convert := NewConvert();
|
||||
var convertTime int64
|
||||
|
||||
switch unixTime.(type) {
|
||||
case string:
|
||||
convertTime = convert.StringToInt64(unixTime.(string))
|
||||
case int:
|
||||
convertTime = int64(unixTime.(int))
|
||||
case int8:
|
||||
convertTime = int64(unixTime.(int8))
|
||||
case int16:
|
||||
convertTime = int64(unixTime.(int16))
|
||||
case int32:
|
||||
convertTime = int64(unixTime.(int32))
|
||||
}
|
||||
|
||||
return beego.Date(time.Unix(convertTime, 0), format);
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
)
|
||||
|
||||
const (
|
||||
BASE_64_TABLE = "1234567890poiuytreqwasdfghjklmnbvcxzQWERTYUIOPLKJHGFDSAZXCVBNM-_"
|
||||
)
|
||||
|
||||
type Encrypt struct{}
|
||||
|
||||
func NewEncrypt() *Encrypt {
|
||||
return &Encrypt{}
|
||||
}
|
||||
|
||||
//base64 加密
|
||||
func (encrypt *Encrypt) Base64Encode(str string) string {
|
||||
var coder = base64.NewEncoding(BASE_64_TABLE)
|
||||
var src []byte = []byte(str)
|
||||
return string([]byte(coder.EncodeToString(src)))
|
||||
}
|
||||
|
||||
//base64 加密
|
||||
func (encrypt *Encrypt) Base64EncodeBytes(bytes []byte) []byte {
|
||||
var coder = base64.NewEncoding(BASE_64_TABLE)
|
||||
return []byte(coder.EncodeToString(bytes))
|
||||
}
|
||||
|
||||
//base64 解密
|
||||
func (encrypt *Encrypt) Base64Decode(str string) (string, error) {
|
||||
var src []byte = []byte(str)
|
||||
var coder = base64.NewEncoding(BASE_64_TABLE)
|
||||
by, err := coder.DecodeString(string(src))
|
||||
return string(by), err
|
||||
}
|
||||
|
||||
//base64 解密
|
||||
func (encrypt *Encrypt) Base64DecodeBytes(str string) ([]byte, error) {
|
||||
var coder = base64.NewEncoding(BASE_64_TABLE)
|
||||
return coder.DecodeString(str)
|
||||
}
|
||||
|
||||
//md5加密
|
||||
func (encrypt *Encrypt) Md5Encode(str string) string {
|
||||
hash := md5.New()
|
||||
hash.Write([]byte(str))
|
||||
return hex.EncodeToString(hash.Sum(nil))
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Misc struct{}
|
||||
|
||||
func NewMisc() *Misc {
|
||||
return &Misc{}
|
||||
}
|
||||
func (m *Misc) RandString(strlen int) string {
|
||||
codes := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
||||
codeLen := len(codes)
|
||||
data := make([]byte, strlen)
|
||||
rand.Seed(time.Now().UnixNano() + rand.Int63() + rand.Int63() + rand.Int63() + rand.Int63())
|
||||
for i := 0; i < strlen; i++ {
|
||||
idx := rand.Intn(codeLen)
|
||||
data[i] = byte(codes[idx])
|
||||
}
|
||||
return string(data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页方法
|
||||
* @param type $total 一共多少记录
|
||||
* @param type $page 当前是第几页
|
||||
* @param type $pagesize 每页多少
|
||||
* @param type $url url是什么,url里面的{page}会被替换成页码
|
||||
* @param array $order 分页条的组成,是一个数组,可以按着1-6的序号,选择分页条组成部分和每个部分的顺序
|
||||
* @param int $a_count 分页条中a页码链接的总数量,不包含当前页的a标签,默认10个。
|
||||
* @return type String
|
||||
* echo Sr::page(100,3,10,'?article/list/{page}',array(3,4,5,1,2,6));
|
||||
*/
|
||||
func (m *Misc) Page(total, page, pagesize int, url string, args ...interface{}) string {
|
||||
order := []int{1, 2, 3, 4, 5, 6}
|
||||
a_count := 10
|
||||
if len(args) >= 1 {
|
||||
order = args[0].([]int)
|
||||
}
|
||||
if len(args) >= 2 {
|
||||
a_count = args[1].(int)
|
||||
}
|
||||
a_num := a_count
|
||||
first := "首页"
|
||||
last := "尾页"
|
||||
pre := "上页"
|
||||
next := "下页"
|
||||
if a_num%2 == 0 {
|
||||
a_num++
|
||||
}
|
||||
pages := int(math.Ceil(float64(total) / float64(pagesize)))
|
||||
curpage := page
|
||||
if curpage > pages || curpage <= 0 {
|
||||
curpage = 1
|
||||
}
|
||||
body := `<span class="page_body">`
|
||||
prefix := ""
|
||||
subfix := ""
|
||||
start := curpage - ((a_num - 1) / 2)
|
||||
end := curpage + ((a_num - 1) / 2)
|
||||
if start <= 0 {
|
||||
start = 1
|
||||
}
|
||||
if end > pages {
|
||||
end = pages
|
||||
}
|
||||
if pages >= a_num {
|
||||
if curpage <= (a_num-1)/2 {
|
||||
end = a_num
|
||||
}
|
||||
if end-curpage <= (a_num-1)/2 {
|
||||
start -= int(math.Floor(float64(a_num)/float64(2))) - (end - curpage)
|
||||
}
|
||||
}
|
||||
for i := start; i <= end; i++ {
|
||||
if i == curpage {
|
||||
body += fmt.Sprintf(`<a class="page_cur_page" href="javascript:void(0);"><b>%d</b></a>`, i)
|
||||
} else {
|
||||
body += fmt.Sprintf(`<a href="%s">%d</a>`, strings.Replace(url, "{page}", fmt.Sprintf("%d", i), 1), i)
|
||||
|
||||
}
|
||||
}
|
||||
body += "</span>"
|
||||
if curpage > 1 {
|
||||
prefix = fmt.Sprintf(`<span class="page_bar_prefix"><a href="%s">%s</a><a href="%s">%s</a></span>`, strings.Replace(url, "{page}", fmt.Sprintf("%d", 1), 1), first, strings.Replace(url, "{page}", fmt.Sprintf("%d", curpage-1), 1), pre)
|
||||
}
|
||||
if curpage != pages {
|
||||
subfix = fmt.Sprintf(`<span class="page_bar_subfix"><a href="%s">%s</a><a href="%s">%s</a></span>`, strings.Replace(url, "{page}", fmt.Sprintf("%d", curpage+1), 1), next, strings.Replace(url, "{page}", fmt.Sprintf("%d", pages), 1), last)
|
||||
}
|
||||
info := fmt.Sprintf(`<span class="page_cur">第%d/%d页</span>`, curpage, pages)
|
||||
id := fmt.Sprintf("gsd09fhas9d%d%d%d", rand.Intn(1000), rand.Intn(1000), rand.Intn(1000))
|
||||
gostr := fmt.Sprintf(`<script>function ekup(){if(event.keyCode==13){clkyup();}}function clkyup(){var num=document.getElementById('%s').value;if(!/^\d+$/.test(num)||num<=0||num>%d){alert('请输入正确页码!');return;};location='%s'.replace(/\{page\}/,document.getElementById('%s').value);}</script><span class="page_input_num"><input onkeyup="ekup()" type="text" id="%s" style="width:40px;vertical-align:text-baseline;padding:0 2px;font-size:10px;border:1px solid gray;"/></span><span class="page_btn_go" onclick="clkyup();" style="cursor:pointer;">转到</span>`, id, pages, url, id, id)
|
||||
totalstr := fmt.Sprintf(`<span class="page_total">共%d条</span>`, total)
|
||||
pagenation := []string{totalstr, info, prefix, body, subfix, gostr}
|
||||
output := []string{}
|
||||
for _, v := range order {
|
||||
if v-1 < len(pagenation) && v-1 >= 0 {
|
||||
output = append(output, pagenation[v-1])
|
||||
}
|
||||
}
|
||||
if pages > 1 {
|
||||
return strings.Join(output, "")
|
||||
}
|
||||
return ""
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type Urls struct {}
|
||||
|
||||
func NewUrls() *Urls {
|
||||
return &Urls{}
|
||||
}
|
||||
|
||||
func (urls *Urls) UrlEncode(urlStr string) string {
|
||||
|
||||
fmt.Println(urlStr)
|
||||
urlParse, _ := url.Parse(urlStr)
|
||||
urlEncode := urlParse.Query().Encode()
|
||||
fmt.Println(urlParse.EscapedPath());
|
||||
return "http://" + urlParse.Host + urlParse.EscapedPath() + "?" + urlEncode;
|
||||
}
|
||||
Reference in New Issue
Block a user