Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ufo
/
yohoufo-fore
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
chenchao
5 years ago
Commit
eabedd592b6e1b030bab1d559022c8644e0718ea
1 parent
5ab942d9
optimized
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
47 deletions
order/src/main/java/com/yohoufo/order/service/impl/TradeBillsService.java
order/src/main/java/com/yohoufo/order/service/impl/TradeBillsService.java
View file @
eabedd5
...
...
@@ -12,9 +12,9 @@ import com.yohoufo.dal.order.TradeBillsMapper;
import
com.yohoufo.dal.order.model.SellerOrderMeta
;
import
com.yohoufo.dal.order.model.TradeBills
;
import
com.yohoufo.order.common.BillTradeStatus
;
import
com.yohoufo.order.constants.MetaKey
;
import
com.yohoufo.order.event.BillLogEvent
;
import
com.yohoufo.order.model.dto.SellerOrderComputeResult
;
import
com.yohoufo.order.model.dto.ServiceFeeRate
;
import
com.yohoufo.order.repository.TradeBillsRepository
;
import
com.yohoufo.order.service.seller.SellerOrderServiceDelegate
;
import
org.apache.commons.lang3.ObjectUtils
;
...
...
@@ -76,12 +76,9 @@ public class TradeBillsService {
systemAmount
=
earnestMoney
.
negate
();
logger
.
info
(
"in backPayEnsureRecord isGoodsServiceOrder orderCode {} earnestMoney {}"
,
orderCode
,
computeResultVal
);
}
else
{
SellerOrderMeta
meta
=
sellerOrderMetaMapper
.
selectByMetaKey
(
uid
,
skup
,
MetaKey
.
SELLER_FEE
);
computeResultVal
=
Objects
.
nonNull
(
meta
)
?
meta
.
getMetaValue
()
:
null
;
logger
.
info
(
"in backPayEnsureRecord buyerorder orderCode {} computeResultVal {}"
,
orderCode
,
computeResultVal
);
SellerOrderComputeResult
socr
=
JSONObject
.
parseObject
(
computeResultVal
,
SellerOrderComputeResult
.
class
);
SellerOrderComputeResult
socr
=
sellerOrderServiceDelegate
.
getSellerFeeService
().
getSellerOrderComputeResult
(
uid
,
skup
);
earnestMoney
=
socr
.
getEarnestMoney
().
getEarnestMoney
();
systemAmount
=
calSystemAmount
ByComputeResult
(
socr
);
systemAmount
=
calSystemAmount
FromEarnMoney
(
socr
);
}
if
(
Objects
.
isNull
(
systemAmount
)
||
Objects
.
isNull
(
systemAmount
))
{
...
...
@@ -131,14 +128,14 @@ public class TradeBillsService {
}
BigDecimal
calSystemAmount
ByComputeResult
(
SellerOrderComputeResult
socr
){
BigDecimal
calSystemAmount
FromEarnMoney
(
SellerOrderComputeResult
socr
){
BigDecimal
amount
=
BigDecimal
.
ZERO
;
try
{
BigDecimal
rate
=
socr
.
getServiceFeeRate
().
getPayChannelRate
();
BigDecimal
earnestMoney
=
socr
.
getEarnestMoney
().
getEarnestMoney
();
amount
=
BigDecimalHelper
.
halfUp
(
earnestMoney
.
multiply
(
BigDecimal
.
ONE
.
subtract
(
rate
)).
negate
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"calSystemAmount
ByComputeResult fail SellerOrderComputeResult {}"
,
socr
);
logger
.
warn
(
"calSystemAmount
FromEarnMoney fail SellerOrderComputeResult {}"
,
socr
,
e
);
}
return
amount
;
}
...
...
@@ -161,10 +158,9 @@ public class TradeBillsService {
if
(
payType
!=
null
&&
Payment
.
WALLET
.
getCode
()
==
payType
)
{
return
;
}
SellerOrderMeta
meta
=
sellerOrderMetaMapper
.
selectByMetaKey
(
sellerUid
,
skup
,
"fee"
);
if
(
meta
==
null
)
{
logger
.
error
(
"PayRecordErr记录交易到数据库出错 err=meta费率信息未查到, selleruid = {}, skup={}"
,
sellerUid
,
skup
);
SellerOrderComputeResult
computeResult
=
sellerOrderServiceDelegate
.
getSellerFeeService
().
getSellerOrderComputeResult
(
sellerUid
,
skup
);
if
(
computeResult
==
null
)
{
logger
.
error
(
"backPayBuyRecord fail, computeResult is null, selleruid = {}, skup={}"
,
sellerUid
,
skup
);
return
;
}
// 增加流水记录
...
...
@@ -177,16 +173,8 @@ public class TradeBillsService {
record
.
setTradeType
(
2
);
//1:保证金;2:货款;3:补偿款
record
.
setIncomeOutcome
(
1
);
// 1:用户收入; 2:用户支出
record
.
setAmount
(
amount
);
try
{
JSONObject
metavalue
=
JSON
.
parseObject
(
meta
.
getMetaValue
());
BigDecimal
rate
=
metavalue
.
getJSONObject
(
"serviceFeeRate"
).
getBigDecimal
(
"payChannelRate"
);
BigDecimal
samount
=
amount
.
multiply
(
BigDecimal
.
ONE
.
subtract
(
rate
)).
multiply
(
new
BigDecimal
(
"-1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
record
.
setSystemAmount
(
samount
);
// 有货收入
}
catch
(
Exception
e
)
{
logger
.
error
(
"PayRecordErr计费信息不完整, uid is {}, skup is {}, err is {}"
,
uid
,
skup
,
e
.
getMessage
());
// return;
}
BigDecimal
systemAmount
=
calculateSystemAmount4Back
(
sellerUid
,
skup
,
amount
,
computeResult
);
record
.
setSystemAmount
(
systemAmount
);
record
.
setTradeStatus
(
tradeStatus
);
//0:订单未完结;1:订单完结
record
.
setCreateTime
((
int
)
(
System
.
currentTimeMillis
()
/
1000
));
addTradeBills
(
record
);
...
...
@@ -277,14 +265,7 @@ public class TradeBillsService {
*/
public
void
addPayBuyRecord
(
Integer
uid
,
Integer
sellerUid
,
Integer
skup
,
Long
orderCode
,
Integer
payment
,
BigDecimal
amount
)
{
SellerOrderComputeResult
computeResult
=
sellerOrderServiceDelegate
.
getSellerFeeService
()
.
getSellerOrderComputeResult
(
sellerUid
,
skup
);
PlatformFeeDto
platformFee
;
if
(
computeResult
==
null
||
Objects
.
isNull
(
platformFee
=
computeResult
.
getPlatformFee
()))
{
logger
.
error
(
"addPayBuyRecord error,no computeResult of seller order in meta, orderCode {},selleruid {}, skup {}"
,
orderCode
,
sellerUid
,
skup
);
return
;
}
Integer
payType
=
adaptPayType
(
payment
);
// 增加流水记录
TradeBills
record
=
new
TradeBills
();
...
...
@@ -296,15 +277,54 @@ public class TradeBillsService {
record
.
setTradeType
(
2
);
//1:保证金;2:货款;3:补偿款
record
.
setIncomeOutcome
(
2
);
// 1:用户收入; 2:用户支出
record
.
setAmount
(
amount
);
BigDecimal
systemAmount
=
platformFee
.
getServiceFee
();
SellerOrderComputeResult
computeResult
=
sellerOrderServiceDelegate
.
getSellerFeeService
()
.
getSellerOrderComputeResult
(
sellerUid
,
skup
);
ServiceFeeRate
serviceFeeRate
;
if
(
computeResult
==
null
||
Objects
.
isNull
(
serviceFeeRate
=
computeResult
.
getServiceFeeRate
()))
{
logger
.
error
(
"addPayBuyRecord error,no computeResult of seller order in meta, orderCode {},selleruid {}, skup {}"
,
orderCode
,
sellerUid
,
skup
);
}
//计算平台留存
BigDecimal
systemAmount
=
calculateSystemAmount
(
sellerUid
,
skup
,
amount
,
computeResult
);
record
.
setSystemAmount
(
systemAmount
);
// 有货收入
record
.
setTradeStatus
(
BillTradeStatus
.
SUCCESS
.
getCode
());
record
.
setCreateTime
((
int
)
(
System
.
currentTimeMillis
()
/
1000
));
addTradeBills
(
record
);
}
/**
* 扣除转账手续费后的留存金额
* @param uid
* @param skup
* @param amount
* @param computeResult
* @return
*/
private
BigDecimal
calculateSystemAmount
(
int
uid
,
int
skup
,
BigDecimal
amount
,
SellerOrderComputeResult
computeResult
){
BigDecimal
systemAount
=
null
;
try
{
BigDecimal
rate
=
computeResult
.
getServiceFeeRate
().
getPayChannelRate
();
systemAount
=
amount
.
multiply
(
BigDecimal
.
ONE
.
subtract
(
rate
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"calculateSystemAmount fail, uid is {}, skup is {}, err is {}"
,
uid
,
skup
,
e
);
}
return
systemAount
;
}
private
BigDecimal
calculateSystemAmount4Back
(
int
uid
,
int
skup
,
BigDecimal
amount
,
SellerOrderComputeResult
computeResult
){
BigDecimal
systemAount
=
null
;
try
{
BigDecimal
rate
=
computeResult
.
getServiceFeeRate
().
getPayChannelRate
();
systemAount
=
amount
.
multiply
(
BigDecimal
.
ONE
.
subtract
(
rate
)).
negate
().
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"calculateSystemAmount 4 back fail, uid is {}, skup is {}, err is {}"
,
uid
,
skup
,
e
);
}
return
systemAount
;
}
/**
* 支付保证金流水记录
* @param uid
...
...
@@ -314,11 +334,7 @@ public class TradeBillsService {
* @param amount
*/
public
void
addPayEnsureRecord
(
Integer
uid
,
Integer
skup
,
Long
orderCode
,
Integer
payment
,
BigDecimal
amount
)
{
SellerOrderMeta
meta
=
sellerOrderMetaMapper
.
selectByMetaKey
(
uid
,
skup
,
"fee"
);
if
(
meta
==
null
)
{
logger
.
error
(
"PayRecordErr记录交易到数据库出错 err=meta费率信息未查到, uid = {}, skup={}"
,
uid
,
skup
);
return
;
}
Integer
payType
=
adaptPayType
(
payment
);
// 增加流水记录
TradeBills
record
=
new
TradeBills
();
...
...
@@ -330,15 +346,11 @@ public class TradeBillsService {
record
.
setTradeType
(
1
);
//1:保证金;2:货款;3:补偿款
record
.
setIncomeOutcome
(
2
);
// 1:用户收入; 2:用户支出
record
.
setAmount
(
amount
);
try
{
JSONObject
metavalue
=
JSON
.
parseObject
(
meta
.
getMetaValue
());
BigDecimal
rate
=
metavalue
.
getJSONObject
(
"serviceFeeRate"
).
getBigDecimal
(
"payChannelRate"
);
amount
=
amount
.
multiply
(
BigDecimal
.
ONE
.
subtract
(
rate
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"PayRecordErr计费信息不完整, uid is {}, skup is {}, err is {}"
,
uid
,
skup
,
e
.
getMessage
());
return
;
}
record
.
setSystemAmount
(
amount
);
// 有货收入
SellerOrderComputeResult
computeResult
=
sellerOrderServiceDelegate
.
getSellerFeeService
()
.
getSellerOrderComputeResult
(
uid
,
skup
);
BigDecimal
systemAmount
=
calculateSystemAmount
(
uid
,
skup
,
amount
,
computeResult
);
record
.
setSystemAmount
(
systemAmount
);
// 有货收入
record
.
setTradeStatus
(
BillTradeStatus
.
SUCCESS
.
getCode
());
record
.
setCreateTime
((
int
)
(
System
.
currentTimeMillis
()
/
1000
));
addTradeBills
(
record
);
...
...
Please
register
or
login
to post a comment