切换导航条
此项目
正在载入...
登录
allied-creation
/
performance
·
提交
转到一个项目
GitLab
转到群组
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
差异文件
浏览文件
作者
tangxvhui
2 years ago
提交
5971bd4f497003c71f1a1cc17734a0b0191bddd4
2 个父辈
6216d38c
108b9c3d
Merge branch 'test' of
http://gitlab.fjmaimaimai.com/allied-creation/performance
into test
显示空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
39 行增加
和
0 行删除
pkg/application/evaluation_project/project_service.go
pkg/infrastructure/xredis/redis_lock_project.go
pkg/application/evaluation_project/project_service.go
查看文件 @
5971bd4
...
...
@@ -2,6 +2,7 @@ package service
import
(
"fmt"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/xredis"
"strconv"
"strings"
"time"
...
...
@@ -501,6 +502,15 @@ func (rs *EvaluationProjectService) List(in *command.QueryProjectCommand) (inter
}
func
(
rs
*
EvaluationProjectService
)
Activate
(
in
*
command
.
ActivateProjectCommand
)
(
interface
{},
error
)
{
lock
:=
xredis
.
NewLockProjectId
(
int
(
in
.
Id
))
err
:=
lock
.
Lock
()
if
err
!=
nil
{
return
nil
,
application
.
ThrowError
(
application
.
INTERNAL_SERVER_ERROR
,
err
.
Error
())
}
defer
func
()
{
lock
.
UnLock
()
}()
transactionContext
,
err
:=
factory
.
ValidateStartTransaction
(
in
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -736,6 +746,9 @@ func (rs *EvaluationProjectService) Resume(in *command.ActivateProjectCommand) (
if
project
.
State
==
domain
.
ProjectStateEnable
{
return
nil
,
application
.
ThrowError
(
application
.
BUSINESS_ERROR
,
"项目已启动"
)
}
if
project
.
State
==
domain
.
ProjectStatePause
{
return
nil
,
application
.
ThrowError
(
application
.
BUSINESS_ERROR
,
"项目暂停中,先进行恢复"
)
}
// 周期内的所有项目,已启用的员工不能重复被评估
_
,
projects
,
err
:=
projectRepository
.
Find
(
map
[
string
]
interface
{}{
"companyId"
:
project
.
CompanyId
,
"cycleId"
:
project
.
CycleId
},
"template"
)
...
...
pkg/infrastructure/xredis/redis_lock_project.go
0 → 100644
查看文件 @
5971bd4
package
xredis
import
(
"fmt"
"github.com/go-redsync/redsync/v4"
)
type
LockProjectId
struct
{
m
*
redsync
.
Mutex
}
func
NewLockProjectId
(
id
int
)
*
LockProjectId
{
key
:=
fmt
.
Sprintf
(
"performance:project_id:%d"
,
id
)
return
&
LockProjectId
{
m
:
rsync
.
NewMutex
(
key
),
}
}
func
(
lk
*
LockProjectId
)
Lock
()
error
{
return
lk
.
m
.
Lock
()
}
func
(
lk
*
LockProjectId
)
UnLock
()
(
bool
,
error
)
{
return
lk
.
m
.
Unlock
()
}
...
...
请
注册
或
登录
后发表评论