1 Star 0 Fork 0

tomatomeatman / GolangRepository

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
SequenceUtil.go 1.49 KB
一键复制 编辑 原始数据 按行查看 历史
tomatomeatman 提交于 2022-10-08 11:27 . no commit message
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)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/tomatomeatman/golang-repository.git
git@gitee.com:tomatomeatman/golang-repository.git
tomatomeatman
golang-repository
GolangRepository
1a0844a34204

搜索帮助

344bd9b3 5694891 D2dac590 5694891