mirror of
https://github.com/kongyuebin1/dongfeng-pay.git
synced 2024-11-25 19:59:26 +08:00
151 lines
4.0 KiB
Go
151 lines
4.0 KiB
Go
|
/***************************************************
|
|||
|
** @Desc : This file for 共有方法
|
|||
|
** @Time : 2019.04.01 11:48
|
|||
|
** @Author : Joker
|
|||
|
** @File : public_method
|
|||
|
** @Last Modified by : Joker
|
|||
|
** @Last Modified time: 2019-11-29 11:05:28
|
|||
|
** @Software: GoLand
|
|||
|
****************************************************/
|
|||
|
package sys
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"math/rand"
|
|||
|
"merchant/sys/enum"
|
|||
|
"os"
|
|||
|
"strconv"
|
|||
|
"strings"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
type PublicMethod struct{}
|
|||
|
|
|||
|
// 返回当前时间的字符串:2006-01-02 15:04:05
|
|||
|
func (*PublicMethod) GetNowTime() string {
|
|||
|
return time.Now().Format("2006-01-02 15:04:05")
|
|||
|
}
|
|||
|
|
|||
|
// 返回当前时间的字符串:20060102150405
|
|||
|
func (*PublicMethod) GetNowTimeV2() string {
|
|||
|
return time.Now().Format("20060102150405")
|
|||
|
}
|
|||
|
|
|||
|
// 返回格式化的字符串:2006-01-02 15:04:05
|
|||
|
func (*PublicMethod) ParseDatetime(t time.Time) string {
|
|||
|
f := t.Format("2006-01-02 15:04:05")
|
|||
|
if strings.Compare("0001-01-01 00:00:00", f) == 0 {
|
|||
|
f = ""
|
|||
|
}
|
|||
|
return f
|
|||
|
}
|
|||
|
|
|||
|
// 比较是否是同一天
|
|||
|
func (*PublicMethod) IsSameDay(d string) (bool, string) {
|
|||
|
now := time.Now()
|
|||
|
parse, e := time.Parse("2006-01-02 15:04:05", d)
|
|||
|
if e != nil {
|
|||
|
return false, fmt.Sprintf("比较时间:%s 格式不对, %v", d, e)
|
|||
|
}
|
|||
|
year := now.Year()-parse.Year() == 0
|
|||
|
mouth := strings.Compare(now.Month().String(), parse.Month().String()) == 0
|
|||
|
day := now.Day()-parse.Day() == 0
|
|||
|
if year && mouth && day {
|
|||
|
return true, ""
|
|||
|
}
|
|||
|
return false, fmt.Sprintf("比较时间:%s 与今天不是同一天,当天收益清零", d)
|
|||
|
}
|
|||
|
|
|||
|
// 在数字、大写字母、小写字母范围内生成num位的随机字符串
|
|||
|
func (*PublicMethod) RandomString(length int) string {
|
|||
|
// 48 ~ 57 数字
|
|||
|
// 65 ~ 90 A ~ Z
|
|||
|
// 97 ~ 122 a ~ z
|
|||
|
// 一共62个字符,在0~61进行随机,小于10时,在数字范围随机,
|
|||
|
// 小于36在大写范围内随机,其他在小写范围随机
|
|||
|
rand.Seed(time.Now().UnixNano())
|
|||
|
result := make([]string, 0, length)
|
|||
|
for i := 0; i < length; i++ {
|
|||
|
t := rand.Intn(62)
|
|||
|
if t < 10 {
|
|||
|
result = append(result, strconv.Itoa(rand.Intn(10)))
|
|||
|
} else if t < 36 {
|
|||
|
result = append(result, string(rand.Intn(26)+65))
|
|||
|
} else {
|
|||
|
result = append(result, string(rand.Intn(26)+97))
|
|||
|
}
|
|||
|
}
|
|||
|
return strings.Join(result, "")
|
|||
|
}
|
|||
|
|
|||
|
// 生成n位随机数字字符串
|
|||
|
func (*PublicMethod) RandomIntOfString(length int) string {
|
|||
|
result := make([]string, 0, length)
|
|||
|
rand.Seed(time.Now().UnixNano())
|
|||
|
for i := 0; i < length; i++ {
|
|||
|
randInt := rand.Intn(10)
|
|||
|
result = append(result, strconv.Itoa(randInt))
|
|||
|
}
|
|||
|
return strings.Join(result, "")
|
|||
|
}
|
|||
|
|
|||
|
// @Description: 返回当前操作数据库的状态
|
|||
|
// @Author: Joker
|
|||
|
// @Date: 2019.04.01 14:37
|
|||
|
// @Param: code: 状态码,msg; 状态信息:url: 跳转地址; data: json内容
|
|||
|
// @return: Json串
|
|||
|
func (*PublicMethod) JsonFormat(code int, data interface{}, msg string, url string) (json map[string]interface{}) {
|
|||
|
if code == 9 {
|
|||
|
json = map[string]interface{}{
|
|||
|
"code": code,
|
|||
|
"data": data,
|
|||
|
"msg": msg,
|
|||
|
"url": url,
|
|||
|
}
|
|||
|
} else {
|
|||
|
json = map[string]interface{}{
|
|||
|
"code": code,
|
|||
|
"msg": msg,
|
|||
|
"url": url,
|
|||
|
}
|
|||
|
}
|
|||
|
return json
|
|||
|
}
|
|||
|
|
|||
|
// 返回当前操作数据库的状态:成功/失败
|
|||
|
func (*PublicMethod) GetDatabaseStatus(code int) map[string]interface{} {
|
|||
|
msg := enum.FailedString
|
|||
|
if code == enum.SuccessFlag {
|
|||
|
msg = enum.SuccessString
|
|||
|
}
|
|||
|
out := make(map[string]interface{})
|
|||
|
out["code"] = code
|
|||
|
out["msg"] = msg
|
|||
|
return out
|
|||
|
}
|
|||
|
|
|||
|
// 格式化浮点数
|
|||
|
func (*PublicMethod) FormatFloat64ToString(f float64) string {
|
|||
|
if f < 0 {
|
|||
|
f = 0
|
|||
|
}
|
|||
|
return fmt.Sprintf("%0.2f", f)
|
|||
|
}
|
|||
|
|
|||
|
// 判断文件或文件夹是否存在
|
|||
|
// 使用os.Stat()函数返回的错误值进行判断:
|
|||
|
// 如果返回的错误为nil,说明文件或文件夹存在
|
|||
|
// 如果返回的错误类型
|
|||
|
// 使用os.IsNotExist()判断为true,说明文件或文件夹不存在
|
|||
|
// 如果返回的错误为其它类型,则不确定是否在存在
|
|||
|
func (*PublicMethod) PathExists(path string) (bool, error) {
|
|||
|
_, err := os.Stat(path)
|
|||
|
if err == nil {
|
|||
|
return true, nil
|
|||
|
}
|
|||
|
if os.IsNotExist(err) {
|
|||
|
return false, nil
|
|||
|
}
|
|||
|
return false, err
|
|||
|
}
|