Skip to content

Commit 1ba1d05

Browse files
authored
release: 2.4.6 (#435)
1 parent 4b75360 commit 1ba1d05

File tree

8 files changed

+39
-84
lines changed

8 files changed

+39
-84
lines changed

โ€Žsrc/main/kotlin/org/gitanimals/render/controller/InternalPersonaController.ktโ€Ž

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,7 @@ class InternalPersonaController(
4040
addPersonaRequest.level,
4141
)
4242

43-
return PersonaResponse(
44-
id = persona.id,
45-
type = persona.type,
46-
level = persona.level,
47-
visible = persona.visible,
48-
appVisible = persona.appVisible,
49-
dropRate = persona.dropRate,
50-
grade = persona.grade,
51-
)
43+
return PersonaResponse.from(persona)
5244
}
5345

5446
@PostMapping("/internals/personas/multiply")
@@ -66,15 +58,7 @@ class InternalPersonaController(
6658
0,
6759
)
6860

69-
PersonaResponse(
70-
id = persona.id,
71-
type = persona.type,
72-
level = persona.level,
73-
visible = persona.visible,
74-
appVisible = persona.appVisible,
75-
dropRate = persona.dropRate,
76-
grade = persona.grade,
77-
)
61+
PersonaResponse.from(persona)
7862
}
7963
}
8064

@@ -86,15 +70,7 @@ class InternalPersonaController(
8670
): PersonaResponse {
8771
val persona = userFacade.deletePersona(token, personaId)
8872

89-
return PersonaResponse(
90-
id = persona.id,
91-
type = persona.type,
92-
level = persona.level,
93-
visible = persona.visible,
94-
appVisible = persona.appVisible,
95-
dropRate = persona.dropRate,
96-
grade = persona.grade,
97-
)
73+
return PersonaResponse.from(persona)
9874
}
9975

10076
@GetMapping("/internals/personas/all")

โ€Žsrc/main/kotlin/org/gitanimals/render/controller/PersonaController.ktโ€Ž

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,7 @@ class PersonaController(
3535
): PersonaResponse {
3636
val persona = userFacade.getPersona(token, personaId)
3737

38-
return PersonaResponse(
39-
id = persona.id,
40-
type = persona.type,
41-
level = persona.level,
42-
visible = persona.visible,
43-
appVisible = persona.appVisible,
44-
dropRate = persona.dropRate,
45-
grade = persona.grade,
46-
)
38+
return PersonaResponse.from(persona)
4739
}
4840

4941
@PatchMapping("/personas")
@@ -55,15 +47,7 @@ class PersonaController(
5547
): PersonaResponse {
5648
val changedPersona = userFacade.changePersona(token, personaChangeRequest)
5749

58-
return PersonaResponse(
59-
id = changedPersona.id,
60-
type = changedPersona.type,
61-
level = changedPersona.level,
62-
visible = changedPersona.visible,
63-
appVisible = changedPersona.appVisible,
64-
dropRate = changedPersona.dropRate,
65-
grade = changedPersona.grade,
66-
)
50+
return PersonaResponse.from(changedPersona)
6751
}
6852

6953
@GetMapping("/personas/infos")

โ€Žsrc/main/kotlin/org/gitanimals/render/controller/response/PersonaResponse.ktโ€Ž

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.gitanimals.render.controller.response
22

33
import org.gitanimals.core.PersonaGrade
44
import org.gitanimals.core.PersonaType
5+
import org.gitanimals.render.domain.Persona
56
import org.gitanimals.render.domain.response.PersonaResponse
67

78
data class PersonaResponse(
@@ -12,6 +13,7 @@ data class PersonaResponse(
1213
val appVisible: Boolean,
1314
val dropRate: String,
1415
val grade: PersonaGrade,
16+
val isEvolutionable: Boolean,
1517
) {
1618

1719
companion object {
@@ -24,6 +26,20 @@ data class PersonaResponse(
2426
appVisible = personaResponse.appVisible,
2527
dropRate = personaResponse.dropRate,
2628
grade = personaResponse.grade,
29+
isEvolutionable = personaResponse.isEvolutionable,
30+
)
31+
}
32+
33+
fun from(persona: Persona): org.gitanimals.render.controller.response.PersonaResponse {
34+
return org.gitanimals.render.controller.response.PersonaResponse(
35+
id = persona.id.toString(),
36+
type = persona.getType(),
37+
level = persona.level().toString(),
38+
visible = persona.visible,
39+
appVisible = persona.appVisible,
40+
dropRate = persona.getType().getDropRate(),
41+
grade = persona.getType().grade,
42+
isEvolutionable = persona.isEvolutionable(),
2743
)
2844
}
2945
}

โ€Žsrc/main/kotlin/org/gitanimals/render/controller/response/UserResponse.ktโ€Ž

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,7 @@ data class UserResponse(
1616
user.getName(),
1717
user.contributionCount().toString(),
1818
user.personas.map {
19-
PersonaResponse(
20-
id = it.id.toString(),
21-
type = it.getType(),
22-
level = it.level().toString(),
23-
visible = it.visible,
24-
appVisible = it.appVisible,
25-
dropRate = it.getType().getDropRate(),
26-
grade = it.getType().grade,
27-
)
19+
PersonaResponse.from(it)
2820
}.toList()
2921
)
3022
}
@@ -36,17 +28,7 @@ data class UserResponse(
3628
user.contributionCount().toString(),
3729
user.personas.filter {
3830
it.id in personaId
39-
}.map {
40-
PersonaResponse(
41-
id = it.id.toString(),
42-
type = it.getType(),
43-
level = it.level().toString(),
44-
visible = it.visible,
45-
appVisible = it.appVisible,
46-
dropRate = it.getType().getDropRate(),
47-
grade = it.getType().grade,
48-
)
49-
}.toList()
31+
}.map { PersonaResponse.from(it) }.toList()
5032
)
5133
}
5234

@@ -57,17 +39,7 @@ data class UserResponse(
5739
totalContributions = user.contributionCount().toString(),
5840
personas = listOf(user.personas
5941
.maxBy { it.level() }
60-
.let {
61-
PersonaResponse(
62-
id = it.id.toString(),
63-
type = it.getType(),
64-
level = it.level().toString(),
65-
visible = it.visible,
66-
appVisible = it.appVisible,
67-
dropRate = it.getType().getDropRate(),
68-
grade = it.getType().grade,
69-
)
70-
}
42+
.let { PersonaResponse.from(it) }
7143
)
7244
)
7345
}

โ€Žsrc/main/kotlin/org/gitanimals/render/domain/Persona.ktโ€Ž

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,24 @@ class Persona(
8383

8484
fun level(): Long = level.value
8585

86+
fun isEvolutionable(): Boolean {
87+
return level() >= EVOLUTION_REQUIRED_LEVEL && getType().personaEvolution != PersonaEvolution.nothing
88+
}
89+
8690
fun evolution() {
8791
require (type.personaEvolution != PersonaEvolution.nothing) {
8892
"Evolution fail cause, not support evolution type :${type.name}"
8993
}
94+
require(level() >= EVOLUTION_REQUIRED_LEVEL) {
95+
"Cannot evolution persona cause, ${level()} is not enough level for evolution."
96+
}
9097

9198
val evolutionedPersonaType = this.type.randomEvolution()
9299
this.type = evolutionedPersonaType
93100
this.level.value = 0
94101
}
102+
103+
companion object {
104+
private const val EVOLUTION_REQUIRED_LEVEL = 100L
105+
}
95106
}

โ€Žsrc/main/kotlin/org/gitanimals/render/domain/User.ktโ€Ž

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -345,10 +345,6 @@ class User(
345345
it.id == personaId
346346
} ?: throw IllegalArgumentException("Cannot evolution persona cause cannot find matched persona by id: \"$personaId\"")
347347

348-
require(persona.level() >= EVOLUTION_REQUIRED_LEVEL) {
349-
"Cannot evolution persona cause, ${persona.level()} is not enough level for evolution."
350-
}
351-
352348
persona.evolution()
353349
return persona
354350
}
@@ -358,7 +354,7 @@ class User(
358354
it.id == personaId
359355
} ?: throw IllegalArgumentException("Cannot evolution persona cause cannot find matched persona by id: \"$personaId\"")
360356

361-
return persona.level() >= EVOLUTION_REQUIRED_LEVEL && persona.getType().personaEvolution != PersonaEvolution.nothing
357+
return persona.isEvolutionable()
362358
}
363359

364360
companion object {
@@ -367,8 +363,6 @@ class User(
367363
private const val FOR_NEW_PERSONA_COUNT = 30L
368364
private const val FOR_INIT_PERSONA_COUNT = 100L
369365

370-
private const val EVOLUTION_REQUIRED_LEVEL = 100L
371-
372366
private val nameConvention = Regex("[^a-zA-Z0-9-]")
373367

374368
private val logger = LoggerFactory.getLogger(this::class.simpleName)

โ€Žsrc/main/kotlin/org/gitanimals/render/domain/response/PersonaResponse.ktโ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ data class PersonaResponse(
1212
val appVisible: Boolean,
1313
val dropRate: String,
1414
val grade: PersonaGrade,
15+
val isEvolutionable: Boolean,
1516
) {
1617
companion object {
1718
fun from(persona: Persona): PersonaResponse {
@@ -23,6 +24,7 @@ data class PersonaResponse(
2324
appVisible = persona.appVisible,
2425
dropRate = persona.getType().getDropRate(),
2526
grade = persona.getType().grade,
27+
isEvolutionable = persona.isEvolutionable(),
2628
)
2729
}
2830
}

โ€Žsrc/test/kotlin/org/gitanimals/render/domain/UserServiceTest.ktโ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ internal class UserServiceTest(
9595
name = user.getName(),
9696
id = personaId,
9797
idempotencyKey = IdGenerator.generate().toString(),
98-
personaType = PersonaType.CAT.name,
98+
personaType = PersonaType.LITTLE_CHICK.name,
9999
level = 99,
100100
)
101101

0 commit comments

Comments
ย (0)