lock-upme / OPMS

OPMS项目+OA管理系统
GNU General Public License v2.0
1.09k stars 468 forks source link

权限管理更新错误 #19

Open mandomwu opened 7 years ago

mandomwu commented 7 years ago

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) }