Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hilo-group
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hujiebin
hilo-group
Commits
a28a0a76
Commit
a28a0a76
authored
Mar 07, 2023
by
hujiebin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:事务操作
parent
d5596af0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
51 additions
and
48 deletions
+51
-48
group_grade.go
domain/model/groupPower_m/group_grade.go
+51
-48
No files found.
domain/model/groupPower_m/group_grade.go
View file @
a28a0a76
...
...
@@ -131,58 +131,61 @@ func GetGroupPowerOnMic(model *domain.Model, groupPowerId, userId mysql.ID) (*Gr
const
MaxMinuteTimes
=
18
// 增加势力上麦经验
// 事务操作
func
IncrGroupPowerExpOnMic
(
model
*
domain
.
Model
,
groupPowerId
,
userId
mysql
.
ID
,
joinMicTimestamp
int64
)
error
{
// 获取用户上麦奖励历史
onMicDetails
,
err
:=
GetGroupPowerUserOnMicDetails
(
model
,
groupPowerId
,
userId
)
if
err
!=
nil
{
return
err
}
numDetails
:=
len
(
onMicDetails
)
if
numDetails
>=
MaxMinuteTimes
{
// 上麦经验贡献值最多1800,1分钟100
return
nil
}
onMic
,
err
:=
GetGroupPowerOnMic
(
model
,
groupPowerId
,
userId
)
if
err
!=
nil
{
return
err
}
onMicSeconds
:=
time
.
Now
()
.
Unix
()
-
joinMicTimestamp
if
onMic
.
LastCalTs
==
joinMicTimestamp
{
onMicSeconds
=
onMicSeconds
-
int64
(
numDetails
*
600
)
// 扣除之前加过的时间
}
var
moreDetails
[]
*
GroupPowerOnMicDetail
totalMinuteTimes
:=
int
((
onMic
.
Seconds
+
onMicSeconds
)
%
600
)
// 今天实际能加经验次数
if
totalMinuteTimes
>=
MaxMinuteTimes
{
totalMinuteTimes
=
MaxMinuteTimes
}
if
totalMinuteTimes
>
numDetails
{
for
minute
:=
numDetails
+
1
;
minute
<=
totalMinuteTimes
;
minute
++
{
moreDetails
=
append
(
moreDetails
,
&
GroupPowerOnMicDetail
{
Date
:
time
.
Now
()
.
Format
(
"2006-01-02"
),
GroupPowerId
:
groupPowerId
,
UserId
:
userId
,
MinuteTimes
:
minute
,
})
return
model
.
Transaction
(
func
(
model
*
domain
.
Model
)
error
{
// 获取用户上麦奖励历史
onMicDetails
,
err
:=
GetGroupPowerUserOnMicDetails
(
model
,
groupPowerId
,
userId
)
if
err
!=
nil
{
return
err
}
}
// 有更多麦上10分钟,可以加经验
if
len
(
moreDetails
)
>
0
{
for
_
,
detail
:=
range
moreDetails
{
// 添加明细,避免重复计算
if
err
:=
model
.
DB
()
.
Model
(
GroupPowerOnMicDetail
{})
.
Create
(
detail
)
.
Error
;
err
!=
nil
{
return
err
numDetails
:=
len
(
onMicDetails
)
if
numDetails
>=
MaxMinuteTimes
{
// 上麦经验贡献值最多1800,1分钟100
return
nil
}
onMic
,
err
:=
GetGroupPowerOnMic
(
model
,
groupPowerId
,
userId
)
if
err
!=
nil
{
return
err
}
onMicSeconds
:=
time
.
Now
()
.
Unix
()
-
joinMicTimestamp
if
onMic
.
LastCalTs
==
joinMicTimestamp
{
onMicSeconds
=
onMicSeconds
-
int64
(
numDetails
*
600
)
// 扣除之前加过的时间
}
var
moreDetails
[]
*
GroupPowerOnMicDetail
totalMinuteTimes
:=
int
((
onMic
.
Seconds
+
onMicSeconds
)
%
600
)
// 今天实际能加经验次数
if
totalMinuteTimes
>=
MaxMinuteTimes
{
totalMinuteTimes
=
MaxMinuteTimes
}
if
totalMinuteTimes
>
numDetails
{
for
minute
:=
numDetails
+
1
;
minute
<=
totalMinuteTimes
;
minute
++
{
moreDetails
=
append
(
moreDetails
,
&
GroupPowerOnMicDetail
{
Date
:
time
.
Now
()
.
Format
(
"2006-01-02"
),
GroupPowerId
:
groupPowerId
,
UserId
:
userId
,
MinuteTimes
:
minute
,
})
}
}
// 有更多麦上10分钟,可以加经验
if
len
(
moreDetails
)
>
0
{
for
_
,
detail
:=
range
moreDetails
{
// 添加明细,避免重复计算
if
err
:=
model
.
DB
()
.
Model
(
GroupPowerOnMicDetail
{})
.
Create
(
detail
)
.
Error
;
err
!=
nil
{
return
err
}
// 每10分钟增加100点经验
if
err
:=
IncrGroupPowerExp
(
model
,
groupPowerId
,
100
);
err
!=
nil
{
return
err
}
}
// 每10分钟增加100点经验
if
err
:=
IncrGroupPowerExp
(
model
,
groupPowerId
,
100
);
err
!=
nil
{
// 更新micExp信息
onMic
.
Seconds
=
onMic
.
Seconds
+
onMicSeconds
onMic
.
LastCalTs
=
joinMicTimestamp
if
err
:=
model
.
DB
()
.
Save
(
onMic
)
.
Error
;
err
!=
nil
{
return
err
}
}
// 更新micExp信息
onMic
.
Seconds
=
onMic
.
Seconds
+
onMicSeconds
onMic
.
LastCalTs
=
joinMicTimestamp
if
err
:=
model
.
DB
()
.
Save
(
onMic
)
.
Error
;
err
!=
nil
{
return
err
}
}
return
nil
return
nil
})
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment