Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
taobao-mini-template
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
2
Issues
2
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
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
qinhaitao
taobao-mini-template
Commits
59323d0c
Commit
59323d0c
authored
Nov 10, 2020
by
qinhaitao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:
🎸
commonSer 命名
parent
a300ba28
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
75 additions
and
76 deletions
+75
-76
awards.controller.ts
v2.0/src/controller/awards.controller.ts
+9
-9
base.controller.ts
v2.0/src/controller/base.controller.ts
+4
-4
game.controller.ts
v2.0/src/controller/game.controller.ts
+7
-7
login.controller.ts
v2.0/src/controller/login.controller.ts
+3
-3
share.controller.ts
v2.0/src/controller/share.controller.ts
+4
-4
stat.controller.ts
v2.0/src/controller/stat.controller.ts
+5
-5
task.controller.ts
v2.0/src/controller/task.controller.ts
+11
-11
user.controller.ts
v2.0/src/controller/user.controller.ts
+5
-5
preUpdate.ts
v2.0/src/decorator/common/preUpdate.ts
+0
-1
registeInfos.ts
v2.0/src/decorator/common/registeInfos.ts
+3
-3
services.ts
v2.0/src/decorator/common/services.ts
+3
-3
index.ts
v2.0/src/service/common/index.ts
+21
-21
No files found.
v2.0/src/controller/awards.controller.ts
View file @
59323d0c
...
...
@@ -2,7 +2,7 @@
import
{
services
,
checkParams
,
registeInfos
}
from
'../decorator/common'
import
{
resultsModel
}
from
'../sdk'
import
{
AwardsService
}
from
'../service/common'
import
{
Common
AwardsService
}
from
'../service/common'
import
preCheck
from
'../decorator/common/preCheck'
import
{
checkActivityTime
,
...
...
@@ -20,11 +20,11 @@ export default class AwardsController {
* 我的奖品列表
*/
@
checkParams
([
'activityId'
])
@
services
([
AwardsService
])
@
services
([
Common
AwardsService
])
async
getMyPrizeList
(
context
:
IContext
<
IParams
>
,
{
activityInfo
}:
IControllerInfos
,
[
awardSer
]:
[
AwardsService
]
[
awardSer
]:
[
Common
AwardsService
]
):
Promise
<
IResult
<
{
list
:
IAwards
[]
}
>>
{
const
result
=
await
awardSer
.
getMyPrizeList
(
activityInfo
)
return
resultsModel
.
success
(
result
)
...
...
@@ -34,12 +34,12 @@ export default class AwardsController {
* 领取实物
*/
@
checkParams
([
'activityId'
,
'id'
,
'name'
,
'phone'
,
'province'
,
'city'
,
'area'
,
'addressDetail'
,
'streetName'
])
@
services
([
AwardsService
])
@
services
([
Common
AwardsService
])
@
preCheck
([
checkPrizeExpired
,
checkValidObjectPrize
])
async
receiveObjectPrize
(
context
:
IContext
<
IParams
>
,
{
activityInfo
}:
IReceivePrizeControllerInfos
,
[
awardSer
]:
[
AwardsService
]
[
awardSer
]:
[
Common
AwardsService
]
):
Promise
<
IResult
<
boolean
>>
{
let
{
province
,
city
,
area
,
streetName
,
addressDetail
,
id
,
name
,
phone
}
=
context
.
data
...
...
@@ -61,12 +61,12 @@ export default class AwardsController {
*/
@
checkParams
([
'activityId'
,
'id'
])
@
registeInfos
([
'session'
])
@
services
([
AwardsService
])
@
services
([
Common
AwardsService
])
@
preCheck
([
checkPrizeExpired
,
checkValidEnamePrize
])
async
receiveEnamePrize
(
context
:
IContext
<
IParams
>
,
{
awardInfo
,
session
}:
IReceivePrizeControllerInfos
,
[
awardSer
]:
[
AwardsService
]
[
awardSer
]:
[
Common
AwardsService
]
)
{
let
{
id
}
=
context
.
data
...
...
@@ -79,12 +79,12 @@ export default class AwardsController {
* 概率抽奖
*/
@
checkParams
([
'activityId'
,
'prizeDataType'
])
@
services
([
AwardsService
])
@
services
([
Common
AwardsService
])
@
preCheck
([
checkActivityTime
])
async
drawLotteryPrize
(
context
:
IContext
<
IParams
>
,
{
userInfo
}:
IControllerInfos
,
[
awardSer
]:
[
AwardsService
]
[
awardSer
]:
[
Common
AwardsService
]
):
Promise
<
IResult
<
{
id
?:
string
...
...
v2.0/src/controller/base.controller.ts
View file @
59323d0c
...
...
@@ -2,14 +2,14 @@
import
{
services
,
checkParams
,
registeInfos
,
noCheckUser
}
from
'../decorator/common'
import
{
resultsModel
}
from
'../sdk'
import
{
BaseService
}
from
'../service/common'
import
{
Common
BaseService
}
from
'../service/common'
export
default
class
BaseController
{
/**
* 活动基本信息
*/
@
checkParams
([
'activityId'
])
@
noCheckUser
@
services
([
BaseService
])
@
services
([
Common
BaseService
])
async
getActivityBaseInfoById
(
context
:
IContext
<
{
activityId
:
string
...
...
@@ -24,11 +24,11 @@ export default class BaseController {
*/
@
checkParams
([
'itemIds'
])
@
registeInfos
([
'session'
])
@
services
([
BaseService
])
@
services
([
Common
BaseService
])
async
getItemListByItemIds
(
context
:
IContext
<
IParams
>
,
{
session
}:
IControllerInfos
,
[
baseService
]:
[
BaseService
]
[
baseService
]:
[
Common
BaseService
]
):
Promise
<
IResult
<
{
list
:
ITaoBaoItems
[]
}
>>
{
const
{
itemIds
}
=
context
.
data
...
...
v2.0/src/controller/game.controller.ts
View file @
59323d0c
...
...
@@ -2,7 +2,7 @@
import
{
services
,
checkParams
,
preCheck
,
preUpdate
}
from
'../decorator/common'
import
{
resultsModel
}
from
'../sdk'
import
{
UserService
,
GameService
}
from
'../service/common'
import
{
CommonUserService
,
Common
GameService
}
from
'../service/common'
import
{
checkActivityTime
,
checkJoinId
,
checkUserInfo
,
checkVip
}
from
'../utils/common/check'
import
{
updateUserInfo
}
from
'../utils/common/update'
...
...
@@ -17,11 +17,11 @@ export default class Game {
* needKeys 根据需求自取字段 格式: { gameTimes: 1 }
*/
@
checkParams
([
'activityId'
,
'needKeys'
])
@
services
([
UserService
])
@
services
([
Common
UserService
])
async
getGameInfo
(
context
:
IContext
<
IParams
>
,
{
userInfo
,
activityInfo
}:
IControllerInfos
,
[
userService
]:
[
UserService
]
[
userService
]:
[
Common
UserService
]
)
{
const
{
needKeys
}
=
context
.
data
const
gameInfoResult
=
await
userService
.
getUserInfo
(
needKeys
)
...
...
@@ -31,7 +31,7 @@ export default class Game {
}
@
checkParams
([
'activityId'
])
@
services
([
GameService
])
@
services
([
Common
GameService
])
@
preCheck
([
checkActivityTime
,
checkVip
,
checkUserInfo
({
gameTimes
:
{
$gte
:
3
}
},
'游戏次数不足,做点任务吧'
)])
@
preUpdate
([
updateUserInfo
({
...
...
@@ -42,7 +42,7 @@ export default class Game {
async
startGame
(
context
:
IContext
<
IParams
>
,
{
userInfo
,
activityInfo
}:
IControllerInfos
,
[
gameService
]:
[
GameService
]
[
gameService
]:
[
Common
GameService
]
)
{
const
joinResult
=
await
gameService
.
addJoinRecord
(
userInfo
)
...
...
@@ -52,12 +52,12 @@ export default class Game {
}
@
checkParams
([
'activityId'
,
'id'
,
'score'
])
@
services
([
GameService
])
@
services
([
Common
GameService
])
@
preCheck
([
checkJoinId
])
async
submitGame
(
context
:
IContext
<
IParams
>
,
{
userInfo
,
joinInfo
}:
ISumitGameControllerInfos
,
[
gameService
]:
[
GameService
]
[
gameService
]:
[
Common
GameService
]
)
{
const
{
id
,
score
}
=
context
.
data
const
result
=
await
gameService
.
submitGame
(
id
,
score
,
userInfo
,
joinInfo
)
...
...
v2.0/src/controller/login.controller.ts
View file @
59323d0c
...
...
@@ -2,7 +2,7 @@
import
{
services
,
checkParams
,
registeInfos
,
preUpdate
}
from
'../decorator/common'
import
{
resultsModel
}
from
'../sdk'
import
{
UserService
,
AccessService
}
from
'../service/common'
import
{
CommonUserService
,
Common
AccessService
}
from
'../service/common'
import
{
noCheckUser
}
from
'../decorator/common'
export
default
class
LoginController
{
/**
...
...
@@ -15,11 +15,11 @@ export default class LoginController {
@
checkParams
([
'activityId'
,
'userNick'
,
'avatar'
,
'isFollow'
])
@
noCheckUser
@
registeInfos
([
'vipInfo'
])
@
services
([
UserService
,
AccessService
])
@
services
([
CommonUserService
,
Common
AccessService
])
async
login
(
context
:
IContext
<
IParams
>
,
{
userInfo
,
activityInfo
,
vipInfo
}:
IControllerInfos
,
[
userService
,
accessService
]:
[
UserService
,
AccessService
]
[
userService
,
accessService
]:
[
CommonUserService
,
Common
AccessService
]
):
Promise
<
IResult
<
{
openId
:
string
;
firstLoginToday
:
boolean
;
newUser
:
boolean
}
>>
{
const
updatedUserInfo
=
await
userService
.
doLogin
(
userInfo
,
vipInfo
,
activityInfo
)
// access表
...
...
v2.0/src/controller/share.controller.ts
View file @
59323d0c
...
...
@@ -2,7 +2,7 @@
import
{
services
,
preCheck
,
registeInfos
,
preUpdate
,
checkParams
}
from
'../decorator/common/'
import
{
resultsModel
}
from
'../sdk'
import
{
UserService
,
StatService
,
TaskService
}
from
'../service/common'
import
{
CommonUserService
,
CommonStatService
,
Common
TaskService
}
from
'../service/common'
import
{
STAT_TYPE
}
from
'../constants'
import
{
checkActivityTime
,
checkInviteId
,
checkHelpRecord
,
checkNewVip
}
from
'../utils/common/check'
import
{
updateVip
}
from
'../utils/common/update/'
...
...
@@ -15,7 +15,7 @@ export default class Share {
* 获取邀请信息
*/
@
checkParams
([
'activityId'
])
@
services
([
UserService
])
@
services
([
Common
UserService
])
async
getShareInfo
(
context
:
IContext
<
IParams
>
,
{
userInfo
}:
IControllerInfos
...
...
@@ -33,13 +33,13 @@ export default class Share {
*/
@
checkParams
([
'activityId'
,
'inviteId'
])
@
registeInfos
([
'vipInfo'
])
@
services
([
TaskService
,
StatService
])
@
services
([
CommonTaskService
,
Common
StatService
])
@
preCheck
([
checkActivityTime
,
checkInviteId
,
checkNewVip
,
checkHelpRecord
])
@
preUpdate
([
updateVip
])
async
doHelp
(
context
:
IContext
<
IParams
>
,
{
userInfo
,
activityInfo
,
inviteUserInfo
}:
IdoHelpInfos
,
[
taskService
,
statService
]:
[
TaskService
,
StatService
]
[
taskService
,
statService
]:
[
CommonTaskService
,
Common
StatService
]
):
Promise
<
IResult
<
boolean
>>
{
const
{
openId
}
=
context
...
...
v2.0/src/controller/stat.controller.ts
View file @
59323d0c
...
...
@@ -2,7 +2,7 @@
import
{
resultsModel
}
from
'../sdk'
import
{
checkParams
,
services
}
from
'../decorator/common'
import
{
StatService
}
from
'../service/common'
import
{
Common
StatService
}
from
'../service/common'
/** @format */
export
default
class
StatController
{
...
...
@@ -10,8 +10,8 @@ export default class StatController {
* 增加埋点记录
*/
@
checkParams
([
'activityId'
,
'type'
])
@
services
([
StatService
])
async
addStat
(
context
:
IContext
<
IParams
>
,
{
userInfo
}:
IControllerInfos
,
[
statService
]:
[
StatService
])
{
@
services
([
Common
StatService
])
async
addStat
(
context
:
IContext
<
IParams
>
,
{
userInfo
}:
IControllerInfos
,
[
statService
]:
[
Common
StatService
])
{
const
{
type
}
=
context
.
data
const
result
=
await
statService
.
addStat
(
type
,
userInfo
)
return
resultsModel
.
success
(
result
)
...
...
@@ -20,8 +20,8 @@ export default class StatController {
* 统计数据
*/
@
checkParams
([
'activityId'
,
'startDay'
,
'endDay'
])
@
services
([
StatService
])
async
getStats
(
context
:
IContext
<
IParams
>
,
{}:
IControllerInfos
,
[
statService
]:
[
StatService
])
{
@
services
([
Common
StatService
])
async
getStats
(
context
:
IContext
<
IParams
>
,
{}:
IControllerInfos
,
[
statService
]:
[
Common
StatService
])
{
const
{
activityId
,
startDay
,
endDay
}
=
context
.
data
const
xlsxData
=
await
statService
.
getStats
(
activityId
,
startDay
,
endDay
)
...
...
v2.0/src/controller/task.controller.ts
View file @
59323d0c
...
...
@@ -2,7 +2,7 @@
import
{
checkParams
,
services
,
registeInfos
,
preCheck
}
from
'../decorator/common'
import
{
resultsModel
}
from
'../sdk'
import
{
TaskService
,
BaseService
}
from
'../service/common'
import
{
CommonTaskService
,
Common
BaseService
}
from
'../service/common'
import
{
ITaskInfo
}
from
'../service/common/task.service'
import
{
checkActivityTime
,
checkTaskLimit
,
checkExchangeCreditsTask
,
checkRemainTimes
}
from
'../utils/common/check/'
import
{
preUpdate
}
from
'../decorator/common'
...
...
@@ -14,13 +14,13 @@ export default class Task {
*/
@
checkParams
([
'activityId'
])
@
registeInfos
([
'vipInfo'
])
@
services
([
TaskService
])
@
services
([
Common
TaskService
])
@
preCheck
([
checkActivityTime
])
@
preUpdate
([
updateVip
,
updateSignTask
,
updateOrderGoods
])
async
getTaskList
(
context
:
IContext
<
IParams
>
,
{
userInfo
,
activityInfo
}:
IControllerInfos
,
[
taskService
]:
[
TaskService
]
[
taskService
]:
[
Common
TaskService
]
):
Promise
<
IResult
<
{
list
:
ITaskInfo
[]
}
>>
{
// 读取B端 tasks字段配置自动生成任务列表
const
result
=
await
taskService
.
initTaskList
(
userInfo
,
activityInfo
)
...
...
@@ -38,12 +38,12 @@ export default class Task {
*/
@
checkParams
([
'activityId'
,
'taskType'
])
@
registeInfos
([
'session'
])
@
services
([
TaskService
])
@
services
([
Common
TaskService
])
@
preCheck
([
checkActivityTime
,
checkTaskLimit
,
checkExchangeCreditsTask
])
async
doCompleteTask
(
context
:
IContext
<
IParams
>
,
{
userInfo
,
activityInfo
}:
IControllerInfos
,
[
taskService
]:
[
TaskService
]
[
taskService
]:
[
Common
TaskService
]
):
Promise
<
IResult
<
boolean
>>
{
const
{
taskType
}
=
context
.
data
...
...
@@ -58,12 +58,12 @@ export default class Task {
* 领取的奖励增加的key值 如: gameTimes 前端传入
*/
@
checkParams
([
'activityId'
,
'taskType'
,
'rewardsKey'
])
@
services
([
TaskService
])
@
services
([
Common
TaskService
])
@
preCheck
([
checkActivityTime
,
checkRemainTimes
])
async
receiveTaskRewards
(
context
:
IContext
<
IParams
>
,
{
userInfo
}:
IControllerInfos
,
[
taskService
]:
[
TaskService
]
[
taskService
]:
[
Common
TaskService
]
):
Promise
<
IResult
<
{
rewards
:
number
}
>>
{
const
{
rewardsKey
}
=
context
.
data
const
{
taskType
}
=
context
.
data
...
...
@@ -78,17 +78,17 @@ export default class Task {
*/
@
checkParams
([
'activityId'
,
'itemIds'
])
@
registeInfos
([
'session'
])
@
services
([
BaseService
,
TaskService
])
@
services
([
CommonBaseService
,
Common
TaskService
])
async
getCollectGoodsList
(
context
:
IContext
<
IParams
>
,
{
session
,
userInfo
}:
IControllerInfos
,
[
baseService
,
taskService
]:
[
BaseService
,
TaskService
]
[
commonBaseService
,
commonTaskService
]:
[
CommonBaseService
,
Common
TaskService
]
)
{
const
{
itemIds
}
=
context
.
data
const
list
=
await
b
aseService
.
getItemListByIds
(
itemIds
,
session
)
const
list
=
await
commonB
aseService
.
getItemListByIds
(
itemIds
,
session
)
const
listWithCollectStatus
=
await
t
askService
.
getItemListWithCollectStatus
(
list
,
userInfo
)
const
listWithCollectStatus
=
await
commonT
askService
.
getItemListWithCollectStatus
(
list
,
userInfo
)
return
resultsModel
.
success
(
listWithCollectStatus
)
}
...
...
v2.0/src/controller/user.controller.ts
View file @
59323d0c
...
...
@@ -2,7 +2,7 @@
import
{
services
,
checkParams
,
registeInfos
}
from
'../decorator/common'
import
{
resultsModel
}
from
'../sdk'
import
{
UserService
}
from
'../service/common'
import
{
Common
UserService
}
from
'../service/common'
interface
IRankList
{
userNick
:
string
...
...
@@ -23,11 +23,11 @@ export default class User {
* 获取会员信息
*/
@
checkParams
([
'activityId'
])
@
services
([
UserService
])
@
services
([
Common
UserService
])
async
getVipInfo
(
context
:
IContext
<
IParams
>
,
{
activityInfo
}:
IControllerInfos
,
[
userService
]:
[
UserService
]
[
userService
]:
[
Common
UserService
]
):
Promise
<
IResult
<
IVipInfo
>>
{
// 拼接回调参数
const
result
=
await
userService
.
getShopVip
(
context
,
activityInfo
)
...
...
@@ -39,8 +39,8 @@ export default class User {
* 获取排行榜
*/
@
checkParams
([
'activityId'
,
'key'
,
'timeKey'
])
@
services
([
UserService
])
async
getRankList
(
context
:
IContext
<
IParams
>
,
{
userInfo
}:
IControllerInfos
,
[
userService
]:
[
UserService
])
{
@
services
([
Common
UserService
])
async
getRankList
(
context
:
IContext
<
IParams
>
,
{
userInfo
}:
IControllerInfos
,
[
userService
]:
[
Common
UserService
])
{
const
{
key
,
timeKey
,
limit
=
200
}
=
context
.
data
const
rankInfo
=
await
userService
.
getMyRankInfo
(
key
,
timeKey
,
userInfo
)
...
...
v2.0/src/decorator/common/preUpdate.ts
View file @
59323d0c
/** @format */
import
{
isEmpty
,
merge
}
from
'lodash'
import
{
UserService
}
from
'../../service/common'
import
{
recordErrorLog
}
from
'../../utils/common/logger'
import
{
resultsModel
}
from
'../../sdk'
import
{
CODE_TYPES
}
from
'../../errorCode'
...
...
v2.0/src/decorator/common/registeInfos.ts
View file @
59323d0c
/** @format */
import
{
UserService
,
BaseService
}
from
'../../service/common'
import
{
CommonUserService
,
Common
BaseService
}
from
'../../service/common'
import
{
getSellerSession
}
from
'../../utils'
import
{
formatVipCbUrl
,
getShopVip
}
from
'../../utils/common/vip'
import
{
CODE_TYPES
}
from
'../../errorCode'
...
...
@@ -9,10 +9,10 @@ export type IInfo = 'session' | 'vipInfo'
async
function
initBaseInfo
(
context
:
IContext
<
IParams
>
,
baseInfos
:
ICheckControllerInfos
,
needInfos
:
IInfo
[])
{
const
handler
=
context
?.
cloud
?.
dataspace
?.
context
?.
handler
const
userService
=
new
UserService
(
context
)
const
userService
=
new
Common
UserService
(
context
)
if
(
!
baseInfos
.
activityInfo
)
{
const
baseService
=
new
BaseService
(
context
)
const
baseService
=
new
Common
BaseService
(
context
)
// 活动基本情况
const
activityInfo
=
await
baseService
.
getBaseInfo
(
context
.
data
.
activityId
)
if
(
!
activityInfo
)
return
CODE_TYPES
.
ERROR_NO_ACTIVITY
...
...
v2.0/src/decorator/common/services.ts
View file @
59323d0c
...
...
@@ -4,7 +4,7 @@ import { logFn, recordErrorLog } from '../../utils'
import
{
resultsModel
}
from
'../../sdk'
import
{
CODE_TYPES
}
from
'../../constants'
import
{
doHandler
}
from
'../../utils/'
import
{
UserService
,
BaseService
}
from
'../../service/common'
import
{
CommonUserService
,
Common
BaseService
}
from
'../../service/common'
type
Constructor
=
new
(...
args
:
any
[])
=>
{}
...
...
@@ -12,7 +12,7 @@ async function formatBaseInfos(context: IContext<IParams>, baseInfos: ICheckCont
// 如果未调用registeInfos 则 重新注入userInfo和 activityInfo
if
(
!
baseInfos
.
registed
)
{
if
(
!
baseInfos
.
activityInfo
&&
!
baseInfos
.
noCheckActivity
)
{
const
baseService
=
new
BaseService
(
context
)
const
baseService
=
new
Common
BaseService
(
context
)
// 活动基本情况
const
activityInfo
=
await
baseService
.
getBaseInfo
(
context
.
data
.
activityId
)
if
(
!
activityInfo
)
return
CODE_TYPES
.
ERROR_NO_ACTIVITY
...
...
@@ -21,7 +21,7 @@ async function formatBaseInfos(context: IContext<IParams>, baseInfos: ICheckCont
// 默认注入活动和用户信息并校验
if
(
!
baseInfos
.
userInfo
)
{
const
userService
=
new
UserService
(
context
)
const
userService
=
new
Common
UserService
(
context
)
const
userInfo
=
await
userService
.
getUserInfo
()
if
(
!
userInfo
&&
!
baseInfos
.
noCheckUser
)
return
CODE_TYPES
.
ERROR_NO_USER
baseInfos
.
userInfo
=
userInfo
...
...
v2.0/src/service/common/index.ts
View file @
59323d0c
/** @format */
import
AccessService
from
'./access.service'
import
BaseService
from
'./base.service'
import
UserService
from
'./user.service'
import
AwardsService
from
'./awards.service'
import
TaskService
from
'./task.service'
import
StatService
from
'./stat.service'
import
GameService
from
'./game.service'
import
Common
AccessService
from
'./access.service'
import
Common
BaseService
from
'./base.service'
import
Common
UserService
from
'./user.service'
import
Common
AwardsService
from
'./awards.service'
import
Common
TaskService
from
'./task.service'
import
Common
StatService
from
'./stat.service'
import
Common
GameService
from
'./game.service'
const
common
=
{
AccessService
,
BaseService
,
UserService
,
AwardsService
,
TaskService
,
StatService
,
GameService
Common
AccessService
,
Common
BaseService
,
Common
UserService
,
Common
AwardsService
,
Common
TaskService
,
Common
StatService
,
Common
GameService
}
export
default
common
export
{
AccessService
,
BaseService
,
UserService
,
AwardsService
,
TaskService
,
StatService
,
GameService
Common
AccessService
,
CommonBaseService
,
CommonUserService
,
CommonAwardsService
,
CommonTaskService
,
CommonStatService
,
CommonGameService
}
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