|
|
@@ -0,0 +1,23 @@ |
|
|
|
package svc |
|
|
|
|
|
|
|
import ( |
|
|
|
"errors" |
|
|
|
"fmt" |
|
|
|
) |
|
|
|
|
|
|
|
// HandleDistributedLockForVideo 处理短视频更新时获取锁和释放锁 如果加锁成功,使用语句 ` defer cb() ` 释放锁 |
|
|
|
func HandleDistributedLockForComm(uid, fix, requestIdPrefix string) (cb func(), err error) { |
|
|
|
// 获取虚拟币更新锁 |
|
|
|
balanceLockKey := fmt.Sprintf(fix, uid) |
|
|
|
requestId := GetDistributedLockRequestId(requestIdPrefix) |
|
|
|
balanceLockOk := TryGetDistributedLock(balanceLockKey, requestId, true) |
|
|
|
if !balanceLockOk { |
|
|
|
return nil, errors.New("系统繁忙,请稍后再试") |
|
|
|
} |
|
|
|
|
|
|
|
cb = func() { |
|
|
|
_, _ = ReleaseDistributedLock(balanceLockKey, requestId) |
|
|
|
} |
|
|
|
|
|
|
|
return cb, nil |
|
|
|
} |