代码拉取完成,页面将自动刷新
package data
import (
"strconv"
"strings"
"sync"
"time"
)
type SequenceUtil struct{}
var (
SequenceUtilLock sync.Mutex //同步锁
seriesNum = 0 //累计值
)
/**
* 取累计值(有代码锁)
* @param prefix 前缀
* @return
*/
func (this SequenceUtil) GetSeriesNum(prefix string) string {
SequenceUtilLock.Lock() //加锁
seriesNum = seriesNum + 1
if seriesNum > 99 {
seriesNum = 1
}
var build strings.Builder
build.WriteString(strings.TrimSpace(prefix))
str := strconv.Itoa(seriesNum)
for i := len(str); i < 3; i++ {
build.WriteString("0")
}
build.WriteString(str)
SequenceUtilLock.Unlock() //解锁
return build.String()
}
/**
* 取指定长度的流水号
* @param iMaxLength 指定长度
* @param prefix 前缀
* @return
*/
func (this SequenceUtil) GetSequence(iMaxLength int, prefix ...string) string {
prefixStr := time.Now().Format("20060102150405")
if len(prefix) > 0 {
var build strings.Builder
for _, val := range prefix {
build.WriteString(strings.TrimSpace(val))
}
build.WriteString(prefixStr)
prefixStr = build.String()
}
tmp := this.GetSeriesNum(prefixStr)
if len(tmp) < iMaxLength {
return tmp
}
return tmp[len(tmp)-iMaxLength : iMaxLength]
}
/**
* 取时间显示式的流水号
* @return 返回形式举例:20200521094216048001
*/
func (this SequenceUtil) Get() string {
date := time.Now().Format("20060102150405")
return this.GetSeriesNum(date)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。