Open mandomwu opened 7 years ago
由于没有时间测试, 所以我简单处理了一下,目前我的解决方案是 iw, := goSnowFlake.NewIdWorker(1) for , v := range names { pid, := strconv.Atoi(v) id, err := iw.NextId() if err != nil { id, = iw.NextId() } groupPermission.Id = id groupPermission.Permissionid = int64(pid) err = AddGroupsPermission(groupPermission) }
func (this *ManageGroupPermissionController) Post() { 在这个函数中, 在for循环中使用了SnowFlakeId来生成id 但实际使用过程中发现, 如果更新太快, 会导致snowFlakeid获取的id重复, 导致设置权限失败
看了一下snowFlakeid, 发现这个东西是根据当前毫秒级时间戳+线程id+序号 由于每次都生成新的序号, 导致在同已毫秒内获取到的id都是一样的,建议对Util的SnowFlakeId进行修改
由于没有时间测试, 所以我简单处理了一下,目前我的解决方案是 iw, := goSnowFlake.NewIdWorker(1) for , v := range names { pid, := strconv.Atoi(v) id, err := iw.NextId() if err != nil { id, = iw.NextId() } groupPermission.Id = id groupPermission.Permissionid = int64(pid) err = AddGroupsPermission(groupPermission) }