Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
browser-backend
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
Administrator
browser-backend
Commits
1091834e
Commit
1091834e
authored
Mar 13, 2020
by
renjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
分配店铺接口
子用户接口
parent
e49a4064
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
363 additions
and
258 deletions
+363
-258
AccountController.java
.../browserbackend/account/controller/AccountController.java
+0
-26
AdminController.java
...ec/browserbackend/account/controller/AdminController.java
+55
-0
Account.java
...java/com/edgec/browserbackend/account/domain/Account.java
+20
-0
SubUserPageResultDto.java
...dgec/browserbackend/account/dto/SubUserPageResultDto.java
+32
-0
SubUsersDto.java
...ava/com/edgec/browserbackend/account/dto/SubUsersDto.java
+54
-0
SubUsersRequestDto.java
.../edgec/browserbackend/account/dto/SubUsersRequestDto.java
+77
-0
AccountRepository.java
.../browserbackend/account/repository/AccountRepository.java
+1
-1
AccountService.java
.../edgec/browserbackend/account/service/AccountService.java
+7
-12
AccountServiceImpl.java
...owserbackend/account/service/impl/AccountServiceImpl.java
+115
-217
ShopServiceImpl.java
.../browserbackend/browser/service/Impl/ShopServiceImpl.java
+2
-2
No files found.
src/main/java/com/edgec/browserbackend/account/controller/AccountController.java
View file @
1091834e
...
...
@@ -49,11 +49,6 @@ public class AccountController {
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AccountController
.
class
);
@RequestMapping
(
path
=
"/precharge/{name}"
,
method
=
RequestMethod
.
POST
)
public
IpChargeResultDto
preCharge
(
@PathVariable
String
name
,
@RequestBody
IpChargeRequestDto
requestDto
)
{
return
accountService
.
preCharge
(
name
,
requestDto
);
}
@RequestMapping
(
path
=
"/prechargeIp/{name}/{amount}/{money}"
,
method
=
RequestMethod
.
POST
)
public
IpChargeResultDto
preChargeIp
(
@PathVariable
String
name
,
@PathVariable
int
amount
,
@PathVariable
double
money
)
{
return
accountService
.
preChargeIp
(
name
,
amount
,
money
);
...
...
@@ -64,11 +59,6 @@ public class AccountController {
return
accountService
.
preChargeByMoney
(
name
,
money
);
}
@RequestMapping
(
path
=
"/charge/{name}"
,
method
=
RequestMethod
.
PUT
)
public
IpChargeResultDto
charge
(
@PathVariable
String
name
,
@RequestBody
IpChargeRequestDto
requestDto
)
{
return
accountService
.
charge
(
name
,
requestDto
);
}
@RequestMapping
(
path
=
"/charge/money"
,
method
=
RequestMethod
.
PUT
)
public
IpChargeResultDto
chargeByMoney
(
@RequestParam
(
"accountId"
)
String
name
,
@RequestParam
(
"money"
)
double
money
,
@RequestBody
IpChargeRequestDto
requestDto
)
{
return
accountService
.
chargeByMoney
(
name
,
money
,
requestDto
);
...
...
@@ -344,17 +334,6 @@ public class AccountController {
return
accountService
.
getAccountByCellphone
(
cellphone
);
}
@RequestMapping
(
path
=
"/fee/{region}/{instanceSpecKey}/{chargeType}"
,
method
=
RequestMethod
.
GET
)
@Deprecated
public
String
queryVpsRate
(
@PathVariable
String
region
,
@PathVariable
String
instanceSpecKey
,
@PathVariable
String
chargeType
)
{
return
accountService
.
queryVpsRate
(
region
,
instanceSpecKey
,
chargeType
);
}
@RequestMapping
(
path
=
"/charge/rate/{username}"
,
method
=
RequestMethod
.
POST
)
public
String
queryUserChargeRate
(
@PathVariable
String
username
,
@RequestBody
IpChargeRequestDto
requestDto
)
{
return
accountService
.
queryUserChargeRate
(
username
,
requestDto
);
}
@RequestMapping
(
path
=
"/fee/userprepaidbilling"
,
method
=
RequestMethod
.
GET
)
public
Page
<
UserPrePaidBilling
>
queryPerPaid
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"0"
)
int
page
,
@RequestParam
(
value
=
"size"
,
defaultValue
=
"10"
)
int
size
,
...
...
@@ -408,11 +387,6 @@ public class AccountController {
return
accountService
.
listAccountBySingupDate
(
pageable
,
beginDate
,
endDate
);
}
@RequestMapping
(
path
=
"/preorder/{userName}"
,
method
=
RequestMethod
.
POST
)
public
IpChargeResultDto
preOrderOption
(
@PathVariable
String
userName
,
@RequestBody
IpChargeRequestDto
requestDto
)
{
return
accountService
.
preOrder
(
userName
,
requestDto
);
}
@RequestMapping
(
path
=
"/preorder/delete/{username}"
,
method
=
RequestMethod
.
POST
)
public
String
deletePreOrder
(
@PathVariable
(
"username"
)
String
username
)
{
return
accountService
.
deletePreOrder
(
username
);
...
...
src/main/java/com/edgec/browserbackend/account/controller/AdminController.java
View file @
1091834e
...
...
@@ -3,7 +3,9 @@ package com.edgec.browserbackend.account.controller;
import
com.edgec.browserbackend.account.domain.Account
;
import
com.edgec.browserbackend.account.domain.AccountDto
;
import
com.edgec.browserbackend.account.dto.ResultDto
;
import
com.edgec.browserbackend.account.dto.SubUsersRequestDto
;
import
com.edgec.browserbackend.account.service.AccountService
;
import
com.edgec.browserbackend.browser.dto.ShopRequestDto
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -38,6 +40,23 @@ public class AdminController {
return
resultDto
;
}
@RequestMapping
(
path
=
"/subuser/add"
,
method
=
RequestMethod
.
POST
)
public
ResultDto
createSubUsers
(
Principal
principal
,
@RequestBody
SubUsersRequestDto
subUsersRequestDto
)
{
ResultDto
resultDto
=
new
ResultDto
();
try
{
LimitedUsers
.
filterIfLimitedUser
(
principal
);
accountService
.
createSubUsers
(
principal
.
getName
(),
subUsersRequestDto
);
resultDto
.
setStatus
(
0
);
}
catch
(
ClientRequestException
e
)
{
resultDto
.
setStatus
(-
1
);
Map
<
String
,
Object
>
statusInfo
=
new
HashMap
<>();
statusInfo
.
put
(
"code"
,
e
.
getErrorCode
());
statusInfo
.
put
(
"message"
,
e
.
getMessage
());
resultDto
.
setStatusInfo
(
statusInfo
);
}
return
resultDto
;
}
@RequestMapping
(
path
=
"/subuser/updateone"
,
method
=
RequestMethod
.
PUT
)
public
ResultDto
saveSubAccount
(
Principal
principal
,
@PathVariable
String
child
,
@Valid
@RequestBody
AccountDto
user
)
{
ResultDto
resultDto
=
new
ResultDto
();
...
...
@@ -56,6 +75,23 @@ public class AdminController {
return
resultDto
;
}
@RequestMapping
(
path
=
"/subuser/update"
,
method
=
RequestMethod
.
POST
)
public
ResultDto
saveSubUsers
(
Principal
principal
,
@RequestBody
SubUsersRequestDto
subUsersRequestDto
)
{
ResultDto
resultDto
=
new
ResultDto
();
try
{
LimitedUsers
.
filterIfLimitedUser
(
principal
);
accountService
.
saveSubUsers
(
principal
.
getName
(),
subUsersRequestDto
);
resultDto
.
setStatus
(
0
);
}
catch
(
ClientRequestException
e
)
{
resultDto
.
setStatus
(-
1
);
Map
<
String
,
Object
>
statusInfo
=
new
HashMap
<>();
statusInfo
.
put
(
"code"
,
e
.
getErrorCode
());
statusInfo
.
put
(
"message"
,
e
.
getMessage
());
resultDto
.
setStatusInfo
(
statusInfo
);
}
return
resultDto
;
}
@RequestMapping
(
path
=
"/subuser/del"
,
method
=
RequestMethod
.
DELETE
)
public
ResultDto
deleteSubAccount
(
Principal
principal
,
@PathVariable
String
child
)
{
ResultDto
resultDto
=
new
ResultDto
();
...
...
@@ -73,4 +109,23 @@ public class AdminController {
return
resultDto
;
}
@RequestMapping
(
path
=
"/subuser/list"
,
method
=
RequestMethod
.
POST
)
public
ResultDto
getSubUserList
(
Principal
principal
,
@RequestBody
ShopRequestDto
shopRequestDto
)
{
ResultDto
resultDto
=
new
ResultDto
();
try
{
LimitedUsers
.
filterIfLimitedUser
(
principal
);
resultDto
.
setData
(
accountService
.
getSubUserList
(
principal
.
getName
(),
shopRequestDto
.
getPage
(),
shopRequestDto
.
getAmount
()));
resultDto
.
setStatus
(
0
);
}
catch
(
ClientRequestException
e
)
{
resultDto
.
setStatus
(-
1
);
Map
<
String
,
Object
>
statusInfo
=
new
HashMap
<>();
statusInfo
.
put
(
"code"
,
e
.
getErrorCode
());
statusInfo
.
put
(
"message"
,
e
.
getMessage
());
resultDto
.
setStatusInfo
(
statusInfo
);
}
return
resultDto
;
}
}
src/main/java/com/edgec/browserbackend/account/domain/Account.java
View file @
1091834e
...
...
@@ -23,6 +23,8 @@ public class Account {
private
Date
signupDate
=
new
Date
();
private
String
nickname
;
private
String
email
;
private
String
companyName
;
...
...
@@ -43,6 +45,8 @@ public class Account {
private
Promotion
promotion
;
private
String
comment
;
private
List
<
String
>
whiteList
=
Arrays
.
asList
(
"amazon.com"
,
"amazon.jp"
,
...
...
@@ -272,4 +276,20 @@ public class Account {
public
void
setPromotion
(
Promotion
promotion
)
{
this
.
promotion
=
promotion
;
}
public
String
getNickname
()
{
return
nickname
;
}
public
void
setNickname
(
String
nickname
)
{
this
.
nickname
=
nickname
;
}
public
String
getComment
()
{
return
comment
;
}
public
void
setComment
(
String
comment
)
{
this
.
comment
=
comment
;
}
}
src/main/java/com/edgec/browserbackend/account/dto/SubUserPageResultDto.java
0 → 100644
View file @
1091834e
package
com
.
edgec
.
browserbackend
.
account
.
dto
;
import
com.edgec.browserbackend.browser.dto.PageInfo
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Desc
* @Author jason
* @CreateTime 2020/3/13 5:44 下午
**/
public
class
SubUserPageResultDto
{
List
<
SubUsersDto
>
userList
=
new
ArrayList
<>();
PageInfo
userPage
=
new
PageInfo
();
public
List
<
SubUsersDto
>
getUserList
()
{
return
userList
;
}
public
void
setUserList
(
List
<
SubUsersDto
>
userList
)
{
this
.
userList
=
userList
;
}
public
PageInfo
getUserPage
()
{
return
userPage
;
}
public
void
setUserPage
(
PageInfo
userPage
)
{
this
.
userPage
=
userPage
;
}
}
src/main/java/com/edgec/browserbackend/account/dto/SubUsersDto.java
0 → 100644
View file @
1091834e
package
com
.
edgec
.
browserbackend
.
account
.
dto
;
import
com.edgec.browserbackend.account.domain.Account
;
/**
* @Desc
* @Author jason
* @CreateTime 2020/3/13 5:37 下午
**/
public
class
SubUsersDto
{
private
String
username
;
private
String
nickname
;
private
int
permission
;
private
String
comment
;
public
SubUsersDto
(
Account
account
)
{
this
.
permission
=
account
.
getPermission
();
this
.
nickname
=
account
.
getNickname
();
this
.
username
=
account
.
getName
();
this
.
comment
=
account
.
getComment
();
}
public
String
getComment
()
{
return
comment
;
}
public
void
setComment
(
String
comment
)
{
this
.
comment
=
comment
;
}
public
int
getPermission
()
{
return
permission
;
}
public
void
setPermission
(
int
permission
)
{
this
.
permission
=
permission
;
}
public
String
getNickname
()
{
return
nickname
;
}
public
void
setNickname
(
String
nickname
)
{
this
.
nickname
=
nickname
;
}
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
}
src/main/java/com/edgec/browserbackend/account/dto/SubUsersRequestDto.java
0 → 100644
View file @
1091834e
package
com
.
edgec
.
browserbackend
.
account
.
dto
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
java.util.List
;
/**
* @Desc
* @Author jason
* @CreateTime 2020/3/13 2:37 下午
**/
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
SubUsersRequestDto
{
private
int
amount
;
private
String
password
;
private
int
permission
;
private
String
nickname
;
private
int
permisson
;
private
String
comment
;
private
List
<
String
>
usernames
;
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
public
int
getAmount
()
{
return
amount
;
}
public
void
setAmount
(
int
amount
)
{
this
.
amount
=
amount
;
}
public
int
getPermission
()
{
return
permission
;
}
public
void
setPermission
(
int
permission
)
{
this
.
permission
=
permission
;
}
public
String
getNickname
()
{
return
nickname
;
}
public
void
setNickname
(
String
nickname
)
{
this
.
nickname
=
nickname
;
}
public
int
getPermisson
()
{
return
permisson
;
}
public
void
setPermisson
(
int
permisson
)
{
this
.
permisson
=
permisson
;
}
public
List
<
String
>
getUsernames
()
{
return
usernames
;
}
public
void
setUsernames
(
List
<
String
>
usernames
)
{
this
.
usernames
=
usernames
;
}
public
String
getComment
()
{
return
comment
;
}
public
void
setComment
(
String
comment
)
{
this
.
comment
=
comment
;
}
}
src/main/java/com/edgec/browserbackend/account/repository/AccountRepository.java
View file @
1091834e
...
...
@@ -20,7 +20,7 @@ public interface AccountRepository extends MongoRepository<Account, String>, Acc
List
<
Account
>
findByParent
(
String
parent
);
Page
<
Account
>
findByParent
IsNull
(
Pageable
request
);
Page
<
Account
>
findByParent
(
String
parent
,
Pageable
pageable
);
Page
<
Account
>
findAllBySignupDateBetween
(
Pageable
pageable
,
Date
startDate
,
Date
endDate
);
...
...
src/main/java/com/edgec/browserbackend/account/service/AccountService.java
View file @
1091834e
package
com
.
edgec
.
browserbackend
.
account
.
service
;
import
com.edgec.browserbackend.account.domain.*
;
import
com.edgec.browserbackend.account.dto.ResultDto
;
import
com.edgec.browserbackend.account.dto.BillQueryCriteriaDto
;
import
com.edgec.browserbackend.account.dto.*
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
...
...
@@ -47,6 +46,8 @@ public interface AccountService {
Account
createSub
(
String
name
,
AccountDto
user
);
void
createSubUsers
(
String
name
,
SubUsersRequestDto
subUsersRequestDto
);
void
deleteSub
(
String
parent
,
String
child
);
void
deleteByName
(
String
name
);
...
...
@@ -55,22 +56,22 @@ public interface AccountService {
Account
saveSub
(
String
name
,
AccountDto
user
);
void
saveSubUsers
(
String
name
,
SubUsersRequestDto
subUsersRequestDto
);
List
<
UserDto
>
getAllDesendentUsers
(
String
name
,
int
level
);
SubUserPageResultDto
getSubUserList
(
String
name
,
int
page
,
int
amount
);
List
<
UserBillList
>
getUserBills0
(
String
name
);
List
<
UserBillList
>
getUserBills
(
String
name
,
Services
services
);
void
resetPasswordWithOtp
(
UserDto
user
);
IpChargeResultDto
preCharge
(
String
name
,
IpChargeRequestDto
requestDto
);
IpChargeResultDto
preChargeByMoney
(
String
name
,
double
money
);
IpChargeResultDto
preChargeIp
(
String
name
,
int
amount
,
double
money
);
IpChargeResultDto
charge
(
String
name
,
IpChargeRequestDto
requestDto
);
IpChargeResultDto
chargeByMoney
(
String
name
,
double
money
,
IpChargeRequestDto
requestDto
);
Page
<
UserPayment
>
getUserPayment
(
Pageable
pageable
,
String
username
);
...
...
@@ -79,10 +80,6 @@ public interface AccountService {
AccountDto
getAccountByCellphone
(
String
cellphone
);
String
queryVpsRate
(
String
region
,
String
instanceSpecKey
,
String
chargeType
);
String
queryUserChargeRate
(
String
username
,
IpChargeRequestDto
requestDto
);
Page
<
UserPrePaidBilling
>
listPrepaid
(
Pageable
pageable
,
String
username
,
String
[]
chargeType
,
int
year
,
int
month
,
int
day
,
String
zoneId
);
Page
<
UserPrePaidBilling
>
listBills
(
Pageable
pageable
,
String
username
,
BillQueryCriteriaDto
billQueryCriteriaDto
,
String
dateFrom
,
String
dateTo
,
String
zoneId
);
...
...
@@ -91,8 +88,6 @@ public interface AccountService {
List
<
UserBillList
>
findOverviewByYearAndMonth
(
String
username
,
int
year
,
int
mont
,
String
zoneId
,
Services
service
);
IpChargeResultDto
preOrder
(
String
userName
,
IpChargeRequestDto
requestDto
);
String
deletePreOrder
(
String
userName
);
List
<
Invoice
>
findByUsername
(
String
username
);
...
...
src/main/java/com/edgec/browserbackend/account/service/impl/AccountServiceImpl.java
View file @
1091834e
package
com
.
edgec
.
browserbackend
.
account
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.edgec.browserbackend.account.dto.ResultDto
;
import
com.edgec.browserbackend.account.dto.CvmChargeRegion
;
import
com.edgec.browserbackend.account.dto.*
;
import
com.edgec.browserbackend.account.service.AccountService
;
import
com.edgec.browserbackend.account.service.PaymentService
;
import
com.edgec.browserbackend.account.domain.*
;
import
com.edgec.browserbackend.account.dto.BillQueryCriteriaDto
;
import
com.edgec.browserbackend.account.exception.AccountErrorCode
;
import
com.edgec.browserbackend.account.repository.*
;
import
com.edgec.browserbackend.account.service.EmailService
;
import
com.edgec.browserbackend.account.utils.AccountServicePool
;
import
com.edgec.browserbackend.auth.exception.AuthErrorCode
;
import
com.edgec.browserbackend.auth.repository.UserRepository
;
import
com.edgec.browserbackend.auth.service.UserAuthService
;
import
com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode
;
import
com.edgec.browserbackend.common.charge.ChargeType
;
import
com.edgec.browserbackend.browser.dto.PageInfo
;
import
com.edgec.browserbackend.browser.dto.ShopPageResultDto
;
import
com.edgec.browserbackend.browser.dto.ShopResultDto
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
com.edgec.browserbackend.common.commons.utils.CommonStringUtils
;
import
com.edgec.browserbackend.common.commons.utils.SmsUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -33,7 +34,6 @@ import java.time.Instant;
import
java.time.YearMonth
;
import
java.time.ZoneOffset
;
import
java.time.ZonedDateTime
;
import
java.time.temporal.ChronoUnit
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.regex.Pattern
;
...
...
@@ -87,6 +87,9 @@ public class AccountServiceImpl implements AccountService {
@Autowired
private
UserAuthService
userAuthService
;
@Autowired
private
UserRepository
userRepository
;
@Override
public
List
<
UserBillList
>
getUserBills0
(
String
name
)
{
...
...
@@ -132,66 +135,6 @@ public class AccountServiceImpl implements AccountService {
return
result
;
}
@Override
public
IpChargeResultDto
charge
(
String
name
,
IpChargeRequestDto
requestDto
)
{
IpChargeResultDto
charge
=
new
IpChargeResultDto
();
CompletableFuture
.
runAsync
(()
->
{
charge
.
setApprovedAmount
(
0
);
charge
.
setSuccess
(
true
);
Account
account
=
repository
.
findByName
(
name
);
if
(
account
!=
null
)
{
UserBalance
userBalance
=
userBalanceRepository
.
findById
(
name
).
orElse
(
null
);
if
(
userBalance
==
null
)
{
userBalance
=
new
UserBalance
();
userBalance
.
setBalanced
(
0
);
userBalance
.
setUsed
(
0
);
userBalance
.
setUsername
(
name
);
userBalanceRepository
.
save
(
userBalance
);
}
int
amount
=
requestDto
.
getAmount
();
int
period
=
requestDto
.
getPeriod
();
float
rate
=
getRate
(
name
,
requestDto
);
float
totalCharge
=
amount
*
period
*
rate
;
userBalanceRepository
.
incrementBalance
(
userBalance
,
-
totalCharge
,
totalCharge
);
userBalance
=
userBalanceRepository
.
findById
(
name
).
orElse
(
null
);
charge
.
setApprovedAmount
(
amount
);
charge
.
setBalance
(
Math
.
round
(
userBalance
.
getBalanced
()));
charge
.
setSuccess
(
true
);
UserPrePaidBilling
bill
=
new
UserPrePaidBilling
();
bill
.
setAmount
(
requestDto
.
getAmount
());
bill
.
setServices
(
Services
.
valueOf
(
requestDto
.
getServices
()));
bill
.
setStatus
(
BillStatus
.
PAID
);
bill
.
setPrepaid
(
true
);
bill
.
setRate
(
rate
);
bill
.
setPeriod
(
period
);
bill
.
setUsername
(
name
);
bill
.
setTotal
(
totalCharge
);
bill
.
setTimestamp
(
Instant
.
now
().
toEpochMilli
());
bill
.
setUnit
(
requestDto
.
getUnit
());
bill
.
setChargeType
(
requestDto
.
getChargeType
());
bill
.
setTarget
(
requestDto
.
getTarget
());
final
YearMonth
lastmonth
=
YearMonth
.
now
();
int
monthValue
=
lastmonth
.
getMonthValue
();
int
year
=
lastmonth
.
getYear
();
bill
.
setYear
(
year
);
bill
.
setMonth
(
monthValue
);
prePaidBillingRepository
.
save
(
bill
);
}
},
AccountServicePool
.
taskPool
).
join
();
return
charge
;
}
@Override
public
IpChargeResultDto
chargeByMoney
(
String
name
,
double
money
,
IpChargeRequestDto
requestDto
)
{
IpChargeResultDto
charge
=
new
IpChargeResultDto
();
...
...
@@ -245,66 +188,6 @@ public class AccountServiceImpl implements AccountService {
}
//0 -- newip, 1 --renew, 2 --ipkeptfee, 3 --deleteip
private
float
getRate
(
String
name
,
IpChargeRequestDto
requestDto
)
{
int
chargeType
=
requestDto
.
getChargeType
();
String
region
=
requestDto
.
getRegion
();
if
(
requestDto
.
getUnit
().
equals
(
"hour"
))
return
0
;
switch
(
chargeType
)
{
case
0
:
//newip unit 'month'
case
1
:
//renew
//use 0 as charge type for ip rate
return
tryToFindClosedRate
(
name
,
region
,
0
);
case
2
:
//ipkeptfee, unit 'day'
//use 2 as charge type for ipkept rate
return
tryToFindClosedRate
(
name
,
region
,
2
);
case
3
:
//deleteip
//use 0 as charge type for ip rate
float
ipratePerMonth
=
tryToFindClosedRate
(
name
,
region
,
0
);
/**
* Deleteip need to refund fee for remaining hours, use minus and hour rate
* for this purpose
*/
float
ratePerHour
=
-
ipratePerMonth
/
(
requestDto
.
getDaysPerMonth
()
>
0
?
(
requestDto
.
getDaysPerMonth
()
*
24
)
:
730
);
return
ratePerHour
;
case
4
:
//stopinstanceonly
case
5
:
//startinstanceonly
/**
* Stopinstanceonly need to refund 'instance' fee for remaining hours, use minus and hour rate
* for this purpose.
* 'instance' fee is calculated as 'iprate - ipkeptrate'.
*/
//use 0 as charge type for ip rate
ipratePerMonth
=
tryToFindClosedRate
(
name
,
region
,
0
);
float
ipkeptratePerDay
=
tryToFindClosedRate
(
name
,
region
,
2
);
float
instanceonlyRatePerHour
=
ipratePerMonth
/
(
requestDto
.
getDaysPerMonth
()
>
0
?
(
requestDto
.
getDaysPerMonth
()
*
24
)
:
730
)
-
ipkeptratePerDay
/
24
;
if
(
chargeType
==
4
)
return
-
instanceonlyRatePerHour
;
else
return
instanceonlyRatePerHour
;
case
6
:
//refundipkeptfee, unit 'hour'
ipkeptratePerDay
=
tryToFindClosedRate
(
name
,
region
,
2
);
float
ipkeptratePerHour
=
ipkeptratePerDay
/
24
;
return
-
ipkeptratePerHour
;
case
ChargeType
.
newcvm
:
case
ChargeType
.
renewcvm
:
case
ChargeType
.
resetcvm
:
return
findCvmRate
(
name
,
region
,
ChargeType
.
newcvm
);
case
ChargeType
.
cvmsnapshot
:
String
result
=
requestDto
.
getRegion
();
float
rate
=
Float
.
valueOf
(
result
);
return
rate
;
}
throw
new
IllegalArgumentException
(
"Charge type is not supported yet"
);
}
private
float
findCvmRate
(
String
name
,
String
region
,
int
usedChargeType
)
{
CvmChargeRegion
cvmChargeRegion
=
JSONObject
.
parseObject
(
region
,
CvmChargeRegion
.
class
);
float
defaulRate
=
cvmChargeRegion
.
getDefaultRate
();
...
...
@@ -349,47 +232,6 @@ public class AccountServiceImpl implements AccountService {
}
}
@Override
public
IpChargeResultDto
preOrder
(
String
userName
,
IpChargeRequestDto
requestDto
)
{
IpChargeResultDto
precharge
=
new
IpChargeResultDto
();
precharge
.
setApprovedAmount
(
0
);
precharge
.
setSuccess
(
false
);
//把当前请求加入预订单表,在charge完删除
PreOrder
preOrder2
=
new
PreOrder
();
preOrder2
.
setTradeNo
(
requestDto
.
getTradeNo
());
preOrder2
.
setUserName
(
userName
);
preOrder2
.
setAmount
(
0
F
);
preOrder2
.
setTime
(
System
.
currentTimeMillis
());
preOrder2
=
preOrderRepository
.
save
(
preOrder2
);
//查询当前用户所有预订单,并且查询用户的账户余额
Long
preMinutes
=
Instant
.
now
().
minus
(
1
,
ChronoUnit
.
MINUTES
).
toEpochMilli
();
List
<
PreOrder
>
preOrderByUserName
=
preOrderRepository
.
findPreOrderByUserNameAndTimeGreaterThanEqual
(
userName
,
preMinutes
);
UserBalance
userBalance
=
userBalanceRepository
.
findById
(
userName
).
orElse
(
null
);
float
balance
=
0
;
if
(
userBalance
!=
null
)
balance
=
userBalance
.
getBalanced
();
int
amount
=
requestDto
.
getAmount
();
int
period
=
requestDto
.
getPeriod
();
float
rate
=
getRate
(
userName
,
requestDto
);
float
totalCharge
=
amount
*
period
*
rate
;
//订单数多于一个就放弃
if
(
preOrderByUserName
.
size
()
>
1
)
{
precharge
.
setBalance
(
Math
.
round
(
balance
));
preOrderRepository
.
deleteById
(
preOrder2
.
getTradeNo
());
return
precharge
;
}
//如果余额足以支付当前次的请求
if
(
balance
>=
totalCharge
)
{
precharge
.
setApprovedAmount
(
requestDto
.
getAmount
());
precharge
.
setBalance
(
Math
.
round
(
balance
-
totalCharge
));
precharge
.
setSuccess
(
true
);
}
else
{
precharge
.
setBalance
(
Math
.
round
(
balance
));
}
return
precharge
;
}
@Override
public
String
deletePreOrder
(
String
username
)
{
List
<
PreOrder
>
preOrders
=
preOrderRepository
.
findPreOrderByUserName
(
username
);
...
...
@@ -401,39 +243,6 @@ public class AccountServiceImpl implements AccountService {
return
"success"
;
}
@Override
public
IpChargeResultDto
preCharge
(
String
name
,
IpChargeRequestDto
requestDto
)
{
IpChargeResultDto
precharge
=
new
IpChargeResultDto
();
CompletableFuture
.
runAsync
(()
->
{
precharge
.
setApprovedAmount
(
0
);
precharge
.
setSuccess
(
false
);
Account
account
=
repository
.
findByName
(
name
);
if
(
account
!=
null
)
{
UserBalance
userBalance
=
userBalanceRepository
.
findById
(
name
).
orElse
(
null
);
float
balance
=
0
;
if
(
userBalance
!=
null
)
balance
=
userBalance
.
getBalanced
();
int
amount
=
requestDto
.
getAmount
();
int
period
=
requestDto
.
getPeriod
();
float
rate
=
getRate
(
name
,
requestDto
);
float
totalCharge
=
amount
*
period
*
rate
;
if
(
balance
>=
totalCharge
)
{
precharge
.
setApprovedAmount
(
amount
);
precharge
.
setBalance
(
Math
.
round
(
balance
-
totalCharge
));
precharge
.
setSuccess
(
true
);
}
else
{
precharge
.
setBalance
(
Math
.
round
(
balance
));
}
}
},
AccountServicePool
.
taskPool
).
join
();
return
precharge
;
}
@Override
public
IpChargeResultDto
preChargeByMoney
(
String
name
,
double
money
)
{
IpChargeResultDto
precharge
=
new
IpChargeResultDto
();
...
...
@@ -707,6 +516,32 @@ public class AccountServiceImpl implements AccountService {
return
collect
;
}
@Override
public
SubUserPageResultDto
getSubUserList
(
String
name
,
int
page
,
int
amount
)
{
if
(
amount
>
100
)
amount
=
100
;
Pageable
pageable
=
PageRequest
.
of
(
page
,
amount
);
Page
<
Account
>
accounts
=
repository
.
findByParent
(
name
,
pageable
);
SubUserPageResultDto
subUserPageResultDto
=
new
SubUserPageResultDto
();
if
(
accounts
==
null
||
accounts
.
getNumberOfElements
()
<=
0
)
return
subUserPageResultDto
;
List
<
SubUsersDto
>
subUsersDtoList
=
new
ArrayList
<>();
accounts
.
getContent
().
forEach
(
x
->
{
subUsersDtoList
.
add
(
new
SubUsersDto
(
x
));
});
subUserPageResultDto
.
setUserList
(
subUsersDtoList
);
PageInfo
pageInfo
=
new
PageInfo
();
pageInfo
.
setTotalItems
((
int
)
accounts
.
getTotalElements
());
pageInfo
.
setCurrentPage
(
accounts
.
getNumber
());
pageInfo
.
setTotalPages
(
accounts
.
getTotalPages
());
subUserPageResultDto
.
setUserPage
(
pageInfo
);
return
subUserPageResultDto
;
}
public
Account
createSub
(
String
name
,
AccountDto
user
)
{
Account
existing
=
repository
.
findByName
(
name
);
if
(
existing
==
null
)
...
...
@@ -760,6 +595,60 @@ public class AccountServiceImpl implements AccountService {
return
account
;
}
@Override
public
void
createSubUsers
(
String
name
,
SubUsersRequestDto
subUsersRequestDto
)
{
Account
existing
=
repository
.
findByName
(
name
);
if
(
existing
==
null
)
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
,
"account does not exist: "
+
name
);
if
(!
existing
.
isAllowedToCreateSubUser
()
&&
!
StringUtils
.
isEmpty
(
existing
.
getParent
()))
throw
new
ClientRequestException
(
AccountErrorCode
.
NOTALLOWEDTOCREATESUBUSER
,
"Not allowed to create sub user"
);
if
(
existing
.
getChildCount
()
+
subUsersRequestDto
.
getAmount
()
>=
1000
)
{
throw
new
ClientRequestException
(
AccountErrorCode
.
CHILDMAX
,
"account cannot have more children"
);
}
int
nameNumber
=
existing
.
getChildCount
();
int
time
=
subUsersRequestDto
.
getAmount
();
for
(
int
i
=
0
;
i
<
time
;
i
++)
{
if
(
nameNumber
>=
1000
)
throw
new
ClientRequestException
(
AccountErrorCode
.
CHILDMAX
,
"account cannot have more children"
);
AccountDto
user
=
new
AccountDto
();
nameNumber
++;
if
(
nameNumber
<
10
)
user
.
setName
(
existing
.
getName
()
+
"00"
+
nameNumber
);
else
if
(
nameNumber
<
100
)
user
.
setName
(
existing
.
getName
()
+
"0"
+
nameNumber
);
else
user
.
setName
(
existing
.
getName
()
+
nameNumber
);
Account
child
=
repository
.
findByName
(
user
.
getName
());
if
(
child
!=
null
)
{
time
++;
continue
;
}
User
authUser
=
new
User
();
authUser
.
setUsername
(
user
.
getName
());
authUser
.
setPassword
(
subUsersRequestDto
.
getPassword
());
authUser
.
setPhone
(
existing
.
getPhoneNumber
());
authUser
.
setEnabled
(
true
);
authUser
.
setPermission
(
subUsersRequestDto
.
getPermission
());
userAuthService
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
authUser
));
Account
account
=
new
Account
(
user
);
account
.
setPhoneNumber
(
existing
.
getPhoneNumber
());
account
.
setParent
(
name
);
repository
.
save
(
account
);
// emailService.sendEmailVerification(user.getUsername(), user.getEmail(), user.getVerificationCode());
log
.
info
(
"new account has been created: "
+
account
.
getName
());
}
existing
.
setChildCount
(
nameNumber
);
repository
.
save
(
existing
);
}
public
Account
saveSub
(
String
name
,
AccountDto
user
)
{
Account
childAccount
=
repository
.
findByName
(
user
.
getName
());
if
(
childAccount
==
null
||
!
name
.
equals
(
childAccount
.
getParent
()))
{
...
...
@@ -774,6 +663,31 @@ public class AccountServiceImpl implements AccountService {
return
childAccount
;
}
@Override
public
void
saveSubUsers
(
String
name
,
SubUsersRequestDto
subUsersRequestDto
)
{
for
(
String
username:
subUsersRequestDto
.
getUsernames
())
{
Account
childAccount
=
repository
.
findByName
(
username
);
if
(
childAccount
==
null
||
!
name
.
equals
(
childAccount
.
getParent
()))
{
throw
new
ClientRequestException
(
AccountErrorCode
.
UNKNOWN
,
"Invalid Request"
);
}
if
(
subUsersRequestDto
.
getPassword
()
!=
null
)
{
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
user
=
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
();
user
.
setUsername
(
username
);
user
.
setPassword
(
subUsersRequestDto
.
getPassword
());
userAuthService
.
resetUserPassword
(
user
);
}
if
(
subUsersRequestDto
.
getNickname
()
!=
null
)
childAccount
.
setNickname
(
subUsersRequestDto
.
getNickname
());
if
(
subUsersRequestDto
.
getPermission
()
!=
-
1
)
childAccount
.
setPermission
(
subUsersRequestDto
.
getPermission
());
if
(
subUsersRequestDto
.
getComment
()
!=
null
)
childAccount
.
setComment
(
subUsersRequestDto
.
getComment
());
repository
.
save
(
childAccount
);
}
}
/**
* {@inheritDoc}
*/
...
...
@@ -896,22 +810,6 @@ public class AccountServiceImpl implements AccountService {
return
new
AccountDto
(
account
);
}
@Override
public
String
queryVpsRate
(
String
region
,
String
instanceSpecKey
,
String
chargeType
)
{
String
regionKey
=
"vps:"
+
instanceSpecKey
+
"-"
+
region
;
IpChargeRequestDto
ipChargeRequestDto
=
new
IpChargeRequestDto
();
ipChargeRequestDto
.
setChargeType
(
Integer
.
parseInt
(
chargeType
));
ipChargeRequestDto
.
setRegion
(
regionKey
);
float
rate
=
getRate
(
""
,
ipChargeRequestDto
);
return
String
.
valueOf
(
rate
);
}
@Override
public
String
queryUserChargeRate
(
String
username
,
IpChargeRequestDto
requestDto
)
{
float
rate
=
getRate
(
username
,
requestDto
);
return
String
.
valueOf
(
rate
);
}
@Override
public
Page
<
UserPrePaidBilling
>
listPrepaid
(
Pageable
pageable
,
String
username
,
String
[]
chargeType
,
int
year
,
int
month
,
int
day
,
String
zoneId
)
{
...
...
src/main/java/com/edgec/browserbackend/browser/service/Impl/ShopServiceImpl.java
View file @
1091834e
...
...
@@ -267,7 +267,7 @@ public class ShopServiceImpl implements ShopService {
if
(
shops
==
null
||
shops
.
size
()
<
1
)
throw
new
ClientRequestException
(
BrowserErrorCode
.
SHOPNOTEXIST
);
List
<
Account
>
accounts
=
accountRepository
.
findByNameIn
(
users
);
if
(
accounts
!
=
null
||
accounts
.
size
()
!=
users
.
size
())
if
(
accounts
=
=
null
||
accounts
.
size
()
!=
users
.
size
())
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
);
accounts
.
stream
().
forEach
(
x
->
{
try
{
...
...
@@ -301,7 +301,7 @@ public class ShopServiceImpl implements ShopService {
group
=
groupRepository
.
findById
(
groupId
).
orElse
(
null
);
if
(
group
==
null
)
throw
new
ClientRequestException
(
BrowserErrorCode
.
GROUPNOTEXIST
);
if
(
account
.
getPermission
()
<
8
||
(
group
!=
null
&&
group
.
getOwner
()
!=
null
&&
!
group
.
getOwner
().
equals
(
username
)
))
{
if
(
group
!=
null
&&
group
.
getOwner
()
!=
null
&&
!
group
.
getOwner
().
equals
(
username
))
{
throw
new
ClientRequestException
(
AccountErrorCode
.
NOPERMISSION
);
}
List
<
String
>
shopIds
=
new
ArrayList
<>();
...
...
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