|
@@ -13,6 +13,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"math"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
@@ -59,13 +60,14 @@ func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string
|
|
|
|
|
|
// create sha1 encode string
|
|
|
sh := sha1.New()
|
|
|
- sh.Write([]byte(data + SecretKey + startStr + endStr + fmt.Sprintf("%d", minutes)))
|
|
|
+ sh.Write([]byte(data + SecretKey + startStr + endStr + ToStr(minutes)))
|
|
|
encoded := hex.EncodeToString(sh.Sum(nil))
|
|
|
|
|
|
code := fmt.Sprintf("%s%06d%s", startStr, minutes, encoded)
|
|
|
return code
|
|
|
}
|
|
|
|
|
|
+// TODO:
|
|
|
func RenderTemplate(TplNames string, Data map[interface{}]interface{}) string {
|
|
|
// if beego.RunMode == "dev" {
|
|
|
// beego.BuildTemplate(beego.ViewsPath)
|
|
@@ -300,6 +302,57 @@ func DateFormat(t time.Time, format string) string {
|
|
|
return t.Format(format)
|
|
|
}
|
|
|
|
|
|
+type argInt []int
|
|
|
+
|
|
|
+func (a argInt) Get(i int, args ...int) (r int) {
|
|
|
+ if i >= 0 && i < len(a) {
|
|
|
+ r = a[i]
|
|
|
+ }
|
|
|
+ if len(args) > 0 {
|
|
|
+ r = args[0]
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// convert any type to string
|
|
|
+func ToStr(value interface{}, args ...int) (s string) {
|
|
|
+ switch v := value.(type) {
|
|
|
+ case bool:
|
|
|
+ s = strconv.FormatBool(v)
|
|
|
+ case float32:
|
|
|
+ s = strconv.FormatFloat(float64(v), 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 32))
|
|
|
+ case float64:
|
|
|
+ s = strconv.FormatFloat(v, 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 64))
|
|
|
+ case int:
|
|
|
+ s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
|
|
|
+ case int8:
|
|
|
+ s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
|
|
|
+ case int16:
|
|
|
+ s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
|
|
|
+ case int32:
|
|
|
+ s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
|
|
|
+ case int64:
|
|
|
+ s = strconv.FormatInt(v, argInt(args).Get(0, 10))
|
|
|
+ case uint:
|
|
|
+ s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
|
|
|
+ case uint8:
|
|
|
+ s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
|
|
|
+ case uint16:
|
|
|
+ s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
|
|
|
+ case uint32:
|
|
|
+ s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
|
|
|
+ case uint64:
|
|
|
+ s = strconv.FormatUint(v, argInt(args).Get(0, 10))
|
|
|
+ case string:
|
|
|
+ s = v
|
|
|
+ case []byte:
|
|
|
+ s = string(v)
|
|
|
+ default:
|
|
|
+ s = fmt.Sprintf("%v", v)
|
|
|
+ }
|
|
|
+ return s
|
|
|
+}
|
|
|
+
|
|
|
type Actioner interface {
|
|
|
GetOpType() int
|
|
|
GetActUserName() string
|