Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
A
antai-sport-http-server
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
antai-sport
antai-sport-http-server
Commits
8467c245
Commit
8467c245
authored
Aug 10, 2022
by
liming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
运动数据上传增加成就计算
parent
7a8db2d0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
61 additions
and
7 deletions
+61
-7
AchievementCondition.java
...tai/sport/http/server/constants/AchievementCondition.java
+6
-0
AchievementService.java
.../api/business/achievement/service/AchievementService.java
+46
-4
SportUserTrainingLogService.java
...ness/traininglog/service/SportUserTrainingLogService.java
+9
-3
No files found.
constants/src/main/java/com/antai/sport/http/server/constants/AchievementCondition.java
View file @
8467c245
...
...
@@ -2,4 +2,10 @@ package com.antai.sport.http.server.constants;
public
class
AchievementCondition
{
public
static
final
Integer
SIGN_IN_DAYS
=
10
;
public
static
final
Integer
TEAM_TRAINING
=
20
;
public
static
final
Integer
SIMPLE_MATCH
=
30
;
public
static
final
Integer
ROOM_MODE
=
40
;
public
static
final
Integer
DISTANCE
=
50
;
public
static
final
Integer
CLIMB_DISTANCE
=
60
;
public
static
final
Integer
CALORIE
=
70
;
}
server-api/src/main/java/com/antai/sport/http/server/server/api/business/achievement/service/AchievementService.java
View file @
8467c245
...
...
@@ -2,9 +2,11 @@ package com.antai.sport.http.server.server.api.business.achievement.service;
import
com.antai.sport.http.server.constants.AchievementCondition
;
import
com.antai.sport.http.server.constants.GameCurrencySourceType
;
import
com.antai.sport.http.server.constants.GameMode
;
import
com.antai.sport.http.server.repository.achievement.entity.Achievement
;
import
com.antai.sport.http.server.repository.achievement.entity.AchievementForSportUser
;
import
com.antai.sport.http.server.repository.achievement.mapper.AchievementForSportUserMapper
;
import
com.antai.sport.http.server.repository.sport.entity.SportUserSummary
;
import
com.antai.sport.http.server.server.api.business.achievement.mapper.AchievementBizMapper
;
import
com.antai.sport.http.server.server.api.business.sportusergamecurrency.service.SportUserGameCurrencyService
;
import
org.springframework.stereotype.Service
;
...
...
@@ -31,10 +33,50 @@ public class AchievementService {
* @param sportUserId
*/
public
void
handleSignInAchievement
(
Long
sportUserId
,
Integer
continuousLoginDays
)
{
List
<
Achievement
>
achievementList
=
achievementBizMapper
.
getSignInAchievement
(
AchievementCondition
.
SIGN_IN_DAYS
,
sportUserId
);
this
.
initAchievement
(
sportUserId
,
AchievementCondition
.
SIGN_IN_DAYS
,
continuousLoginDays
);
}
/**
* 处理运动类成就
* 先完成业务后面再考虑性能优化
*
* @param gameMode
* @param summary
*/
public
void
handleSportAchievement
(
Integer
gameMode
,
SportUserSummary
summary
)
{
if
(
gameMode
.
equals
(
GameMode
.
GROUP_TRAINING
))
{
initAchievement
(
summary
.
getUserId
(),
AchievementCondition
.
TEAM_TRAINING
,
summary
.
getTotalTeamTrainingFinishNum
());
}
if
(
gameMode
.
equals
(
GameMode
.
SIMPLE_MATCH
))
{
initAchievement
(
summary
.
getUserId
(),
AchievementCondition
.
SIMPLE_MATCH
,
summary
.
getTotalSimpleMatchFinishNum
());
}
if
(
gameMode
.
equals
(
GameMode
.
ROOM_MODE
))
{
initAchievement
(
summary
.
getUserId
(),
AchievementCondition
.
ROOM_MODE
,
summary
.
getTotalGameModeFinishNum
());
}
initAchievement
(
summary
.
getUserId
(),
AchievementCondition
.
DISTANCE
,
summary
.
getTotalDistance
().
intValue
());
initAchievement
(
summary
.
getUserId
(),
AchievementCondition
.
CLIMB_DISTANCE
,
summary
.
getTotalClimbDistance
().
intValue
());
initAchievement
(
summary
.
getUserId
(),
AchievementCondition
.
CALORIE
,
summary
.
getTotalCalorie
());
}
/**
* 成就计算和积分操作
*
* @param sportUserId
* @param condition
* @param conditionValue
*/
private
void
initAchievement
(
Long
sportUserId
,
Integer
condition
,
Integer
conditionValue
)
{
if
(
conditionValue
==
null
)
{
return
;
}
List
<
Achievement
>
achievementList
=
achievementBizMapper
.
getSignInAchievement
(
condition
,
sportUserId
);
for
(
Achievement
achievement
:
achievementList
)
{
if
(
con
tinuousLoginDays
.
compareTo
(
achievement
.
getConditionValue
())
>=
0
)
{
if
(
con
ditionValue
.
compareTo
(
achievement
.
getConditionValue
())
>=
0
)
{
AchievementForSportUser
achievementForSportUser
=
new
AchievementForSportUser
();
achievementForSportUser
.
setSportUserId
(
sportUserId
);
achievementForSportUser
.
setAchievementId
(
achievement
.
getId
());
...
...
@@ -42,7 +84,7 @@ public class AchievementService {
achievementForSportUser
.
setCreateTime
(
LocalDateTime
.
now
());
achievementForSportUserMapper
.
insert
(
achievementForSportUser
);
sportUserGameCurrencyService
.
addCurrency
(
sportUserId
,
achievement
.
getCurrency
(),
GameCurrencySourceType
.
ACHIEVEMENT
,
achievement
.
getId
());
GameCurrencySourceType
.
ACHIEVEMENT
,
achievement
ForSportUser
.
getId
());
}
}
}
...
...
server-api/src/main/java/com/antai/sport/http/server/server/api/business/traininglog/service/SportUserTrainingLogService.java
View file @
8467c245
...
...
@@ -17,6 +17,7 @@ import com.antai.sport.http.server.repository.sport.entity.*;
import
com.antai.sport.http.server.repository.sport.mapper.*
;
import
com.antai.sport.http.server.repository.teamtraining.entity.TeamTraining
;
import
com.antai.sport.http.server.repository.teamtraining.mapper.TeamTrainingMapper
;
import
com.antai.sport.http.server.server.api.business.achievement.service.AchievementService
;
import
com.antai.sport.http.server.server.api.business.simplematch.dto.SimpleMatchUserScheduleVO
;
import
com.antai.sport.http.server.server.api.business.simplematch.mapper.SimpleMatchBusinessMapper
;
import
com.antai.sport.http.server.server.api.business.sportusergamecurrency.service.SportUserGameCurrencyService
;
...
...
@@ -90,6 +91,8 @@ public class SportUserTrainingLogService {
@Resource
private
SportUserGameCurrencyService
sportUserGameCurrencyService
;
@Resource
private
AchievementService
achievementService
;
public
void
createBicycleTrainingLog
(
Long
playerId
,
Integer
gameMode
,
Long
sourceId
,
String
sourceName
,
String
map
,
String
path
,
Integer
praiseNum
,
CyclingDataDTO
sportData
)
{
...
...
@@ -114,7 +117,7 @@ public class SportUserTrainingLogService {
}
sportUserTrainingLogMapper
.
insert
(
log
);
//处理玩家记录汇总
this
.
handleSportUserSummary
(
playerId
,
log
,
gameMode
,
sportData
);
SportUserSummary
summary
=
this
.
handleSportUserSummary
(
playerId
,
log
,
gameMode
,
sportData
);
//处理俱乐部数据汇总
this
.
handleClubSummary
(
clubMember
,
log
);
//处理月度排行
...
...
@@ -123,6 +126,8 @@ public class SportUserTrainingLogService {
this
.
modifyTotalRank
(
playerId
,
log
);
//处理玩家积分
this
.
handleSportUserCurrency
(
playerId
,
log
.
getId
(),
log
.
getCalorie
(),
gameMode
,
log
.
getMatchRank
());
//处理玩家成就
achievementService
.
handleSportAchievement
(
gameMode
,
summary
);
}
/**
...
...
@@ -156,8 +161,8 @@ public class SportUserTrainingLogService {
* @param playerId
* @param log
*/
private
void
handleSportUserSummary
(
Long
playerId
,
SportUserTrainingLog
log
,
Integer
gameMode
,
CyclingDataDTO
sportData
)
{
private
SportUserSummary
handleSportUserSummary
(
Long
playerId
,
SportUserTrainingLog
log
,
Integer
gameMode
,
CyclingDataDTO
sportData
)
{
QueryWrapper
<
SportUserSummary
>
summaryQuery
=
new
QueryWrapper
<>();
summaryQuery
.
eq
(
"deleted"
,
DeleteStatus
.
UNDELETED
);
summaryQuery
.
eq
(
"user_id"
,
playerId
);
...
...
@@ -196,6 +201,7 @@ public class SportUserTrainingLogService {
}
else
{
sportUserSummaryMapper
.
updateById
(
summary
);
}
return
summary
;
}
/**
...
...
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