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
8a8937a3
Commit
8a8937a3
authored
Aug 11, 2022
by
liming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
装备购买接口
parent
4c1e922e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
77 additions
and
3 deletions
+77
-3
GameCurrencySourceType.java
...i/sport/http/server/constants/GameCurrencySourceType.java
+2
-0
PropsController.java
...server/api/business/props/controller/PropsController.java
+8
-0
PropsService.java
...erver/server/api/business/props/service/PropsService.java
+67
-3
No files found.
constants/src/main/java/com/antai/sport/http/server/constants/GameCurrencySourceType.java
View file @
8a8937a3
...
...
@@ -5,4 +5,6 @@ public class GameCurrencySourceType {
public
static
final
Integer
SPORT
=
10
;
//成就
public
static
final
Integer
ACHIEVEMENT
=
20
;
//成就
public
static
final
Integer
SHOP
=
30
;
}
server-api/src/main/java/com/antai/sport/http/server/server/api/business/props/controller/PropsController.java
View file @
8a8937a3
...
...
@@ -29,4 +29,12 @@ public class PropsController {
return
success
(
propsService
.
getUserProps
(
sportUserId
));
}
@ApiOperation
(
"购买装备"
)
@GetMapping
(
"/purchase/{sportUserId}/{propsId}"
)
public
ResponseEntity
<
Result
>
purchase
(
@PathVariable
(
"sportUserId"
)
Long
sportUserId
,
@PathVariable
(
"propsId"
)
Long
propsId
)
{
propsService
.
purchase
(
sportUserId
,
propsId
);
return
success
();
}
}
server-api/src/main/java/com/antai/sport/http/server/server/api/business/props/service/PropsService.java
View file @
8a8937a3
package
com
.
antai
.
sport
.
http
.
server
.
server
.
api
.
business
.
props
.
service
;
import
com.antai.sport.http.server.common.exception.BusinessException
;
import
com.antai.sport.http.server.constants.GameCurrencyLogType
;
import
com.antai.sport.http.server.constants.GameCurrencySourceType
;
import
com.antai.sport.http.server.repository.shop.entity.*
;
import
com.antai.sport.http.server.repository.shop.mapper.*
;
import
com.antai.sport.http.server.server.api.business.props.mapper.PropsBizMapper
;
import
com.antai.sport.http.server.server.api.business.props.vo.UserPropsItemVO
;
import
com.antai.sport.http.server.server.api.business.props.vo.UserPropsVO
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -16,18 +24,74 @@ public class PropsService {
@Resource
private
PropsBizMapper
propsBizMapper
;
@Resource
private
SportUserPropsMapper
sportUserPropsMapper
;
@Resource
private
PropsMapper
propsMapper
;
@Resource
private
SportUserPropsOrderMapper
sportUserPropsOrderMapper
;
@Resource
private
SportUserGameCurrencyMapper
sportUserGameCurrencyMapper
;
@Resource
private
SportUserGameCurrencyLogMapper
sportUserGameCurrencyLogMapper
;
public
UserPropsVO
getUserProps
(
Long
sportUserId
)
{
UserPropsVO
result
=
new
UserPropsVO
();
Map
<
String
,
List
<
UserPropsItemVO
>>
propsItemMap
=
new
HashMap
<>();
List
<
UserPropsItemVO
>
propsItemList
=
propsBizMapper
.
getUserProps
(
sportUserId
);
for
(
UserPropsItemVO
propsItem:
propsItemList
)
{
if
(!
propsItemMap
.
containsKey
(
propsItem
.
getPart
()))
{
propsItemMap
.
put
(
propsItem
.
getPart
(),
new
ArrayList
<>());
for
(
UserPropsItemVO
propsItem
:
propsItemList
)
{
if
(!
propsItemMap
.
containsKey
(
propsItem
.
getPart
()))
{
propsItemMap
.
put
(
propsItem
.
getPart
(),
new
ArrayList
<>());
}
propsItemMap
.
get
(
propsItem
.
getPart
()).
add
(
propsItem
);
}
result
.
setProps
(
propsItemMap
);
return
result
;
}
@Transactional
public
void
purchase
(
Long
sportUserId
,
Long
propsId
)
{
QueryWrapper
<
SportUserProps
>
userPropsQuery
=
new
QueryWrapper
<>();
userPropsQuery
.
lambda
().
eq
(
SportUserProps:
:
getSportUserId
,
sportUserId
).
eq
(
SportUserProps:
:
getPropsId
,
propsId
);
SportUserProps
userProps
=
sportUserPropsMapper
.
selectOne
(
userPropsQuery
);
if
(
userProps
!=
null
){
throw
new
BusinessException
(
"您已经购买过当前装备,不能重复购买"
);
}
Props
props
=
propsMapper
.
selectById
(
propsId
);
QueryWrapper
<
SportUserGameCurrency
>
userGameCurrencyQuery
=
new
QueryWrapper
<>();
userGameCurrencyQuery
.
lambda
().
eq
(
SportUserGameCurrency:
:
getSportUserId
,
sportUserId
);
SportUserGameCurrency
userGameCurrency
=
sportUserGameCurrencyMapper
.
selectOne
(
userGameCurrencyQuery
);
if
(
userGameCurrency
==
null
||
userGameCurrency
.
getAmmount
()<
props
.
getPrice
()){
throw
new
BusinessException
(
"对不起,您的余额不足"
);
}
SportUserPropsOrder
order
=
new
SportUserPropsOrder
();
order
.
setPrice
(
props
.
getPrice
());
order
.
setPropsId
(
propsId
);
order
.
setSportUserId
(
sportUserId
);
order
.
setCtDate
(
LocalDateTime
.
now
());
sportUserPropsOrderMapper
.
insert
(
order
);
userProps
=
new
SportUserProps
();
userProps
.
setPropsId
(
propsId
);
userProps
.
setPropsOrderId
(
order
.
getId
());
userProps
.
setSportUserId
(
sportUserId
);
userProps
.
setCtDate
(
LocalDateTime
.
now
());
sportUserPropsMapper
.
insert
(
userProps
);
//处理积分操作
userGameCurrency
.
setAmmount
(
userGameCurrency
.
getAmmount
()
-
props
.
getPrice
());
sportUserGameCurrencyMapper
.
updateById
(
userGameCurrency
);
SportUserGameCurrencyLog
userGameCurrencyLog
=
new
SportUserGameCurrencyLog
();
userGameCurrencyLog
.
setSourceType
(
GameCurrencySourceType
.
SHOP
);
userGameCurrencyLog
.
setType
(
GameCurrencyLogType
.
SUBTRACT
);
userGameCurrencyLog
.
setSportUserId
(
sportUserId
);
userGameCurrencyLog
.
setAmmount
(
props
.
getPrice
());
userGameCurrencyLog
.
setSourceId
(
order
.
getId
());
userGameCurrencyLog
.
setCtDate
(
LocalDateTime
.
now
());
sportUserGameCurrencyLogMapper
.
insert
(
userGameCurrencyLog
);
}
}
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