package tencentdb
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
/*
|
|
* 连接多个字符串
|
|
* 2019/05/05
|
|
*/
|
|
func StringJoin(s ...string) string {
|
|
var build strings.Builder
|
|
if len(s) > 0 {
|
|
for _, v := range s {
|
|
build.WriteString(v)
|
|
}
|
|
}
|
|
|
|
return build.String()
|
|
}
|
|
|
|
/**
|
|
* 字符串转大驼峰 ios_bbbbbbbb -> IosBbbbbbbbb
|
|
*/
|
|
func StrFirstToUpper(str string) string {
|
|
str = strings.ReplaceAll(str, "`", "")
|
|
temp := strings.Split(str, "_")
|
|
var upperStr string
|
|
for y := 0; y < len(temp); y++ {
|
|
vv := []rune(temp[y])
|
|
for i := 0; i < len(vv); i++ {
|
|
if i == 0 {
|
|
vv[i] -= 32
|
|
upperStr += string(vv[i])
|
|
} else {
|
|
upperStr += string(vv[i])
|
|
}
|
|
}
|
|
}
|
|
return upperStr
|
|
}
|
|
|
|
func ToString(v interface{}) string {
|
|
var value string
|
|
switch v.(type) {
|
|
case string:
|
|
value = v.(string)
|
|
case int:
|
|
value = strconv.Itoa(v.(int))
|
|
case float64:
|
|
value = strconv.FormatFloat(v.(float64), 'f', 2, 64)
|
|
case float32:
|
|
value = strconv.FormatFloat(float64(v.(float32)), 'f', 2, 64)
|
|
case int64:
|
|
value = strconv.FormatInt(v.(int64), 10)
|
|
case []uint8:
|
|
value = string(v.([]uint8))
|
|
// case []byte:
|
|
// value = string(v.([]byte))
|
|
case interface{}:
|
|
value = v.(string)
|
|
case nil:
|
|
value = ""
|
|
default:
|
|
log.Println("参数值类型错误", v, "not in string|int|float64|interface|int64")
|
|
}
|
|
return strings.Trim(value, " ")
|
|
}
|
|
|
|
/**
|
|
* 是否存在在字符切片中
|
|
*/
|
|
func IsInStringArray(arr []string, str string) bool {
|
|
var isIn bool = false
|
|
length := len(arr)
|
|
if length < 1 {
|
|
return false
|
|
}
|
|
for _, item := range arr {
|
|
if item == str {
|
|
isIn = true
|
|
break
|
|
}
|
|
}
|
|
return isIn
|
|
}
|
|
|
|
func ToInt(inter interface{}) int {
|
|
var value int
|
|
|
|
switch inter.(type) {
|
|
|
|
case string:
|
|
value, _ = strconv.Atoi(inter.(string))
|
|
case int:
|
|
value = inter.(int)
|
|
case int64:
|
|
value = int(inter.(int64))
|
|
case float64:
|
|
value, _ = strconv.Atoi(fmt.Sprintf("%1.0f", inter))
|
|
case nil:
|
|
value = 0
|
|
case interface{}:
|
|
value = inter.(int)
|
|
default:
|
|
log.Println("参数值类型错误", inter, "not in string|int|float64|interface|int64")
|
|
}
|
|
return value
|
|
}
|
|
|
|
func ToInt64(inter interface{}) int64 {
|
|
var value int64
|
|
|
|
switch inter.(type) {
|
|
|
|
case string:
|
|
value, _ = strconv.ParseInt(inter.(string), 10, 64)
|
|
case int:
|
|
value = int64(inter.(int))
|
|
case int64:
|
|
value = inter.(int64)
|
|
case float64:
|
|
value_int, _ := strconv.Atoi(fmt.Sprintf("%1.0f", inter))
|
|
value = int64(value_int)
|
|
case nil:
|
|
value = 0
|
|
case interface{}:
|
|
if _, ok := inter.(int64); !ok {
|
|
value = inter.(int64)
|
|
}
|
|
default:
|
|
log.Println("参数值类型错误", inter, "not in string|int|float64|interface|int64")
|
|
}
|
|
return value
|
|
}
|
|
|
|
/**
|
|
* 根据第几页计算从第几行开始
|
|
* @param pageNum 第几页
|
|
* @param pageSize 每页几行
|
|
* @return from,offset 开始行数,偏移量
|
|
* 2020/05/15
|
|
* gz
|
|
*/
|
|
func GetPage(pageNum, pageSize interface{}) (string, string) {
|
|
|
|
var from string
|
|
var offset int = ToInt(pageSize)
|
|
|
|
var pageNumInt, pageSizeInt int = ToInt(pageNum), ToInt(pageSize)
|
|
|
|
if pageNumInt < 1 {
|
|
pageNumInt = 1
|
|
}
|
|
|
|
if pageSizeInt < 1 {
|
|
offset = 10
|
|
pageSizeInt = 10
|
|
}
|
|
|
|
from = ToString((pageNumInt - 1) * pageSizeInt)
|
|
|
|
return from, ToString(offset)
|
|
}
|