杰网资源 Design By www.escxy.com
年(2位)+一年中的第几天(3位)+指定位数随机数
//生成单号
//06123xxxxx
//sum 最少10位,sum 表示全部单号位数
func MakeYearDaysRand(sum int) string {
//年
strs := time.Now().Format("06")
//一年中的第几天
days := strconv.Itoa(GetDaysInYearByThisYear())
count := len(days)
if count < 3 {
//重复字符0
days = strings.Repeat("0", 3-count) + days
}
//组合
strs += days
//剩余随机数
sum = sum - 5
if sum < 1 {
sum = 5
}
//0~9999999的随机数
ran := GetRand()
pow := math.Pow(10, float64(sum)) - 1
//fmt.Println("sum=>", sum)
//fmt.Println("pow=>", pow)
result := strconv.Itoa(ran.Intn(int(pow)))
count = len(result)
//fmt.Println("result=>", result)
if count < sum {
//重复字符0
result = strings.Repeat("0", sum-count) + result
}
//组合
strs += result
return strs
}
//年中的第几天
func GetDaysInYearByThisYear() int {
now := time.Now()
total := 0
arr := []int{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
y, month, d := now.Date()
m := int(month)
for i := 0; i < m-1; i++ {
total = total + arr[i]
}
if (y%400 == 0 || (y%4 == 0 && y%100 != 0)) && m > 2 {
total = total + d + 1
} else {
total = total + d
}
return total;
}
补充:基于GO语言实现的支持高并发订单号生成函数
1.固定24位长度订单号,毫秒+进程id+序号。
2.同一毫秒内只要不超过一万次并发,则订单号不会重复。
github地址:https://github.com/w3liu/go-common/blob/master/number/ordernum/ordernum.go
package ordernum
import (
"fmt"
"github.com/w3liu/go-common/constant/timeformat"
"os"
"sync/atomic"
"time"
)
var num int64
//生成24位订单号
//前面17位代表时间精确到毫秒,中间3位代表进程id,最后4位代表序号
func Generate(t time.Time) string {
s := t.Format(timeformat.Continuity)
m := t.UnixNano()/1e6 - t.UnixNano()/1e9*1e3
ms := sup(m, 3)
p := os.Getpid() % 1000
ps := sup(int64(p), 3)
i := atomic.AddInt64(&num, 1)
r := i % 10000
rs := sup(r, 4)
n := fmt.Sprintf("%s%s%s%s", s, ms, ps, rs)
return n
}
//对长度不足n的数字前面补0
func sup(i int64, n int) string {
m := fmt.Sprintf("%d", i)
for len(m) < n {
m = fmt.Sprintf("0%s", m)
}
return m
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
标签:
golang,生成定单号
杰网资源 Design By www.escxy.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
杰网资源 Design By www.escxy.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。



